Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मायएसक्यूएल प्रश्न

अब तक हमने एक डेटाबेस बनाया है, दो टेबल जोड़े हैं, और दोनों टेबल में डेटा डाला है। अब हम यह देखने जा रहे हैं कि उस डेटा को कैसे पुनः प्राप्त किया जाए। लेकिन न केवल पुनर्प्राप्त करें डेटा, लेकिन क्वेरी . के लिए इसके लिए डेटाबेस।

SQL का अर्थ है संरचित क्वेरी भाषा . यह क्वेरी है बिट जो SQL को इतना शक्तिशाली बनाता है। SQL एक ऐसी भाषा है जो आपको queries चलाने में सक्षम बनाती है अपने डेटाबेस के खिलाफ। यह आपको क्वेरी . की अनुमति देता है डेटा के लिए डेटाबेस जो आप चाहते हैं।

एसक्यूएल SELECT कथन

जब आपके MySQL डेटाबेस को क्वेरी करने की बात आती है, तो SQL SELECT कथन यह सब संभव बनाता है। MySQL के साथ काम करते समय यह आपका सबसे अधिक इस्तेमाल किया जाने वाला SQL स्टेटमेंट होने की संभावना है। SELECT कथन आपको MySQL को ठीक से वर्णन करने की अनुमति देता है कि आप इसे किस डेटा को पुनः प्राप्त करना चाहते हैं।

निम्नलिखित SQL कथन पर विचार करें:

SELECT * FROM Fruit;

ये रहा परिणाम:

यह है SELECT अपने सरलतम रूप में कथन। उपरोक्त SQL कथन फल . से सभी रिकॉर्ड पुनर्प्राप्त करता है टेबल।

तारांकन (* ) MySQL को सभी कॉलम वापस करने के लिए कहता है। यह हमें समय और प्रयास बचाता है। इसके बिना हमें उन सभी स्तंभों के नाम लिखने होंगे जिन्हें हम वापस करना चाहते हैं।

ऐसा कहकर, आप MySQL को केवल उन कॉलम को वापस करने के लिए कह सकते हैं जिन्हें आप वापस करना चाहते हैं। यह केवल उन स्तंभों के नामकरण के द्वारा किया जाता है जिन्हें आप वापस करना चाहते हैं। इस तरह:

SELECT FruitId, FruitName 
FROM Fruit;

ये रहा परिणाम:

उपरोक्त SQL कथन FruitId . का चयन करता है और फलों का नाम फलों . से कॉलम टेबल।

ऐसा करने से अव्यवस्था कम हो सकती है ताकि आप केवल उन्हीं कॉलमों को देख सकें जिनमें आपकी रुचि है। यह प्रदर्शन को भी बढ़ावा दे सकता है, क्योंकि MySQL (और आपके द्वारा उपयोग किया जाने वाला कोई भी एप्लिकेशन) को अनावश्यक डेटा वापस करने के लिए मूल्यवान संसाधनों का उपयोग करने की आवश्यकता नहीं है।

फिर से, यह क्वेरी सभी को पुनः प्राप्त करती है तालिका से रिकॉर्ड - MySQL सभी रिकॉर्ड लौटाएगा जब तक कि अन्यथा निर्दिष्ट न हो।

WHERE खंड

आप WHERE जोड़ सकते हैं परिणाम को केवल उन रिकॉर्ड तक सीमित करने के लिए क्लॉज, जिनमें आपकी रुचि है। इस तरह:

SELECT * FROM Fruit
WHERE UnitId = 1;

परिणाम:

उपरोक्त क्वेरी फल . से सभी रिकॉर्ड लौटाती है तालिका जहां UnitId कॉलम का मान 1 . है .

उपश्रेणियां — नेस्टेड SELECT कथन

क्या होगा अगर हम UnitId . नहीं जानते ? क्या होगा यदि हम केवल Piece . के इकाई नाम के साथ उन अभिलेखों को देखना जानते हैं ?

आसान! हम नेस्टेड SELECT . का उपयोग करने के लिए उपरोक्त उदाहरण को फिर से लिख सकते हैं कथन (अन्यथा सबक्वायरी . के रूप में जाना जाता है) ) जो किसी अन्य तालिका से पूछताछ करता है ( इकाइयाँ टेबल)। ऐसा करने से हम वास्तविक इकाई नाम . का उपयोग कर सकेंगे (इसकी आईडी के बजाय) क्योंकि दूसरी तालिका में यह UnitName . में है फ़ील्ड:

