Thursday, August 8, 2013

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


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

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


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

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

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



Primarykey
ஆனது ஒரு குறிப்பிட்ட 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
IdentifierData 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வது பதிவுகளில்
பயன்படுத்தும்போது புரியாமல் போகிவிடக்கூடாது
மீண்டும்குறுவிளக்கமாகக்
குறிப்பிட்டிருக்கிறேன்.

No comments:

Post a Comment