SQL өгөгдлийн төрөл

SQL өгөгдлийн төрөл нь ямар нэгэн объектын өгөгдлийн төрлийг заасан шинж чанар юм. Багана, Хувьсагч болон Илэрхийлэл бүр дээр SQL тэй холбоотой өгөгдлийн төрлүүд байдаг. SQL хөгжүүлэгчид нь SQL хүснэгт үүсгэх үедээ хүснэгт тус бүр болон баганууд дээр өгөгдлийг ямар төрлөөр хадгалахыг шийдэх хэрэгтэй байдаг. Өгөгдлийн төрөл нь SQL ийн багана тус бүр дээрх өгөгдөл ямар төрлийн төлөвтэй байх талаарх тэмдэг болон зааварчилгааны ойлголт юм.

Зураг1: 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

Боловсруулалтаас гарж ирсэн үр дүнг хадгалдаг

Зураг2:SQL өгөгдлийн төрлүүд

Тэмдэгтийн Том Объект(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 ийн скаляр функцуудад хэрэглэж болохгүй.

Зураг3: SQL Том өгөгдлийн төрлүүд

Ашигласан материал[засварлах | кодоор засварлах]


Цахим холбоос[засварлах | кодоор засварлах]

Мэдээлэл оруулсан[засварлах | кодоор засварлах]

B140920329