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 | int | -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వ వరుసను తిరిగి ఇవ్వమని అడిగితే, మరియు పట్టికలోని అడ్డు వరుసలు స్థిర పొడవుతో ఉంటే, అప్పుడు, అడ్డు వరుస యొక్క పొడవును తెలుసుకొని, మీరు కోరుకున్న వాటికి సంబంధించిన బైట్లను సులభంగా లెక్కించవచ్చు. వరుస.
పంక్తుల వేరియబుల్ పొడవు విషయంలో, పట్టికలో కావలసిన అడ్డు వరుసను త్వరగా కనుగొనడం సాధ్యం కాదు. అర్రేలిస్ట్ మరియు లింక్డ్లిస్ట్లకు యాక్సెస్ వేగాన్ని గుర్తుంచుకోండి, ఇక్కడ పరిస్థితి దాదాపుగా అదే విధంగా ఉంటుంది.
డేటా రకాన్ని బట్టి వివిధ పొడవులు గల స్ట్రింగ్లను పట్టికలో ఎలా నిల్వ చేస్తారో పోల్చి చూద్దాం.
లైన్ | చార్(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 | TIME | స్థానిక సమయం | 'hh:mm:ss[.fraction]' | '-838:59:59.000000' | '838:59:59.000000' |
3 | DATETIME | స్థానిక తేదీ సమయం | '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 రకాలను జావా DateTme API నుండి సాంప్రదాయకంగా రకాల అనలాగ్లుగా పరిగణించవచ్చు: LocalDate, LocalTime, LocalDateTime. లాజిక్ కూడా అదే.
TIMESTAMP రకం 1970 ప్రారంభం నుండి మిల్లీసెకన్లలో డేటాను నిల్వ చేస్తుంది (UNIX ఆపరేటింగ్ సిస్టమ్ ప్రమాణం). ఈ రూపంలోనే అవి జావా భాషలో తేదీ రకం ద్వారా నిల్వ చేయబడతాయి.
చివరగా, YEAR రకం ఉంది, ఇది 1 బైట్ పొడవు మరియు 1 నుండి 255 వరకు విలువలను నిల్వ చేస్తుంది. కాబట్టి, దీనికి అందుబాటులో ఉన్న సంవత్సరాల పరిధి 1901-2155. NULL విలువను ఎన్కోడ్ చేయడానికి 0 విలువ ఉపయోగించబడుతుంది కాబట్టి 1900 సంవత్సరం ఈ రకం ద్వారా నిల్వ చేయబడదు.
SQLలో వస్తువులను నిల్వ చేయడం
గొప్ప పొడవు గల వస్తువులు లేదా గ్రంథాలను నిల్వ చేయడానికి ప్రత్యేక రకాలు ఉన్నాయి. మేము వాటి గురించి వివరంగా చెప్పము, కానీ నేను వాటిని ఏమైనప్పటికీ జాబితా చేస్తాను:
# | పేరు టైప్ చేయండి | వివరణ |
---|---|---|
1 | TEXT | పొడవైన పాఠాలను నిల్వ చేయడానికి ఉపయోగిస్తారు. ఈ ఫీల్డ్లో పోల్చి, క్రమబద్ధీకరించేటప్పుడు, మొదటి 100 అక్షరాలు మాత్రమే ఉపయోగించబడతాయి. |
2 | BLOB | పేరు బైట్ లార్జ్ ఆబ్జెక్ట్. కేవలం బైట్ల సేకరణగా నిల్వ చేయబడింది. ఉదాహరణకు, డేటాబేస్లో చిత్రాలను నిల్వ చేయడానికి ఉపయోగించవచ్చు. |
3 | CLOB | పేరు చార్ లార్జ్ ఆబ్జెక్ట్. పొడవైన పాఠాలను నిల్వ చేయడానికి ఉపయోగిస్తారు. |
4 | ENUM | స్థిరమైన విలువలను సెట్ చేయడానికి మరియు వాటిలో ఒకదాన్ని విలువగా నిల్వ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. |
5 | సెట్ | స్థిరమైన విలువలను సెట్ చేయడానికి మరియు వాటిలో ఏదైనా ఉపసమితిని విలువగా నిల్వ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. సాధారణంగా వాటిని బైనరీ మాస్క్గా నిల్వ చేస్తుంది. |
సిద్ధాంతపరంగా, మీరు ఏదైనా జావా ఆబ్జెక్ట్ని బైట్ల సెట్గా సీరియలైజ్ చేయవచ్చు మరియు దానిని డేటాబేస్లో BLOBగా నిల్వ చేయవచ్చు. వస్తువును సేవ్ చేయడం సమస్య కాదు. మరి అతనితో ఎలా పని చేయాలి?
ఒక టేబుల్ మిలియన్ వస్తువులను సీరియల్ రూపంలో నిల్వ చేస్తుందనుకుందాం - మీరు వాటిని ఎలా శోధిస్తారు? DBMS దానితో పని చేయడానికి విస్తృతమైన ఫంక్షన్లను అందించినప్పుడు మాత్రమే నిర్దిష్ట రకం డేటాకు మద్దతు ఇస్తుంది.