Monday, February 2, 2009

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

இன்று ஒரு சிறிய செயல்முறைப் பயிற்சியை மேற்கொள்வோம். இதற்காக நாம் ஒரு புதிய Tableஐ உருவாக்குவோம். அதற்குரிய Structure கீழே :

இந்தப் படத்தில் RegNoக்குறிய Columnல் Primary key க்கான படம் சிறிய சாவியாகக் குறிக்கப்பட்டுள்ளது. ஒரு Column ஐ Primary key ஆக எப்படி மாற்றுவது?
அந்தக் குறிப்பிட்ட Columnஐத் தேர்வு செய்யவும். பிறகு Right Click செய்து, வரக்கூடிய சிறிய menu வில் Set Primary key எனக் கொடுக்கவும்.


அவ்வளவுதான் Columnஐ, Primary key எனக் குறித்தாயிற்று. அதனால் ஒவ்வொரு நபருக்கும் நாம் கொடுக்கவேண்டிய பதிவு எண் (Registration Number)ணை மாற்றி, மாற்றிக் கொடுக்கவேண்டும். ஒரு நபருக்குக் கொடுத்த எண்ணையே மற்றோர் நபருக்குத் திரும்பவும் கொடுத்தால் பிழைச்செய்தி வரும். ஒவ்வொரு Rowன் RegNo ஐயும் வித்தியாசப்படுத்தவே Primary key ஐத் தேர்வுசெய்கிறோம்.


Table Structureஐ Close செய்துவிட்டு, ஒரு Table Name கொடுத்துப் பதிவு செய்கிறோம். (MarkStatement என்று பெயர்கொடுத்திருக்கிறேன்). நினைவகத்தில் வன்வட்டு (hard disk)ல் பதிவாகிவிடும்.

இதில் Total, Average, Result ஆகிய Columnளுக்கு மட்டும் Allow Nulls என்பதற்கு நேராக Tick செய்துள்ளோம். ஆகவே Total, Average, Result ஆகியவற்றுக்கு மட்டும் தகவல்களை உள்ளீடு செய்யவேண்டிய அவசியம் இல்லை. பிறகு ஒரு UPDATE மூலம் அவற்றைக் கணக்கிட்டுக்கொள்ளலாம்.


இப்போது இந்த அட்டவணை (Table)ல் ஒவ்வொரு Rowவாகத் தகவல்களைக் கொடுக்கப்போகிறோம்.

இதற்காக MarkStatement ல் Right Click செய்து வரும் சிறு menuவில், Open Table தேர்வுசெய்யவும்.






இங்கே ஒவ்வொரு Rowவாக Table ல் தகவல்களை ஏற்றும்போது, Total,Average,Result ஆகியவற்றுக்கான மதிப்புகளை NULL ஆகவே விட்டுவிட்டு மற்ற Columnகளுக்கு உரிய மதிப்புகளை மட்டும் கொடுத்தால் போதும்.

நம் செயல்முறைகளுக்கு, 10 Rows மட்டும் போதும். அதற்காக இதைக் Close செய்யவும்.
இப்போது, UPDATE மூலம் Total,Average,Result ஆகியவற்றை எப்படி நிரப்புவது என்பதைக் காண்போம். இதற்காக T-SQL Editorஐத் திறந்து கொள்ளவும்.

இதற்காக Databaseஐத் தேர்வு செய்தபிறகு, New Queryஎன்னும் ஒரு Toolbar ன் buttonஐத் தேர்வு செய்யவும்.


வலதுபுறம் உள்ள காலியிடமே T-SQL Editor ஆகும். அங்கே கீழ்க்கண்ட வரிகளை எழுதுங்கள்.

UPDATE dbo.MarkStatement
SET
Total = Tamil + English + Maths

இதன் விளைவாக Total என்கிற Columnல் மூன்று பாடங்களில் அவரவர்கள் வாங்கிய மதிப்பெண்களைக் கூட்டி வரும் விடை நிரப்பப்பட்டுவிடும். இந்த UPDATE ல் எந்த WHEREம் இல்லாததால் அனைத்து Rowsம் மாற்றப்பட்டுவிடும்.

எனக்குக் கிடைத்த விடை : (10 row(s) affected)
இப்போது SELECT * FROM MarkStatement - இதை ஓட்டிப்பார்த்து Total Column மதிப்பை உடனே அறிந்துகொள்ளலாம்.

Average ( சராசரி ) காண்பதற்காக :

