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.

எளிய தமிழில் 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 ஆக இருப்பவர்கள் யார் யார்?

Friday, January 30, 2009

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

How to install Sql Server 2005 Expression Edition?


ஏழாவது பாகத்தில் Relational operators, மற்றும் Logical Operators ஆகியவற்றைப் பார்த்தோம்.

Relational Operatorsல் <, >, >=, <=, =, != , <> போன்றவை வரும்.
Logical Operatorsல் AND, OR, NOT போன்றவை வரும்.

ஒரு குறிப்பிட்ட மதிப்பானது அதிகமா, குறைவா, சமமா, சமமில்லையா என சோதித்தறிய Relational Operators பயன்படுத்தலாம்.

ஒன்றுக்கு மேற்பட்ட கட்டுப்பாடுகளைத் தொடர்புபடுத்தி விடைகாண்பதற்கு Logical Operators பயன்படுத்தலாம்.

கணிதச் சமன்பாடுகளை, கூட்டல்,கழித்தல்,வகுத்தல்,பெருக்கல் போன்ற கணக்குகளைச் செய்வதற்காக Arithmetic Operators உள்ளன.

அவை :
+ கூட்டல் (Addition)
- கழித்தல் (Subtraction)
* பெருக்கல் (Multiplication)
/ வகுத்தல் (Division)

உதாரணம்:

DECLARE @a int
DECLARE @b int
DECLARE @c int

SET @a = 100
SET @b = 150
SET @c = @a + @b

PRINT @c

மேலே ஒரு எளிய T-SQL நிரல் (Program) ஒன்றைக் கொடுத்துள்ளேன்.
@a, @b, @c ஆகியவை Variable எனப்படும். அதாவது மாறிகள். ஒவ்வொரு மாறிகளுக்கும் தனித்தனி மதிப்புகளைக் கொடுக்கிறோம். அதற்கு SET என்னும் keyword பயன்படும்.
SET @c = @a + @b என்பதில் a, மற்றும் b ஆகிய இரண்டின் மதிப்பையும் + என்கிற கூட்டல் (Addition - Arithmetic Operator) அடையாளத்தைப் பயன்படுத்திக் கூட்டிக் கிடைக்கின்ற விடையை @c மூன்றாவது மாறியில் போட்டுவிடு - என அர்த்தம்.

PRINT @c எனக் கொடுத்ததும் cன் மதிப்பு 250 எனத் திரையில் காட்டும்.

மேற்கூரிய எளிய நிரலில் + எனப்படும் ஒரு Arithmetic Operator பயன்படுத்தியுள்ளோம்.
இது போல எளிய நிரல்களை எழுதிப் பாருங்கள்.

இந்த நிரல்களை எழுதி விடை காண SQL Server Expression Edition 2005ல் நாம் என்ன செய்ய வேண்டும். அதன் வழிமுறைகளைக் காண்போம்.

உங்கள் Authentication எதுவாக இருக்கிறதோ அதைத் தேர்வு செய்தபிறகு, Connect ஐ அழுத்தவும்.
திரையில் Object Explorer என்னும் ஒரு Window தெரியும்.

அதில் பாகம்-5ல் நாம் ஏற்கனவே உருவாக்கிய Test எனப்படும் Database ஐத் தேர்வுசெய்யவும்.

File ==> New ==> Query with New Connection இதைக் கிளிக்கவும்.

உடனே ஒரு வெள்ளைத் திரை கண் முன்னர் நிற்கும். இதுதான் T-SQLக்கான Editor. இதில் நாம் நிரல்களை எழுதிப் பழகலாம்.

நிரல் எனப்படும் Programஐ எழுதிய பிறகு அதை இயக்கிப் பார்க்க F5 விசையை அழுத்தவும்.

இந்த Programன் விடை கீழே உள்ள சட்டத்தில் 250 எனக் காட்சியளிக்கும்.



இந்த programல் சில இடங்களில் நான் வேண்டுமென்றே தவறு செய்கிறேன். பிழைச்செய்தி எப்படி வருகிறது என்பதைக் காண்பதற்காகத்தான்.
DECLARE @a int
DECLARE @b int
DECLAR @c int ---> தவறு (1) ஒரு E எழுத்தை விட்டுவிடுகிறேன்.

SET @a = 100
SET @b = 150
SET @c = @a + @b

PRINTT @c ----> தவறு (2) ஒரு T எழுத்தை அதிகமாகக் கொடுக்கிறேன்.

இப்போது F5 key ஐ அழுத்தி விடையை எதிர்பார்த்தால் என்ன கிடைக்கிறது?

Msg 102, Level 15, State 1, Line 3
Incorrect syntax near 'DECLAR'.
Msg 137, Level 15, State 1, Line 6
Must declare the scalar variable "@b".
Msg 137, Level 15, State 2, Line 7
Must declare the scalar variable "@b".


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

இன்றையத் தேதி என்னவென்பதை T-SQL வாயிலாக எப்படிக் கண்டுபிடிப்பது?

DECLARE @today datetime
SET @today = getdate()
PRINT @today

இங்கே @today என்பது ஒரு மாறி (Variable). அதனுடைய Data Type ஆனது datetime வகையைச் சேர்ந்தது.

getdate( ) என்பதை Function என்போம். இந்த Function ஆனது இன்றைய தேதிநேரத்தைக் கண்டறிய உதவும். அதை @today ல் பதிந்துவிடும்.


PRINT @today எனக் கொடுத்ததும் கிடைத்த விடை :
Jan 30 2009 11:32PM

இதை மிகச் சுருக்கமாக : PRINT getdate( ) என்றும் கொடுக்கலாம்.


குறிப்பு : எழுதிய program ஐ இயக்கி / ஓட்டி / run / execute செய்து பார்ப்பதற்கு F5 விசையை keyboardல் அழுத்த வேண்டும்.

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

Wednesday, January 28, 2009

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

DQL: SELECT
DML: DELETE, INSERT, UPDATE
DDL: CREATE, DROP, TRUNCATE, ALTER
TCL: COMMIT, ROLLBACK, SAVEPOINT
DCL: GRANT, REVOKE

