Гэр / Хөтөчүүд / SQL нэгтгэсэн функцууд - SUM, MIN, MAX, AVG, COUNT. Баригдсан Sql функцууд Математик функцүүдийн асуулгын жишээнүүд

SQL нэгтгэсэн функцууд - SUM, MIN, MAX, AVG, COUNT. Баригдсан Sql функцууд Математик функцүүдийн асуулгын жишээнүүд

Сүүлийн шинэчлэлт: 2017/07/29

T-SQL дээр мөртэй ажиллахын тулд та дараах функцуудыг ашиглаж болно.

    LEN : Мөр дэх тэмдэгтүүдийн тоог буцаана. Параметрийн хувьд мөрийг функц руу дамжуулдаг бөгөөд үүний тулд уртыг олох шаардлагатай:

    SELECT LEN("Apple") -- 5

    LTRIM : Мөрөөс тэргүүлэх зайг арилгана. Энэ нь мөрийг параметр болгон авдаг:

    SELECT LTRIM("Apple")

    RTRIM : Мөрний арын зайг арилгана. Энэ нь мөрийг параметр болгон авдаг:

    RTRIM СОНГОХ("Apple")

    CHARINDEX : Мөр дэх дэд мөрийн эхний тохиолдлын индексийг буцаана. Эхний параметр нь дэд мөр, хоёр дахь параметр нь хайлт хийх мөр юм:

    CHARINDEX SELECT("pl", "Apple") -- 3

    PATINDEX : тэмдэгт мөр дэх тодорхой хэв маягийн анхны тохиолдлын индексийг буцаана:

    PATINDEX SELECT("%p_e%", "Apple") -- 3

    ЗҮҮН : мөрийн эхнээс тодорхой тооны тэмдэгтүүдийг таслана. Функцийн эхний параметр нь мөр, хоёр дахь нь мөрнөөс эхлээд хасах тэмдэгтүүдийн тоо юм.

    СОНГОХ ЗҮҮН("Apple", 3) -- Апп

    БАРУУН: Мөрийн төгсгөлөөс заасан тооны тэмдэгтийг таслана. Функцийн эхний параметр нь мөр, хоёр дахь нь мөрнөөс эхлээд хасах тэмдэгтүүдийн тоо юм.

    БАРУУН СОНГОХ("Apple", 3) -- ple

    SUBSTRING : тодорхой индексээс эхлэн мөрнөөс тодорхой урттай дэд мөрийг таслана. Функцийн эхний параметр нь мөр, хоёр дахь нь таслах эхлэлийн индекс, гурав дахь параметр нь хасах тэмдэгтүүдийн тоо юм.

    SUBSTRING СОНГОХ("Galaxy S8 Plus", 8, 2) -- S8

    REPLACE : Мөр доторх нэг дэд мөрийг нөгөөгөөр солино. Функцийн эхний параметр нь мөр, хоёр дахь нь солигдох дэд мөр, гурав дахь нь дараахаар солигдох дэд мөр юм.

    СОНГОХ СОНГОХ("Galaxy S8 Plus", "S8 Plus", "Note 8") -- Galaxy Note 8

    REVERSE : мөрийг эргүүлнэ:

    СОНГОХ УРВАХ("123456789") -- 987654321

    CONCAT: хоёр мөрийг нэг мөр болгон нэгтгэдэг. Параметрийн хувьд 2 ба түүнээс дээш шугамыг холбохын тулд:

    SELECT CONCAT("Том", " ", "Смит") -- Том Смит

    LOWER: мөрийг жижиг үсэг рүү хөрвүүлнэ:

    ДООД СОНГОХ("Алим") -- алим

    UPPER : мөрийг том үсэг рүү хөрвүүлнэ

    ДЭЭД ("Алим") -- АЛИМ СОНГОХ

    SPACE: тодорхой тооны зай агуулсан мөрийг буцаана

Жишээлбэл, хүснэгтийг авч үзье:

CREATE TABLE бүтээгдэхүүн (Id INT IDENTITY PRIMARY KEY, Бүтээгдэхүүний нэр NVARCHAR(30) NULL БУС, Үйлдвэрлэгч NVARCHAR(20) NULL, ProductCount INT DEFAULT 0, Үнэ MONEY NULL биш);

Мөн өгөгдлийг задлахдаа бид мөрийн функцуудыг ашигладаг:

ДЭЭД (ЗҮҮН(Үйлдвэрлэгч,2)) AS ТОВЧЛОЛУУД, CONCAT(Бүтээгдэхүүний нэр, " - ", Үйлдвэрлэгч) БҮТЭЭГДЭХҮҮНИЙГ БҮТЭН БҮТЭЭГДЭХҮҮНИЙГ НЭРЭЭР ЗАХИАЛАХ ТОВЧЛОЛУУД

Суулгасан функцууд SQLМэдээллийн боловсруулалтыг хөнгөвчлөх, хурдасгах зорилготой. Онцлог нь тэдгээрийг шууд илэрхийлэлд зааж өгөх боломжтой юм. Бүх суурилуулсан функцуудыг нөхцөлт бүлэгт хувааж болно.

Математикийн функцууд:

    ABS(утга учир) - тооны үнэмлэхүй утгыг буцаана;

    Дугуй(үнэ цэнэ, нарийвчлал) - заасан аргумент хүртэл дугуйлсан тоон утгыг буцаана нарийвчлаларавтын орны тоо;

    ТЭМДЭГЛЭХ(утга учир) - хэрэв тоо сөрөг байвал хасах, эсрэгээр нэмэх;

    ХҮЧ(үнэ цэнэ, зэрэг) – тоог нэг зэрэгтэй болгох;

    SQRT(утга учир) - тооны квадрат язгуурыг задлах;

    ТААЗ(утга)- утгаас их буюу тэнцүү бүхэл тоог буцаана;

    - ШАЛТ(утга)Утгаас бага буюу тэнцүү бүхэл тоог буцаана.

Мөрийн функцууд:

    ASCII(шугам) - буцаж ирдэг ASCIIмөрийн эхний тэмдэгтийн код;

    CHАР(тоо) – тэмдэгтийг буцаана ASCIIкод;

    ЛЕН (шугам) – мөрийн уртыг тэмдэгтээр буцаана.

    ЛTRIM(мөр)/ RTRIM(мөр)-мөрийн эхэнд/төгсгөлд байгаа зайг арилгана;

    ЗҮҮН(мөр, тоо)/ РЗӨВ(мөр, тоо)- заасан аргументыг буцаана тоозүүн/баруун захаас эхлэн мөр дэх тэмдэгтүүдийн тоо;

    SUBSTRING(шугам, байрлал, урт) - заасан байрлалаас эхлэн мөрөөс заасан урттай дэд мөрийг буцаана;

    ДООШ(мөр) /ДЭЭД(мөр) - жижиг/том үсгээр хөрвүүлсэн мөрийг буцаана.

Огноотой ажиллах функцууд:

    GETDATE() - SQL Server-ийн жишээ ажиллаж байгаа компьютерийн огноо, цагийг агуулсан утгыг буцаана;

    ӨДӨР(утга_огноо)– заасан огнооноос дугаарыг буцаана;

    САР(утга_огноо)- заасан өдрөөс хойшхи сарын дугаарыг буцаана;

    ЖИЛ(утга_огноо)- заасан өдрөөс хойш жилийн утгыг буцаана;

    DATENANE( хэсэг, үнэ цэнэ_огноо) - заасан хэсгийг төлөөлөх тэмдэгтийн мөрийг буцаана ( өдөр, сар, Цаггэх мэт.) заасан өдрөөс;

    DATE ХЭСЭГ( хэсэг, үнэ цэнэ_огноо) - заасан хэсгийг илэрхийлэх бүхэл тоог буцаана ( өдөр, сар, Цаггэх мэт.) заасан өдрөөс.

Өгөгдлийн төрлийг хувиргах функцууд

    cast (утга учир AS өгөгдлийн төрөл)

    ХӨРВҮҮЛЭХ(өгөгдлийн төрөл, утга учир)

Аргумент утга учирфункцүүдэд хөрвүүлэх утгыг зааж өгнө.

7.3. Өгөгдлийн тодорхойлолтын хэлний командууд

Өгөгдлийн тодорхойлолтын хэл нь мэдээллийн сан болон түүний объектуудыг үүсгэх, өөрчлөх, устгах командуудыг агуулдаг.

Хүснэгт үүсгэх

Шинэ хүснэгт үүсгэхийг тушаалаар гүйцэтгэдэг Хүснэгт үүсгэх. Энэ тушаал нь хүснэгтийн бүтэц, хүснэгтийн багана бүр, хүснэгтэд тавигдах ёстой бүрэн бүтэн байдлын хязгаарлалтуудыг тодорхойлдог.

Тушаалын синтакс:

Хүснэгт үүсгэх хүснэгтийн нэр (( баганын_тайлбар |тооцоолсон_баганын_нэр AS илэрхийлэл | хүснэгтийн_түвшний_бүрэн бүтэн байдлын_хязгаарлалт) [, ...])

Хүснэгтийн нэр нь 128 тэмдэгтээс хэтрэхгүй урттай танигч юм.

Хүснэгт нь тооцоолсон багана агуулж болох бөгөөд энэ тохиолдолд баганын утгыг хүснэгтийн бүтцэд хадгалагдсан илэрхийллээр тодорхойлно. Тооцоолсон баганыг өөрчлөх боломжгүй, тиймээс энэ нь NULL, ОНЦГОЙ, АНХДАГЧ ТҮЛХҮҮР, ГАДААД ТҮЛХҮҮР эсвэл өгөгдмөл биш байж болохгүй.

Хүснэгтийн баганыг тайлбарлах синтакс нь:

баганын_нэр өгөгдлийн төрөл[(хэмжээ)]

[(ӨГӨГДМӨД_ӨГӨМЖ_утга | IDENTITY [(утга, алхам)]}]

[баганын_түвшний_бүрэн байдлын_хязгаарлалт]

DEFAULT - шинээр нэмэгдсэн бичлэгийн баганад өгөгдсөн утгыг зааж өгөх боломжийг олгоно.

IDENTITY Автомат дугаарлах боломжтой багана (эсрэг багана) үүсгэж байгааг харуулж байна. Хүснэгтэд зөвхөн нэг тоологч баганыг тодорхойлж болно. Утга параметр нь тоолуурын анхны утгыг, алхамын параметр нь өсөлтийн алхамыг зааж өгдөг. Хэрэв эдгээр параметрүүдийг тохируулаагүй бол 1 гэсэн утгатай байна. IDENTITY-г зөвхөн бүхэл тоо эсвэл аравтын төрөлтэй баганад тохируулж болно. IDENTITY баганад утга оруулахыг хориглоно.

DBMS зохицуулдаг хоёр бүлэг бүрэн бүтэн байдлын хязгаарлалтууд байдаг:

Хүснэгтийг үүсгэх эсвэл өөрчлөх үед зарладаг мэдүүлгийн бүрэн бүтэн байдлын хязгаарлалтууд;

Триггерээр зохицуулагддаг процедурын бүрэн бүтэн байдлын хязгаарлалтууд.