SELECT * FROM Fruit
WHERE UnitId = 
	(SELECT UnitId 
    FROM Units 
    WHERE UnitName = 'Piece');

परिणाम:

यहां हम एक नेस्टेड SELECT . का उपयोग करते हैं कथन (अर्थात एक SELECT SELECT . के अंदर स्टेटमेंट स्टेटमेंट) इकाइयों . को क्वेरी करने के लिए UnitId . के लिए तालिका उस रिकॉर्ड का जिसमें Piece . है इसके UnitName . के रूप में मूल्य। हम ऐसा इसलिए कर सकते हैं क्योंकि Fruit.UnitId कॉलम Units.UnitId . के लिए एक विदेशी कुंजी है कॉलम।

यदि आप रुचि रखते हैं तो सबक्वायरी के और उदाहरण यहां दिए गए हैं।

एसक्यूएल का उपयोग करना JOIN

इसे एक कदम आगे बढ़ाते हुए, हम अपने नेस्टेड SELECT . को फिर से लिख सकते हैं एक INNER JOIN में स्टेटमेंट ।

SQL में, एक JOIN आपको डेटा साझा करने वाली कई तालिकाओं को क्वेरी करने में सक्षम बनाता है। हमारे मामले में, दोनों टेबल UnitId . साझा करते हैं ताकि आप कह सकें कि वे इस क्षेत्र से "शामिल" हैं।

SQL में विभिन्न प्रकार के जॉइन होते हैं, हालांकि, हम मुख्य रूप से INNER JOIN में रुचि रखते हैं। अभी के लिए।

INNER JOIN वाक्य रचना इस प्रकार है:

SELECT * FROM table_name_1
INNER JOIN table_name_2
ON table_name_1.column_name = table_name_2.column_name

इसलिए हम अपनी सबक्वेरी को पिछले उदाहरण से निम्नलिखित में फिर से लिख सकते हैं:

SELECT Fruit.* FROM Fruit
INNER JOIN Units
ON Fruit.UnitId = Units.UnitId
WHERE Units.UnitName = 'Piece';

परिणाम:

हमने Fruit.* . निर्दिष्ट किया है सिर्फ * . के बजाय क्योंकि हम केवल फलों . से सभी कॉलम वापस करना चाहते थे टेबल। अगर हम * . का इस्तेमाल करते , क्वेरी दोनों तालिकाओं के सभी कॉलम लौटा देती।

LEFT JOIN भी देखें और RIGHT JOIN यह देखने के लिए कि आप शामिल होने के प्रकार के आधार पर अलग-अलग डेटा कैसे प्राप्त कर सकते हैं।

सबक्वायरी बनाम JOIN ?

अब जब आपने एक ही परिणाम प्राप्त करने के दो तरीके देख लिए हैं, तो आप शायद सोच रहे हैं कि कौन सा बेहतर है?

उपश्रेणियाँ अधिक पठनीय (और शायद समझने में आसान) होती हैं, जिससे शुरुआती लोगों के लिए इसे समझना आसान हो जाता है।

हालांकि, कई SQL प्रोग्रामर JOIN ढूंढते हैं अधिक कुशल हैं और बेहतर प्रदर्शन करते हैं। यदि आप अपने प्रश्नों या किसी एप्लिकेशन के साथ प्रदर्शन समस्याओं का सामना करते हैं, तो किसी भी सबक्वेरी को JOIN . में बदलने का प्रयास करें s या इसके विपरीत (कुछ मामलों में एक उप-क्वेरी बेहतर प्रदर्शन कर सकती है)।

साथ ही, ऐसे मामले भी हो सकते हैं जहां एक सबक्वेरी आपका एकमात्र विकल्प है, इसलिए यह भी एक विचार है।

अधिक ऑपरेटर

हमारे अब तक के सभी प्रश्नों में एक समान चिह्न है (= ) इसे ऑपरेटर . कहा जाता है . अधिक विशेष रूप से यह एक तुलना ऑपरेटर . है क्योंकि यह एक व्यंजक की दूसरे व्यंजक से तुलना करता है।