மேலே சில கட்டளைகளை (Commands)கொடுத்துள்ளேன். இந்தக் கட்டளைகள் மூலம் Databaseஐ நாம் நமது கட்டுப்பாட்டுக்குள் கொண்டு வரலாம்.

DQL என்பது Data Query Language. ஒரு Databaseன் Tableல் ஏற்கனவே நாம் பதிந்துவைத்துள்ள தகவல்களை தேடி எடுப்பதற்கு. உதாரணமாக 1000 rows இருப்பதாகக் கொள்வோம். அதில் குறிப்பிட்ட சில rows மட்டும் நமக்குத் தேவையெனில் அவற்றை மட்டும் தேடி எடுக்க DQL . இதற்காக SELECT என்கிற கட்டளை பயன்படும்.

DML என்பது Data Manipulation Language. ஏற்கனவே பதிந்துவைத்திருக்கும் தகவல்களில் மாற்றங்களை ஏற்படுத்த, அழிக்க, உருவாக்க. (தகவல்களைத் தான் மாற்றுகிறதே ஒழிய ஒரு Tableன் Structureல் எந்த மாற்றமும் நிகழாது).

DDL என்பது Data Definition Language. புதிய Database (அ) Table போன்றவற்றை உருவாக்க. அதாவது Tableன் Structure ஐ உருவாக்க, ஒட்டுமொத்த Table ஐயுமே அழிக்க, மாற்றங்கள் செய்ய. ஒரு குறிப்பிட்ட Column ன் Data Type ஐ மாற்ற.புதிய Column ஐ உருவாக்க, தேவையற்ற Column இருப்பின் அதை நீக்க.

TCL என்றால் Transaction Control Language. ஒரு நிரலை இயக்கும்போது ஏதேனும் பிழைகள் ஏற்பட்டால், பிழை ஏற்படுவதற்கு முன்னர் வரை ஏதேனும் மாற்றங்கள் நிகழ்ந்திருந்தால் அவையனைத்தையும் நிராகரித்து முந்தைய நிலைக்குக் கொண்டு செல்வதற்கு.

TCL பற்றி சிறிது விளக்கமாகப் பார்ப்போம்.

உதாரணமாக ஒன்றுக்கு மேற்பட்ட Database அல்லது Tableகளில் நாம் ஒரு குறிப்பிட்ட Program ஐ இயக்குவதாகக் கொள்வோம். ஒரு Tableல் உள்ள ஒரு மதிப்பைக் கழித்து (முதலாவது செயல்), அடுத்த Tableல் உள்ள ஒரு குறிப்பிட்ட மதிப்புடன் கூட்டச் செய்ய(இரண்டாவது செயல்) முயற்சிக்கிறோம்.

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

முதலாவது Tableல் அந்த மதிப்பு கழிக்கப்பட்டு இருக்கும். ஆனால் கோளாறு காரணமாக இரண்டாவது Tableல் அந்த மதிப்பு கூட்டப்பட்டு இருக்காது.

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

நல்ல உதாரணம் ஒன்று:

உங்களது வங்கியின் ATM அட்டையை, ATM இயந்திரத்தில் செருகி பணம் எடுக்க முயற்சிக்கிறீர்கள். எத்தனை ரூபாய் பணம் என்பதையும் தட்டிவிட்டீர்கள். இயந்திரமானது பணத்தை எண்ணிக்கொண்டிருக்கும் சத்தம் கேட்கிறது. திடீரென்று கோளாறு. Battery down - Power Cut. ஏதோ ஒரு கோளாறு. என்ன ஆகும்?

பணம் உங்கள் கைக்கு வராது.

உங்கள் வங்கிக்கணக்கிலிருந்து பணம் எடுக்கப்பட்டுக் கழிக்கப்பட்டு இருக்கும். ஆனால் உங்கள் கைக்குப் பணம் வந்திருக்காது. இப்படியே விட்டுவிட்டால் முறையாகுமா?

இந்த மாதிரி இக்கட்டான சமயத்தில் உதவுவதுதான் Transaction Control. TCL ன் பணி என்னவென்றால் ஏதேனும் பிழை ஏற்பட்டிருக்கும்போது அதைத் தலைகீழாக ஆக்கி, reverse செய்து (Undo) ஒட்டுமொத்த செயல்களையும் பழைய நிலைக்கு ஆக்குவதே.

TCL இருப்பதால் உங்கள் வங்கிக்கணக்கிலிருந்து கழிக்கப்பட்ட பணமானது, இயந்திரக்கோளாறு ஏற்பட்ட உடனேயே, தலைகீழ் இயக்கத்தால் திரும்ப உங்கள் accountல் சேர்க்கப்பட்டுவிடும்.

(இது எனக்கு இரண்டுமுறை நடந்து இருக்கிறது. கடந்த 3 ஆண்டுகளில் இரண்டுமுறை இந்த TCL இயக்கத்தால் பணம் பரிபோகாமல் தப்பித்தது.)


1) எந்தப் பிழையும் நிகழாமல் இருக்கும்போது ஒட்டுமொத்த நிரலும் நல்லபிள்ளையாக இயங்கி பரிவர்த்தனையை ஒழுங்காக நிறைவு செய்யும்.

2) ஏதேனும் பிழை ஏற்பட்டால் உடனே நிரலானது தனது இயக்கத்தை நிறுத்திவிட்டு, அதுவரை செய்யப்பட்ட இயக்கத்தை reverse செய்து தகவல் இழப்பைத் தடுத்துவிடுகிறது.

முந்தைய பாடத்தில் Authorization பற்றிப் பார்த்தோம். ஒரு குறிப்பிட்ட பயனாளருக்கு ஒரு Databaseஐப் பார்வையிட மட்டும் அனுமதிக்க DCL உதவும்.

DCL என்றால் Data Control Language. ஒரு குறிப்பிட்ட பயனர் உருவாக்கிய Database,Table களின் உரிமங்களை அடுத்த பயனாளருக்கு விட்டுத்தருவதற்கு. அல்லது அடுத்தவருக்கு விட்டுத்தந்த சலுகைகளை நிராகரிப்பதற்கு.

GRANT என்றால் சலுகைகளை வழங்குவது. உரிமங்களை வழங்குவதற்கு.