Мэдэгдэлийн бүрэн бүтэн байдлын хязгаарлалт нь хүснэгтийн түвшний хязгаарлалт болон хүснэгтийн түвшний хязгаарлалт байж болно. Баганын түвшний хязгаарлалт нь зөвхөн нэг баганад хамаарна. Мэдэгдлийн бүрэн бүтэн байдлын хязгаарлалт бүрт нэр өгч болно.

Баганын түвшний хязгаарлалтын тайлбар нь дараах синтакстай байна.

((ҮНДСЭН ТҮЛХҮҮР | ӨНГӨЛӨГҮЙ | NULL БИШ ) |ГАДААД ТҮЛХҮҮР ИШВЭЛТИЙН хүснэгт_нэр( баганын_нэр)

|Боолийн_илэрхийлэлийг ШАЛГАХ)

Өгөгдлийн бүрэн бүтэн байдлын хязгаарлалтын нэр нь мэдээллийн санд өвөрмөц байх ёстой. Баганын түвшинд тодорхойлж болох хязгаарлалтуудыг авч үзье.

PRIMARY KEY хязгаарлалт. Хүснэгтийн бүх үндсэн түлхүүр утгууд нь өвөрмөц байх ёстой бөгөөд хоосон биш байх ёстой. Хүснэгт нь зөвхөн нэг үндсэн түлхүүртэй байж болно. Хэрэв энэ нь нийлмэл бол үндсэн түлхүүрийн бүрэн бүтэн байдлын хязгаарлалтыг хүснэгтийн түвшинд тогтооно;

UNIQUE баганын утгын өвөрмөц байдлын хязгаарлалт. Энэ нь хүснэгтэд тухайн баганад ижил утгатай хоёр бичлэг байж болохгүй гэсэн үг;

Баганад NULL утгыг хадгалахаас сэргийлдэг NOT NULL хязгаарлалт;

Гадаад түлхүүрийн хязгаарлалт FOREIGN KEY (лавлагааны бүрэн бүтэн байдлын хязгаарлалт). Гадаад түлхүүр болох баганын хувьд RERENCES ашиглан холбоосыг үүсгэсэн хүснэгтийн нэр болон холбогдох хүснэгтийн баганын нэрийг зааж өгнө үү. Ийм хүснэгт нь үүсгэсэн хүснэгттэй холбоотой үндсэн (эцэг эх) хүснэгт юм. Үндсэн хүснэгтийн утгууд нь холбогдож байгаа багана нь PRIMARY KEY хязгаарлалттай байх ёстой.

Хэрэв гадаад хүснэгтийн түлхүүр нь олон талбараас бүрдэх бол FOREIGN KEY хязгаарлалтыг хүснэгтийн түвшинд зааж өгөх ёстой. Энэ тохиолдолд та гадаад түлхүүрт багтсан бүх баганыг жагсааж, үндсэн хүснэгтийн нэр, гадаад түлхүүрт хамаарах үндсэн хүснэгтийн баганын нэрийг зааж өгөх хэрэгтэй.

Лавлагааны бүрэн бүтэн байдал нь гадаад түлхүүр болон түүнд харгалзах үндсэн түлхүүрийн хязгаарлалтыг ашиглан хүснэгтэд өгөгдөл нэмэх, өөрчлөх дүрмийг тогтоодог. Гадаад түлхүүрийн ON UPDATE болон ON DELETE заалтууд нь холбогдох өгөгдлийг өөрчлөх дараах дүрмийг тодорхойлдог.

ҮЙЛ АЖИЛЛАГААГҮЙ - зөвхөн үндсэн хүснэгтэд байгаа хүүхдийн хүснэгтэд харгалзах гадаад түлхүүрийн утгуудыг өөрчлөх (устгах) боломжийг танд олгоно. Энэ дүрэм нь анхдагчаар хүчинтэй байна;

CASCADE гэдэг нь эх хүснэгтийн үндсэн түлхүүрийн утга өөрчлөгдөхөд хүүхэд хүснэгтийн гадаад түлхүүрийн утга бүр автоматаар өөрчлөгдөнө (устгагдана);

SET NULL гэдэг нь эх хүснэгтийн үндсэн түлхүүрийг өөрчлөх (устгах) тохиолдолд хүүхдийн хүснэгтийн бүх мөрүүдэд гадаад түлхүүрийн утгуудыг автоматаар NULL утгыг онооно гэсэн үг;

SET DEFAULT гэдэг нь эх хүснэгтийн үндсэн түлхүүрийг өөрчлөх (устгах) тохиолдолд хүүхдийн хүснэгтийн бүх мөрүүдэд гадаад түлхүүрийн утгуудыг автоматаар өгөгдмөл утгуудаар онооно гэсэн үг юм.

Загварыг Бүлэгт авч үзсэн "Их сургууль" сургалтын мэдээллийн сангийн жишээг гүйцээцгээе. 4.3 хүснэгт САХИЛГА, ЕРӨНХИЙ МЭДЭЭ. Хүснэгт 6 ба 7-д хүснэгтүүдийн логик бүтцийг тайлбарласан болно.

Хүснэгт 6

Мэдээллийн объектын логик бүтэц СУРГАЛТ

Хүснэгт 7

Мэдээллийн объектын логик бүтэц ЕРӨНХИЙ МЭДЭГДЭЛ

Түлхүүр тэмдэг

Талбарын формат

Нэр

Нарийвчлал

Бичлэгийн дэвтрийн дугаар

Бүртгэгдсэн оюутны дэвтэрийн дугаар

текст

Сахилгын код

Сахилгын код

Тоон

урт бүхэл тоо

тоон

Зурагт үзүүлсэн хүснэгтийн дагуу хүснэгт үүсгэх хүсэлтийг өгье. 35 мэдээллийн сангийн загвар.

Цагаан будаа. 35. Өгөгдлийн сангийн схем "Их сургууль"

Өгөгдлийн сангийн бүдүүвчээс харахад ФАКУЛТИЙН хүснэгт нь бие даасан хүснэгт тул эхлээд үүсгэгддэг. Хүснэгт дэх логик бүтцийн тайлбарыг харгалзан хүснэгт үүсгэх хүсэлт. 4 (х. 61) дараах байдлаар харагдах болно.

ХҮСЭЭНИЙ багш нарыг бий болгох

([тэнхимийн дугаар] tinyint PRIMARY KEY , [тэнхимийн нэр] char(50))

SPECIALTY хүснэгт нь мөн бие даасан, бид үүнийг хоёрдугаарт үүсгэдэг. Асуулга үүсгэхдээ энэ нь Хүснэгт дэх логик бүтцийн тайлбарыг ашигладаг. 5 (х. 62).

ХҮСНЭГТ ҮЗҮҮЛЭХ [мэргэжил] (

[мэргэжлийн дугаар] int АНХАН ТҮЛХҮҮР,

[мэргэжлийн нэр] тэмдэг (60),

[боловсролын зардал])

ГРУПП хүснэгт нь БАГШ болон МЭРГЭЖЛИЙН хүснэгтээс хамаарна. Бид асуулга үүсгэхдээ 3-р хүснэгтийг (х. 61) ашигладаг бөгөөд багануудыг харгалзан үздэг факультетийн дугаарболон тусгай дугааргадаад түлхүүрүүд нь:

ХҮСНЭГТ ҮЗҮҮЛЭХ [бүлэг] (

[бүлгийн дугаар] жижиг АНХАН ТҮЛХҮҮР,

[мэргэжлийн дугаар] int ГАДААД ҮНДСЭН Ашигласан материал мэргэжил( өрөө Онцгой- мэдээ)UPDADE CASCADE ДЭЭР УСТГАХ КАСКАД,

[факультетийн дугаар] tinyint ГАДААД ҮНДСЭН АШИГЛАСАН БҮТЭЭГДЭХҮҮН багш нар( өрөө тэнхим) ON DELETE CASCADE ON UPDADE CASCADE, [курсын дугаар] tinyint)

ОЮУТНЫ хүснэгт нь БҮЛГЭЭС хамааралтай хүснэгт юм. Хүснэгт 2 (х. 60)-ийн өгөгдөлд үндэслэн бид асуулга хийнэ. Бид мөн багана гэдгийг анхаарна уу бүлгийн дугааргадаад түлхүүрүүд нь:

ХҮСНЭГТ ҮЗҮҮЛЭХ [оюутан] (

[бүлгийн дугаар] smallint NULL БИШ ГАДААД ТҮЛХҮҮР ЛАВЛАГААНЫ бүлэг( өрөө бүлгүүд) ,

[овог нэр] char(15) NULL БИШ,

[төрсөн он сар өдөр] огноо цаг БИШ NULL ,

[арилжааны] бит NULL биш,

[бүртгэлийн нэр] тэмдэг(9))

ЕРӨНХИЙ БҮРТГЭЛ хүснэгтийн өгөгдөл нь ОЮУТНУУД болон СУРГАЛТЫН хүснэгтээс хамаарна. Энэ хүснэгтэд үндсэн түлхүүр нь нийлмэл бөгөөд үндсэн түлхүүрийн багана бүр нь гадаад түлхүүр байна (Хүснэгт 7 ба 35-р зургийг үз).

Хүснэгт 6-д өгсөн сахилгын хүснэгтийн логик бүтцийн тайлбарыг ашиглан асуулга хийцгээе.

ХҮСНЭГТ ҮЗҮҮЛЭХ [сахилга бат] (

[сахилгын код] int АНХАН ТҮЛХҮҮР,

[сахилгын нэр] char(50))

Одоо та ерөнхий мэдэгдлийн хүснэгт үүсгэхийн тулд асуулга үүсгэж болно. Хүснэгтийн үндсэн түлхүүр нь нийлмэл түлхүүр тул PRIMARY KEY хязгаарлалтыг хүснэгтийн түвшинд тохируулах ёстой. Жишээлбэл, FOREIGN KEY хязгаарлалтуудыг мөн хүснэгтийн түвшинд тохируулъя. Хүсэлт нь дараах байдлаар харагдах болно.

ХҮСНЭГТ ҮЗҮҮЛЭХ [ерөнхий хуудас] (

[сахилгын код] int,

[дэвтэрийн дугаар] тэмдэг(8),

[анги] NULL БИШ , АНХАН ТҮЛХҮҮР ([сахилгын код],[анги номын дугаар]), ГАДААД ТҮЛХҮҮР ([сахилгын код]) Ашигласан материал [сахилгаан] ([сахилгын код]), ГАДААД ТҮЛХҮҮР ([анги номын дугаар]) [оюутан] ([анги номын дугаар]))

Хүснэгтийн бүтцийг өөрчлөх

Хүснэгтийн бүтцийг өөрчлөх нь ALTER TABLE командын тусламжтайгаар хийгддэг. Энэ командыг ашиглан та одоо байгаа баганын шинж чанарыг өөрчлөх, устгах эсвэл хүснэгтэд шинэ багана нэмэх, баганын болон хүснэгтийн түвшинд бүрэн бүтэн байдлын хязгаарлалтыг удирдах боломжтой. Олон параметр, түлхүүр үгсийн хуваарилалт нь CREATE TABLE командын харгалзах параметрүүд болон түлхүүр үгсийн хуваарилалттай төстэй юм.

Хүснэгтийг устгаж байна

