Thursday, January 29, 2009

எளிய தமிழில் SQL - பாகம் 7

ஏற்கனவே பதிந்துள்ள தகவல்களைத் தேடி எடுக்கும்போது மேலே குறிப்பிட்டுள்ள அடையாளங்களைப் பயன்படுத்தி வடிகட்டலாம். மில்லியன் கணக்கில் பதிந்திருக்கும் recordsல் இருந்து குறிப்பிட்ட சில rows (records) ஐ மட்டும் நமது தேவைக்காகத் தேடி எடுக்கும் செயலுக்குத் துணைபுரிபவை Queries ஆகும். DQL என்றால் Data Query Language.

இதற்கு SELECT எனப்படும் கட்டளையைப் பயன்படுத்துகிறோம். SELECT என்றால் தேர்வு செய் என அர்த்தம். ஆயிரக்கணக்கான, லட்சக்கணக்கான தகவல்களில் இருந்து நமது தேவைக்கேற்ற தகவலை மட்டும் தேடியெடுத்துத் தருவதற்கு SELECT ஐப் பயன்படுத்தலாம்.

ஒரு மிக மிக எளிய உதாரணம் ஒன்று.

முன்பெல்லாம் 10ம் வகுப்பு, 12ம் வகுப்பு தேர்வு முடிவுகள் அறிவிக்கப்பட்ட நாளின்போது மாலைப்பதிப்பு நாளிதழ்களான மாலைமுரசு, மாலைமலர் போன்றவற்றில் தேர்வில் தேரியோரின் எண்கள் வெளிவரும். பின்பு காலைப்பதிப்பிலும் வேறு வேறு நாளிதழ்களில் வெளிவரும். இன்றும் கூட இது நடைமுறையில் இருக்கும் ஒன்றுதான்.

6,75,643 மாணவர்கள் தேர்வெழுதினார்கள் எனில் அதில் 80% தேர்வாகி இருந்தால் 540514 பேர்களின் எண்கள் கல்விமாவட்ட வாரியாக நாளிதழில் வெளியாகி இருக்கும். இதில் ஒவ்வொருவரின் எண்ணும் வந்திருக்கிறதா? இல்லையா? என பட்டிமன்றமே நடக்கும்.

ஆனால் தற்போது தேர்வு அறிக்கைகளும், தேர்வு முடிவுகளும் இணையத்தில் வெளியிடுகிறார்கள். நாம் நமது பதிவெண்ணை மட்டும் கொடுத்தால் உடனே முடிவுகள் மட்டுமல்லாமல் ஒவ்வொரு பாடத்திலும் எவ்வளவு மதிப்பெண்கள் எடுத்துள்ளோம் என்பது முதற்கொண்டு நொடிகளில் திரையில் காட்சியளிக்கிறது.இது எவ்வாறு சாத்தியம்?

6,75,643 பேர்களின் தகவல்கள் அனைத்தையும் ஒவ்வொரு record (row) ஆக கணினியில் உள்ள Databaseல் ஏற்றிவிடுவார்கள். இதற்கு ஒரு குழு இயங்கும். அவர்கள் ஒவ்வொருவரின் பதிவெண், பள்ளியின் பெயர், பாடங்கள், ஒவ்வொரு பாடத்திலும் எத்தனை மதிப்பெண்கள் பெறப்பட்டன போன்றவற்றை Databaseல் ஏற்றிவிடுவார்கள். இந்த குழு மின்னல் வேகத்தில் தகவல்களை ஏற்றிவிடும் வல்லமை கொண்டது.

எல்லோருடைய தகவல்களும் ஒட்டுமொத்தமாக Databaseல் ஏற்றப்பட்டவுடன் முடிவு அறிக்கைத் தேதியை வெளியிடுவார்கள்.

தேர்வு முடிவு நாள் அன்று நாம் என்ன செய்கிறோம். நமது பதிவெண்ணையோ / நண்பர்கள் / உறவினர்களின் பதிவெண்ணையோ மட்டும் கணினியில் உள்ளிடுகிறோம்.

எனது நண்பரின் பதிவெண் 059169 எனக் கொண்டால், இந்தக் குறிப்பிட்ட 059169 என்கின்ற எண்ணை 6,75,643 பேர்களின் தகவல்கள் அடங்கிய Databaseல் இருந்து நொடிகளில் தேடியெடுத்துவிடும் வல்லமை SELECT கட்டளைக்கு உண்டு.

எனது பதிவெண்ணுக்காக ஏற்கனவே என்ன தகவல்கள் ஏற்றப்பட்டிருக்கிறதோ அனைத்தையும் திரையில் காணலாம். இந்தத் தேடியெடுத்துத் தருவதுதான் QUERY எனப்படுகிறது.

இதற்காக SELECT கட்டளையுடன் உறுதுணையாக உதவுவதற்குப் பயன்படுபவையே Operators ஆகும்.

Operatorsகளையும் அவற்றிற்கான பயன் மற்றும் குறுவிளக்கம் : கீழே

059169 எண்ணுக்கு உரிய தகவல்களை எனக்காகக் காண்பி = Equal

தேரியோர்களை மட்டும் காண்பி = Equal

தேராதவர்களைக் காண்பிக்காதே <> Not equal

80%க்கு மேல் மதிப்பெண்கள் வாங்கியோர் யார் யார்? > Greater than

50%க்குக் கீழே வாங்கியோர் யார் யார்? <= Less than or equal