REVOKE என்றால் கொடுத்த சலுகைகளை / உரிமைகளைத் திரும்பப் பெருவதற்கு.

DROP என்பது ஒட்டுமொத்த Database (அ) Table ஐ அழிப்பதற்கு (தகவலும், Structureம் அழிந்துவிடும்).

TRUNCATE என்பது தகவல்களை மட்டும் அழிப்பதற்கு (Structure அழியாது).

SELECT பதியப்பட்ட தகவல்களைத் தேடித் தருவதற்கு

INSERT புதிய rowவை உருவாக்க
UPDATE பழைய rowன் தகவலை மாற்றுவதற்கு
DELETE பதிந்திருக்கும் row / rows ஐ அழிப்பதற்கு

CREATE புதிய Database / Table ஐ உருவாக்க

Tuesday, January 27, 2009

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

SQL Server 2005 Express Edition ஆனது Microsoft நிறுவனத்தால் வழங்கப்படும் ஒரு இலவச மென்பொருள். இதை நீங்கள் Microsoft தளத்திலிருந்து இந்த Link வாயிலாக இறக்கிக்கொண்டு நிறுவிக்கொள்ளவும். எல்லா Database களுமே அவற்றின் கட்டமைப்பில் கிட்டத்தட்ட சமானமாகவே இருக்கின்றன.

Database ல் நாம் என்ன செய்யப்போகிறோம்?

CRUD என்கிற Create, Read, Update, Delete இந்தச் செயல்களைத்தான் செய்யப்போகிறோம்.

MySQL ஐ Sun Micro System வாங்கிவிட்டாலும் அதன் MySQL Community Server ஐ இலவசமாகவே வழங்குகிறது. அதைத் தரவிறக்கம் செய்வதற்கு இங்கே சொடுக்கவும்.

ஆனால் MySQL Enterprise Edition ஆனது இலவசமன்று. நான் அலுவலகத்திலும், வீட்டிலும் SQL Server 2005ன் Express Edition தான் பயன்படுத்துகிறேன்.

இந்த மென்பொருளை நிறுவும்போது Administratorக்கான User name, password முதலியவற்றைக் கேட்கும். அவற்றைக் கொடுக்கவும். மேலும் அவற்றை நினைவில் கொள்ளவும்.

முறைப்படி நிறுவிய பிறகு Sql Server Express ஐ இயக்கவும். இதற்கு ஒரு குறுக்குவழியாக Start ==> Run ==> SQLWB எனக் கொடுத்தால் உடனே பயன்பாட்டின் முதல் திரை கண்முன்னே நிற்கும்.

பாதுகாப்பு காரணங்களுக்காக உங்களிடம் பயனர் கணக்கையும், கடவுச்சொல்லையும் (User name & password) எதிர்பார்க்கும். Install செய்யும்போது என்ன கொடுத்தீர்களோ அதைக் கொடுத்து உள்ளே செல்லலாம்.

நிறுவும்போதே எந்தவிதமான நுழைவாயில் என்பதைக் கூறிவிடுங்கள். அதாவது Authentication ஆனது Windows Authentication அல்லது SQL Server Authentication இரண்டில் எதோ ஒன்றா? அல்லது இரண்டுமா? என்பதைக் கூறிவிடவும்.

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

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

Chess விளையாட்டில் சிப்பாய், மந்திரி, யானை, குதிரை, அரசன், அரசி என அனைவருக்கும் ஒவ்வொரு உரிமைகள் இருக்கும். ஒருவருக்கு இருக்கும் சிறப்பு உரிமைகள் அடுத்தவருக்கு இருக்காது. அதுதான் Authorization.

Authentication செயலானது முடிந்தபிறகு Authentication சரிபார்க்கும் செயல் நடைபெறும்.

Administrator என்பவருக்கு மிக அதிக உரிமை. இது போல ஒவ்வொரு பயனருக்கும் ஒவ்வொருவிதமான உரிமைகள். இதை Role என்பார்கள்.

நமது கணினியில் நாமே நிறுவிக்கொள்கிறோம். அதனால் பெரும்பாலும் நாம் இதில் Windows Authentication ஐத் தேர்வு செய்யலாம்.

SQL Server Authentication கொடுத்தால் ஒவ்வொரு முறையும் கடவுச்சொல்லைக் கொடுத்து உள் நுழையவேண்டி வரும். அல்லது அதை சேமித்து வைக்கும் வசதியைப் பயன்படுத்திக்கொள்ளலாம்.

உங்கள் Authentication எதுவாக இருக்கிறதோ அதைத் தேர்வு செய்தபிறகு, Connect ஐ அழுத்தவும்.
திரையில் Object Explorer என்னும் ஒரு Window தெரியும்.


அதில் Databaseல் Right Click செய்து New Database ஐ click செய்யவும்.

புதிய சட்டத்தில் Databaseக்கான பெயர் கொடுக்கவும். நான் Test எனக் கொடுத்துள்ளேன். பிறகு OK கொடுத்தால் Test என்கிற பெயரில் ஒரு Database உருவாகிவிடும்.
Test என்கிற இடத்தில் இருக்கும் + Expand ஐ அழுத்தினால் அதில் Database Diagrams, Tables, Views, Synonyms, Programmability, Service Broker, Storage, Security எனப் பல இருக்கும்.
அதில் Table ல் வைத்து Right click செய்து New Table ஐத் தேர்ந்தெடுக்கவும். இதில் Column Name, Data Type, Allow Nulls ஆகியவை இருக்கும். உங்கள் Tableன் Sturctureக்குத் தகுந்தாற்போல ஒவ்வொரு Column களையும் கொடுக்கவும். Person#, Name, City என மூன்று Columnகள் உதாரணத்திற்குக் கொடுத்திருக்கிறேன்.
பின் இதை Save செய்வதற்கு, Ctrl + S வழமை போலக் கொடுத்து Table க்காக ஒரு பெயர் சூட்டுங்கள். (MyList எனக் கொடுத்துள்ளேன்)
பிறகு இதை Close செய்யலாம். இப்போது உங்கள் Tableன் Structure ஆனது Save செய்யப்பட்டுவிட்டது.

