SQL இல் தரவு வகைகளுக்கான அறிமுகம்
ஜாவாஸ்கிரிப்ட் போலல்லாமல், SQL வலுவான தட்டச்சு உள்ளது. ஒவ்வொரு அட்டவணையிலும், ஒவ்வொரு நெடுவரிசையிலும் அதன் சொந்த நிலையான தரவு வகை உள்ளது.
நிறைய தரவு வகைகள் உள்ளன, ஆனால் ஜாவா மொழியைப் போலல்லாமல், அவற்றில் பல உள்ளன, ஏனெனில் எல்லா சந்தர்ப்பங்களுக்கும் தரவு வகைகள் உள்ளன. தரவுத்தளங்கள் தரவின் அளவைப் பொறுத்தது, எனவே பல தரவு வகைகள் நீளத்தில் மட்டுமே வேறுபடுகின்றன.
மொத்தத்தில், தரவு வகைகளை 5 குழுக்களாகப் பிரிக்கலாம்:
- எண் வகைகள்
- சரம் வகைகள்
- தேதிகள் மற்றும் நேரங்களை சேமிப்பதற்கான வகைகள்
- பொருள்கள்: பொதுவாக பைட்டுகளின் தொகுப்பாகக் குறிப்பிடப்படுகிறது
- போக்குவரத்து : JSON மற்றும் XML
பொதுவாக வெவ்வேறு DBMS இன்னும் அவற்றின் சொந்த தரவு வகைகளைக் கொண்டுள்ளது. ஒவ்வொரு DBMS க்கும் அதன் சொந்த சிறப்பு உள்ளது, எனவே புதிய தரவு வகைகளைச் சேர்ப்பது மிகவும் பொதுவான விஷயம்.
மற்றொரு விஷயம் என்னவென்றால், புதிய தரவு வகையைச் சேர்ப்பது மட்டும் போதாது, அதனுடன் வேலை செய்யும் செயல்பாடுகளை நீங்கள் சேர்க்க வேண்டும், அத்துடன் இந்த வேலையை வசதியாகவும் வேகமாகவும் செய்ய வேண்டும்.
நீங்கள் எந்த தொழில்துறை (நிறுவன) DBMS இல் பணிபுரிந்தால், பெரும்பாலும் அதன் தரவு வகைகள் மற்றும் அதன் செயல்பாடுகளை நீங்கள் சமாளிக்க வேண்டியிருக்கும். எதற்காக 2-5 நல்ல புத்தகங்களைப் படிக்க வேண்டும்.
SQL உடனான எங்கள் அறிமுகத்தின் ஒரு பகுதியாக, தரவு வகைகளின் மூன்று முக்கிய குழுக்களைக் கருத்தில் கொள்வோம்:
- எண்கள்
- சரங்கள்
- தேதிகள்
SQL இல் எண் வகைகள்
SQL இல், எண் வகைகள் மூன்று குழுக்களாக பிரிக்கப்பட்டுள்ளன:
- முழு எண் வகைகள்
- நிலையான புள்ளி எண்கள் (தசம இடங்களின் நிலையான எண்)
- மிதக்கும் புள்ளி எண்கள்
முழு எண்களுடன் ஆரம்பிக்கலாம் . அவற்றில் 5 மட்டுமே உள்ளன, அவற்றை ஒரு அட்டவணையில் விவரிக்கலாம்:
# | பெயர் வகை | பைட்டுகளில் நீளம் | ஜாவாவிலிருந்து அனலாக் | குறைந்தபட்ச மதிப்பு | அதிகபட்ச மதிப்பு |
---|---|---|---|---|---|
1 | TINYINT | 1 | பைட் | -128 | 127 |
2 | SMALLINT | 2 | குறுகிய | -32.768 | 32.767 |
3 | ஊடகம் | 3 | -8,388,608 | 8,388,607 | |
4 | INT | 4 | முழு எண்ணாக | -2,147,483,648 | 2,147,483,647 |
5 | பெரியது | 8 | நீளமானது | -2 63 | 2 63-1 |
தரவு வகைகள் ஜாவா தரவு வகைகளுடன் மிகவும் ஒத்தவை, ஆனால் மூன்று பைட்டுகள் நீளமுள்ள முழு எண் வகையும் உள்ளது. அளவை சேமிக்க இது செய்யப்படுகிறது.
அடுத்து வரும் மிதக்கும் புள்ளி வகைகள் , ஜாவாவைப் போலவே, அவற்றில் இரண்டு மட்டுமே உள்ளன:
# | பெயர் வகை | பைட்டுகளில் நீளம் | ஜாவாவிலிருந்து அனலாக் | குறைந்தபட்ச மதிப்பு | அதிகபட்ச மதிப்பு |
---|---|---|---|---|---|
1 | மிதவை | 4 | மிதவை | -3.40E+38 | +1.18E+38 |
2 | இரட்டை | 8 | இரட்டை | -1.79E+308 | +1.79E+308 |
மீண்டும், புதிதாக எதுவும் இல்லை. எல்லாம் ஜாவாவில் உள்ளதைப் போலவே உள்ளது. இருப்பினும், ஜாவாவைப் போலல்லாமல், SQL மற்றொரு சிறப்பு வகையைக் கொண்டுள்ளது, நிலையான-புள்ளி உண்மையான எண். இது டெசிமல் என்று அழைக்கப்படுகிறது.
பொதுவாக இந்த வகை பணத்தைச் சேமிக்கப் பயன்படுகிறது. இந்த வகையின் பெயர் எழுதப்பட்டால், அதற்குப் பிறகு, தசமப் புள்ளிக்கு முன்னும் பின்னும் எண் எத்தனை தசம இடங்களைக் கொண்டுள்ளது என்பதைக் குறிக்கும். பொதுவான வடிவம் இதுபோல் தெரிகிறது:
DECIMAL(total_characters, after_comma)
மற்றும் ஒரு சிறிய உதாரணம்:
salary DECIMAL(5,2)
சம்பள நெடுவரிசையில் முழு எண்களும் (அதிகபட்சம் 3 தசம இடங்கள்) மற்றும் ஒரு பகுதியளவு பகுதி - 2 தசம இடங்களும் இருக்கலாம் என்ற உண்மையை நாங்கள் விவரித்தோம்.
DECIMAL வகை ஆதரிக்கும் எழுத்துகளின் அதிகபட்ச எண்ணிக்கை 65 ஆகும்.
SQL இல் சரம் வகைகள்
தரவுத்தளத்தில் உள்ள வரிசைகளை இரண்டு வடிவங்களில் சேமிக்கலாம்:
- நிலையான நீள சரங்கள்
- மாறி நீளம் கொண்ட சரங்கள்
நிலையான நீள சரங்கள் CHAR என குறிப்பிடப்படுகின்றன :
CHAR(length)
நிலையான நீளம் என்பது இந்த நெடுவரிசையின் அனைத்து மதிப்புகளும் கண்டிப்பாக நிலையான எண்ணிக்கையிலான எழுத்துக்களைக் கொண்டிருக்கும்.
நிலையான நீள சரத்தின் எடுத்துக்காட்டு:
country_code CHAR(2)
மாறி நீள சரங்கள் VARCHAR வகையால் குறிப்பிடப்படுகின்றன :
VARCHAR(max_length)
மாறி நீளம் என்பது இந்த நெடுவரிசையின் அனைத்து மதிப்புகளும் எந்த நீளத்தின் உரையையும் கொண்டிருக்கும், ஆனால் அதிகபட்ச நீளத்தை விட அதிகமாக இருக்காது.
மாறி நீள சரம் உதாரணம்:
phone VARCHAR(12)
நிலையான நீள சரங்கள் மிகப் பெரிய நன்மையைக் கொண்டுள்ளன. கிளையன்ட் SQL சேவையகத்திடம் டேபிளிலிருந்து 1,000,000 வது வரிசையைத் திருப்பித் தருமாறு கேட்டால், அட்டவணையில் உள்ள வரிசைகள் நிலையான நீளம் கொண்டதாக இருந்தால், வரிசையின் நீளத்தை அறிந்து, விரும்பிய பைட்டுகளை எளிதாகக் கணக்கிடலாம். வரிசை.
வரிகளின் மாறி நீளத்தின் விஷயத்தில், அட்டவணையில் விரும்பிய வரிசையை விரைவாகக் கண்டுபிடிக்க முடியாது. ArrayList மற்றும் LinkedList க்கான அணுகல் வேகத்தை நினைவில் கொள்ளுங்கள், இங்கே நிலைமை தோராயமாக ஒரே மாதிரியாக உள்ளது.
தரவு வகையைப் பொறுத்து, வெவ்வேறு நீளங்களின் சரங்கள் அட்டவணையில் எவ்வாறு சேமிக்கப்படும் என்பதை ஒப்பிடுவோம்.
வரி | சார்(4) | சேமிக்க பைட் | வர்ச்சர்(4) | சேமிக்க பைட் | |
---|---|---|---|---|---|
'' | '''' | 4 | '' | 1 | |
'ab' | 'ab' | 4 | 'ab' | 3 | |
'ஏ பி சி டி' | 'ஏ பி சி டி' | 4 | 'ஏ பி சி டி' | 5 | |
'abcdefgh' | 'ஏ பி சி டி' | 4 | 'ஏ பி சி டி' | 5 |
குறிப்பு. VARCHAR வகைக்கு அதே நீளத்திற்கு மேலும் ஒரு பைட் தேவைப்படுகிறது, ஏனெனில் அது சரத்தின் நீளத்தை கூடுதலாக சேமிக்க வேண்டும்.
SQL இல் தற்காலிக வகைகள்
தேதிகள் மற்றும் நேரங்களைச் சேமிப்பதற்கான சிறப்பு வகைகளையும் SQL கொண்டுள்ளது. மொத்தம் ஐந்து வகைகள் உள்ளன:
# | பெயர் வகை | Java DateTime API இலிருந்து அனலாக் | உதாரணமாக | குறைந்தபட்ச மதிப்பு | அதிகபட்ச மதிப்பு |
---|---|---|---|---|---|
1 | DATE | உள்ளூர் தேதி | '2022-06-30' | '1000-01-01' | '9999-12-31' |
2 | நேரம் | உள்ளூர் நேரம் | 'hh:mm:ss[.fraction]' | '-838:59:59.000000' | '838:59:59.000000' |
3 | தேதி நேரம் | உள்ளூர் தேதி நேரம் | '1000-01-01 00:00:00.000000' | '9999-12-31 23:59:59.999999' | |
4 | நேர முத்திரை | தேதி | '1970-01-01 00:00:01.000000' | '2038-01-19 03:14:07.999999' | |
5 | ஆண்டு | 1901 | 2155 |
வினவல்களில் உள்ள எல்லா தரவும் ஒரு சரமாக எழுதப்பட்டுள்ளது - ஒற்றை மேற்கோள்களில். நுழைவு வடிவம் பெரியது முதல் சிறியது வரை செல்கிறது:
- ஆண்டு
- மாதம்
- நாள்
- மணி
- நிமிடம்
- இரண்டாவது
- ஒரு நொடியின் பின்னங்கள்
DATE, TIME மற்றும் DATETIME வகைகளை Java DateTme API இலிருந்து வகைகளின் ஒப்புமைகளாகக் கருதலாம்: LocalDate, LocalTime, LocalDateTime. தர்க்கமும் அதே தான்.
TIMESTAMP வகையானது 1970 ஆம் ஆண்டின் தொடக்கத்திலிருந்து மில்லி விநாடிகளில் தரவைச் சேமிக்கிறது (யுனிக்ஸ் இயக்க முறைமைத் தரநிலை). இந்த வடிவத்தில்தான் அவை ஜாவா மொழியில் தேதி வகையால் சேமிக்கப்படுகின்றன.
இறுதியாக, YEAR வகை உள்ளது, இது 1 பைட் நீளம் மற்றும் 1 முதல் 255 வரையிலான மதிப்புகளை சேமிக்கிறது. எனவே, அதற்கு கிடைக்கும் ஆண்டுகளின் வரம்பு 1901-2155 ஆகும். NULL மதிப்பை குறியாக்க மதிப்பு 0 பயன்படுத்தப்படுவதால், 1900 ஆம் ஆண்டை இந்த வகையால் சேமிக்க முடியாது.
SQL இல் பொருட்களை சேமித்தல்
பெரிய நீளமுள்ள பொருள்கள் அல்லது நூல்களை சேமிப்பதற்கான சிறப்பு வகைகள் உள்ளன. நாங்கள் அவற்றைப் பற்றி விரிவாகப் பேச மாட்டோம், ஆனால் நான் அவற்றை எப்படியும் பட்டியலிடுவேன்:
# | பெயர் வகை | விளக்கம் |
---|---|---|
1 | உரை | நீண்ட நூல்களைச் சேமிக்கப் பயன்படுகிறது. இந்தப் புலத்தில் ஒப்பிட்டு வரிசைப்படுத்தும்போது, முதல் 100 எழுத்துகள் மட்டுமே பயன்படுத்தப்படுகின்றன. |
2 | BLOB | பைட் பெரிய பொருளைக் குறிக்கும் பெயர். பைட்டுகளின் தொகுப்பாக மட்டுமே சேமிக்கப்பட்டது. எடுத்துக்காட்டாக, தரவுத்தளத்தில் படங்களைச் சேமிக்கப் பயன்படுத்தலாம். |
3 | கிளப் | சார் லார்ஜ் பொருளைக் குறிக்கும் பெயர். நீண்ட நூல்களைச் சேமிக்கப் பயன்படுகிறது. |
4 | ENUM | நிலையான மதிப்புகளை அமைக்கவும், அவற்றில் ஒன்றை மதிப்பாக சேமிக்கவும் உங்களை அனுமதிக்கிறது. |
5 | அமைக்கவும் | நிலையான மதிப்புகளின் தொகுப்பை அமைக்கவும், அவற்றின் எந்த துணைக்குழுவையும் மதிப்பாக சேமிக்கவும் உங்களை அனுமதிக்கிறது. பொதுவாக அவற்றை பைனரி முகமூடியாக சேமிக்கிறது. |
கோட்பாட்டளவில், நீங்கள் எந்த ஜாவா பொருளையும் பைட்டுகளின் தொகுப்பாக வரிசைப்படுத்தலாம் மற்றும் தரவுத்தளத்தில் BLOB ஆக சேமிக்கலாம். பொருளைச் சேமிப்பது ஒரு பிரச்சனையல்ல. அவருடன் மேலும் எவ்வாறு பணியாற்றுவது?
ஒரு அட்டவணை ஒரு மில்லியன் பொருட்களை தொடர் வடிவில் சேமித்து வைக்கிறது என்று வைத்துக் கொள்வோம் - அவற்றை எப்படி தேடுவீர்கள்? ஒரு DBMS ஒரு குறிப்பிட்ட வகை தரவை அதனுடன் பணிபுரிவதற்கான விரிவான செயல்பாடுகளை வழங்கும் போது மட்டுமே ஆதரிக்கிறது.