Хүснэгтийг буулгах нь DROP TABLE командыг ашиглан хийгддэг. Тушаалын синтакс:

ХҮСНЭГТИЙГ УНАХ ширээ

Жишээлбэл, STUDENT хүснэгтийг устгах асуулга дараах байдалтай байна.

DROP TABLE Оюутан

Хүснэгтийг устгахдаа өгөгдлийн санд байгаа хүснэгтүүдийн хоорондын хамаарлыг харгалзан үзэх ёстой. Хэрэв өөр хүснэгт нь FOREIGN KEY бүрэн бүтэн байдлын хязгаарлалтыг ашиглан устгаж буй хүснэгтийг хэлж байгаа бол DBMS нь устгахыг зөвшөөрөхгүй.

Индекс үүсгэх

Өгөгдлийн сангийн хүснэгт дэх тодорхой өгөгдөлд хандах хандалтыг хурдасгахын тулд индексүүдийг ашигладаг. Индекс гэдэг нь ОЮУТНЫ хүснэгтийн Овог багана гэх мэт мэдээллийн сангийн хүснэгтийн нэг буюу хэд хэдэн баганад утгуудыг эрэмбэлдэг бүтэц юм. Хэрэв та тодорхой оюутны овог нэрээр хайж байгаа бол индекс нь хүснэгтийн бүх мөрийг хайхаас илүү хурдан шаардлагатай мэдээллийг авахад тусална.

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

CREATE INDEX командыг ашиглан индекс үүсгэнэ:

ИНДЕКС ҮЗҮҮЛЭХ

нэр_индекс ON нэр _хүснэгтүүд(багана [,...])

Энд UNIQUE нь индекс зөвхөн өвөрмөц утгыг хадгалах ёстойг харуулж байна.

Нэг буюу хэд хэдэн багана (нийлмэл индекс) дээр индекс үүсгэж болно. Нийлмэл индексүүд нь нэг баганад ижил утгатай бичлэгүүдийг ялгах боломжийг олгодог.

Жишээ: ОЮУТАН хүснэгт дээр нийлмэл индекс үүсгэ талбаруудын хувьд Овог, Төрсөн огноо

INDEX ҮҮСГЭХ Ind_Fam АСААЛТТАЙ

Оюутан(Овог, [Төрсөн огноо] DESC)

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

Хүснэгтийн индексийг устгаж байна

DROP команд нь хүснэгтээс индексийг устгадаг. Индекс буулгах DROP командын синтакс нь:

DROP INDEX индексАСААЛТТАЙ ширээ

Хүснэгтээс эсвэл хүснэгтээс индексийг буулгахын өмнө үүнийг хаасан байх ёстой.

Жишээ: STUDENT хүснэгтээс Ind_Fam индексийг устгана уу

DROP INDEX Ind_Fam ON Оюутан

Transact-SQL функцууд нь нэгтгэсэн эсвэл скаляр байж болно. Эдгээр төрлийн функцуудыг энэ нийтлэлд тусгасан болно.

Нэгтгэсэн функцууд

Нэгтгэх функцууд нь баганын утгуудын бүлэгт тооцоолол хийдэг бөгөөд эдгээр тооцооллын үр дүнгээс үргэлж нэг утгыг буцаадаг. Transact-SQL хэл нь хэд хэдэн нийтлэг нэгтгэх функцийг дэмждэг:

AVG

Баганад байгаа өгөгдлийн арифметик дундажийг тооцоолно. Тооцоолол хийх утгууд нь тоон утгатай байх ёстой.

MIN ба MAX

Баганад агуулагдах бүх өгөгдлийн утгын хамгийн их ба хамгийн бага утгыг тодорхойлно. Утга нь тоон, мөр эсвэл түр зуурын (огноо/цаг) байж болно.

СУМ

Багана дахь утгуудын нийт нийлбэрийг тооцоолно. Тооцоолол хийх утгууд нь тоон утгатай байх ёстой.

COUNT

Багана дахь хоосон бус утгуудын тоог тоолно. Count(*) функц нь багана дээр тооцоо хийдэггүй цорын ганц нэгтгэх функц юм. Энэ функц нь мөрийн тоог буцаана (тус тусад нь багана хоосон утгыг агуулсан эсэхээс үл хамааран).

COUNT_BIG

BIGINT өгөгдлийн утгыг буцаадаг ялгаа нь тоолох функцтэй төстэй.

SELECT мэдэгдэлд ердийн нэгтгэх функцуудыг ашиглах талаар дараах нийтлэлүүдийн аль нэгэнд авч үзэх болно.

Скаляр функцууд

Transact-SQL скаляр функцийг скаляр илэрхийлэл үүсгэхэд ашигладаг. (Скаляр функц нь нэг утга эсвэл утгуудын жагсаалт дээр тооцооллыг гүйцэтгэдэг бол нэгтгэх функц нь олон эгнээний утгуудын бүлэгт тооцооллыг гүйцэтгэдэг.) Скаляр функцийг дараах ангилалд хувааж болно.

    тоон функц;

    огнооны функцууд;

    мөрийн функцууд;

    системийн функцууд;

    мета өгөгдлийн функцууд.

Эдгээр төрлийн функцуудыг дараах хэсгүүдэд авч үзэх болно.

Тоон функцууд

Transact-SQL тоон функцууд нь тоон утгыг өөрчлөх математик функцууд юм. Тоон функцуудын жагсаалт ба тэдгээрийн товч тайлбарыг доорх хүснэгтэд үзүүлэв.

Transact-SQL тоон функцууд
Чиг үүрэг Синтакс Тодорхойлолт Хэрэглээний жишээ
ABS ABS(n)

n тоон илэрхийллийн үнэмлэхүй утгыг буцаана (өөрөөр хэлбэл сөрөг утгыг эерэг гэж буцаана).

SELECT ABS(-5.320) -- 5.320-г буцаана SELECT ABS(8.90) -- 8.90-ыг буцаана

ACOS, ASIN, Atan, ATN2 ACOS(n), ASIN(n), ATAN(n), ATN2(n, m)

Урвуу косинус, урвуу синус, n-ийн утгын нумын тангенсыг тооцоолох урвуу тригонометрийн функцууд (ATN2-ийн хувьд n/m-ийн нумын тангенсыг тооцоолсон). Оролтын утга n, m ба үр дүн нь FLOAT өгөгдлийн төрөл юм.

COS, SIN, ТАН, COT COS(n), SIN(n), TAN(n), COT(n)

n утгын косинус, синус, тангенс, котангенсыг тооцоолох тригонометрийн функцууд. Үр дүн нь FLOAT төрлийн өгөгдлийн төрөл юм.

ГРЕД, РАДИАН ЗЭРЭГ(n), РАДИАН(n)

DEGREES функц нь радианыг градус руу, РАДИАН-ыг эсрэгээр тус тус хөрвүүлдэг.

SELECT DEGREES(PI() / 4) -- 45 SELECT COS(RADIANS(60.0)) буцаана -- 0.5 буцаана

ТААЗ ТААЗ(n)

Тоог том бүхэл тоо хүртэл дугуйруулна.

SELECT CEILING(-5.320) -- Буцах -5 SELECT CEILING(8.90) -- 9-г буцаана

ДУГААР ROUND(n, p, [t])

n-ийн утгыг хамгийн ойрын p хүртэл дугуйруулна. p нь эерэг тоо бол n-ийн бутархай хэсгийг, сөрөг бол бүхэл хэсгийг дугуйруулна. Нэмэлт t аргументыг ашиглах үед n тоог бөөрөнхийлдөггүй, харин тайрдаг (өөрөөр хэлбэл, доош дугуйрсан).

SELECT ROUND(5.3208, 3) -- 5.3210-ыг буцаана.

ШАЛТ ШАЛ(n)

Хамгийн ойрын бүхэл тоо хүртэл дугуйруулна.

SELECT FLOOR(5.88) -- 5-ыг буцаана

EXP EXP(n)

e n -ийн утгыг тооцоолно.

LOG, LOG10 LOG(n), LOG10(n)

LOG(n) - n тооны натурал логарифмийг (өөрөөр хэлбэл суурь e) тооцоолно, LOG10(n) - n тооны аравтын бутархай (суурь 10) логарифмыг тооцоолно.

PI PI()

π (3.1415) утгыг буцаана.

ХҮЧ POWER(x, y)

x y утгыг тооцоолно.

РАНД RAND()

0-ээс 1-ийн хооронд дурын FLOAT тоог буцаана.

ROWCOUNT_BIG ROWCOUNT_BIG()

Системийн гүйцэтгэсэн сүүлийн Transact-SQL хэллэгээр боловсруулсан хүснэгтийн мөрүүдийн тоог буцаана. Буцах утга нь BIGINT төрлийн байна.

ТЭМДЭГЛЭХ ТЭМДЭГ(n)

n утгын тэмдгийг тоогоор буцаана: эерэг бол +1, сөрөг бол -1.

SQRT, дөрвөлжин SQRT(n), SQUARE(n)

SQRT(n) - n тооны квадрат язгуурыг тооцоолно, SQUARE(n) - n аргументын квадратыг буцаана.

Огнооны функцууд

Огноо функцууд нь илэрхийллийн огноо, цагийн харгалзах хэсгүүдийг үнэлэх эсвэл хугацааны интервалын утгыг буцаана. Transact-SQL-ийн дэмждэг огнооны функцууд болон тэдгээрийн товч тайлбарыг доорх хүснэгтэд жагсаав.

Transact-SQL огнооны функцууд
Чиг үүрэг Синтакс Тодорхойлолт Хэрэглээний жишээ
GETDATE GETDATE()

Одоогийн системийн огноо, цагийг буцаана.

GETDATE() СОНГОХ

DATE ХЭСЭГ DATEPART(зүйл, огноо)

Зүйлийн параметрт заасан огнооны хэсгийг бүхэл тоогоор буцаана.

1-г буцаана (1-р сар) SELECT DATEPART(сар, "01/01/2012") -- 4-ийг буцаана (Лхагва) SELECT DATEPART(ажлын өдөр, "01/02/2012")

DATENAME DATENAME (зүйл, огноо)

Зүйлийн параметрт заасан огнооны хэсгийг тэмдэгтийн мөр болгон буцаана.

1-р сарын SELECT DATENAME-г буцаана(сар, "01/01/2012") -- Лхагва гарагийг SELECT DATENAME (ажлын өдөр, "2012/01/02") буцаана

DATEDIFF DATEDIFF (зүйл, dat1, dat2)

dat1 болон dat2 огнооны хоёр хэсгийн зөрүүг тооцоолж, зүйлийн аргументад заасан нэгжээр бүхэл үр дүнг буцаана.

19-г буцаана (огнооны хооронд 19 жил) SELECT DATEDIFF(жил, "01/01/1990", "01/01/2010") -- 7305-г буцаана (огнооны хооронд 7305 хоног) SELECT DATEDIFF(өдөр, "01/01/1990" ", "01/01/2010") .2010")

НЭМЭГДСЭН огноо DATEADD (зүйл, n, огноо)

Зүйлийн аргументад заасан нэгжийн n-р тоог заасан огноонд нэмнэ. (n аргументийн утга сөрөг байж болно.)

