எளிய தமிழில் 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 ஐப் பயன்படுத்தலாம்.
நன்றி தமிழ் நெஞ்சம்
ஒரு குறிப்பிட்ட 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 ஐப் பயன்படுத்தலாம்.
நன்றி தமிழ் நெஞ்சம்