SQL өгөгдлийн төрөл
SQL өгөгдлийн төрөл нь ямар нэгэн объектын өгөгдлийн төрлийг заасан шинж чанар юм. Багана, Хувьсагч болон Илэрхийлэл бүр дээр SQL тэй холбоотой өгөгдлийн төрлүүд байдаг. SQL хөгжүүлэгчид нь SQL хүснэгт үүсгэх үедээ хүснэгт тус бүр болон баганууд дээр өгөгдлийг ямар төрлөөр хадгалахыг шийдэх хэрэгтэй байдаг. Өгөгдлийн төрөл нь SQL ийн багана тус бүр дээрх өгөгдөл ямар төрлийн төлөвтэй байх талаарх тэмдэг болон зааварчилгааны ойлголт юм.
Агуулга
засварлахЭнэ бүлэгт нийтлэг Өгөгдлийн Сангуудыг дэмждэг SQL өгөгдлийн төрлүүдийг тайлбарлах болно.Өгөгдлийн төрөл гэдэг нь баганад хадгалах өгөгдлийн шинжийг хэлнэ. Дараах хэсгүүдэд Өгөгдлийн Сангуудын өгөгдлийн төрөл бүрийг илүү дэлгэрэнгүй тайлбарлах ба өгөгдлийн төрлийг хувиргах талаар хэлэлцэнэ.
Өгөгдлийн төрлүүд
засварлахВикипедиагийн чанарын стандартад нийцүүлэхийн тулд энэ өгүүллийг хянан тохиолдуулах хэрэгтэй байна. Энэ талаар хэлэлцүүлгийн хуудас дээр юм уу энэ тэмдгийг илүү нарийвчилсан тэмдгээр солино уу. |
Тэмдэгт мөртэй ажилладаг өгөгдлийн төрлүүд.
засварлах1. CHARACTER болон CHAR
засварлахCHARACTER өгөгдлийн төрөл нь тогтмол урттай тэмдэгт мөрүүд, юникодыг багтаасан өгөгдлийг хүлээн авдаг. Тэмдэгт мөрийн уртыг өгөгдлийн төрлийг зарлахдаа зааж өгөх ёстой, Жишээ нь: CHARACTER(n) n-д тэмдэгт мөрийн хүссэн уртаа оруулж болно гэсэн үг. Хэрэв өгөгдлийн төрөл зарлаж байхдаа уртыг нь тодорхой заагаагүй бол, дэфаулт урт нь 1 байна. CHARACTER өгөгдлийн төрлийн хамгийн бага урт нь 1 байдаг бөгөөд энэ нь хүснэгтийн хуудасны хэмжээний хамгийн их урт нь хүртэл байж болдог. Тэмдэгт мөрийн урт нь хүснэгтийн хуудасны хэмжээнээс их байвал Character Large Object(CLOB) гэж нэрлэж хадгалж болдог. Тайлбар: CHARACTER(0) гэж зарлахыг зөршөөрдөггүй ба алдааны мэдээлэл ирүүлдэг. Хэрэв та тодорхой өгсөн уртаас бага тэмдэгтүүдийг агуулсан тэмдэгтийш баганын утгад оноож өгч байгаа бол үлдсэн зайг нь хоосон тэмдэгтээр дүүргэдэг. Тодорхой урттай тэмдэгт мөрийн огтлол-д заасан уртын үр дүнгээс илүү тэмдэгт агуулсан утга өгөх гэж оролдох үед, оруулсан тэмдэгтүүд нь хоосон биш бол алдааны мэдээлэл гарч ирдэг.
Жишээ нь: CHARACTER(10)болон CHAR(10) * Хүчинтэй 'Race car' , 'RACECAR' , '24865','1998-10-25','1998-10-25 ' (Blank characters are truncated) * Хүчингүй 24865 , -10-25 , 'Date: 1998-10-25'
2. VARCHAR
засварлахVARCHAR өгөгдлийн төрөл нь тэмдэгт мөрүүд , Юникодоор илэрхийлсэн байдаг өгөгдлийн төрөл зарлахдаа хувьсагчын уртыг хамгийн их хэмжээгээр тодорхойлсон үед хүртэл хүлээн авч чаддаг. VARCHAR -аар зарлах үедээ хамгийн их боломжит тэмдэгт мөрийн уртыг тодорхойлохдоо хаалтан дотор эерэг бүрэл тоо оруулах ёстой. Жишээ нь VARCHAR(n) n урттай тэмдэгт нь ямар ч урттай тэмдэгт мөрийг хүлээн авах болно. Одоо байгаа хүснэгтийн баганын хэмжээ 1-ээс эхлээд ямар ч утгыг авч болно. Тодорхой урттай тэмдэгт мөрийн огтлол-д заасан уртын үр дүнгээс илүү тэмдэгт агуулсан утга өгөх гэж оролдох үед, оруулсан тэмдэгтүүд нь хоосон биш бол алдааны мэдээлэл гарч ирдэг. Тайлбар: VARCHAR(0) гэж зарлахыг зөршөөрдөггүй ба алдааны мэдээлэл ирүүлдэг. Хэрэв та одоо байгаа хүснэгтийн хуудасны хэмжээнээс илүү урт хэмжээтэй тэмдэгт мөрүүдийг хадгалах хэрэгтэй байгаа бол Character Large Object (CLOB) өгөгдлийн төрлийг ашиглах хэрэгтэй.
Жишээ нь: VARCHAR(10) *Хүчинтэй 'Race car' ,'RACECAR' , '24865' , '1998-10-25' , '1998-10-25 ' * Хүчингүй 24865 , 1998-10-25 , 'Date: 1998-10-25'
Boolean өгөгдлийн төрөл
засварлахБүүлийн(BOOLEAN) өгөгдлийн төрөлд Үнэн эсвэл Худал гэсэн хоёр утга хадгалхыг зөвшөөрдөг. Бүүлийн(BOOLEAN) өгөгдлийн төрөл зарласан үед ямар ч параметрүүд шаардахгүй. Бүүлийн өгөгдлийн төрлийн утгыг зааж өгөхдөө Үнэн эсвэл Худал гэсэн түлхүүрийг ашиглана. Бүүлийн өгөгдлийн төрөл ашиглан харьцуулалт хийхдээ эдгээр түлхүүр үгнүүдийг ашиглах хэрэгтэй. Хэрэв та Бүүлийн өгөгдлийн төрөл-д бусад утгыг өгөхийг оролдвол,алдаа гарна. Жишээ нь : BOOLEAN
* Хүчиинтэй TRUE , true , True ,False * Хүчингүй 1 , 0 , Yes , No
Тоон өгөгдлийн төрлүүд.
засварлах1. INTEGER буюу INT
засварлахБүхэл тоон өгөгдлийн төрөл нь 0 гэсэн хэмжээтэй тоон утгыг автоматаар хүлээж авдаг. Бүхэл тоон төрөл нь 2^ -31 зэргээс 2^31-1 зэргийн хүрээнд ямар нэгэн бүхэл тоон утгыг хадгалдаг. Энэ хүрээнээс гарсан утга өгөх гэж оролдох үед алдаа үүсдэг. Хэрэв та бүхэл тоон өгөгдлийн төрөлд нарийвчлсан болон хэсэгчилсэн тоон утгыг заах гэж байгаа бол хэмжээний хэсгийг бүхэлдгэж болон богиносгож болдог
ТАЙЛБАР: (2 ^ -31) аас (2 ^ 31) -1 хүтэлх утгаас илүү утга хадгалахын тулд, тэг хэмжээтэй DECIMAL өгөгдлийн төрлийг ашигладаг
Жишээ нь: INTEGER эсвнл INT * Хүчинтэй -2147483648 , -1025 , 0 , 1025.98 , 2147483647 * Хүчингүй -1,025,234,000,367 , -2147483649 , 2147483648 , 1,025,234,000,367
2. SMALLINT
засварлахSMALLINT өгөгдлийн төрөл нь 0 гэсэн шууд бус хэмжээтэй тоон утгыг хүлээж авдаг. SMALLINT нь 2^ -15 зэргээс 2^15-1 зэргийн хүрээнд ямар нэгэн бүхэл тоон утгыг хадгалдаг. Энэ хүрээнээс гарсан утга өгөх гэж оролдох үед алдаа үүсдэг. SMALLINT өгөгдлийн төрөлд нарийвчлсан болон хэсэгчилсэн тоон утгыг заах гэж байгаа бол хэмжээний хэсгийг бүхэлдгэж болон богиносгож болдог. ТАЙЛБАР: (2 ^ -15) аас (2 ^ 15) -1 хүтэлх утгаас илүү утга хадгалахын тулд, Бүхэл тоон(INTEGER) өгөгдлийн төрлийг ашиглах ёстой.
Жишээ нь: SMALLINT *Хүчинтэй -32768 , 0 , -30.3 , 32767 *Хүчингүй -33,000,567 , -32769 , 32768 , 1,897,536,000
3. DECIMAL [(p[,s])] эсвэл DEC [(p[,s])]
засварлахDECIMAL өгөгдлийн төрөл нь тоон утга болон өгөгдлийн төрөл зарлахдаа нарийвчилсан болон хувиарлалт нь тодорхой болсон үед хүлээн авдаг. Нарийн тодорхойлолтонд олон оронтой тоог агуулсан бодит бүхэл тоогоор илэрхийлэгдсэн байх ёстой. Decimal өгөгдлийн төрөлд хэмжээ нь заасан нарийвчлалаас илүү том байж болохгүй. Decimal өгөгдлийн төрлийг гурван өөр төрлийн аргын аль нэгээр нь зарлаж болно. Энэ нь тоог SQL кювэрийн танилцуулгад хэрхэн зарлагдахыг хянадаг, гэхдээ энэ нь яаж хадгалагдаж байгааг хянахгүй.
- DECIMA – дэфаулт нарийвчлал нь 38, дэфаулт хэмжээ нь 0.
- DECIMAL(p) – дэфаулт хэмжээ нь 0.
- DECIMAL(p, s) – нарийвчлал болон хэмжээг хэрэглэгч тодорхойлно.
Дээрх жишээн дээрх p нь нарийвчлалыг илэрхийлэх бүхэл тоо мөн s нь хэмжээг илэрхийлэх бүхэл тоо.
Жишээ нь: DECIMAL(10,3) * хүчтинтэй 1234567 , 1234567.123 ,1234567.1234 , -1234567, -1234567.123 , -1234567.1234 * Хүчингүй: 12345678 , 12345678.12 ,12345678.123, -12345678, -12345678.12,-12345678.123
4. NUMERIC [(p[,s])]
засварлахDecimal өгөгдлийн төрөлтэй адилхан аргаар дүрсэлдэг тоон өгөгдлийн төрөл гэж үздэг .
Нарийвчилсан тоон өгөгдлийн төрөл
засварлах1. FLOAT(p)
засварлахFLOAT өгөгдлийн төрөл нь ойролцоо тоон утгыг хүлээн авдаг ,Та хүсвэл дээд тал нь 64 хүртэлх оронтой утгыг тодорхойлж болно Хэрэв float өгөгдлийн төрөл зарлаж байхдаа ямар нэгэн нарийвчлал тусгайлан зааж өгөөгүй бол дэфаулт нарийвчлал нь 64 хүртэл байна. Зарласан нарийвчлалаас илүү том утга өгөхийг оролдвол алдаа гарна.
Жишээ нь : FLOAT(8) *Хүчинтэй: 12345678 , 1.2 , 123.45678 , -12345678 , -1.2 , -123.45678 *Хүчингүй: 123456789 , 123.456789 . -123456789 , -123.456789
2. REAL
засварлахREAL өгөгдлийн төрөл нь 64 хүртэлх нарийвчилсан ойролцоо тоон утгыг хүлээн авдаг. REAL өгөгдлийн төрлийг зарласан үед ямар ч параметр шаардахгүй. Хэрэв та 64-с илүү нарийвчилсан утга өгөхийг оролдвол алдаа гарах болно.
Жишээ нь: REAL * Хүчинтэй -2345 , 0 ,1E-3 , 1.245 123456789012345678901234567890 * Хүчингүй 123,456,789,012,345,678,901,234,567,890,123
Огноо болон Цаг хугацааны өгөгдлийн төрлүүд.
засварлах1. DATE
засварлахDate өгөгдлийн төрөл нь огноон утгыг хүлээн авдаг .Date өгөгдлийн төрлийг зарлахад ямар ч параметр шаардахгүй. Огноон утгыг YYYY-MM-DD хэлбэрээр заасан байх ёстой. Сарын утга 1-12 хооронд байх ёстой, өдрийн утга сараас хамаараал 1-31-ын хооронд байна мөн жилийн утга 0-9999 хооронд байх ёстой. DATE өгөгдлийн төрлийн оноосон утгын өмнө том жижиг үсгүүд бүхий DATE гэсэн түлхүүр үг байгаа тохиолдолд өгөгдсөн утгыг нэг хашилтанд бичих ёстой, Жишээ нь : DATE ' 1999-04-04'
Жишээ нь:DATE *Хүчинтэй DATE '1999-01-01' , DATE '2000-2-2', date '0-1-1' *Хүчингүй DATE '1999-13-1' , date '2000-2-30' , '2000-2-27' , date 2000-2-27
2. TIME
засварлахTIME өгөгдлийн төрөл нь цаг хугацаа заасан утгыг хүлээн авдаг.TIME өгөгдлийн төрлийн зарласан үед ямар ч параметр шаардахгүй.Цаг хугацаа заасан утгыг HH:MM:SS хэлбэрээр заасан байх ёстой. Нэмэлт бутархай утга ашиглахыг хүсч байвал наносекунд- аар төлөөлүүлж болно. Минут болон секундын утга хоёр оронтой байх ёстой .Цагын утга 0-23 ын хооронд байх ёстой , минутын утга 00-59 –ын хооронд мөн секундын утга 00-61.999999 хүртэл байх ёстой. TIME өгөгдлийн төрлийн оноосон утгын өмнө том жижиг үсгүүд бүхий TIME гэсэн түлхүүр үг байгаа тохиолдолд өгөгдсөн утгыг нэг хашилтанд бичих ёстой, Жишээ нь : DATE ' 1999-04-04' Жишээ нь: TIME
*Хүчинтэй TIME '00:00:00' , TIME '1:00:00' , TIME '23:59:59' , time '23:59:59.99' *Хүчингүй TIME '00:62:00' , TIME '00:3:00' , TIME '23:01' , '24:01:00'
3. TIMESTAMP
засварлахTIMESTAMP өгөгдлийн төрөл нь огноон утга болон цаг хугацааны утга хоёуланг нь хослуулсан утгыг хүлээн авдаг.TIMESTAMP өгөгдлийн төрлийг зарласан үед ямар ч параметр шаардлаггүй.Timestamp – ын утгыг YYYY-MM-DD HH:MM:SS хэлбэрээр заасан байх ёстой.Timestamp дээр огноо болон цаг хугацааны хэсгүүдийг зайгаар тусгаарлана. TIME өгөгдлийн төрлийн оноосон утгын өмнө том жижиг үсгүүд бүхий TIME гэсэн түлхүүр үг байгаа тохиолдолд өгөгдсөн утгыг нэг хашилтанд бичих ёстой. Жишээ нь :TIMESTAMP '1999-04-04 07:30:00'.
Жишээ нь TIMESTAMP * Хүчинтэй TIMESTAMP `1999-12-31 23:59:59.99' , TIMESTAMP `0-01-01 00:00:00'
- Хүчингүй 1999-00-00 00:00:00 , TIMESTAMP `1999-01-01 00:64:00'
Бусад өгөгдлийн төрлүүд
засварлах- sql_variant
text , ntext болон бусад янз бүрийн SQL Серверийг дэмждэг өгөгдлийн төрүүдийн утгыш хадгалдаг.
- Uniqueidentifier
Бүх төрлийн unique нэр хадгалдаг
- Xml
XML өгөгдлийг хадгалдаг өгөгдлийн төрөл . Та багана, эсвэл XML төрлийн хувьсагчид XML тохиолдлуудыг хадгалж болно.
- cursor
Заагчийн талаарх лавлагааг хувьсагч эсвэл stored procedure-ийн OUTPUT параметрт хадгалхад зориулсан өгөгдлийн төрөл
- table
Боловсруулалтаас гарж ирсэн үр дүнг хадгалдаг
Тэмдэгтийн Том Объект(CLOB).
засварлахТэмдэгтийн Том Объект(CLOB) өгөгдлийн төрөл нь character( урт ) болон vatchar(урт) өгөгдлийн төрлөөр дүрслэхийг хүлээн зөвшөөрсөн илүү урт хэмжээтэй тэмдэгт мөрүүдийг хүлээн авдаг.CLOB ыг зарлахдаа CLOB ын уртыг байтаар зааж өгөхдөө дараах зарчмыг ашигладаг. n [K | M | G] Дээрх синтаксын хувьд , n тэмдэгт тавигдаагүй бүхэл тооны уртыг илэрхийлнэ. K ,M болон G нь харгалзан килбайт , мегабайт эсвэл гигабайт тохирно.K , M болон G ээс гадна n -ийг тусгайлан заасан бол , n -ийн бодит уртыг доорх аргаар олно.
*K = n * 1024 *M = n * 1,048,576 *G = n * 1,073,741,824
CLOB өгөгдлийн төрөлд зөвшөөрөгдсөн дээд хэмжээ нь хоёр гигабайт байдаг . Хэрэв уртын зааж бол дэфаулт урт нь нэг гигабайт гэж ашиглагдах болно.Мөн CLOB өгөгдлийн төрөл нь Юникод өгөгдлийг дэмждэг.
Хоёртын Том Объект(BLOB).
засварлахХоёртын Том Объект (BLOB) өгөгдлийн төрөл нь хоёртын утгыг хүлээн авдаг.BLOB ын зарлахдаа байтын уртыг зааж өгөхдөө дараах зарчмыг ашигладаг.
n [K | M | G]
Дээрх синтаксын хувьд , n тэмдэгт тавигдаагүй бүхэл тооны уртыг илэрхийлнэ. K ,M болон G нь харгалзан килбайт , мегабайт эсвэл гигабайт тохирно.K , M болон G ээс гадна n -ийг тусгайлан заасан бол , n -ийн бодит уртыг доорх аргаар олно.
*K = n * 1024 *M = n * 1,048,576 *G = n * 1,073,741,824
CLOB өгөгдлийн төрөлд зөвшөөрөгдсөн дээд хэмжээ нь хоёр гигабайт байдаг . Хэрэв уртын зааж бол дэфаулт урт нь нэг гигабайт гэж ашиглагдах болно. BLOB өгөгдлийн төрөлийг SQL ийн скаляр функцуудад хэрэглэж болохгүй.
Ашигласан материал
засварлах
Цахим холбоос
засварлах- Peter Gulutzan, Trudy Pelzer -2003.[1].
- https://www.w3schools.com/sql/sql_datatypes_general.asp
- https://en.wikipedia.org/wiki/SQL
Мэдээлэл оруулсан
засварлахB140920329