This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

Thursday, August 8, 2013

எளிய தமிழில் 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'

எளிய தமிழில் 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 (இறங்குவரிசையில் காண)

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

ஒரு சிறிய Table ஒன்றை உருவாக்கிக்கொள்வோம். அதைக் கொண்டு SELECT ன் தன்மைகளை ஆராயலாம்.


Table ஒன்றை உருவாக்குவதற்காக, GUI (Graphical User Interface) வழியாக என்ன செய்வதென்று ஏற்கனவே பாகம்-5ல் பார்த்திருக்கிறோம்.

அதையே CUI எனப்படும் Character User Interface வாயிலாக T-SQL Editor ல் தட்டித்தட்டியே ஒரு Tableன் Structureஐ எப்படி உருவாக்குவது என்பதை இங்கே காணலாம்.

T-SQL Editorல் எவ்வாறு நிரல் எழுதுவது? T-SQL Editorக்கு எந்த செயல்வழி மூலம் செல்வது? ஆகியவற்றைத்தெரிந்து கொள்ள - இங்கே சொடுக்கவும்.

ஒரு வழியாக T-SQL Editorக்கு வந்துவிட்டோம்.

Table ஒன்றை புதிதாக உருவாக்க உதவும் ஒரு எளிய pattern கீழே :

CREATE TABLE tableName 
(
 
ColumnName1 datatype,
 
ColumnName2 datatype,

ColumnName3 datatype, ....
)
இந்த pattern ஐ Syntax என்பார்கள். கணக்குப் பாடத்தில் ஒரு கணக்கைச் செய்வதற்கு முன் மாதிரி கணக்கைக் கொடுத்து - அதைப்போல மற்றொன்றைச் செய்யச் சொல்வார்கள். அந்த மாதிரி கணக்கு போலத்தான் இந்த Syntax.

இந்த Syntax ல் tableName என்கிற இடத்தில் ஒரு அட்டவணையின் பெயர் (MyList), ColumnName1 என்கிற இடத்தில் Person#, LastName, FirstName, City போன்றவையும் ஒவ்வொரு DataTypeக்கு நேராக அதன் வகையையும் குறிப்பிட்டுவிட்டால் கீழ்க்கண்டமாதிரி Tableன் வடிவம் இருக்கும்.

CREATE TABLE MyList 
(

Person# int, 
[Name] varchar(50),
 
City varchar(50)
 
)


Name என்பது SQL ல் உள்ளமைந்த ஒரு தனிப்பட்ட keyword. ஆகவே அதைப் பிரித்துக் காண்பிப்பதற்காக [Name] என ஒரு அடைப்புக்குள் (Square Bracket) குறிப்பிடுகிறோம். இந்த Pattern - Syntax ஐ நிரப்பிய பிறகு F5 keyஐ விசைப்பலகையில் அழுத்தி Table ஐ உருவாக்கலாம். ஏதேனும் பிழைச்செய்தி வந்தால் அதைச் சரிசெய்தபிறகு Table உருவாகிவிடும்.

Table உருவாகிவிட்டதா என்பதை எப்படி அறிவது?

ஒரு சிறிய SELECT வடிவம் ஒன்று.

SELECT * FROM tableName ---> ஒரு Tableல் இருக்கும் அனைத்து rowsஐயும் திரையில் காண்பிப்பதற்காக.

SELECT * FROM MyList --> MyList என்பது நாம் சற்று முன்னர் உருவாக்கிய Tableன் பெயரே. இதை இயக்குவதற்கு F5 அழுத்தினால் கிடைக்கும் விடை கீழே :

இங்கே * என்பது அனைத்து rows ஐயும் குறிக்கிறது.

நாம் இப்போது உருவாக்கிய Persons என்கிற Tableல் எந்தவிதமான தகவலும் ஏற்றப்படவில்லை. வெறும் Structure மட்டுமே உருவாக்கப்பட்டுள்ளது.

இந்த MyList என்று சற்றுமுன்னர் உருவாக்கிய Tableல் ஒவ்வொரு rowவாக புதுப்புது தகவல்களை ஏற்றுவதற்கு என்ன செய்யவேண்டும்?

