Tuesday, February 3, 2009

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

SELECT உடன் ஒரு செயல்முறைப் பயிற்சி


SELECT * FROM tableName என்பது ஒரு Tableல் இருக்கும் அனைத்து Rowsஐயும் திரையில் காண்பிக்க, தேடி எடுக்க.

இதில் குறிப்பிட்ட Rowsஐ மாத்திரம் எடுப்பதற்கு என்ன செய்யவேண்டும். ஒரு WHERE ஐ இணைத்தால் போதும்.

SELECT * FROM tableName WHERE Condition

Condition என்பதைக் கட்டுப்பாடு எனக் கொண்டால் ஒன்றுக்கு மேற்பட்ட கட்டுப்பாடுகளை விதிக்க என்ன செய்ய வேண்டும்?

SELECT * FROM tableName WHERE Condition1 AND Condition2 AND Condition3

AND என்னும் Logical Operator ஐ உடன் சேர்த்துப் பயன்படுத்த வேண்டும்.

SELECT * FROM என்று கொடுத்தால் அனைத்து Columns ஐயும் நாம் பார்ப்பதற்காக தேர்வு செய்கிறோம் என்று அர்த்தம்.

இதில் குறிப்பிட்ட Columnsஐ மாத்திரம் பார்க்கவேண்டுமென்றால் என்ன செய்வது?

SELECT Column1, Column2, Column3 FROM tableName

SELECT column_name(s) FROM table_name

உதாரணம்:
SELECT [Name], [City] FROM Persons

கீழ்க்கண்ட Tableன் தகவல்களை உற்று நோக்கவும். இதில் City என்னும் இடத்தில் 3 நகரங்கள் உள்ளன. Chennai, Erode, USA. ஆனால் Chennai,Erode ஆகியவை இரண்டுமுறையும், USA - ஒருமுறையும் இடம் பெற்றுள்ளது.



SELECT [CITY] FROM MyList எனக் கொடுத்தால் அனைத்து நகரங்களும் வரும்.


ஆனால் இதில் திரும்பத்திரும்ப வரும் நகரங்களை விட்டுவிட்டு, ஒன்றுக்கு மேற்பட்டு வந்திருப்பவைகளை ஒரே ஒரு முறை மட்டும் காண்பிப்பதற்கு DISTINCT உதவும்.

SELECT DISTINCT [CITY] FROM MyList

குறிப்பிட்ட நகரத்தை மட்டும் காண்பதற்கு இதில் WHERE பயன்படுத்துவோம்.
SELECT column_name(s)
FROM table_name
WHERE column_name operator value

SELECT * FROM MyList WHERE City ='Erode'
ஈரோடு நகர் நண்பர்களைப் பற்றி மட்டும் காண்பதற்கு
நமது தேர்வில் ஒன்றுக்குமேற்பட்ட நகரத்தைக் காண்பதற்கு OR பயன்படுத்துவோம்

அமெரிக்கா மற்றும், சென்னை - இவற்றைத் தேர்வு செய்வதற்கு :

SELECT * FROM MyList WHERE City ='USA' OR City = 'Chennai'

இதையே வேறு விதமாக OR பயன்படுத்தாமல் எழுதலாம். அதற்கு IN பயன்படுத்தவேண்டும்.

SELECT * FROM MyList WHERE City IN ('USA' ,'Chennai')
இதற்கும் அதே விடைதான்.

சென்னை நீங்கலாக உள்ள நகரங்களில் இருக்கும் நண்பர்களின் பட்டியலைப் பார்வையிட:
இதற்கு NOT பயன்படுத்தலாம். NOT என்பது Logical Operator வகையைச் சார்ந்தது.

<> , != என்பது Relational Operator வகையைச் சேர்ந்தது.

அ) SELECT * FROM MyList WHERE City <> 'Chennai'

ஆ) SELECT * FROM MyList WHERE City != 'Chennai'

இ) SELECT * FROM MyList WHERE City NOT IN ('Chennai')

அனைத்துக்கும் ஒரே விடைதான். அது கீழே. சென்னையைத் தவிர.
யாருடைய பெயரில் n என்கிற எழுத்து உள்ளது என்பதை அறிவதற்கு :

SELECT * FROM MyList WHERE [Name] LIKE '%n%'
LIKE எனப்படும் keywordன் பயன் யாதெனில், குறிப்பிட்ட எழுத்துகளைக் கொண்ட தகவல்களை மட்டும் தேர்வு செய்வது
%n% எனில் ஏதோ ஒரு எழுத்து n ஆக இருக்கும் நபர்கள்.

_ என்பது underscore (அடிக்கோடு), இது ஒரு எழுத்தை மட்டும் எதைக்கொண்டாவது நிரப்பிக்கொள் என்பதற்காக. % என்பது மீதமுள்ள அனைத்து எழுத்துக்களையும் நிரப்பிக்கொள் என்பதே. இவற்றிற்கு Wild Card Characters என்று பெயர்.


SELECT * FROM MyList WHERE [Name] LIKE '_a%'

முதல் எழுத்து எதுவாக இருந்தாலும் பரவாயில்லை. ஆனால் இரண்டாம் எழுத்து கண்டிப்பாக 'a'. மீதியுள்ள எழுத்துக்களைப் பற்றிக் கவலையில்லை. அதற்காக.

சுருங்கச் சொன்னால் யாருடைய பெயரில், இரண்டாம் எழுத்து a ஆக இருக்கிறது.

Person# ல் 1,3,5 ஆகியோர்களைத் தேர்வு செய்வதற்கு:
SELECT * FROM MyList WHERE [Person#] = 1 OR [Person#] = 2 OR [Person#] = 3

OR என்பது எதாவது ஒரு Condition ஏற்றுக்கொண்டாலும் ஒத்துழைக்கக்கூடியது
இதை IN மூலம் எழுதினால்,

SELECT * FROM MyList WHERE [Person#] IN (1,3,5)

1,3,5 இவற்றைத் தவிர பிற Rowsகளைப் பார்க்க :
அதாவது 2, மற்றும் 4 ஆகியவற்றை மட்டும் பார்க்க

SELECT * FROM MyList WHERE [Person#] NOT IN (1,3,5)

அல்லது

SELECT * FROM MyList WHERE [Person#] != 1 AND [Person#] != 3 AND [Person#] !=5

அல்லது

SELECT * FROM MyList WHERE [Person#] <> 1 AND [Person#] <> 3 AND [Person#] <> 5

SELECT * FROM MyList எனக் கொடுக்கிறேன்.
இதன் விடை
இதில் பெயர்களை மையமாகக் கொண்டு ஏறுவரிசை (ascending), அல்லது இறங்குவரிசை (descending) ஆகக் காண்பிப்பதற்கு என்ன செய்வது?

இதற்காக SELECT உடன் ORDER BY எனப்படும் keyword ஐப் பயன்படுத்தவேண்டும்.

ASC எனக் கொடுத்தால் ஏறுவரிசையாகவும், DESC எனக் கொடுத்தால் இறங்குவரிசையாகவும் காட்சியளிக்கும்.

SELECT * FROM MyList ORDER BY [Name] ASC (ஏறுவரிசையில் பார்க்க)

SELECT * FROM MyList ORDER BY [Name] DESC (இறங்குவரிசையில் காண)

2 comments:

Tech Shankar said...

Thankyou Valaipookal Team.

வடுவூர் குமார் said...

SELECT ஐ வைத்தே இவ்வளவு விளையாடமுடியுமா?!

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

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