ऐसे और भी कई ऑपरेटर हैं जिनका उपयोग आप अपने प्रश्नों में कर सकते हैं। ये परिणाम सेट को केवल उन अभिलेखों तक सीमित करने में बहुत सहायता कर सकते हैं जिनकी आपको आवश्यकता है। डेटाबेस में लाखों रिकॉर्ड होना असामान्य नहीं है। यहां तक ​​​​कि अगर आपके पास केवल हजारों रिकॉर्ड हैं, तो हजारों में से एक रिकॉर्ड (या सिर्फ एक मुट्ठी भर) खोजने की कोशिश करना एक बहुत ही कठिन काम होगा यदि आपके पास ये ऑपरेटर आपके निपटान में नहीं थे।

यहाँ कुछ अधिक सामान्यतः उपयोग किए जाने वाले SQL ऑपरेटर हैं।

> संचालिका

आप > . का उपयोग कर सकते हैं डेटा का चयन करने के लिए ऑपरेटर जो अधिक है दिए गए मान से अधिक।

SELECT * FROM Fruit
WHERE Inventory > 10;

< संचालिका

आप < . का उपयोग कर सकते हैं डेटा का चयन करने के लिए ऑपरेटर जो कम . है दिए गए मान से अधिक।

SELECT * FROM Fruit
WHERE Inventory < 10;

> संचालिका

आप <> का उपयोग कर सकते हैं ऑपरेटर को डेटा का चयन करने के लिए जो और . दोनों से कम है किसी दिए गए मान से अधिक।

SELECT * FROM Fruit
WHERE Inventory <> 10;

>= संचालिका

आप >= . का उपयोग कर सकते हैं किसी दिए गए मान से अधिक या उसके बराबर डेटा का चयन करने के लिए ऑपरेटर।

SELECT * FROM Fruit
WHERE Inventory >= 10;

<= संचालिका

आप <= . का उपयोग कर सकते हैं किसी दिए गए मान से कम या उसके बराबर डेटा का चयन करने के लिए ऑपरेटर।

SELECT * FROM Fruit
WHERE Inventory <= 10;

AND संचालिका

आप एक AND जोड़ सकते हैं WHERE . के लिए ऑपरेटर अपने चयन को केवल उन अभिलेखों तक सीमित करने के लिए खंड जो दो शर्तों को पूरा करते हैं (या अधिक यदि आप अधिक AND शामिल करते हैं ऑपरेटरों)।

यहां एक उदाहरण दिया गया है:

SELECT * FROM Fruit
WHERE Inventory > 10 
AND DateEntered > '2015-01-15';

OR संचालिका

आप एक OR का उपयोग कर सकते हैं आपके चयन को एक से अधिक मानदंडों तक विस्तृत करने के लिए ऑपरेटर। जैसा कि नाम से पता चलता है, OR क्लॉज आपको डेटा का चयन करने देता है जहां मानदंड या तो यह है या वह। तो AND ऑपरेटर सीमा आपका चयन और OR ऑपरेटर विस्तृत करता है यह।

यहां एक उदाहरण दिया गया है:

SELECT * FROM Fruit
WHERE UnitId = 1 OR UnitId = 2;

BETWEEN संचालिका

BETWEEN का उपयोग करें दो दिए गए मानों के बीच डेटा का चयन करने के लिए ऑपरेटर।

SELECT * FROM Fruit
WHERE DateEntered 
BETWEEN '2015-01-25' AND '2015-02-25';

NOT संचालिका

NOT का प्रयोग करें ऑपरेटर डेटा का चयन करने के लिए जो नहीं है दी गई शर्त के बराबर।

SELECT * FROM Fruit
WHERE NOT (FruitName = 'Apple');

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL यूजर पासवर्ड बदलें

  2. क्या आप ORDER BY में if स्टेटमेंट जोड़ सकते हैं?

  3. MySQL में दिनांक और समय को कैसे प्रारूपित करें

  4. क्या मैं MySQL में डिफ़ॉल्ट मान के लिए फ़ंक्शन का उपयोग कर सकता हूं?

  5. डेबियन 8 . पर MySQL कैसे स्थापित करें