Saturday, January 31, 2009

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

8 comments:

VASAVAN said...

Really excellent & useful article for all. Best wishes

Tech Shankar said...

Thanks to : VASAVAN

therilandur jamath said...

thank you much

Tech Shankar said...

Thanks to : sarfudeen

Subbaraman Ramaswamy said...

Can you please explain what is a Server, Client, dbo, object owner etc.

Thank you
Subbaraman

Tech Shankar said...

Hi.Subbaraman Ramaswamy
Simply googling about Server, Client, dbo, object owner

Kunnathur Sridhara said...

plz give more examples..thanks

ega.sridhar

rasheda said...

very nice.thankyou very much.

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

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