SQL இல் எங்கு மற்றும் உட்பிரிவு உள்ள வித்தியாசம்
உள்ளடக்கம்
SQL வினவல்களின் அறிக்கையில் முக்கியமாக WHERE மற்றும் HAVING பிரிவு பயன்படுத்தப்படுகின்றன, இவை ஒரு குறிப்பிட்ட முன்கணிப்பைப் பயன்படுத்துவதன் மூலம் முடிவு உறவில் சேர்க்கையை கட்டுப்படுத்த அனுமதிக்கின்றன. WHERE மற்றும் HAVING ஆகியவற்றுக்கு இடையேயான முக்கிய வேறுபாடு என்னவென்றால், WHERE பிரிவு தேர்ந்தெடுப்பதற்கான நிபந்தனைகளை குறிப்பிடுகிறது tuples (வரிசைகள்) தேவைப்பட்டால் சேர நிபந்தனைகள் உட்பட உறவுகளிலிருந்து. மறுபுறம், HAVING பிரிவு ஒரு நிபந்தனையை குறிப்பிடுகிறது குழுக்கள் தனிப்பட்ட டூப்பிள்களைக் காட்டிலும் தேர்ந்தெடுக்கப்படுகிறது.
எஸ்கியூஎல் குறிக்கிறது கட்டமைப்பு வினவல் மொழி; இது தரவுத்தளங்களிலிருந்து தரவை அணுகுவதற்கான விரிவான அல்லது அறிவிக்கும் தரவுத்தள மொழியாகும்.
- ஒப்பீட்டு விளக்கப்படம்
- வரையறை
- முக்கிய வேறுபாடுகள்
- முடிவுரை
ஒப்பீட்டு விளக்கப்படம்
ஒப்பிடுவதற்கான அடிப்படை | எங்கே | HAVING |
---|---|---|
அடிப்படை | வரிசை நடவடிக்கைகளில் செயல்படுத்தப்படுகிறது. | நெடுவரிசை செயல்பாடுகளில் செயல்படுத்தப்பட்டது. |
விண்ணப்பித்தேன் | ஒற்றை வரிசை | சுருக்கமான வரிசை அல்லது குழுக்கள். |
தரவு பெறுதல் | இது நிபந்தனைக்கு ஏற்ப குறிப்பிட்ட வரிசைகளில் இருந்து குறிப்பிட்ட தரவை மட்டுமே பெறுகிறது. | முதலில், முழுமையான தரவு பெறப்படுகிறது, பின்னர் நிபந்தனைக்கு ஏற்ப பிரிக்கப்படுகிறது. |
மொத்த செயல்பாடுகள் | WHERE பிரிவில் தோன்ற முடியாது. | HAVING பிரிவில் தோன்றலாம். |
உடன் பயன்படுத்தப்படுகிறது | UPDATE, DELETE அல்லது அவற்றில் ஒன்று போன்ற பிற அறிக்கைகளைத் தேர்ந்தெடுக்கவும். | SELECT அறிக்கை இல்லாமல் பயன்படுத்த முடியாது. |
அதுவாய் | முன் வடிகட்டி | பின்-வடிகட்டி |
குழு மூலம் | WHERE க்குப் பிறகு வருகிறது. | HAVING க்கு முன் வருகிறது. |
எங்கே பிரிவு என்ற வரையறை
SQL WHERE பிரிவு ஒற்றை அட்டவணையில் இருந்து தரவை மீட்டெடுக்கும் நேரத்தில் அல்லது பல அட்டவணைகளுடன் சேருவதன் மூலம் ஒரு நிலையை விவரிக்கப் பயன்படுகிறது. கொடுக்கப்பட்ட நிபந்தனை பூர்த்தி செய்யப்பட்டால் மட்டுமே அது குறிப்பிட்ட மதிப்பை அட்டவணையில் இருந்து தருகிறது. பதிவுகளை ஊடுருவி தேவையான பதிவுகளை மட்டுமே மீட்டெடுக்க WHERE பிரிவு பயன்படுத்தப்படுகிறது.
SQL தருக்க இணைப்புகளை செயல்படுத்துகிறது மற்றும், அல்லது மற்றும் இல்லை WHERE பிரிவில் பூலியன் நிலை; டூப்பிள்களை மீட்டெடுக்க நிபந்தனை உண்மையாக இருக்க வேண்டும். தருக்க இணைப்பு வெளிப்பாடுகளின் செயல்பாடுகள் ஒப்பீட்டு ஆபரேட்டர்களை உள்ளடக்குகின்றன <, <=, >, >=, =, மற்றும் <>. இந்த ஒப்பீட்டு ஆபரேட்டர்கள் சரங்களையும் எண்கணித வெளிப்பாடுகளையும் ஒப்பிடுகின்றனர். இது பயன்படுத்தப்படலாம் SELECT என்பது அறிக்கை, அதே போல் புதுப்பிப்பு, அழி அறிக்கைகள்.
ஒரு எடுத்துக்காட்டு எடுத்துக்கொள்வோம். கீழே காட்டப்பட்டுள்ள அட்டவணை ‘விற்பனை‘அட்டவணை உள்ளடக்கியது‘தயாரிப்பு‘மற்றும்‘விற்பணை தொகை‘பண்புக்கூறுகள்.
கணக்கிட பின்வரும் வினவல் எழுதப்பட வேண்டும் மொத்த விற்பனை தொலைபேசி மற்றும் பேச்சாளர்களின்.தயாரிப்பு, தொகை (விற்பனை_அமவுண்ட்) மொத்த விற்பனையிலிருந்து விற்பனை (தொலைபேசி, பேச்சாளர்கள்) தயாரிப்பு மூலம் தயாரிப்பு;
பின்வரும் வெளியீடு என்பது விளைவாக வரிசைகள் முதலில் வடிகட்டப்பட்டு, தொலைபேசி மற்றும் ஸ்பீக்கர் வரிசைகள் மீட்டெடுக்கப்படுகின்றன, பின்னர் மொத்த செயல்பாடு செய்யப்படுகிறது.பிரிவு கொண்டிருப்பதற்கான வரையறை
SQL வழங்குகிறது விதிமுறை உள்ளது இது இணைந்து பயன்படுத்தப்படலாம் குழு மூலம் உட்கூறு. சில நிபந்தனைகளை பூர்த்தி செய்யும் குழுக்களுக்கான மதிப்புகளை மீட்டெடுக்க இந்த HAVING பிரிவு உதவுகிறது. தேர்வின் போது HAVING பிரிவுடன் இணைந்து WHERE பிரிவு பயன்படுத்தலாம், WHERE பிரிவு தனிப்பட்ட வரிசையை வடிகட்டுகிறது. பின்னர் வரிசைகள் தொகுக்கப்படுகின்றன, மேலும் மொத்தக் கணக்கீடுகள் செய்யப்படுகின்றன, கடைசியாக HAVING பிரிவில் குழுக்களை வடிகட்டுகிறது.
GROUP BY முக்கிய சொல் பயன்படுத்தப்படாதபோது இது WHERE போலவே செயல்படுகிறது. குழு செயல்பாடுகளான நிமிடம், அதிகபட்சம், சராசரி, தொகை மற்றும் எண்ணிக்கை இரண்டு பிரிவுகளில் மட்டுமே தோன்றும்: தேர்ந்தெடு மற்றும் ஹேவிங் பிரிவு. பண்புக்கூறுகளின் குழுவில் உள்ள ஒவ்வொரு மதிப்பிற்கும் பொருந்தக்கூடிய டூப்பிள்களில் இது ஒரு நிபந்தனையை வழங்குகிறது. நிபந்தனையை பூர்த்தி செய்யும் ஒரே பதிவுகளின் விளைவாக காண்பிக்கப்படும்.
இங்கேயும் நாம் WHERE பிரிவு போன்ற அதே உதாரணத்தை எடுத்து அதே ‘விற்பனை' மேசை. நாம் கணக்கிட விரும்பும் போது மொத்த விற்பனை தொலைபேசி மற்றும் பேச்சாளர்கள் HAVING பிரிவைப் பயன்படுத்தி, பின்வரும் வினவலை எழுதுவோம்.
தயாரிப்பு, தொகை (விற்பனை_அமவுண்ட்) மொத்த விற்பனையிலிருந்து விற்பனை குழுவிலிருந்து தயாரிப்பு (தொலைபேசி, பேச்சாளர்கள்);
வினவல் பின்வரும் வெளியீட்டை உருவாக்குகிறது, அங்கு தயாரிப்புகள் முதலில் மீட்டெடுக்கப்படுகின்றன, பின்னர் மொத்த செயல்பாடு (தொகை) செய்யப்படுகிறது மற்றும் கடைசியாக குழுக்கள் WHERE பிரிவைப் போலன்றி வடிகட்டப்படுகின்றன.
அந்த தயாரிப்புகளை மட்டுமே நாம் கண்டுபிடிக்க விரும்பும் போது மொத்த விற்பனை 1000 ஐ விட அதிகமாக உள்ளது. வினவலை இவ்வாறு எழுதலாம்:
தயாரிப்பு, தொகை (விற்பனை_அளவு) தேர்ந்தெடுங்கள் மொத்த விற்பனையிலிருந்து விற்பனை குழுவிலிருந்து தயாரிப்பு மொத்த தொகை (விற்பனை_அளவு)> 1000;
தயாரிக்கப்பட்ட வெளியீடு:
HAVING இருந்தபோதிலும் WHERE பிரிவைப் பயன்படுத்தி இதைச் செய்ய முடியாது, மேலும் இது ஒரு பிழையை உருவாக்குகிறது, ஏனெனில் WHERE பிரிவு மொத்த செயல்பாடுகளுடன் பயன்படுத்த முடியாது.
- வரிசை செயல்பாடுகளில் WHERE பிரிவு பயன்படுத்தப்படுகிறது மற்றும் ஒரு வரிசையில் பயன்படுத்தப்படுகிறது, அதேசமயம் நெடுவரிசை செயல்பாடுகளில் HAVING பிரிவு பயன்படுத்தப்படுகிறது மற்றும் சுருக்கமான வரிசைகள் அல்லது குழுக்களுக்கு பயன்படுத்தலாம்.
- WHERE பிரிவில், விரும்பிய தரவு பயன்படுத்தப்படும் நிபந்தனைக்கு ஏற்ப பெறப்படுகிறது. இதற்கு நேர்மாறாக, முழு தரவையும் பெறுவது நிபந்தனைக்கு ஏற்ப பிரித்தல் செய்யப்படுகிறது.
- நிமிடம், தொகை, அதிகபட்சம், சராசரி போன்ற மொத்த செயல்பாடுகள் WHERE பிரிவுடன் ஒருபோதும் தோன்றாது. எதிராக, இந்த செயல்பாடுகள் HAVING பிரிவில் தோன்றும்.
- தேர்ந்தெடுக்கப்பட்ட அறிக்கை இல்லாமல் HAVING பிரிவு பயன்படுத்த முடியாது. மாறாக, SELECT, UPDATE, DELETE போன்றவற்றுடன் WHERE ஐப் பயன்படுத்தலாம்.
- WHERE பிரிவு ஒரு முன் வடிப்பானாக செயல்படுகிறது, அதே சமயம் ஒரு பிந்தைய வடிப்பானாக செயல்படுகிறது.
- GROUP BY உடன் பயன்படுத்தும் போது WHERE பிரிவு, GROUP BY க்கு முன் வருகிறது. மொத்த கணக்கீடுகள் செய்யப்படுவதற்கு முன்பு WHERE வடிகட்டி வரிசைகள் இருப்பதை இது குறிக்கிறது. மறுபுறம், GROUP BY க்குப் பிறகு HAVING வருகிறது, அதாவது மொத்த கணக்கீடுகள் செய்யப்பட்ட பின்னர் அது வடிகட்டுகிறது.
முடிவுரை
HAVING பிரிவு பிரபலமாக உள்ள கூடுதல் அம்சத்தைத் தவிர, WHERE மற்றும் HAVING பிரிவு ஒரே வழியில் செயல்படுகின்றன. மொத்த செயல்பாடுகளுடன் WHERE ஐ இயக்க முடியாது, அதே சமயம் மொத்த செயல்பாடுகளுடன் திறமையாக செயல்பட முடியும்.