UPDATE dbo.MarkStatement
SET
Average = Total / 3

மூன்றையும் கூட்டி மூன்றால் வகுத்தால் வரும் விடை இங்கே சராசரி ஆகும் (Average).

கீழ்க்கண்ட வரியை இயக்கினால் எந்தெந்த மாணவர்கள் தேர்ச்சியுற்றிருக்கிறார்களோ அவர்களுக்கு மட்டும் PASS என Result Columnன் மதிப்பை மாற்றிவிடலாம்.

UPDATE dbo.MarkStatement
SET
[Result] = 'PASS'
WHERE
Tamil >= 35 AND English >= 35 AND Maths >= 35

Tamil, English, Maths ஆகிய 3 மாறுபட்ட பாடங்களிலும், அனைத்துப் பாடங்களிலும் குறைந்தபட்சம் 35 மதிப்பெண்கள் எடுத்தவர்களுக்கு PASS போட்டு விடப்படும்.

AND எனப்படும் தர்க்கரீதியிலான Logical Operator ஆனது, அனைத்துக் கட்டுப்பாடுகளுக்கும் சம்மதிக்கக் கூடிய Rows ஐ மட்டும் பிரித்தெடுத்து அவைகளை மட்டும் UPDATE செய்ய அனுமதிக்கும்.

விடை : (8 row(s) affected)

UPDATE dbo.MarkStatement
SET
[Result] = 'FAIL'
WHERE
Tamil < 35 OR English < 35 OR Maths < 35

மேற்கண்ட வரியை இயக்கினால், ஏதேனும் ஒரு பாடத்தில் மட்டுமாவது 35 மதிப்பெண்களைவிடக் குறைவாகப் பெற்றவர்களுக்கு மாத்திரம் FAIL போடப்பட்டுவிடும்.

OR எனப்படும் தர்க்கரீதியிலான Logical Operator ஆனது ஏதேனும் ஒரு கட்டுப்பாட்டுக்காவது சம்மதிக்கும் Rows ஐ UPDATE செய்துவிடும்.

கிடைத்த விடை : (2 row(s) affected)

இப்போது SELECT * FROM MarkStatement - இதை ஓட்டிப்பார்த்து Total, Average, Result Columnகளில் Update செய்யப்பட்ட மதிப்பை அறிந்துகொள்ளலாம். ஹரி, மற்றும் பானு இருவர் மட்டும் தோல்வியடைந்துள்ளனர். மீதி அனைவரும் தேர்ச்சியடைந்துள்ளனர்.

அதிகபட்ச மதிப்பெண்ணைக் காண :
SELECT MAX(total) FROM Markstatement

இதன் விடை : 267

MAX ( ) என்பது Maximum ஒரு உள்ளமைந்த built-in Function ஆகும். இது குறிப்பிட்ட Columnல் இருக்கும் அனைத்து மதிப்புகளிலும் மிக உயர்ந்தது எது என்பதைக் கண்டறிய உதவும்.

ஏற்கனவே முந்தைய பாடத்தில் UPPER ( ) , GETDATE ( ) போன்ற Functions ஐப் பார்த்திருக்கிறோம். அதைப் போன்றே இது.

குறைந்தபட்ச மதிப்பெண் யாது?

SELECT MIN(Total) FROM Markstatement

இதன் விடை : 118

MIN( ) என்பது Minimum ஒரு உள்ளமைந்த built-in Function ஆகும். இது குறிப்பிட்ட Columnல் இருக்கும் அனைத்து மதிப்புகளிலும் மிகக் குறைவானது எது என்பதைக் கண்டறிய உதவும்.

முதல் மதிப்பெண்ணைப் பெற்றவர்களது தகவல்களைக் கண்டறிய :

SELECT * FROM MarkStatement
WHERE TOTAL = (SELECT MAX (Total) FROM Markstatement)

அல்லது,

DECLARE @M INT

SET @M= ( SELECT MAX(Total) FROM MarkStatement )

SELECT * FROM MarkStatement WHERE Total = @M

எனக் கொடுக்கலாம். இதன் விடை கீழே :



தேர்வில் தோல்வியடைந்தவர்களின் records ஐ அழித்துவிடுவோம். அதற்காக,

DELETE FROM MarkStatement WHERE [Result] = 'FAIL'

1 comment:

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

அருமையான தொடர்.
பலரும் படித்து பயன்பெற வேண்டும்.

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

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