புதிய தகவல்களை ஏற்றுவதற்கு உரிய Syntax (Pattern)

INSERT INTO table_name
(
column1,
column2, ...
)
VALUES
(
'value1',
'value2', ...
)


நாம் நமது MyList அட்டவணைக்குத் தகுந்தாற்போல் மாற்றினால்

INSERT INTO MyList (Person#, [Name] , City) VALUES (1, 'Jimsha', 'Chennai')
INSERT INTO MyList (Person#, [Name] , City) VALUES (2, 'Valpaiyan', 'Erode')
INSERT INTO MyList (Person#, [Name] , City) VALUES (3, 'Karthik', 'Erode')
INSERT INTO MyList (Person#, [Name] , City) VALUES (4, 'Vizhiyan', 'Chennai')
INSERT INTO MyList (Person#, [Name] , City) VALUES (5, 'PKP', 'USA')

என 5 rowக்களுக்கான தகவல்களை 5 வரிகளில் எழுதவேண்டும்.

இப்போது நாம் கொடுத்த தகவல்களை திரையில் காண்பதற்கு :
SELECT * FROM MyList 
எனத்தட்டெழுதி F5 அழுத்தவும்.
விடை கீழே :


CREATE புதிய Tableன் Structureஐ உருவாக்க
SELECT ஏற்றப்பட்ட தகவல்களைப் பார்வையிட
INSERT புதிய தகவல்களை ஒன்றொன்றாகப் பதிந்திட

SELECT ல் Wild Card Character என்று குறிப்பிட்டிருந்தேன். அது என்ன Wild Card Character?



உதாரணமாக SELECT * FROM MyList எனக் கொடுத்தால் ஏற்றப்பட்ட 5 rowsஉம் உடனே கண்முன் வந்து நிற்கும்.

இதில் குறிப்பிட்ட rowsஐ மட்டும் பார்ப்பதற்கு என்ன செய்வது? வடிகட்டுதல் நுட்பத்திற்காக SELECT உடன் WHERE எனப்படும் கட்டுப்பாட்டை உடன் இணைக்கிறோம்..

இப்போது SELECT ன் Syntax இவ்வாறு இருக்கும்.
SELECT * FROM tableName WHERE Condition

Condition என்கிற இடத்தில் Relational மற்றும் Logical Operators ஐப் பயன்படுத்தி வடிகட்டுதல் வேட்டையைத் தொடரலாம்.

சில உதாரணங்கள்:
SELECT * from MyList WHERE Person# = 5

5வது நபரின் தகவல்களை மட்டும் திரையில் காண்பதற்கு
விடை :

SELECT * FROM MyList WHERE Person# >=2 AND Person# <= 4.
2 முதல் 4 வரை எண்களைக் கொண்ட நபர்களின் தகவல்களைக் காணSELECT * FROM MyList WHERE City = 'Erode'
ஈரோடு நகரில் வசிக்கும் நபர்களை மட்டும் பார்க்க

SELECT * from MyList WHERE City <> 'Erode'
ஈரோடு நகரை விடுத்து பிற நகரங்களில் வசிப்போர் யார் யார்?
இது வரை நாம் Wild Card ஐப் பயன்படுத்தவில்லை. இப்போது பயன்படுத்திப் பார்ப்போம். Wild Card என்றால் நிரப்பிகள் எனப்படும்.
Wild Card பயன்படுத்தும் Syntax வடிவம்

SELECT * FROM
tableName
WHERE
filedName
LIKE
'wild pattern'


LIKE 'C%'
எனக்கொடுத்தால் C என்கிற எழுத்தில் ஆரம்பிக்கக் கூடிய எல்லாமே
நகரத்தின் ஆரம்ப எழுத்து C.
SELECT * FROM MyList WHERE City LIKE 'C%'
LIKE '%i%'
எனக் கொடுத்தால் இரண்டாவது எழுத்து i
% என்பது எல்லாமே , _ என்பது ஒரு எழுத்தை மட்டும் குறிக்கிறது.

SELECT * FROM MyList WHERE [Name] LIKE '%i%'
பெயரின் ஏதோ ஒரு எழுத்து i ஆக இருப்பவர்கள் யார் யார்?


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

SQL கற்பதற்கான ஒரு இலவச மென்பொருளான 2005 ஐ முந்தைய பாகங்களில் கண்டோம்.

அதன் நவீன வடிவமாகிய Microsoft® SQL Server® 2008 Express with Tools ஐ இறக்கி நிறுவிப் பயன்பெருங்கள்.

SQL Server 2008 Express with Tools 
SQL Server database engine - create, store, update and retrieve your data
SQL Server Management Studio Basic - visual database management tool for creating, editing and managing databases

இந்த அடிப்படைப் பயன்பாடு நமக்கு ஒத்துவரும். 2005 ஐ நிறுவியிருந்தவர்கள் அதை uninstall செய்தபிறகு இதை நிறுவவும்.

நேற்றையப் பதிவில் CREATE,INSERT,SELECT ஆகியவை பற்றிப் பார்த்தோம்.

இன்றைக்கு UPDATE மற்றும் DELETE ஆகியவற்றைப் பற்றிப் பார்ப்போம்.

ஏற்கனவே பதியப்பட்ட தகவல்களில் மாற்றங்கள் செய்வதற்கு UPDATE உதவும்.
பழைய தகவல்களின் Row / Rows ஐ அழித்துவிடுவதற்கு DELETE உதவும்.

ஏற்கனவே நாம் உருவாக்கிய MyListஐ ஒரு Copy (படி) எடுத்து வைப்பதற்காக கீழ்க்கண்ட வரியை இயக்கவும்.

Table ஐ Copy செய்வதற்குரிய Syntax :

SELECT * INTO newTableName FROM oldTableName



உதாரணம்:
SELECT * INTO BakupMyList FROM MyList


இதன் மூலம் MyList எனப்படும் நம்முடைய பழைய Tableன் Copy ஐ, புதிய BackupMyListல் எழுதி வைத்துவிடலாம்.

இதை இயக்கியதும் எனக்குக் கிடைத்த விடை : (5 row(s) affected)

இப்போது UPDATE பற்றிப் பார்ப்போம்.

UPDATE ன் Syntax:
UPDATE tableName
SET
[fieldName] = 'newValue'
WHERE
[fieldName] ='oldValue'

உதாரணம்:
UPDATE MyList
SET
[Name] = 'Arun'
WHERE
[Name] ='valpaiyan'

நம்முடைய MyList என்னும் Tableல் 2வது rowல் உள்ள தகவல் 2,valpaiyan,Erode - என இருந்தது. அவருடைய உண்மையான பெயர் Arun. செல்லமாக அவர் வைத்துக்கொண்ட பெயர் valpaiyan. அவருடைய செல்லப்பெயரை, உண்மைப் பெயரைக் கொண்டு மாற்றுவதற்கு - மேற்கொண்ட UPDATE பயன்படும்.

இப்போது SELECT * FROM MyList WHERE [Person#] = 2 எனக் கொடுத்து F5 அழுத்தினால், கிடைக்கும் விடை : 2 Arun Erode

நாம் ஒரு rowல் இருக்கும் குறிப்பிட்ட Column ல் ஏற்றப்பட்ட மதிப்பை வேறு ஒரு மதிப்பைக் கொண்டு மாற்றுவதற்கு இப்போது UPDATE ஐப் பயன்படுத்தினோம்.

இதில் WHERE எனப்படும் கட்டுப்பாட்டை விதிக்காவிடில் என்ன ஆகும்?
உதாரணமாக :

UPDATE MyList
SET
[Name] = 'Arun'

என்று மட்டும் கொடுத்திருந்தால் என்ன ஆகியிருக்கும்.

இப்படி ஆகியிருக்கும். அனைவருடைய பெயரையுமே Arun என்று மாற்றியிருக்கும்.

எத்தனை முறை SELECT கொடுத்தாலும், எந்தத் தகவலுமே மாறாமல் அப்படியே இருக்கும்.

ஆனால் UPDATE, DELETE கொடுக்கும்போது கவனமாக இருக்கவும். எதாவது தவறிழைத்துவிட்டால் - அனைத்துத் தகவலும் நொடியினில் மாறிவிடும் ஆபத்து உள்ளது.

அதற்காகவே SELECT * INTO கொடுத்து ஒரு backup எடுத்து வைத்துக்கொண்டேன்.

இந்த அட்டவணையில் (Table) ஏற்கனவே ஏற்றப்பட்டுள்ள 5 Rowsல் இருக்கும் [Name] Columnன் மதிப்புகள் அனைத்தையுமே பெரிய எழுத்துகளில் (CAPITAL LETTERS) மாற்றுவதற்கு என்ன செய்யவேண்டும்?

UPDATE MyList
SET
[Name] = UPPER([Name])


இங்கே UPPER( ) என்பது ஒரு Function ஆகும். இதை உள்ளமைந்த built-in function என்போம். இது பெரிய எழுத்துகளாக மாற்றுவதற்குப் பயன்படுகிறது.

இந்த UPPER( ) மாற்றப்பட்டவுடன் கிடைத்த விடை மேலே:

இப்போது அழிக்கும் வேலைக்கு என்ன Statement என்பதைக் காண்போம்

Syntax கீழே:
DELETE FROM tableName WHERE Condition

DELETE FROM 
MyList 
WHERE 
[Person#] = 4

இதன் அர்த்தம் என்ன. 4வது rowவை அழித்துவிடு.

DELETE FROM MyList என்று WHERE ஐ நீக்கிவிட்டுக் கொடுத்தால் என்ன ஆகும்?
ஒட்டுமொத்தமாக அனைத்து records (rows) ம் அழிந்து போகும்.
ஆனால் Tableன் Structure அழியாது.

இந்த DELETE FROM MyList இதற்குச் சமமாக வேறு ஒரு Statement ம் இருக்கிறது.

அதன் Syntax மற்றும் உதாரணம் கீழே:

TRUNCATE TABLE tableName


TRUNCATE TABLE MyList

குறிப்பு :
ஒரு Table ஆனது, அதனுடன் தொடர்புடைய இணைக்கப்பட்ட மற்றொரு Table உடன் இணைப்பில் இருந்தால் (Foreign Key Relationship) அதை Truncate செய்ய இயலாது. Truncate ன் மூலம் ஒரு Tableல் உள்ள அனைத்து Rows ஐயும் அழித்துவிட இயலும்.

ஒரு Tableஐ வேறொரு Tableஉடன் இணைப்பதற்கு (join) Foreign key பயன்படுகிறது.

Structure ஐயும் சேர்த்து அழிப்பதற்கு என்ன செய்யவேண்டும்?

Syntax :

DROP TABLE tableName

உதாரணம்:
DROP TABLE MyList



இப்போது ஏற்கனவே Copy செய்து வைத்திருக்கிறோமே BakupMyList என்கிற Table அதை MyList என பெயர் மாற்றுவோம்.

இப்படி ஒரு Tableன் பெயரை மாற்றுவதற்கு கீழே உள்ள வரியை இயக்கலாம்.

SP_RENAME 'BakupMyList', 'MyList'

SP_RENAME என்பது ஏற்கனவே எழுதப்பட்ட ஒரு நிரல். அதனை Stored Procedure என்று அழைப்பார்கள். அதுபற்றிப் பிறகு பார்ப்போம்.

இதன் Syntax:

SP_RENAME 'oldTableName', 'newTableName'

இப்படி ஒரு Tableன் பெயரை மாற்றும்போது, கிடைக்கும் ஒரு எச்சரிக்கைச் செய்தி:

Caution: Changing any part of an object name could break scripts and stored procedures.

Tableன் ஒரு குறிப்பிட்ட columnன் பெயரை மாற்ற என்ன செய்ய வேண்டும்?

SP_RENAME 'dbo.MyList.City', 'Place', 'COLUMN'

இதன் Syntax :

SP_RENAME
'dbo.tableName.oldColumnName',
'newColumnName', 'COLUMN'


இங்கே dbo என்பது object owner.