34 மதிப்பெண்கள் அல்லது அதைவிடக் கீழே எடுத்தவர்கள் யார் யார்?<= Less than or equal கணக்குப் பாடத்தில் 80லிருந்து 100க்குள் எத்தனை பேர் மதிப்பெண்கள் எடுத்தனர் BETWEEN Between an inclusive range ஒரு குறிப்பிட்ட எழுத்தில் ஆரம்பிக்கும் பெயர்களையுடையவர்கள் யார் யார்? LIKE Search for a pattern குறிப்பிட்ட SET { } க்குள் அகப்படும் தகவல்களை மட்டும் எடுத்துக்கொண்டு வா IN If you know the exact value you want to return for at least one of the columns இது போக AND, OR, NOT எனப்படும் மூன்று முக்கிய Operators உள்ளன. இவற்றின் பயன் என்னவென்றால் தேடியெடுக்கும் முடிவுகளைக் கட்டுப்படுத்துவதே. இத்தனை லட்சம் தகவல்களில் நமக்குத் தேவைப்படும் தகவல்களை மட்டும் வடிகட்டி எடுப்பதற்கு இந்த Operators தான் காரணம். AND -- தேடும்போது எத்தனை கட்டுப்பாடுகள் விதிக்கிறோமோ, அத்தனை கட்டுப்பாடுகளுக்கும் சம்மதிக்கக் கூடிய தகவல்களை மாத்திரம் எடுத்து வருவதற்கு. உதாரணம்: 5 பாடங்களில் அனைத்துப் பாடங்களிலும் தேரியிருந்தால் மட்டுமே மாணவர் அடுத்த வகுப்புக்குச் செல்லும் தகுதியடைகிறார். அதாவது அனைத்துக் கட்டுப்பாடுகளுக்கும் சம்மதித்திருக்கிறார். கட்டுப்பாடுகள் என்பதை Condition என்பதற்காகக் கொடுத்திருக்கிறேன். 5 Conditions இருக்கின்றன. அனைத்து Condition களும் ஏற்றுக்கொள்ளப்பட்டிருக்க வேண்டும். அதுவே AND Operatorன் வெற்றியை உறுதிப்படுத்தும். OR -- தேடும்போது இந்தக் கட்டுப்பாடோ அல்லது வேறொன்றோ எதாவது ஒன்றுக்குச் சம்மதிக்கக் கூடிய தகவல்களைக் கொணர்வதற்கு. 5 பாடங்களில் ஏதேனும் ஒன்றில் தேர்ச்சியடையாவிட்டாலும் ஒட்டுமொத்தமாக மாணவரானவர் தேர்வில் தவறிவிட்டார். இதற்கு OR. இந்தப் பாடம் அல்லது அந்தப் பாடம், அல்லது வேறொன்று எதாவது ஒன்றில் தேர்வடையாவிட்டாலும் ஒட்டுமொத்தமாக FAIL எனக் குறிப்பிட OR பயன்படுத்தலாம். 5 Conditionsல் ஏதேனும் ஒரு Condition மட்டும் Satisfy ஆனாலே ORன் வெற்றி தீர்மாணிக்கப்பட்டு விடுகிறது. NOT - எந்தக் கட்டுப்பாடு விதிக்கிறோமோ அதற்கு முரண்பாடான தகவல்களைப் பெறுவதற்கு. உதாரணமாக தேர்வில் தேறாதவர்களை மட்டும் காண்பி. இதற்கு NOT உதவும். AND, OR, NOT இவற்றை தர்க்க ரீதியிலான செயல்பாடுகள் என்போம். அதாவது Logical Operators. நீ தவறைச் செய்தால் தண்டிக்கப்படுவாய் - நேர்மறை. நீ தவறைச் செய்யாவிட்டால் தண்டிக்கப்படமாட்டாய் -- இந்த மாதிரி இடங்களில் NOT பயன்படுத்தலாம்.

= Equal
<> Not equal
> Greater than
>= Greater than or equal
<= Less than or equal
BETWEEN Between an inclusive range
LIKE Search for a pattern
IN If you know the exact value you want to return for at least one of the columns

8 comments:

வீணாபோனவன் said...

அடிப்படையில் இருந்து சொல்லிக்கொடுக்கிறீர்கள். பயனுள்ள முயற்ச்சி. நன்றி தமிழ்நெஞ்சம்.

வீணாபோனவன் said...

மற்றும் தொடர்ந்து எழுதவும். நன்றி.

Tech Shankar said...

நன்றிங்க..

// அடிப்படையில் இருந்து சொல்லிக்கொடுக்கிறீர்கள். பயனுள்ள முயற்ச்சி. நன்றி தமிழ்நெஞ்சம்.

// மற்றும் தொடர்ந்து எழுதவும். நன்றி.

Unknown said...

கொண்டு கலக்குறேல் போங்க. வாழ்த்துக்கள்.

Tech Shankar said...

Thanks to : Jimsha @ Vettriselvan

Unknown said...

great attempt. keep it up. Thamizhargalukku
ungalaip poondravargal than indraya thevai

Unknown said...

what a great attempts. Vaazhga. Indraya thamizhargalin thevai neengal thaan

M.Karthikeyan said...

Super :)Nice keywords to reminder at last :)

எளிய தமிழில் SQL - பாகம் 17

பாகம் 15ல் திரு G. ராஜாராமன், சவுதி அரேபியா அவர்கள் கீழ்க்கண்ட கேள்வியை எழுப்பி இருந்தார். அவருக்கு விடையளிக்கும் விதமாக இந்தப்பதிவு அமைகிற...