இப்படி உருவாக்கிய Tableல் நமது தகவல்களை ஏற்றுவது எப்படி?
Tables க்கு அருகில் இருக்கும் + அடையாளத்தைச் சொடுக்கி expand செய்தால், dbo.MyList ஐக் காணலாம்.
அதில் Right Click செய்து, Open Table ஐத் தேர்ந்தெடுக்கவும்.
பிறகு அதில் ஒவ்வொரு Row வாகத் தகவல்களை உள்ளீடு செய்யலாம். நான் 5 rowக்களை இதில் ஏற்றிவிட்டேன்.


பதிந்தது போதும் என நினைக்கும்போது அந்த tab ல் வலது க்ளிக் செய்து Close அழுத்திவிடலாம்.
இதுவரையில் இங்கே நாம் GUI எனப்படும் Graphical User Interface வாயிலாக ஒரு Databaseம், அதில் ஒரு Tableம் உருவாக்கி, அதில் புதிய தகவல்களை எப்படிப் பதிவது என்றும் கண்டோம்.

Sunday, January 25, 2009

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

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

ஒரு Tableன் Structure எப்படி இருக்கும்?

Column Name, Data Type(Width), Allow Nulls இவைகள் அனைத்தும் அடங்கியது ஒரு Table Structure.


Allow Null என்பது tick செய்யப்பட்டிருந்தால், அதன் மதிப்பை உள்ளீடு செய்யும்போது வெறுமனே விட்டுவிடலாம் என்று அர்த்தம். தற்சமயம் அதன் மதிப்பு நமக்குத் தெரிந்திருக்கவில்லை. பிறகு சில காலம் கழித்துக் கூட அதன் மதிப்பை நாம் உள்ளிட்டுக் கொள்ளலாம்.

Allow Null என்பது tick செய்யப்படாமல் இருந்தால், அந்தக் குறிப்பிட்ட columnன் தகவலைக் கண்டிப்பாக நாம் கொடுத்தே தீரவேண்டும். அதன் மதிப்பை உள்ளிடாமல் விட்டுவிட்டால் பிழைச்செய்தி வரும். ஆனால் Identity Columnக்கு மட்டும் ஒரு விதிவிலக்கு உண்டு.

முதல் Column ஆகிய AddressID ன் ஆரம்பத்தில் ஒரு சிறிய சாவியின் படம் போடப்பட்டுள்ளது. அது இந்த Tableன் primary key ஆகும்.



Primary key ஆனது ஒரு குறிப்பிட்ட Row வை தனித்து அடையாளம் கண்டுகொள்ள உதவும். மேலும் AddressID ஆனது Identity Column ஆகவும் குறிப்பிடப்பட்டுள்ளதால், இதன் மதிப்பை நாம் நேரடியாக உள்ளிட வேண்டிய அவசியமில்லை. Databaseல் தானியங்கியாக அடுத்தடுத்த எண்களை இந்த AddressIDல் Input செய்துவிடும்.

மேலே உள்ள Table Structureல் AddressLine2 க்கு மட்டும் Allow Nulls ஆனது tick செய்யப்பட்டு இருக்கிறது. ஆகவே AddressLine2க்கு உரிய தகவல் நம்மிடம் தற்சமயம் இல்லையென்றால் அதை நாம் உள்ளீடு செய்யாமல் அப்படியே விட்டுவிட்டு அடுத்த Columnக்கு உரிய தகவலை உள்ளீடு செய்யலாம். பிறகு எப்போது வேண்டுமானாலும் AddressLine2க்கு உரிய Dataவைக் கொடுக்கலாம். பிழைச்செய்தி எதுவும் வராது.

rowguid என்பதற்கு நேராக uniqueidentifier என Data Type இருக்கிறது.

அது என்ன Unique Identifier?

8DD27D89-6AE7-4316-B3B8-0CCEF0924F60 இது போன்ற ஒரு hexadecimal மதிப்பு.
இது ஒவ்வொரு முறையும் வேறு வேறு மதிப்புகளைக் கொடுக்கும். கணினிக்குக் கணினி வித்தியாசமான மதிப்பையும், ஒரே கணினியில் ஒவ்வொரு முறையும் இயக்கும்போது வேறு வேறு மதிப்புகளைக் கொடுக்கும்.

நாம் இந்த Unique Identifier Data Type ஐக் கொண்ட Column க்கு எந்த தகவலையும் உள்ளீடு செய்யவேண்டாம். இது தானியங்கியாக கணினியே உருவாக்கும் ஒரு மதிப்பாகும்.

ஒவ்வொரு row வையும் பிரித்துக் காட்ட UniqueIdentifierஐப் பயன்படுத்தலாம்.

உதாரணம் :

declare @a uniqueidentifier
set @a = newid()
print @a

இதன் விடை.

F94771ED-8405-4C30-893E-0325FA0A394C

மேலே கொடுத்துள்ள ஒரு சிறிய நிரல் ஆனது T-SQL programming ல் எழுதப்பட்டது.

T-SQL என்றால் Transact SQL என்ற விரிவைக் கொண்டது. இது ஒரு கணினி மொழி.

மேலே @a என்பது ஒரு variable. இதன் மதிப்பு ஒவ்வொரு முறையும் மாறிக்கொண்டே இருக்கும்.

set @a = newid() ---> என்றால் ஒரு கணினியால் அந்த நேரத்தில் உருவாக்கப்பட்ட ஒரு புதிய hexadecimal based மதிப்பை அந்த variable @a ல் பதிகிறோம்.

print @a --> திரையில் @a என்பதன் மதிப்பைக் காண்பி. உடனே திரையில் தெரியும் மதிப்பானது F94771ED-8405-4C30-893E-0325FA0A394C இப்படி இருக்கலாம். எனக்கு இந்த மதிப்பு வந்தது. உங்களுக்கு வேறு மதிப்பு வரும். ஒவ்வொருவருக்கும் வேறுவேறு மதிப்புகளை இந்த நிரல் உருவாக்கித் தரும்.

AddressLine1, AddressLine2, City, PostalCode ஆகிய Columnகளின் DataType ஆனது nVarchar வகையைச் சேர்ந்தது.