Одоогийн огноонд 3 хоног нэмнэ үү SELECT DATEADD(өдөр, 3, GETDATE())

Мөрний функцууд

Мөр функцүүд нь ихэвчлэн тэмдэгтийн өгөгдлийн төрөлтэй баганын утгыг өөрчилдөг. Transact-SQL-ийн дэмждэг мөрийн функцууд ба тэдгээрийн товч тайлбарыг доорх хүснэгтэд жагсаав.

Transact-SQL мөр функцууд
Чиг үүрэг Синтакс Тодорхойлолт Хэрэглээний жишээ
ASCII, ЮНИКОД ASCII (тэмдэгт), UNICODE (тэмдэгт)

Заасан тэмдэгтийг харгалзах ASCII бүхэл тоо руу хөрвүүлнэ.

SELECT ASCII("W") -- 87 SELECT UNICODE("W") -- 1102

Чар, НЧАР CHAR(int), NCHAR(int)

ASCII кодыг (эсвэл NCHAR бол Юникод) харгалзах тэмдэгт рүү хөрвүүлнэ.

SELECT CHAR(87) -- "W" SELECT NCHAR(1102) -- "w"

CHARINDEX CHARINDEX (str1, str2)

str2 мөр дэх str1 дэд мөрийн эхлэлийн байрлалыг буцаана. Хэрэв str2 мөрөнд str1 дэд мөр байхгүй бол 0 утгыг буцаана.

5 SELECT CHARINDEX ("морф", "полиморфизм") буцаана.

ЯЛГА ЯЛГА(str1, str2)

str1 ба str2 хоёр мөрийн SOUNDEX утгуудын зөрүү болох 0-ээс 4 хүртэлх бүхэл тоог буцаана. SOUNDEX арга нь мөрний дууг тодорхойлох тоог буцаана. Энэ аргын тусламжтайгаар ижил төстэй дуугаралттай утсыг тодорхойлж болно. Зөвхөн ASCII тэмдэгтүүдэд л ажиллана.

2 SELECT DIFFERENCE-г буцаана ("үсгийн алдаа", "хэлэх")

ЗҮҮН БАРУУН LEFT(str, урт), RIGHT(str, урт)

LEFT-ийн уртын параметрээр өгөгдсөн str мөрийн эхний тэмдэгтүүдийн тоог, RIGHT функцийн str-ийн сүүлчийн уртын тэмдэгтүүдийн тоог буцаана.

DECLARE @str nvarchar(30) = "Sync"; -- "Sync"-г буцаах SELECT LEFT(@str, 4) -- "zation"-г буцаах СОНГОХ БАРУУН(@str, 5)

ЛЕН LEN(str)

Аргументад өгөгдсөн мөрийн тэмдэгтүүдийн тоог (байтын тоо биш) буцаана, үүнд арын зайг оруулна.

ДООД, ДЭЭД LOWER(str), UPPER(str)

LOWER функц нь str1-ийн бүх том үсгийг жижиг үсэг рүү хөрвүүлдэг. Мөрт орсон жижиг үсэг болон бусад тэмдэгтүүд нөлөөлөхгүй. UPPER функц нь str мөрийн бүх жижиг үсгийг том үсэг рүү хөрвүүлдэг.

DECLARE @str nvarchar(30) = "Sync"; -- "SYNC"-г буцаах SELECT UPPER(@str) -- "Sync"-г буцаах SELECT LOWER(@str)

LTRIM, RTRIM LTRIM(str), RTRIM(str)

LTRIM функц нь str мөрийн тэргүүлэгч зайг арилгадаг бол RTRIM нь мөрийн төгсгөлд байгаа зайг арилгадаг.

QUOTENAME QUOTENAME(char_string)

Оролтын мөрийг хүчинтэй тусгаарлагдсан танигч болгон хөрвүүлэхийн тулд тусгаарлагдсан Юникод мөрийг буцаана.

DECLARE @str nvarchar(30) = "Sync"; -- "[Sync]" SELECT QUOTENAME(@str)-г буцаана

PATINDEX PATINDEX(%p%,илэрхийлэл)

Өгөгдсөн илэрхийлэл дэх p загварын анхны тохиолдлын эхлэлийн байрлалыг буцаана, хэрэв өгөгдсөн загвар олдохгүй бол тэгийг буцаана.

4 SELECT PATINDEX("%xro%", "Sync") буцаана.

СОЛИХ ОРУУЛАХ(str1, str2, str3)

str1 мөр дэх str2 дэд мөрийн бүх тохиолдлыг str3 дэд мөрөөр солино.

"Sync"-ыг буцаана SELECT REPLACE("Sync", "Sync", "Desyc")

ХАВТРААХ ХУВИРАХ(str, i)

str i мөрийг дахин давтана.

"aBaBaBaBaB" SELECT REPLICATE("aB", 5)-г буцаана

УРВАХ REVERSE(str)

str мөрийг урвуу дарааллаар хэвлэнэ.

"yaicazinorchnis" SELECT REVERSE("Sync")-г буцаана

SOUNDEX SOUNDEX (str)

Хоёр мөрийн ижил төстэй байдлыг тодорхойлоход ашигладаг дөрвөн тэмдэгттэй soundex кодыг буцаана. Зөвхөн ASCII тэмдэгтүүдэд л ажиллана.

ЗАЙ SPACE (урт)

Урт параметрээр заасан урттай зайн мөрийг буцаана. REPLICATE(" ", урттай) төстэй.

STR STR (f[, len[, d]])

Өгөгдсөн ф хөвөгч цэгийн илэрхийлэлийг мөр болгон хувиргах ба энд len нь аравтын бутархай, тэмдэг, орон зай, орон зай (үндсэн утга нь 10) зэрэг мөрийн урт, d нь буцаах бутархай цифрүүдийн тоо юм.

"3.14" SELECT STR-г буцаана (3.1415, 4, 2)

ЗҮЙЛ STUFF (str1, a, урт, str2)

a байрлалаас эхлэн str1 мөрийн уртын тэмдэгтүүдийг устгаж, str2 мөрийг оронд нь оруулна.

SELECT STUFF("Тэмдэглэлийн дэвтэр", 5, 0," in a ") -- Гарын авлага SELECT STUFF("Тэмдэглэлийн дэвтэр", 1, 4, "Гар") номонд тэмдэглэ.

SUBSTRING SUBSTRING (str1, a, урт)

Урт урттай дэд мөр болох a байрлалаас эхлэн str тэмдэгт мөрнөөс гаргаж авна.

Системийн функцууд

Transact-SQL системийн функцууд нь өгөгдлийн сангийн объектуудын талаар маш их мэдээлэл өгдөг. Ихэнх системийн функцууд нь үүсгэгдсэн үед мэдээллийн сангийн объект бүрд оноогдсон дотоод тоон танигч (ID) ашигладаг. Энэхүү танигчийн тусламжтайгаар систем нь өгөгдлийн сангийн объект бүрийг өвөрмөц байдлаар таних боломжтой.

Дараах хүснэгтэд системийн хамгийн чухал функцүүдийн заримыг товч тайлбарын хамт жагсаав.