அதாவது இந்த Columnகளில் நாம் unicode வகையைச் சேர்ந்த எண்கள், எழுத்துக்கள், பிற அடையாளங்கள் ஆகியவற்றை உள்ளிடலாம்.

AddressLine1 க்காக நாம் அதிகபட்சமாக 60 எழுத்துக்களை ஒதுக்கியுள்ளோம். ஆனால் நாம் 20 எழுத்துக்களை மட்டுமே உள்ளிட்டால், மீதியுள்ள 40 காலியிடங்கள் trim செய்யப்பட்டு 20 எழுத்துக்கள் மாத்திரமே table ல் பதிவாகும். இதுவே varcharன் சிறப்பு.

இதுவே char என இருந்தால் ஒட்டுமொத்தமாக நாம் எவ்வளவு எழுத்துக்களை ஏற்கனவே ஒதுக்கியுள்ளோமோ அத்தனை இடங்களுமே வீணடிக்கப்பட்டுவிடும்.

AddressID, StateProvinceID இவையிரண்டின் DataType ஆனது int வகையைச் சேர்ந்தது. அதனால் இந்த இரண்டுக்கும் நாம் எண்களை உள்ளீடு செய்யலாம். ஆனால் AddressID ஆனது Identity Column வகையைச் சேர்ந்ததால் (அது auto increment வகைப்பட்டது) அதற்குத் தகவலை உள்ளிட வேண்டாம். StateProviceIDக்கு மட்டும் அதற்குரிய எண்ணைப் பதிவிட்டால் போதும்.

Modified Date என்பதில் அதற்குரிய DataType ஆனது DateTime ஆகக் குறிப்பிடப்பட்டுள்ளது.அதனால் அந்த Modified Date க்கு உரிய columnன் மதிப்பில் ஒரு குறிப்பிட்ட தேதியை உள்ளிடவேண்டும்.

ஒரு சிறிய T-SQL நிரல்.

declare @a datetime
set @a = getdate()
print @a

@a என்பது datetime எனப்படும் DataTypeஐச் சேர்ந்தது.
getdate() எனப்படும் ஒரு function நடப்புத் தேதியையும், நேரத்தையும் தரவல்லது.

print @a என்றவுடன் கிடைத்த விடை.
Jan 26 2009 11:00AM

இங்கே ஒரு சில இடங்களில் புதியவர்களுக்காக சில குறிப்பிட்ட பதங்களை ஒவ்வொரு முறையும் விளக்கியிருப்பேன். Primary key, Identity Column போன்றவற்றை மீண்டும் சுருக்கமாகக் கூறியிருப்பேன். ஒரு புரிதலுக்காகத்தான் அவ்வாறு மீண்டும் கூறியிருக்கிறேனே தவிர வேறெதுவும் இல்லை. இதற்கு முன்னர் வெளியிட்ட 3 பதிவுகளில் அவற்றை விளக்கியிருந்தாலும், அதே பதங்களை இங்கே 4வது பதிவுகளில் பயன்படுத்தும்போது புரியாமல் போகிவிடக்கூடாது மீண்டும் குறுவிளக்கமாகக் குறிப்பிட்டிருக்கிறேன்.

நன்றிகளுடன்,
தமிழ்நெஞ்சம்.

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

Identity Column என்றால் என்ன?

ஒரு குறிப்பிட்ட Column ன் மதிப்பானது, அதற்குரிய மதிப்பை நாம் கொடுக்காமலேயே, அதுவாகவே தானியங்கித்தனமாக உயர்ந்துகொண்டு வருவதை Auto Increment எனலாம். இப்படி ஒரு Column ன் மதிப்பை தானாக உயர்த்துவதால், இந்த Column க்கு Identity Column என்போம்.

இந்த Column ன் Data Type ஆனது numeric ஆக இருத்தல் வேண்டும். இதன் உயர்வு விகிதம் (Identity Increment), எந்த எண்ணிக்கையில் இருந்து ஆரம்பிக்கவேண்டும் (Identity Seed) போன்றவற்றை நாமே தீர்மாணிக்கலாம்.

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

Primary key என்பது என்னவென்று இதற்கு முந்தைய பதிவில் பார்த்தோம்.

Foreign Key என்றால் என்ன?

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

ஒரு குறிப்பிட்ட Table ல் ஒவ்வொரு Rowவையும் பிரித்துத் தனிமைப்படுத்துவதற்கு, அடையாளம் காண்பதற்கு Primary key உதவுகிறது.

இந்தக் கட்டுமானத்தை Master - Detail என்று கூறுவோம்.
Master Tableல் ஒரு குறிப்பிட்ட Column ஆனது Primary key ஆக இருக்கும். (இது முதலாவது Table). Primary key ன் மதிப்பு ஒவ்வொரு Rowக்கும் மாறிக்கொண்டே இருக்கும். உதாரணமாக Person#. ஒவ்வொரு நபருக்கும் ஒரு தனிப்பட்ட எண்ணைக் கொண்டு வித்தியாசப்படுத்துவதற்கு Primary key உதவும்.

Master Table ல் ஒரு முறை மட்டும் வந்த Person# ஆனது, Detail Table ல் பலமுறை திரும்பத் திரும்ப வரும். இந்த இரண்டு எண்ணும் ஒரே எண்ணாக இருக்கும்.
இரண்டின் Data Type ம் ஒன்றாகவே இருக்கும். இரண்டும் ஒன்றுக்கொன்று தொடர்புடையதாக இருக்கும்.

இந்த Primary - Foreign key மூலம் இரண்டு Tableகளின் மதிப்புகளை ஒரே திரையில் காணலாம். இதை join என்போம்.

இந்த இரண்டு keyகளின் Columnல் ஏற்றப்பட்ட மதிப்புகளை அடையாளப்படுத்தியே Master-Detail Table மையப்படுத்தப்படுகிறது.

Unique என்றால் என்ன?
ஒரு குறிப்பிட்ட Columnல் உள்ள மதிப்பு ஒவ்வொரு Rowக்கும் வித்தியாசமானதாக இருப்பதை Unique எனலாம்.

Person# எனப்படுவதை Unique Column எனலாம். ஒவ்வொரு நபரின் பெயரும் வித்தியாசமானதாக இருக்கத் தேவையில்லை (காரணம் : பெயர்ப் பற்றாக்குறை). ஆனால் ஒவ்வொரு நபருக்கும் நாம் அளிக்கும் குறிப்பிட்ட எண் (Person#) ஆனது Unique ஆகும்.

ஆகவே Primary key ஆனது Unique தான். ஆனால் Primary keyஆனது NULL ஆக இருக்கவே முடியாது. Unique Column ஆனது ஒரே ஒருமுறை மட்டும், NULL மதிப்பை ஏற்றுக்கொள்ளும். இதுவே இவை இரண்டுக்கும் உள்ள ஒரே வித்தியாசம்.

NULL என்பது எந்த மதிப்பும் இல்லாதது. அதன் மதிப்பு பூஜ்யமோ / எதோ ஒரு எழுத்தோ / எழுத்துத் தொகுப்போ இல்லை. அது மதிப்பே இல்லாதது.

Primary key ஆனது NULL ஐ ஏற்றுக்கொள்ளாது. ஆனால் Unique Column ஆனது ஒரே ஒருமுறை மட்டும் NULLஐ ஏற்றுக்கொள்ளூம்.

DataType களின் வகைகள் யாவை?
SQL Server 2005ல் நாம் பயன்படுத்தும் Data Typesகளின் வகைகள் கீழே:

user-defined data types (highest)
sql_variant
xml
datetime
smalldatetime
float
real
decimal
money
smallmoney
bigint
int
smallint
tinyint
bit
ntext
text
image
timestamp
uniqueidentifier
nvarchar
nchar
varchar
char
varbinary
binary (lowest)

Data Types என்பது, ஒவ்வொரு Columnலும் நாம் உள்ளீடு செய்யப்போகும் தகவலின் வகையைக் குறிக்கிறது.எண், எழுத்து, தேதி - போன்ற Data Type ஐ நாம் அதிகம் பயன்படுத்துவோம்.

Character க்கும் Variable Characterக்கும் என்ன வித்தியாசம்?

NAME CHARACTER(50) ---> இது ஒரு Column எனக் கொண்டால், இதில் Field name ஆனது NAME ஆகும். இதில் நாம் உள்ளீடு செய்யவிருக்கிற தகவலின் வகை character எனப்படும் DataType ஐச் சார்ந்தது. அதில் நாம் அதிகபட்சமாக 50 தனித்தனி எழுத்துகளை (இடைவெளி Space) ஐயும் சேர்த்து உள்ளிடலாம்.

உதாரணமாக
NAME = "Raja" எனக் கொடுத்தால், இதில் 4 எழுத்துக்களை உள்ளிட்டு இருக்கிறோம். ஆனால் அதிகபட்சமாக நாம் 50 எழுத்துக்களை உள்ளிட அனுமதிக்கிறது. அடைப்புக்குறிக்குள் இருக்கும் (50) என்பது இதைக் குறிக்கிறது.

நாம் கொடுத்துள்ள Rajaவில் 4 எழுத்துக்கள் மட்டுமே உள்ளன. ஆனால் மீதியுள்ள 46 எழுத்துக்களின் மதிப்பை நாம் உள்ளீடு செய்யாமல் விட்டுவிட்டோம். ஆனால் ஒட்டுமொத்த 50 எழுத்துக்களுமே வன்வட்டு (hard disk) ல் பதிவாகும்.மீதியுள்ள 46 எழுத்துக்களுக்கு Space மூலம் நிரப்பப்பட்டு அதன் ஒட்டுமொத்த 50 மதிப்புகளும் வீணாக்கப்பட்டுவிடும்.

ஆனால் variable character என்பதில், Babu என உள்ளிட்டால் 4 எழுத்துக்கள் மட்டுமே கணக்கில் எடுத்துக்கொள்ளப்படும். மீதியுள்ள 46 எழுத்துக்களில் இருக்கும் Space கணக்கில் எடுத்துக்கொள்ளப்படாமல் அவற்றின் Space எல்லாம் நிராகரிக்கப்பட்டு 4 எழுத்துக்கள் மாத்திரமே hard disk ல் எழுதப்படும். இதனால் நம் நினைவகம் வீணாவது தவிர்க்கப்படும்.

UniCode எழுத்துக்களைப் பதிவு செய்வதற்கு எந்த Data Types ஐப் பயன்படுத்துவது?

பெரும்பாலும் ஆங்கிலத்தில் உள்ள தகவல்களை character, varchar முதலிய Data Type மூலம் உள்ளீடு செய்யலாம்.

ஆனால் ஆங்கிலம் அல்லாத பிற மொழிகளான தமிழ், மலையாள மொழிகளை உள்ளீடு செய்ய நாம் nvarchar, nchar போன்ற Data Type ஐப் பயன்படுத்தலாம்.

Saturday, January 24, 2009

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

நேற்று Table, Column, Data Type பற்றிப் பார்த்தோம்.

RDBMS என்பது என்ன?
RDBMS என்பதன் விரிவு : Relational Database Management System.

SQL ஐப் பயன்படுத்தும் நவீன மென்பொருட்கள் சில :
MS SQL Server, IBM DB2, Oracle, MySQL, and Microsoft Access.

Table என்பது என்ன?
Database ல் தகவல்களை எங்கே பதிவு செய்திருக்கிறோமோ அந்த அமைப்பு Table எனப்படும்.

ஒன்றுக்கு ஒன்று தொடர்புடைய தகவல்களின் தொகுப்பு Table.

Table ஆனது எந்தவிதமான கட்டமைப்பில் அமைந்திருக்கும்?.

ஒரு Table ல் பல Column / Field இருக்கும். பல Column களின் தொகுப்பே Table.

ஒவ்வொரு Column மும் ஒரு குறிப்பிட்ட வகையான தகவலைக் கையகப்படுத்தி இருக்கும். ஆகவே ஒவ்வொரு Columnம் அதற்குரிய Data Type ஐக் கொண்டே அனுசரிக்கப்படுகிறது.

ஒரு Databaseல் நிறைய Tableகள் இருக்கும். பல்வேறு Tableகளின் தொகுப்பை Database எனலாம்.