Transact-SQL системийн функцууд
Чиг үүрэг Синтакс Тодорхойлолт Хэрэглээний жишээ
cast CAST (w AS төрөл [(урт)]

w илэрхийллийг заасан өгөгдлийн төрөл (боломжтой бол) болгон хувиргана. w аргумент нь ямар ч хүчинтэй илэрхийлэл байж болно.

3 SELECT CAST (3.1258 AS INT) буцаана

НЭГДЭЛ COALESCE (a1, a2)

a1, a2, ... илэрхийллийн жагсаалтын эхний илэрхийллийн утгыг буцаана.

COL_LENGTH COL_LENGTH (объект, колон)

Өгөгдлийн сангийн объектын (хүснэгт эсвэл харагдац) col баганын уртыг буцаана obj.

4 SELECT COL_LENGTH буцаана ("Ажилтан", "Id")

ХӨРВҮҮЛЭХ ХӨРВҮҮЛЭХ (төрөл[(урт)], w)

CAST функцтэй тэнцэх боловч аргументуудыг өөрөөр зааж өгсөн болно. Ямар ч төрлийн өгөгдөлд ашиглах боломжтой.

CURRENT_TIMESTAMP CURRENT_TIMESTAMP

Одоогийн огноо, цагийг буцаана.

CURRENT_USER CURRENT_USER

Одоогийн хэрэглэгчийн нэрийг буцаана.

DATAENGTH DATAENGTH (z)

z илэрхийлэлд байгаа байтуудын тоог буцаана.

Энэ асуулга нь ажилтнаас SELECT DATALENGTH(FirstName) талбар бүрийн уртыг буцаана.

ГЕТАНСИНУЛЛ GETANSINULL("dbname")

Хэрэв dbname мэдээллийн сан дахь null утгыг ашиглах нь ANSI SQL стандарттай нийцэж байвал 1-ийг буцаана.

ISNULL ISNULL (илэрхийлэл, утга)

NULL биш бол expr-ийн утгыг буцаана; эс бөгөөс утгыг буцаана.

ISNUMERIC ISNUMERIC (хэлэлцэх)

expr хүчинтэй тоон төрөлтэй эсэхийг тодорхойлно.

ШИНЭ ID ШИНЭИД()

UNIQUEIDENTIFIER өгөгдлийн төрлийн утгыг хадгалахад ашигладаг 16 байт хоёртын стрингээс бүрдэх өвөрмөц ID-г үүсгэдэг.

NEWSEQUENTIALID NEWSEQUENTIALID()

Заасан компьютер дээр энэ функцээр өмнө нь үүсгэсэн бусад GUID-ээс илүү GUID-г үүсгэнэ. (Энэ функцийг зөвхөн баганын өгөгдмөл утга болгон ашиглаж болно.)

NULLIF NULLIF(илэрхийлэл1,илэрхийлэл2)

expr1 болон expr2-ын утга ижил байвал null утгыг буцаана.

Асуулга нь -- Тоо = "p1" SELECT NULLIF(Тоо, "p1") төслийн хувьд NULL утгыг буцаана.

SERVERPROPERTY SERVERPROPERTY (өмчийн нэр)

Өгөгдлийн сангийн серверийн шинж чанаруудын талаарх мэдээллийг буцаана.

SYSTEM_USER SYSTEM_USER

Одоогийн хэрэглэгчийн ID-г буцаана.

USER_ID USER_ID()

Хэрэглэгчийн ID хэрэглэгчийн нэрийг буцаана. Хэрэв хэрэглэгчийг заагаагүй бол одоогийн хэрэглэгчийн ID-г буцаана.

USER_NAME USER_NAME()

Заасан ID-тай хэрэглэгчийн нэрийг буцаана. Хэрэв ID-г заагаагүй бол одоогийн хэрэглэгчийн нэрийг буцаана.

Мета өгөгдлийн функцууд

Үндсэндээ мета өгөгдлийн функцууд нь заасан мэдээллийн сан болон өгөгдлийн сангийн объектуудын талаарх мэдээллийг буцаадаг. Доорх хүснэгтэд мета өгөгдлийн хамгийн чухал функцүүдийн заримыг товч тайлбарын хамт жагсаав.

Transact-SQL мета өгөгдлийн функцууд
Чиг үүрэг Синтакс Тодорхойлолт Хэрэглээний жишээ
COL_NAME COL_NAME (tab_id, col_id)

tab_id id бүхий хүснэгтийн заасан col_id-тэй баганын нэрийг буцаана.

"Овог" баганын нэрийг буцаана SELECT COL_NAME (OBJECT_ID("Ажилтан"), 3)

БАГАНЫН ӨМЧ COLUMNPROPERTY (id, col, өмч)

Заасан баганын талаарх мэдээллийг буцаана.

PRECISION шинж чанарын утгыг буцаана -- Ажилтны хүснэгтийн SELECT COLUMNPROPERTY (OBJECT_ID("Ажилтан"), "Id", "нарийвчлал") Id баганын хувьд.

Өгөгдлийн сангийн өмч ӨГӨГДӨЛИЙН СУУРИЙН ӨГӨГДӨЛ (мэдээллийн сан, өмч)

Өгөгдлийн сангийн өгөгдлийн сангийн шинж чанарын утгыг буцаана.

IsNullConcat шинж чанарын утгыг буцаана -- SampleDb мэдээллийн сангийн SELECT DATABASEPROPERTY ("SampleDb", "IsNullConcat")

DB_ID db_id()

Өгөгдлийн сангийн танигч db_name буцаана. Хэрэв мэдээллийн сангийн нэрийг заагаагүй бол одоогийн мэдээллийн сангийн ID-г буцаана.

DB_NAME DB_NAME()

db_id ID-тай мэдээллийн сангийн нэрийг буцаана. Хэрэв танигчийг заагаагүй бол одоогийн мэдээллийн сангийн нэрийг буцаана.

INDEX_COL INDEX_COL (хүснэгт, i, үгүй)

Хүснэгтийн индексжүүлсэн баганын нэрийг буцаана. Багана нь ID i индекс ба тухайн индекс дэх баганын байрлалын дугаараар тодорхойлогдоно.

INDEXPROPERTY INDEXPROPERTY (obj_id, индексийн_нэр, өмч)

Заасан хүснэгтийн ID, индекс эсвэл статистикийн нэр, өмчийн нэрийн нэрлэсэн индекс эсвэл статистик шинж чанарыг буцаана.

OBJECT_NAME OBJECT_NAME (obj_id)

obj_id-тай өгөгдлийн сангийн объектын нэрийг буцаана.

OBJECT_NAME СОНГОХ(245575913);

OBJECT_ID OBJECT_ID (объект_нэр)

Өгөгдлийн сангийн obj_name объектын ID-г буцаана.

Буцаах 245575913 - Ажилтны хүснэгтийн ID SELECT OBJECT_ID("Ажилтан")

ОБЪЕКТ ӨМЧ OBJECTPROPERTY (obj_id, өмч)

Одоогийн мэдээллийн сангаас объектуудын талаарх мэдээллийг буцаана.

SQL хэлний үндсэн функцуудыг доор өгөв.

Өгөгдлийн тодорхойлолт.Энэхүү SQL функц нь дэмжигдсэн өгөгдлийн бүтэц, харилцааны (хүснэгт) зохион байгуулалтын тайлбар юм. Үүнийг хэрэгжүүлэхийн тулд мэдээллийн сан үүсгэх, хүснэгт үүсгэх, өгөгдөлд хандах операторууд зориулагдсан болно.

Өгөгдлийн сан үүсгэх. CREATE DATABASE хэллэгийг шинэ мэдээллийн сан үүсгэхэд ашигладаг. Мэдэгдэлийн бүтэц нь үүсгэгдэх мэдээллийн сангийн нэрийг зааж өгдөг.

Хүснэгтүүдийг үүсгэх.Үндсэн хүснэгтийг CREATE TABLE хэллэгийг ашиглан үүсгэнэ. Энэ оператор нь талбарын нэр, тэдгээрийн өгөгдлийн төрөл, уртыг (зарим өгөгдлийн төрлүүдийн хувьд) зааж өгдөг. SQL нь дараах өгөгдлийн төрлүүдийг ашигладаг:

INTEGER нь бүхэл тоо;

CHAR - тэмдэгтийн утга;

VARCHAR - тэмдэгтийн утга, зөвхөн хоосон биш тэмдэгтүүд хадгалагдана;

DECIMAL - аравтын тоо;

FLOAT - хөвөгч цэгийн дугаар;

DOUBLE PRECISION - давхар нарийвчлалтай хөвөх цэг;

DATETIME - огноо, цаг;

BOOL бол логикийн утга юм.

Хүснэгт үүсгэх мэдэгдэл нь баганын утгууд болон хүснэгт дээрх хязгаарлалтуудыг тодорхойлдог. Боломжит хязгаарлалтыг хүснэгтэд үзүүлэв. 4.8

Хүснэгт 4.8 Тодорхойлогдсон өгөгдлийн хязгаарлалт

Харилцааны өгөгдлийн загварын хувьд гадаад түлхүүрийг (FOREIGNKEY) зааж өгөх нь чухал юм. Гадаад түлхүүрийг зарлахдаа та багананд NOT NULL гэх мэт зохих хязгаарлалтуудыг тавих ёстой.

SQL мэдэгдэлд CHECK нь тодорхой баганын хүчинтэй утгуудын багцыг хязгаарлах гэх мэт өгөгдлийн бүрэн бүтэн байдлыг хангадаг семантик хязгаарлалтыг илэрхийлдэг.

Та хүснэгт үүсгэх мэдэгдлийг нэг хүснэгтэд нэгээс олон удаа ашиглах боломжгүй. Хэрэв үүнийг үүсгэсний дараа түүний тодорхойлолтод алдаа гарсан бол ALTER TABLE мэдэгдлийг ашиглан өөрчлөлт хийж болно. Энэ мэдэгдэл нь одоо байгаа хүснэгтийн бүтцийг өөрчлөх зорилготой: та одоо байгаа хүснэгтийг устгах эсвэл талбар нэмэх боломжтой.

Өгөгдлийн манипуляци. SQL нь хэрэглэгч эсвэл програмд ​​шинэ өгөгдөл оруулах, одоо байгаа өгөгдлийг устгах, өөрчлөх замаар өгөгдлийн сангийн агуулгыг өөрчлөх боломжийг олгодог.

Шинэ өгөгдөл оруулж байнань мэдээллийн санд мөр нэмэх процедур бөгөөд INSERT хэллэгийг ашиглан гүйцэтгэнэ.

Өгөгдлийн өөрчлөлтХүснэгтийн нэг буюу хэд хэдэн баганын утгын өөрчлөлтийг багтаасан бөгөөд UPDATE мэдэгдлийг ашиглан гүйцэтгэнэ. Жишээ:

SET дүн=дүгнэлт+1000.00

WHERE нийлбэр>0

Мөрүүдийг устгаж байнахүснэгтээс DELETE хэллэгийг ашиглан гүйцэтгэнэ. Операторын синтакс нь:

Хүснэгтээс

WHERE заалт нь сонголттой боловч хэрэв энэ нь ороогүй бол хүснэгтийн бүх бичлэг устах болно. Ямар бүртгэл устахыг урьдчилан шалгахын тулд DELETE хэллэгтэй ижил синтакс бүхий SELECT хэллэгийг ашиглах нь ашигтай.

Өгөгдлийн бүрэн бүтэн байдлыг хангах. SQL хэл нь өгөгдлийн сангийн бүх өөрчлөлтөд сэтгэл ханамжийг нь шалгах нэлээн төвөгтэй бүрэн бүтэн байдлын хязгаарлалтыг тодорхойлох боломжийг олгодог. Гүйлгээний үр дүнд хяналт тавих, гарсан алдааг зохицуулах, хэд хэдэн програм эсвэл хэрэглэгчийн мэдээллийн сантай зэрэгцэн ажиллахыг COMMIT мэдэгдэл (одоогийн гүйлгээ амжилттай дуусгавар болж, шинэ гүйлгээний эхлэлийг засдаг) болон ROLLBACK ( буцаах хэрэгцээ - гүйлгээний эхэнд мэдээллийн сангийн төлөвийг автоматаар сэргээх)

Өгөгдлийн түүвэрлэлт- Өгөгдлийн сангийн хамгийн чухал функцүүдийн нэг нь SELECT мэдэгдэлтэй тохирч байна. Операторыг ашиглах жишээг өмнөх хэсэгт авч үзсэн.

SQL-д та асуулгын (дэд асуулга) үүрлэсэн дарааллыг үүсгэж болно. Дэд асуулга ашиглан хамгийн сайн хэрэгждэг тодорхой төрлийн асуулга байдаг. Эдгээр асуулгад оршин байгаа эсэхийг шалгах гэж нэрлэгддэг. Та "долоон" оноогүй оюутнуудын тухай мэдээлэл авахыг хүсч байна гэж бодъё. Хэрэв хоосон багц буцаж ирвэл энэ нь зөвхөн нэг л зүйлийг илтгэнэ - оюутан бүр дор хаяж нэг ийм үнэлгээтэй байдаг.

Хүснэгтүүдийг холбох. SQL хэллэгүүд нь нэгээс олон хүснэгтээс өгөгдөл авах боломжийг олгодог. Үүнийг хийх нэг арга бол хүснэгтүүдийг нэг нийтлэг талбарт холбох явдал юм.

SELECT мэдэгдэл нь тодорхой баганын (талбар) утгуудын давхцах хязгаарлалтыг агуулсан байх ёстой. Дараа нь зөвхөн заасан баганын утгууд таарч байгаа мөрүүдийг холбогдох хүснэгтүүдээс татаж авна. Баганын нэрийг зөвхөн хүснэгтийн нэрийн хамт заана; Үгүй бол оператор хоёрдмол утгатай болно.

Хүснэгтийн бусад төрлийн холболтыг ашиглаж болно: INTER JOIN оператор (дотоод нэгдэл) нь холбогдох талбар дахь утгуудтай таарч байгаа бичлэгийн багцад байгааг харуулж байна. Гадаад холболтууд (OUTER JOIN) нь асуулгын үр дүнд нэг хүснэгтийн бүх мөрийг, нөгөө хүснэгтийн харгалзах мөрийг оруулах боломжийг олгоно.

Хандалтын хяналт. SQL нь өгөгдлийн сангийн боловсруулалтыг янз бүрийн хэрэглээний программуудаар синхрончлох, өгөгдлийг зөвшөөрөлгүй нэвтрэхээс хамгаалах боломжийг олгодог.

Олон хэрэглэгчийн орчинд өгөгдөлд хандах хандалтыг GRANT болон REVOKE мэдэгдлүүдээр зохицуулдаг. Мэдэгдэл бүрт та хэрэглэгч, зөвшөөрлийг тохируулсан объект (хүснэгт, харагдац), зөвшөөрлийг өөрөө зааж өгөх ёстой. Жишээлбэл, GRANT мэдэгдэл нь X хэрэглэгчдэд PRODUCT хүснэгтээс өгөгдөл татах боломжийг олгодог:

Х-Д БҮТЭЭГДЭХҮҮНИЙГ СОНГОНГО

REVOKE мэдэгдэл нь өмнө нь олгосон бүх зөвшөөрлийг хүчингүй болгодог.

Хэрэглээний программуудад SQL-г оруулах. Бодит программууд нь ихэвчлэн SQL код үүсгэдэг бусад хэл дээр бичигдсэн байдаг бөгөөд үүнийг DBMS-д ASCII текст хэлбэрээр дамжуулдаг.

SQL бүтээгдэхүүний IBM стандарт нь суулгагдсан SQL-ийн хэрэглээг тодорхойлдог. Хэрэглээний програм бичихдээ түүний текст нь үндсэн програмчлалын хэлний командууд (жишээлбэл, C, Pascal, Cobol, Fortran, Assembler) болон тусгай угтвар бүхий SQL командуудын холимог юм. ExecSQL. SQL хэллэгүүдийн бүтцийг SQL-ийн бүтэц дэх хост хэлний хувьсагчдыг багтаахын тулд өргөтгөсөн.

SQL процессор нь үндсэн програмчлалын хэлний хөрвүүлэгчийн шаардлагын дагуу програмын хэлбэрийг өөрчилдөг. Хөрвүүлэгчийн үүрэг бол программыг эх програмчлалын хэлнээс машины хэлтэй ойролцоо хэл рүү хөрвүүлэх (орчуулах) юм. Эмхэтгэл хийсний дараа хэрэглэгдэх програм (хэрэглээ) нь бие даасан модуль юм.

SQL аялгуу

Орчин үеийн харилцааны DBMS-д SQL хэлний аялгууг өгөгдлийг дүрслэх, удирдахад ашигладаг. Өгөгдлийн сан үүсгэх, дүрслэх боломжийг олгодог SQL хэлний дэд багцыг DDL (Data Definition Language) гэж нэрлэдэг.

SQL-г анх SEQUEL (Structured English Query Language), дараа нь SEQUEL/2, дараа нь зүгээр л SQL гэж нэрлэдэг байсан. Өнөөдөр SQL нь харилцааны өгөгдлийн сангийн удирдлагын системийн де факто стандарт юм.

Анхны хэлний стандарт нь 1989 онд гарч ирсэн - SQL-89 бөгөөд бараг бүх арилжааны харилцааны DBMS дэмждэг. Энэ нь ерөнхий шинж чанартай байсан бөгөөд өргөн хүрээтэй тайлбар хийх боломжийг олгосон. SQL-89-ийн давуу тал нь өгөгдөл сонгох, удирдах операторуудын синтакс, семантикийг стандартчилах, мөн мэдээллийн сангийн бүрэн бүтэн байдлыг хязгаарлах арга хэрэгслийг засах явдал гэж үзэж болно. Гэсэн хэдий ч өгөгдлийн сангийн схемийг удирдах гэх мэт чухал хэсэг дутуу байсан. SQL-89 стандартын бүрэн бус байдал нь 1992 онд гарч ирэхэд хүргэсэн SQL хэлний дараагийн хувилбар.

SQL2 (эсвэл SQL-92) нь танд хэрэгтэй бараг бүх зүйлийг хамардаг: өгөгдлийн сангийн схем боловсруулах, гүйлгээ ба сессийн удирдлага, клиент-серверийн архитектур эсвэл програм хөгжүүлэх хэрэгслүүд.

Хэлний хөгжлийн дараагийн алхам бол SQL 3 хувилбар юм.Хэлний энэ хувилбар нь триггер механизм, дурын өгөгдлийн төрлийг тодорхойлох, объектын өргөтгөлөөр нэмэгддэг.

Одоогоор хэлний анхан, дунд, бүрэн гэсэн гурван түвшин байдаг. Өгөгдлийн сангийн олон үйлдвэрлэгчид дор хаяж холбогдох ANSI стандартын эхний түвшинд суурилсан, тодорхой DBMS-д зориулсан зарим өргөтгөлүүдийг агуулсан өөрсдийн SQL-ийн хэрэгжилтийг ашигладаг. Хүснэгтэнд. 4.9-д SQL аялгууны жишээг харуулав.

Хүснэгт 4.9 SQL аялгуу

DBMS Асуулгын хэл
DBMS систем R SQL
DB2 SQL
Хандалт SQL
SYBASE SQL хаана ч байсан watcom-sql
SYBASE SQL сервер Transact_SQL
MySQL SQL
Oracle PL/SQL

Объект хандалтат мэдээллийн сан нь OQL (Object Query Language) хэлийг ашигладаг. OQL хэл нь SQL2 SELECT команд дээр суурилсан бөгөөд объект эсвэл объектын цуглуулга руу асуулга илгээх, мөн нэг асуулга дотор аргуудыг дуудах чадварыг нэмсэн.

Ашигласан олон SQL аялгуунуудын нийцтэй байдал нь DBMS-ийн нийцтэй байдлыг тодорхойлдог. Тиймээс SYBASE SQL Anywhere DBMS нь энэ ангиллын DBMS-д SYBASE SQL Server DBMS-тэй аль болох нийцдэг. Энэхүү нийцтэй байдлын нэг тал нь SYBASE SQL-д SQL хэлний аялгууны хаана ч байсан дэмжлэг юм. Transact SQL. Энэ аялгууг SYBASE SQL Server-д ашигладаг бөгөөд SYBASE SQL-д өөрийн SQL хэлний аялгууны хамт хаана ч ашиглаж болно. watcom-sql.

тестийн асуултууд

1. DBMS-ийг хэрхэн ангилах вэ?

2. Өгөгдлийн сангийн ямар загварууд байдаг вэ?

3. Инфологийн загварын үндсэн элементүүд юу вэ?

4. Байгууллагуудын хооронд ямар төрлийн харилцаа байдаг вэ?

5. ER диаграм гэж юу вэ, тэдгээрийг юунд ашигладаг вэ?

6. Хүснэгтийг хэвийн болгох журам нь танд юу хийх боломжийг олгодог вэ?

7. DBMS-ийн хэл, програм хангамжийн хэрэгслүүд юу вэ?

8. MS Access нь ямар төрлийн DBMS вэ?

9. MS Access DBMS-ийн үндсэн объектууд юу вэ?

10. Үндсэн SQL хэллэгийг юунд ашигладаг вэ?

SQL хэлний стандарт нь 1992 онд батлагдсан бөгөөд өнөөг хүртэл хэрэглэгдэж байна. Тэр бол олон хүмүүсийн стандарт болсон. Мэдээжийн хэрэг, зарим үйлдвэрлэгчид стандартын талаархи өөрийн тайлбарыг ашигладаг. Гэхдээ ямар ч системд үндсэн бүрэлдэхүүн хэсгүүд байдаг - SQL мэдэгдлүүд.

Оршил

SQL мэдэгдлийн тусламжтайгаар утгууд, хүснэгтүүдийг удирдаж, цаашдын дүн шинжилгээ хийх, харуулах зорилгоор хүлээн авдаг. Эдгээр нь өгөгдөлтэй юу хийхээ систем ойлгодог түлхүүр үгсийн багц юм.

SQL мэдэгдлийн хэд хэдэн ангилал тодорхойлогддог:

  • мэдээллийн сангийн объектуудын тодорхойлолт;
  • үнэ цэнийг удирдах;
  • хамгаалалт ба менежмент;
  • сессийн параметрүүд;
  • суурь мэдээлэл;
  • статик SQL;
  • динамик SQL.

Өгөгдлийг удирдахад зориулсан SQL хэллэгүүд

INSERT. Одоо байгаа хүснэгтэд мөр оруулах. Үүнийг ямар нэг нөхцөлөөр тодорхойлогддог нэг утгыг болон хэд хэдэн утгыг хоёуланг нь ашиглаж болно. Жишээлбэл:

хүснэгтийн нэр (баганын нэр 1, баганын нэр 2)

VALUES (утга 1, утга 2).

INSERT хэллэгийг олон утга дээр ашиглахын тулд синтакс нь:

хүснэгтийн нэр 1 (баганын нэр 1, баганын нэр 2)

SELECT баганын нэр 1, баганын нэр 2

2-р хүснэгтийн нэрээс

WHERE хүснэгтийн нэр 2. баганын нэр 1>2

Энэ асуулга нь 1-р баганад 2-оос их байгаа 2-р хүснэгтээс бүх өгөгдлийг сонгоод эхнийх нь оруулах болно.

ШИНЭЧЛЭХ. Нэрнээс нь харахад энэ SQL асуулгын мэдэгдэл нь тодорхой шинж чанарын дагуу байгаа хүснэгтэд байгаа өгөгдлийг шинэчилдэг.

UPDATE хүснэгтийн нэр 1

SET баганын нэр 2 = "Basil"

ХААНА хүснэгтийн нэр 1. баганын нэр 1 = 1

Энэхүү бүтээн байгуулалт нь эхний баганад 1-р тоотой тулгарсан бүх мөрийг Василий утгыг дүүргэх болно.

Хүснэгтээс авсан өгөгдөл. Та ямар ч нөхцөлийг зааж өгөх эсвэл бүх мөрийг устгаж болно.

DELETE FROM хүснэгтийн нэр

ХААНА хүснэгтийн нэр.баганын нэр 1 = 1

Дээрх асуулга нь эхний баганад нэг утгатай бүх өгөгдлийг мэдээллийн сангаас устгах болно. Эндээс та хүснэгтийг бүхэлд нь цэвэрлэж болно:

SELECT мэдэгдэл

SELECT-ийн гол зорилго нь тодорхой нөхцлийн дагуу өгөгдлийг сонгох явдал юм. Түүний ажлын үр дүн нь үргэлж сонгосон өгөгдөл бүхий шинэ хүснэгт юм. MS операторыг олон төрлийн асуулгад ашиглаж болно. Тиймээс, түүнтэй хамт та бусад холбогдох түлхүүр үгсийг авч үзэх боломжтой.

Тодорхой хүснэгтээс бүх өгөгдлийг сонгохын тулд "*" тэмдгийг ашиглана уу.

Хүснэгтийн нэр 1-ээс

Энэ асуулгын үр дүн нь 1-р хүснэгтийн яг хуулбар байх болно.

Энд 1-р баганад 2-оос дээш бүх утгыг 1-р хүснэгтээс авдаг WHERE нөхцлийн дагуу сонголт байна.

Хүснэгтийн нэр 1-ээс

ХААНА хүснэгтийн нэр 1. баганын нэр 1 > 2

Сонголтонд зөвхөн тодорхой багана шаардлагатайг зааж өгч болно.

SELECT хүснэгтийн нэр 1. баганын нэр 1

Хүснэгтийн нэр 1-ээс

Энэ асуулгын үр дүн нь 1-р баганаас авсан бүх мөрүүд байх болно. MS SQL хэллэгийг ашиглан та тодорхой утгыг сольж, тооцоолж, орлуулах замаар өөрийн хүснэгтийг үүсгэж болно.

хүснэгтийн нэр 1. баганын нэр 1

хүснэгтийн нэр 1. баганын нэр 2

хүснэгтийн нэр 1. баганын нэр 3

хүснэгтийн нэр 1. баганын нэр 2 * хүснэгтийн нэр 1. баганын нэр 3 AS SUMMA

Хүснэгтийн нэр 1-ээс

Энэхүү төвөгтэй мэт санагдах асуулга нь 1-р хүснэгтээс бүх утгыг татаж аваад дараа нь шинэ EQ болон SUMMA багана үүсгэдэг. Энэ нь эхний хэсэгт "+" тэмдэг, хоёрдугаарт 2, 3-р баганын өгөгдлийн үржвэрийг оруулна. Үр дүнг хүснэгт хэлбэрээр үзүүлснээр энэ нь хэрхэн ажилладагийг ойлгох болно.

SELECT мэдэгдлийг ашиглахдаа та өгөгдлийг зарим шинж чанарын дагуу нэн даруй ангилж болно. Үүний тулд ORDER BY гэдэг үгийг ашигладаг.

хүснэгтийн нэр 1. баганын нэр 1

хүснэгтийн нэр 1. баганын нэр 2

хүснэгтийн нэр 1. баганын нэр 3

Хүснэгтийн нэр 1-ээс

Баганын нэрээр ЗАХИАЛАХ 2

Үр дүнгийн хүснэгт дараах байдлаар харагдах болно.

Өөрөөр хэлбэл, бүх мөрүүдийг 2-р баганад байгаа утгууд өсөх дарааллаар байрлуулна.

Мөн олон хүснэгтээс өгөгдлийг авч болно. Тодорхой болгохын тулд та эхлээд мэдээллийн санд хоёр нь байгаа гэж төсөөлөх хэрэгтэй.

"Ажилчид" хүснэгт

Хүснэгт "Цалин"

Одоо та нийтлэг утгыг авахын тулд эдгээр хоёр хүснэгтийг ямар нэгэн байдлаар холбох хэрэгтэй. Үндсэн SQL хэллэгийг ашигласнаар та үүнийг дараах байдлаар хийж болно.

Ажилтны тоо

Ажилтнууд.Нэр

Цалин, хувь хэмжээ

Цалин. Хуримтлагдсан

Ажилчдаас, Цалин

ХААНА Ажилчид.Тоо = Цалин.Тоо

Энд тоогоор нэгтгэсэн хоёр өөр утгын хүснэгтээс сонголт байна. Үр дүн нь дараах өгөгдлийн багц болно.

SELECT-ийн талаар бага зэрэг дэлгэрэнгүй. Агрегат функцийг ашиглах

Үндсэн операторуудын аль нэг нь татах үед зарим тооцоолол хийж болно. Үүнийг хийхийн тулд тэрээр тодорхой функц, томъёог ашигладаг.

Жишээлбэл, "Ажилчид" хүснэгтээс бичлэгийн тоог авахын тулд та асуулга ашиглах хэрэгтэй:

COUNT (*) НИЙГЭЭР СОНГОХ

Ажилчдаас

Үр дүн нь нэг утга, нэг багана бүхий хүснэгт юм.

Та энэ асуулгыг ашиглаж, юу болохыг харж болно:

СУМ(Цалин. Хуримтлагдсан) НЭГДСЭН

MAX(Цалин. Хуримтлагдсан) AS MAX

MIN(Цалин. Хуримтлагдсан) AS MIN

AVG(Цалин. Хуримтлагдсан) SRED

Цалингаас

Эцсийн хүснэгт дараах байдлаар харагдах болно.

Ийм байдлаар та янз бүрийн функцүүдийн тооцоог шууд гүйцэтгэх замаар мэдээллийн сангаас хүссэн утгыг сонгох боломжтой.

Холбоо, огтлолцол, ялгаа

SQL дээр олон асуултуудыг нэгтгэх

Ажилчдыг СОНГОХ.Нэр

Ажилчдаас

ХААНА Ажилчид.Тоо = 1

Ажилчдыг СОНГОХ.Нэр

Ажилчдаас, Цалин

ХААНА Цалин.Тоо = 1

Ийм холболттой бол хүснэгтүүд нь нийцтэй байх ёстой гэдгийг санах нь зүйтэй. Энэ нь ижил тооны баганатай байх явдал юм.

SELECT мэдэгдлийн синтакс ба боловсруулах дараалал

Юуны өмнө SELECT нь өгөгдөл авах хэсгийг тодорхойлно. Үүнд FROM түлхүүр үгийг ашигладаг. Хэрэв яг юу сонгохыг заагаагүй бол.

Дараа нь SQL WHERE заалт байж болно. Түүний тусламжтайгаар SELECT нь хүснэгтийн бүх мөрийг гүйлгэж, өгөгдлийг нөхцөлтэй нийцэж байгаа эсэхийг шалгадаг.

Хэрэв асуулгад GROUP BY байгаа бол утгуудыг заасан параметрийн дагуу бүлэглэнэ.

Өгөгдлийг харьцуулах операторууд

Тэдгээрийн хэд хэдэн төрөл байдаг. SQL-д харьцуулах операторууд өөр өөр төрлийн утгыг шалгаж болно.

    "=". Таны таамаглаж байгаагаар хоёр илэрхийллийн тэгш байдлыг илэрхийлдэг. Жишээлбэл, энэ нь дээрх жишээнүүдэд аль хэдийн ашиглагдсан - ХААНА Цалин.Тоо = 1.

    ">". Илүү тэмдэг. Хэрэв илэрхийллийн зүүн талын утга их байвал логик ҮНЭНийг буцааж, нөхцөл хангагдсан гэж үзнэ.

    «<». Знак меньше. Обратный предыдущему оператор.

    тэмдгүүд "<=» и «>= ". Энэ нь энгийн операторуудаас ялгаатай бөгөөд хэрэв операндууд тэнцүү бол нөхцөл нь бас үнэн байх болно.

LIKE

Энэ түлхүүр үгийг "ижил төстэй" гэж орчуулж болно. SQL дэх LIKE операторыг ойролцоогоор ижил аргаар ашигладаг - энэ нь загварын дагуу хүсэлтийг гүйцэтгэдэг. Энэ нь ердийн илэрхийлэл ашиглан мэдээллийн сангаас өгөгдлийн сонголтыг өргөжүүлэх боломжийг олгодог.

Жишээ нь, дараах даалгаврыг тавьсан: аль хэдийн мэдэгдэж байсан "Ажилчид" баазаас нэр нь "Би" гэсэн төгсгөлтэй бүх хүмүүсийг авах. Дараа нь асуултыг дараах байдлаар бичиж болно.

Ажилчдаас

ХААНА Нэр LIKE `%i`

Энэ тохиолдолд хувийн тэмдэг нь маск, өөрөөр хэлбэл ямар ч тэмдэгт, тэдгээрийн тоог илэрхийлнэ. Мөн "i" үсгээр SQL сүүлчийн тэмдэгт нь яг ийм байх ёстойг тодорхойлох болно.

CASE

Энэхүү SQL Server мэдэгдэл нь олон сонголтын хэрэгжилт юм. Энэ нь олон програмчлалын хэл дээрх шилжүүлэгчийн бүтэцтэй төстэй юм. SQL дэх CASE мэдэгдэл нь олон нөхцөл дээр үйлдэл хийдэг.

Жишээлбэл, та цалингийн хүснэгтээс хамгийн их ба доод утгыг сонгох хэрэгтэй.

Дараа нь асуултыг дараах байдлаар бичиж болно.

Цалингаас

ХААНА МАКС (Хуримтлагдсан)-ыг СОНГОХ ГЭВЭЛ Дээд тал нь

MIN (хуримтлагдсан) СОНГОХ ХЭДЭЭ Дараа нь хамгийн бага

Энэ хүрээнд систем Хуримтлагдсан баганаас хамгийн их ба хамгийн бага утгыг хайдаг. Дараа нь END-ийг ашиглан "нийт" талбарыг үүсгэсэн бөгөөд үүнд нөхцөлийн үр дүнгээс хамааран "Хамгийн их" эсвэл "Хамгийн бага" гэж оруулна.

Дашрамд хэлэхэд SQL нь CASE - COALESCE-ийн илүү авсаархан хэлбэртэй.

Өгөгдлийн тодорхойлолтын операторууд

Энэ харагдац нь хүснэгтэд янз бүрийн өөрчлөлт хийх боломжийг олгодог - индекс үүсгэх, устгах, өөрчлөх, ажиллах.

Анхаарал татахуйц хамгийн эхний зүйл бол CREATE TABLE юм. Энэ нь хүснэгт үүсгэхээс өөр зүйл хийхгүй. Хэрэв та зүгээр л CREATE TABLE асуулга бичвэл юу ч болохгүй, учир нь та хэд хэдэн параметрүүдийг зааж өгөх шаардлагатай хэвээр байна.

Жишээлбэл, аль хэдийн танил болсон Ажилчдын хүснэгтийг үүсгэхийн тулд та дараах тушаалуудыг ашиглах хэрэгтэй.

ХҮСНЭГТ ҮЗҮҮЛЭХ Ажилтнууд

(Тооны дугаар(10) NULL БИШ

varchar(50) гэж нэрлэх нь NULL БИШ

Овог varchar(50) NULL БИШ)

Энэ асуулгад талбаруудын нэр, тэдгээрийн төрлийг хаалтанд нэн даруй тодорхойлно, мөн энэ нь NULL-тэй тэнцүү байж болох эсэхийг тодорхойлно.

ХҮСНЭГТИЙГ УНАХ

Заасан хүснэгтийг буулгаж, нэг энгийн ажлыг гүйцэтгэдэг. Нэмэлт IF EXISTS параметртэй. Хэрэв хайж буй хүснэгт байхгүй бол устгахад алдаа гаргана. Хэрэглээний жишээ:

ХЭРЭВ БАЙВАЛ ХҮСЭЭНИЙГ УНТАХ.

ИНДЕКС ҮЗҮҮЛЭХ

SQL нь мэдээллийн хандалтыг хурдасгах боломжийг олгодог индексийн системтэй. Ерөнхийдөө энэ нь тодорхой багана руу чиглэсэн холбоос юм. Та энгийн асуулга ашиглан индекс үүсгэж болно:

INDEX индекс_нэрийг ҮЗҮҮЛЭХ

ON хүснэгтийн нэр(баганын_нэр)

Энэ операторыг T-SQL, Oracle, PL SQL болон бусад олон орчуулгын технологид ашигладаг.

ХҮСНЭГТИЙГ ӨӨРЧЛӨХ

Олон тооны сонголттой маш ажиллагаатай оператор. Ерөнхийдөө энэ нь хүснэгтийн бүтэц, тодорхойлолт, байршлыг өөрчилдөг. Операторыг Oracle SQL, Postgres болон бусад олон програмуудад ашигладаг.

    НЭМЭХ. Хүснэгтэнд багана нэмнэ. Үүний синтакс нь: ALTER TABLE хүснэгтийн нэр ADD баганын_нэр хадгалагдсан өгөгдлийн төрөл. Хэрэв үүсгэсэн багана аль хэдийн байгаа бол алдааг дарах IF NOT EXISTS сонголттой байж болно;

    DROP. Багана устгана. Энэ нь мөн IF EXISTS түлхүүртэй бөгөөд үүнгүйгээр шаардлагатай багана байхгүй гэсэн алдаа гарах болно;

    ӨӨРЧЛӨЛТ. Талбайн нэрийг заасан нэр болгон өөрчлөхөд үйлчилнэ. Хэрэглээний жишээ: ALTER TABLE хүснэгтийн нэр Хуучин_нэрийг ӨӨРЧЛӨХ шинэ_нэр;

    ӨӨРЧЛӨХ. Энэ тушаал нь тодорхой баганын төрөл болон нэмэлт шинж чанаруудыг өөрчлөхөд тусална. Мөн үүнийг дараах байдлаар ашигладаг: ALTER TABLE table_name ӨӨРЧЛӨХ баганын_нэр өгөгдлийн_төрлийн шинж чанарууд;

ҮЗЭЛТ ҮЗҮҮЛЭХ

SQL-д үзэл бодол гэж байдаг. Товчхондоо энэ бол өгөгдөл бүхий виртуал хүснэгт юм. Энэ нь SQL SELECT мэдэгдлийг ашиглан сонгон шалгаруулалтын үр дүнд үүсдэг. Харалт нь мэдээллийн санд хандах хандалтыг хязгаарлах, тэдгээрийг нуух, жинхэнэ баганын нэрийг солих боломжтой.

Үүсгэх үйл явц нь энгийн хүсэлтээр явагдана:

CREATE VIEW харах нэрийг СОНГОХ БОЛОМЖТОЙ * хүснэгтийн нэр

Түүвэрлэлт нь бүхэл бүтэн мэдээллийн сан болон зарим нөхцөл байдлын дагуу явагдах боломжтой.

Функцуудын талаар бага зэрэг

SQL асуулга нь өгөгдөлтэй харьцах, түүнийг шууд хувиргах боломжийг олгодог янз бүрийн суулгасан функцуудыг ихэвчлэн ашигладаг. Эдгээр нь бүтэцлэгдсэн хэлний салшгүй хэсэг учраас тэдгээрийг авч үзэх нь зүйтэй юм.

    COUNT. Тодорхой хүснэгтийн бүртгэл эсвэл мөрийг тоолно. Параметрийн хувьд та баганын нэрийг зааж өгч болно, дараа нь өгөгдлийг түүнээс авна. ТООНЫ * ажилчдаас СОНГОХ;

    A.V.G. зөвхөн тоон өгөгдөл бүхий баганад хамаарна. Үүний үр дүн нь бүх утгын арифметик дундажийг тодорхойлох явдал юм;

    MIN ба MAX. Эдгээр функцийг энэ нийтлэлд аль хэдийн ашигласан болно. Тэд заасан баганаас хамгийн их ба хамгийн бага утгыг тодорхойлдог;

    СУМ. Энэ нь маш энгийн - функц нь баганын утгуудын нийлбэрийг тооцдог. Энэ нь зөвхөн тоон өгөгдлийн төрөлд ашиглагддаг. Асуулгад DISTINCT параметрийг нэмснээр зөвхөн өвөрмөц утгуудыг нэгтгэх болно;

    ДУГААР. Аравтын бутархай тоог дугуйлах функц. Синтакс нь баганын нэр болон аравтын орны тоог ашигладаг;

    лен. Баганын утгуудын уртыг тооцоолох энгийн функц. Үр дүн нь тэмдэгтүүдийн тоог харуулсан шинэ хүснэгт байх болно;

    ОДОО. Энэ түлхүүр үг нь одоогийн огноо, цагийг тооцоолоход хэрэглэгддэг.

Нэмэлт операторууд

SQL мэдэгдлийн жишээнүүдийн ихэнх нь жижиг даалгавруудыг гүйцэтгэдэг боловч сонголт эсвэл мэдээллийн сангийн үйлдлийг ихээхэн хялбаршуулдаг түлхүүр үгстэй байдаг.

    AS. Энэ нь үр дүнгийн хүснэгтэд заасан нэрийг өгөх замаар үр дүнг төсөөлөх шаардлагатай үед ашиглагддаг.

    ХООРОНД. Маш тохиромжтой сонголт хийх хэрэгсэл. Энэ нь өгөгдөл авах утгын хүрээг зааж өгдөг. Оролт нь тухайн мужийг ямар тоогоор ашиглахыг параметрийг хүлээн авдаг;.

    ҮГҮЙ. Оператор илэрхийллийн эсрэг заалтыг өгдөг.

    ТАСАХ. Өгөгдлийн сангийн заасан бүсээс өгөгдлийг устгана. Энэ нь ижил төстэй операторуудаас ялгаатай нь үүнийг ашигласны дараа өгөгдлийг сэргээх боломжгүй юм. SQL-ийн өөр өөр тайлбаруудад энэ түлхүүр үгийг хэрэгжүүлэх нь өөр байж болохыг анхаарч үзэх нь зүйтэй. Тиймээс TRUNCATE-г ашиглахаас өмнө тусламжийн мэдээллийг уншсан нь дээр.

    ХЯЗГААР. Харуулах мөрийн тоог тохируулна. Операторын онцлог нь үргэлж төгсгөлд байрладаг. Энэ нь нэг шаардлагатай параметр ба нэг сонголттой. Эхнийх нь сонгосон өгөгдөлтэй хэдэн мөр харуулахыг зааж өгнө. Хэрэв хоёр дахь нь ашиглагдаж байгаа бол оператор нь хэд хэдэн утгын хувьд ажилладаг.

    НЭГДСЭН. Олон асуултуудыг нэгтгэх маш тохиромжтой оператор. Энэ нийтлэл дэх жишээнүүдийн дунд тэр аль хэдийн уулзсан. Та хэд хэдэн хүснэгтээс хүссэн мөрүүдийг UNION-д нэгтгэснээр илүү тохиромжтой ашиглах боломжтой. Синтакс нь: SELECT баганын_нэрийг хүснэгтийн_нэрээс UNION СОНГОХ бусад_баганын_нэрийг бусад_хүснэгтийн_нэр. Үр дүн нь хосолсон асуулга бүхий пивот хүснэгт юм.

    АНХАН ТҮЛХҮҮР. "Үндсэн түлхүүр" гэж орчуулсан. Чухамдаа энэ нэр томъёог лавлах материалд ашигладаг. Энэ нь өвөрмөц мөр тодорхойлогч гэсэн үг юм. Дүрмээр бол хүснэгт үүсгэх үед үүнийг агуулсан талбарыг зааж өгдөг.

    ӨГӨГДМӨЛ. Өмнөх операторын нэгэн адил энэ нь асуулга үүсгэх явцад ашиглагддаг. Энэ нь үүсгэгдсэн талбарт бөглөх анхдагч утгыг тодорхойлдог.

    NULL. Анхлан суралцагчид төдийгүй зөвхөн програмистууд асуулга эмхэтгэхдээ NULL утгыг олж авах боломжийг мартдаг. Үүний үр дүнд код руу алдаа гарч ирдэг бөгөөд үүнийг дибаг хийх явцад илрүүлэхэд хэцүү байдаг. Тиймээс, хүснэгт үүсгэх, утгыг сонгох эсвэл дахин тооцоолохдоо асуулгын энэ хэсэгт NULL тохиолдох эсэхийг зогсоож, бодох хэрэгтэй.

    Санах ой. Энэ нийтлэлд тодорхой ажлуудыг гүйцэтгэж чадах хэд хэдэн функцийг харуулсан болно. Өгөгдлийн сантай ажиллах бүрхүүлийг боловсруулахдаа өгөгдлийн сангийн удирдлагын систем дээрх энгийн илэрхийллийн тооцооноос "давж" чадна. Зарим тохиолдолд энэ нь гүйцэтгэлийн мэдэгдэхүйц өсөлтийг өгдөг.

    Хязгаарлалт. Хэрэв та мянга мянган мөр бүхий мэдээллийн сангаас хоёрыг л авах шаардлагатай бол LIMIT эсвэл TOP гэх мэт операторуудыг ашиглах хэрэгтэй. Бүрхүүлийн хөгжүүлэлтийн хэлийг ашиглан өгөгдөл задлах шаардлагагүй.

    Нийлмэл. Хэд хэдэн хүснэгтээс өгөгдөл хүлээн авсны дараа олон програмистууд бүрхүүлийн санах ойг ашиглан тэдгээрийг нэгтгэж эхэлдэг. Гэхдээ яагаад? Эцсийн эцэст та энэ бүх зүйл байх нэг хүсэлт гаргаж болно. Та нэмэлт код бичиж системд нэмэлт санах ой нөөцлөх шаардлагагүй.

    Эрэмбэлэх. Хэрэв асуулгад, өөрөөр хэлбэл DBMS-ээр захиалга хийх боломжтой бол та үүнийг ашиглах хэрэгтэй. Энэ нь програм эсвэл үйлчилгээг ажиллуулахад нөөцийг ихээхэн хэмнэх болно.

    Маш олон хүсэлт. Хэрэв та олон бичлэгийг дараалан оруулах шаардлагатай бол оновчтой болгохын тулд нэг асуулгад өгөгдлийг багц оруулах талаар бодох хэрэгтэй. Энэ нь мөн бүхэл бүтэн системийн гүйцэтгэлийг нэмэгдүүлэх болно.

    Мэдээллийг сайтар бодож байрлуулах. Өгөгдлийн сангийн бүтцийг эмхэтгэхийн өмнө ийм тооны хүснэгт, талбар шаардлагатай эсэх талаар бодох хэрэгтэй. Магадгүй тэдгээрийг нэгтгэх эсвэл заримыг нь хаях арга байдаг. Ихэнхдээ програмистууд хэзээ ч хаана ч ашиглахгүй хэт их хэмжээний өгөгдлийг ашигладаг.

    Төрөл. Орон зай, нөөцийг хэмнэхийн тулд та ашигладаг өгөгдлийн төрлүүдэд мэдрэмжтэй байх хэрэгтэй. Хэрэв санах ойд "хүнд" багатай төрлийг ашиглах боломжтой бол үүнийг ашиглах шаардлагатай. Жишээлбэл, хэрэв тухайн талбарт тоон утга нь 255-аас хэтрэхгүй гэдгийг мэддэг бол 1 байт TINYINT байвал яагаад 4 байт INT ашиглах ёстой гэж.

Дүгнэлт

Эцэст нь хэлэхэд, SQL бүтэцтэй асуулгын хэлийг одоо бараг хаа сайгүй ашигладаг болохыг тэмдэглэх нь зүйтэй - сайтууд, вэб үйлчилгээнүүд, компьютерийн програмууд, гар утасны төхөөрөмжүүдэд зориулсан програмууд. Тиймээс SQL-ийн мэдлэг нь хөгжлийн бүх салбаруудад туслах болно.

Үүний зэрэгцээ, анхны хэлний стандартын өөрчлөлтүүд нь заримдаа бие биенээсээ ялгаатай байдаг. Жишээлбэл, PL SQL мэдэгдлүүд нь SQL Server-ээс өөр синтакстай байж болно. Тиймээс, та энэ технологийг боловсруулж эхлэхээсээ өмнө түүний гарын авлагыг унших хэрэгтэй.

Ирээдүйд үйл ажиллагаа, гүйцэтгэлийн хувьд SQL-ийг давж гарах аналогууд гарч ирэх магадлал багатай тул энэ талбар нь ямар ч програмистын хувьд нэлээд ирээдүйтэй газар юм.