மேலே ஒரு Tableன் மாதிரி வடிவத்தைக் கொடுத்துள்ளேன். (படத்தின் மேல் சொடுக்கினால் பெரிதாகப் பார்க்கலாம்).

இதில் Person#,LastName,FirstName,Address,City ஆகியவற்றை Column/Field எனலாம்.

Person# என்பது எண்களால் குறிப்பிடப்படுகிறது. இதன் Data Type ஆனது numeric.
LastName,FirstName,City ஆகியவை எழுத்தால் குறிப்பிடப்படுவதால் இவற்றின் Data Type ஆனது character, variable character ஆகும்.

Address என்கிற Columnல் எண்ணாலும், எழுத்தாலும் குறிப்பிடப்பட்டாலும் இது character அல்லது variable character என்கிற வகைக்குள்ளேயே வைத்து விடலாம்.

PinCode என்று ஒரு column இருந்தால் அதையும் Character வகைக்குள்ளே வைத்துவிடலாம். PinCode பயன்படுத்தி நாம் எந்தவிதமான கூட்டல்,கழித்தல்,வகுத்தல்,பெருக்கல் முதலிய கணக்கீடுகளைச் செய்யப்போவதில்லை. அதனால் அதை numeric வகைக்குள் வைப்பதற்குப் பதிலாக character வகைக்குள்ளேயே வைத்துவிடலாம்.

ஒரு Table ல் Row அல்லது Tuple என்றால் என்ன?
மேலே உள்ள Table ல் மொத்தம் 3 row க்கள் இருக்கின்றன.

முதலில் இருப்பது தலைப்பாக இருப்பதால் அதை விடுத்து, அதன் கீழ் உள்ள 3 row மட்டுமே கருத்தில் எடுத்துக்கொள்ளப்படுகின்றன.

Row என்பது Columnகளின் தொகுப்பு. ஒன்றுக்கொன்று தொடர்புடைய தகவல்களை ஒரு Row ல் எழுதி வைப்பது வழக்கம்.

உதாரணமாக : 3,Karthik,The Hero,Space, Erode : இவை அனைத்தும் ஒரு குறிப்பிட்ட நபரின் தகவல்களே. ஒன்றுக்கு ஒன்று தொடர்புடைய தகவல்கள்.

3 என்பது நபரின் எண்
Karthik : First Name
The Hero : Last Name
Space : Address
Erode : City

இந்த Row ல் Address பகுதி மட்டும் Space விட்டுவிட்டோம். அதாவது ஏதேனும் Columnல் நிரப்பப்பட வேண்டிய தகவல் தற்சமயத்துக்குத் தெரியவில்லையெனில் அதை நிரப்பாமல் விட்டுவிடலாம். பிறகு நிரப்பிக்கொள்ளலாம்.

Karthik என்பவரின் Address தற்சமயம் நமக்குத்தெரிந்திருக்கவில்லை. அதனால் அதை அப்படியே நிரப்பாமல் விட்டுவிட்டு, அடுத்த Field ஆகிய City ல் Erode என எழுதிவிட்டோம்.

இவ்வாறு ஒரு குறிப்பிட்ட Columnல் நிரப்பப்பட வேண்டிய தகவலானது தற்சமயம் நிரப்பப்பட அவசியம் இல்லை என்பதை Allow Null என்பதே தீர்மாணிக்கும்.

A = 0, ----> இது எண் வகையைச் சேர்ந்தது (numeric)
B = "Karthik" ----> இது எழுத்து வகையைச் சேர்ந்தது (character)
C = NULL ----> தகவல் தற்சமயம் கைவசம் இல்லை (NULL)

NULL என்பதன் அர்த்தம் யாதெனில், தற்போது அந்தக் குறிப்பிட்ட தகவலின் மதிப்பு எதுவும் இல்லை. அது பூஜ்யமும் இல்லை. அதில் எந்த மதிப்பும் இல்லை. அது NULL - அவ்வளவுதான்.

Allow NULL - இதன் மதிப்பை ஆமாம் (true), இல்லை (false) என்கிற கட்டுக்குள் கொண்டு வரலாம். true / false.

ஒவ்வொரு நபருக்கும் தனித்தனிப் பெயர் இருப்பதுபோல, இங்கே அவரவர்க்கும் தனித்தனி எண்கள் தரப்படும்.

ஒன்றுக்கு மேற்பட்டவர்களுக்கு ஒரே பெயர்கள் இருக்கலாம் (பெயர்ப் பற்றாக்குறை!).

எனக்கு Karthik என்கிற பெயர்கள் உடைய 6 நண்பர்கள் இருக்கிறார்கள். அவர்களை வித்தியாசப்படுத்த ஒவ்வொருவருக்கும் ஒரு எண்கள் தரப்படுகின்றன. அதுவே Person#.

இதற்கு Primary Key என்று பெயர்.

அது என்ன Primary Key?

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

ஒரு Tableல் பல Rowக்கள் இருக்கலாம். ஒரு Rowல் பல Column இருக்கலாம்.

ஒவ்வொரு Rowவையும் மற்ற Row க்களில் இருந்து பிரித்து தனித்து அடையாளம் காண்பதற்கு Primary key பயன்படுத்துகிறோம்.

சற்று முன்னர் NULL பற்றிப் பார்த்தோம். ஒரு குறிப்பிட்ட தகவலின் மதிப்பு, தற்சமயம் கையில் இல்லாமல் இருந்தால் அதை NULL என்று தீர்மானித்து அப்படியே விட்டுவிடலாம்.

Primary key ஆனது NULL ஆக இருக்க வாய்ப்பு உள்ளதா?
கண்டிப்பாக இல்லை. Primary key ஆனது எந்த ஒரு சமயத்திலும் NULL ஆக இருக்கவே இருக்காது.

Friday, January 23, 2009

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

SQL என்பதன் விரிவு என்ன?
Structured Query Language

SQLன் பயன்கள் யாவை?

Databaseன் தகவல்களைத் தேடி எடுப்பது,
புதிய தகவலை ஏற்றுவதற்கு,
பழைய விவரங்களை மாற்றுவதற்கு,
அழிப்பதற்கு மற்றும் இன்னும் நிறைய விசயங்களுக்கு SQL பயன்படுகிறது.
Database களில் இருக்கும் தகவல்களை எடுக்க / கொடுக்க SQL உதவுகிறது.

Query என்றால் கேள்வி, விசாரணை, தேடுதல் என அர்த்தம் கொள்ளலாம்.


சரி எடுத்த எடுப்பில் Database என ஆரம்பித்துவிட்டேன்.
அது என்ன Database?

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

ஒரு வசனம் பேசுவார் - Information, Information is Wealth என்பார். அது யாரோ எழுதிக்கொடுத்த வசனம் அல்ல. எழுத்தாளர் சுஜாதா பாய்ஸ் படத்துக்காக எழுதிக்கொடுத்த வசனம்தான். இது ஒரு நகைச்சுவை உதாரணம்.

கீழே ஒரு எளிய Table வடிவம் ஒன்றைத் தருகிறேன்.

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

மாத இறுதியில் ஒரு குறிப்பிட்ட மாணவர் எத்தனை நாட்கள் வந்திருந்தார்? அல்லது எத்தனை நாட்கள் வரவில்லை எனக் கணக்கிட்டுக்கொள்ளலாம்.

இதில் மாணவர் பெயர், தேதி முதலியவற்றை Field அல்லது Column எனலாம்.
மாணவரின் பெயர் எழுத்து வடிவில் இருக்கும்.
அதனை String / Character / Variable character என்போம்.

தேதி என்பது month-date-year அல்லது date/month/year போன்ற ஒரு வடிவில் அமைந்திருக்கும். இது இரண்டாவது Field ஆகும்.

மாணவர் பெயர் ---> character(50)
தேதி ---> datetime

ஒரு மாணவருக்காக எவ்வளவு எழுத்துகளை அதிகபட்சமாக ஒதுக்குகிறோம் என்பதே அடைப்புக்குறிக்குள் தரப்படுகிறது.

உதாரணமாக மாணவரின் பெயர் ‘Babu’ எனக் கொண்டால் அவருடைய பெயரின் எழுத்துக்களின் எண்ணிக்கை 4.
’valpaiyan @ Arun The Hero’ எனக் கொண்டால் அவருடைய பெயரின் ஒட்டுமொத்த எழுத்துக்களின் எண்ணிக்கை 25.

இப்படி ஒவ்வொருவரின் பெயரில் உள்ள எழுத்துக்களின் எண்ணிக்கை வித்தியாசப்படுகிறது. ஆகவே நாமாகவே ஒரு உச்சமதிப்பு ஒன்றை கொடுத்துவிடவேண்டும். இங்கே character(50) எனக் கொடுத்தால் Name என்கிற Field / Column ல் அதிகபட்சமாக 50 எழுத்துக்களைப் பதிவுசெய்ய இயலும் எனக் கொள்க.


மாணவர் பெயர் ---> character(50)
தேதி ---> datetime இவை இரண்டும் இரண்டு Column எனக் கொண்டால், இவற்றினை ஒட்டுமொத்தமாக ஒரு Table எனலாம்.

ஒரு Table என்பது பல Field களின் தொகுப்பு.

ஒரு Field என்பது குறிப்பிட்ட ஒரே மாதிரியான தகவலின் தொகுப்பு.

ஒவ்வொரு Fieldலும் நாம் பதிவு செய்யப்போகிற தகவலின் அடிப்படையில், எந்த மாதிரியான தகவலைப் பதிவு செய்யப் போகிறோம் என்பதை அதன் Data Type மூலம் நிர்ணயிக்கலாம்.

மாணவரின் பெயரை character(50) என்றோம். இங்கே 50 என்பது எத்தனை எழுத்துக்கள் என்பதைக் குறிக்கிறது. character என்பது ஒரு Data Type ஆகும்.

தேதி --> datetime இங்கு datetime என்பது மற்றொரு வகை Data Type ஆகும்.

எழுத்துக்களைப் பதியும்போது character, எண்களைப்பதியும்போது numbers (int,bigint,decimal,float). தேதியைக் குறிக்கும்போது datetime என ஒவ்வொரு வகையான தகவலுக்கும் ஒவ்வொரு DataType உள்ளது.

ஆகவே Data Type என்பது தகவலின் வகையைக் குறிப்பதாகும்.

SQL வாயிலாக ஒரு Table ஐ உருவாக்க / மாற்ற / அழிக்க / தகவலைத் தேட இயலும்.

Table என்பதில் பல Columns இருக்கும். ஒவ்வொரு Columnன் தகவலின் வகையை DataType மூலம் நிர்ணயிக்கலாம். எவ்வளவு எழுத்துகள் என்பதை அடைப்புக்குறிக்குள் சொல்கிறோம்.

உங்கள் கணினியில் SQL கட்டளைகளை இயக்கிப் பார்ப்பதற்காக Microsoft SQL Server 2005 Express Edition மென்பொருளை இலவசமாகத் தரவிறக்கி உங்கள் கணினியில் நிறுவிக்கொள்ளவும்.

பின் குறிப்பு : வாரத்திற்கு 2 முறையாவது இந்த எளிய தமிழில் SQL என்கிற தொடர் பதிவுகளை அளிக்கலாம் என முன்வந்துள்ளேன். உங்கள் ஆதரவு தேவை.

பல பதிவுகளை பிற ஆங்கில வலைப்பூக்களில் இருந்து மொழிபெயர்த்துப் போட்டிருக்கிறேன். அதற்கு ஆதரவளித்த அன்புள்ளங்களுக்கு நன்றி. அதுபோல இந்தத் தொடரின் வெற்றி உங்கள் கையில்தான் உள்ளது.

முதலில் சில terms உங்களுக்குக் குழப்பமாக இருப்பினும் தொடர்ந்து படியுங்கள். இங்கே குறிப்பிடும் உதாரணங்களை கணினியில் செய்து பாருங்கள். வித்தியாசத்தை நீங்களே உணர்வீர்கள்.

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

http://www.microsoft.com/downloads/details.aspx?FamilyID=220549b5-0b07-4448-8848-dcc397514b41&DisplayLang=en

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

நன்றிகளுடன்,

தமிழ்நெஞ்சம்.

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

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