WikiDer > SQL sintaksisi
The sintaksis ning SQL dasturlash tili tomonidan belgilanadi va saqlanadi ISO / IEC SC 32 qismi sifatida ISO / IEC 9075. Ushbu standart erkin mavjud emas. Standart mavjud bo'lishiga qaramay, SQL kodi har xil ma'lumotlar bazasi tizimlari o'rtasida sozlanmagan holda to'liq ko'chirilmaydi.
Til elementlari
SQL tili bir nechta til elementlariga bo'linadi, jumladan:
- Kalit so'zlar SQL tilida aniqlanadigan so'zlardir. Ular yoki zaxiralangan (masalan,
SELECT,COUNTvaYIL), yoki saqlanmagan (masalan,ASC,DOMENvaKALIT). Ro'yxati SQL uchun ajratilgan so'zlar. - Identifikatorlar jadvallar, ustunlar va sxemalar kabi ma'lumotlar bazasi ob'ektlaridagi nomlardir. Identifikator ajratilgan kalit so'zga teng bo'lmasligi mumkin, agar bu ajratilgan identifikator bo'lmasa. Ajratilgan identifikatorlar ikki tirnoq ichiga olingan identifikatorlarni anglatadi. Ular odatda SQL identifikatorlarida qo'llab-quvvatlanmaydigan belgilarni o'z ichiga olishi mumkin va ular ajratilgan so'z bilan bir xil bo'lishi mumkin, masalan.
YIL. - Maqolalar, bu bayonotlar va so'rovlarning tarkibiy qismlari. (Ba'zi hollarda, bu ixtiyoriy.)[1]
- Ifodalar, bu ham ishlab chiqarishi mumkin skalar qiymatlar yoki jadvallar iborat ustunlar va qatorlar ma'lumotlar
- Bashoratlar, bu SQL-ga baholanishi mumkin bo'lgan shartlarni belgilaydi uch qiymatli mantiq (3VL) (haqiqiy / noto'g'ri / noma'lum) yoki Mantiqiy haqiqat qadriyatlari va bayonotlar va so'rovlar ta'sirini cheklash yoki dastur oqimini o'zgartirish uchun ishlatiladi.
- So'rovlar, bu aniq mezonlarga asoslanib ma'lumotlarni oladigan. Bu muhim element SQL.
- Bayonotlar, bu sxemalar va ma'lumotlarga doimiy ta'sir ko'rsatishi yoki tranzaktsiyalarni, dastur oqimini, ulanishlarni, sessiyalarni yoki diagnostikani boshqarishi mumkin.
- SQL bayonotlariga quyidagilar kiradi vergul (";") bayonotni tugatuvchi. Har bir platformada talab qilinmasa ham, u SQL grammatikasining standart qismi sifatida belgilanadi.
- Bo'shliq ahamiyatsiz odatda SQL bayonotlari va so'rovlarida e'tiborga olinmaydi, bu SQL kodini o'qish uchun formatlashni osonlashtiradi.
Operatorlar
| Operator | Tavsif | Misol |
|---|---|---|
= | Ga teng | Muallif = "Alkott" |
<> | Teng emas (ko'p DBMS qabul qiladi != ga qo'shimcha sifatida <>) | Tushdi <> "Sotish" |
> | Undan kattaroq | Hire_Date > '2012-01-31' |
< | Dan kam | Bonus < 50000.00 |
>= | Katta yoki teng | Bog'liqlar >= 2 |
<= | Kam yoki teng | Tezlik <= 0.05 |
[YO'Q] O'RTASIDA [NIMMETRIKA] | Inklyuziv intervalgacha. SYMMETRIC, agar ikkinchisidan yuqori bo'lsa, oraliq chegaralarini teskari yo'naltiradi. | Narxi O'RTASIDA 100.00 VA 500.00 |
[YO'Q] Yoqdi [Qochish] | Belgilar naqshidan boshlanadi | To'liq ism Yoqdi "% |
| Belgilar naqshini o'z ichiga oladi | To'liq ism Yoqdi '% Will%' | |
[YO'Q] IN | Bir nechta mumkin bo'lgan qiymatlardan biriga teng | DeptCode IN (101, 103, 209) |
IS [YO'Q] NULL | Null (etishmayotgan ma'lumotlar) bilan taqqoslash | Manzil IS YO'Q NULL |
IS [YO'Q] Rost yoki IS [YO'Q] Yolg'on | Mantiqiy haqiqat qiymati testi | Pulli ta'til IS Rost |
IS YO'Q BILISH Dan | Qiymatga teng yoki ikkalasi ham null (etishmayotgan ma'lumotlar) | Qarz IS YO'Q BILISH Dan - Debitorlik qarzlari |
AS | Natijalarni ko'rishda ustun nomini o'zgartirish uchun foydalaniladi | SELECT xodim AS bo'lim1 |
Ba'zida boshqa operatorlar taklif qilingan yoki amalga oshirilgan, masalan skyline operatori (faqat boshqalar qatoridan "yomon" bo'lmagan qatorlarni topish uchun).
SQL-da ish < yilda kiritilgan ibora SQL-92. SQL standartida "izlangan holat" deb nomlangan eng umumiy ko'rinishida:
Ish QACHON n > 0 Keyin 'ijobiy' QACHON n < 0 Keyin "salbiy" BOShQA "nol"OXIRISQL testlari QACHON manbada paydo bo'ladigan tartibda shartlar. Agar manbada an ko'rsatilmagan bo'lsa BOShQA ifoda, SQL sukut bo'yicha BOShQA NULL. "Oddiy ish" deb nomlangan qisqartirilgan sintaksisdan ham foydalanish mumkin:
Ish n QACHON 1 Keyin "Bitta" QACHON 2 Keyin "Ikki" BOShQA "Men bu qadar yuqori deb hisoblay olmayman"OXIRIUshbu sintaksis tenglikni taqqoslashdan foydalanadi NULL bilan taqqoslash uchun odatiy ogohlantirishlar.
Maxsus uchun ikkita qisqa shakl mavjud Ish iboralar: COALEASE va NULLIF.
The COALEASE chapdan o'ngga ishlash orqali topilgan birinchi NULL bo'lmagan operandning qiymatini yoki barcha operandlar NULL ga teng bo'lsa NULL qiymatini qaytaradi.
COALEASE(x1,x2)ga teng:
Ish QACHON x1 IS YO'Q NULL Keyin x1 BOShQA x2OXIRIThe NULLIF ifoda ikkita operandga ega va agar operandlar bir xil qiymatga ega bo'lsa, NULL qiymatini qaytaradi, aks holda u birinchi operandning qiymatiga ega bo'ladi.
NULLIF(x1, x2)ga teng
Ish QACHON x1 = x2 Keyin NULL BOShQA x1 OXIRIIzohlar
Standart SQL uchun ikkita formatga ruxsat beriladi Izohlar: - sharh, bu birinchi bilan tugaydi yangi qatorva / * sharh * /, bir nechta qatorni qamrab olishi mumkin.
So'rovlar
SQL-da eng keng tarqalgan operatsiya, so'rov, deklarativdan foydalanadi SELECT bayonot. SELECT bir yoki bir nechtasidan ma'lumotlarni oladi jadvallaryoki iboralar. Standart SELECT bayonotlar ma'lumotlar bazasiga doimiy ta'sir ko'rsatmaydi. Ning ba'zi nostandart dasturlari SELECT kabi doimiy ta'sir ko'rsatishi mumkin TANLASH ba'zi ma'lumotlar bazalarida taqdim etilgan sintaksis.[2]
So'rovlar foydalanuvchiga kerakli ma'lumotlarni ta'riflab berishga imkon beradi ma'lumotlar bazasini boshqarish tizimi (DBMS) amalga oshirish rejalashtirish, optimallashtirishva kerakli natijani olish uchun zarur bo'lgan jismoniy operatsiyalarni bajarish.
So'rov yakuniy natijaga qo'shilishi kerak bo'lgan ustunlar ro'yxatini o'z ichiga oladi, odatda quyidagilar SELECT kalit so'z. Yulduzcha (""*") so'rovda so'ralgan jadvallarning barcha ustunlarini qaytarish kerakligini ko'rsatish uchun foydalanish mumkin. SELECT quyidagilarni o'z ichiga olgan ixtiyoriy kalit so'zlar va bandlar bilan SQL-dagi eng murakkab bayonotdir.
- The
Danma'lumotlar olish uchun jadval (lar) ni ko'rsatadigan band. TheDanband ixtiyoriy bo'lishi mumkinQO'SHILINGjadvallarga qo'shilish qoidalarini belgilaydigan subclauses. - The
Qaerdabandda taqqoslash predikati mavjud bo'lib, u so'rov bilan qaytarilgan qatorlarni cheklaydi. TheQaerdaband taqqoslash predikati To'g'ri deb baholanmagan natijalar to'plamidagi barcha qatorlarni olib tashlaydi. - The
GROUP BYClause umumiy qiymatlarga ega bo'lgan qatorlarni kichik qatorlar qatoriga loyihalashtiradi.[tushuntirish kerak]GROUP BYko'pincha SQL yig'ish funktsiyalari bilan birgalikda yoki natija to'plamidan takrorlangan qatorlarni yo'q qilish uchun ishlatiladi. TheQaerdabandi oldin ishlatilganGROUP BYband. - The
YO'Qbandida qatoridan filtrlash uchun ishlatiladigan predikat mavjudGROUP BYband. Chunki bu natijalar asosida ishlaydiGROUP BYbandida, birlashtirish funktsiyalaridan foydalanish mumkinYO'QClause predikat. - The
Buyurtma bo'yichabandda olingan ma'lumotlarni saralash uchun qaysi ustun [lar] va ularni qaysi yo'nalishda saralash (o'sish yoki tushish) belgilanadi. An holdaBuyurtma bo'yichabandi, SQL so'rovi bilan qaytarilgan qatorlar tartibi aniqlanmagan. - The
BILISHkalit so'z[3] takroriy ma'lumotlarni yo'q qiladi.[4] - The
OFFSETbandda ma'lumotlarni qaytarishni boshlashdan oldin o'tkazib yuboriladigan qatorlar soni ko'rsatilgan. - The
BIRINChI FETCHbandda qaytariladigan qatorlar soni ko'rsatilgan. Buning o'rniga ba'zi SQL ma'lumotlar bazalarida nostandart alternativalar mavjud, masalan.Cheklov,TOPyokiROWNUM.
So'rovning bandlari ma'lum bir ijro tartibiga ega[5], bu o'ng tomondagi raqam bilan belgilanadi. Bu quyidagicha:
SELECT <columns> | 5. |
Dan <table> | 1. |
Qaerda <predicate on rows> | 2. |
GROUP BY <columns> | 3. |
YO'Q <predicate on groups> | 4. |
Buyurtma bo'yicha <columns> | 6. |
OFFSET | 7. |
BIRINChI FETCH | 8. |
Quyidagi misol SELECT so'rov qimmat kitoblarning ro'yxatini qaytaradi. So'rov barcha qatorlarni oladi Kitob unda joylashgan jadval narx ustun 100.00 dan katta qiymatni o'z ichiga oladi. Natija o'sish tartibiga ko'ra saralanadi sarlavha. Yulduzcha (*) ro'yxatni tanlang ning barcha ustunlari ekanligini bildiradi Kitob jadval natijalar to'plamiga kiritilishi kerak.
SELECT * Dan Kitob Qaerda narx > 100.00 Buyurtma BILAN sarlavha;Quyidagi misolda kitoblar ro'yxati va har bir kitob bilan bog'liq bo'lgan mualliflar sonini qaytarish orqali bir nechta jadvallar, guruhlash va yig'ish bo'yicha so'rov ko'rsatilgan.
SELECT Kitob.sarlavha AS Sarlavha, hisoblash(*) AS Mualliflar Dan Kitob QO'SHILING Kitob muallifi YOQDI Kitob.isbn = Kitob muallifi.isbn GURUH BILAN Kitob.sarlavha;Namuna chiqishi quyidagilarga o'xshash bo'lishi mumkin:
Sarlavha mualliflari ---------------------- ------- SQL namunalari va qo'llanmasi 4 SQL 1 quvonchi SQL 2 ga kirish SQL 1 xatolari
Old shart bo'yicha isbn bu ikkita jadvalning yagona umumiy ustun nomi va unga nom berilgan ustun sarlavha faqat mavjud Kitob jadvalida yuqoridagi so'rovni quyidagi shaklda qayta yozish mumkin:
SELECT sarlavha, hisoblash(*) AS Mualliflar Dan Kitob TABIY QO'SHILING Kitob muallifi GURUH BILAN sarlavha;Biroq, ko'pchilik[miqdorini aniqlash] sotuvchilar ushbu yondashuvni qo'llab-quvvatlamaydilar yoki tabiiy birikmalarning samarali ishlashi uchun ma'lum ustunlarni nomlash qoidalarini talab qiladilar.
SQL saqlangan qiymatlar bo'yicha qiymatlarni hisoblash uchun operatorlar va funktsiyalarni o'z ichiga oladi. SQL-dagi iboralardan foydalanishga imkon beradi ro'yxatni tanlang 100.00 dan yuqori bo'lgan kitoblar ro'yxatini qo'shimcha bilan qaytaradigan quyidagi misolda bo'lgani kabi ma'lumotlarni loyihalashtirish uchun sotish solig'i savdo solig'i ko'rsatkichini o'z ichiga olgan ustun, ning 6% miqdorida hisoblanadi narx.
SELECT isbn, sarlavha, narx, narx * 0.06 AS sotish solig'i Dan Kitob Qaerda narx > 100.00 Buyurtma BILAN sarlavha;Subqueries
So'rovlar joylashtirilgan bo'lishi mumkin, shunda bitta so'rov natijalari boshqa so'rovda relyatsion operator yoki yig'ish funktsiyasi orqali ishlatilishi mumkin. Ichki so'rov a nomi bilan ham tanilgan subquery. Birlashtirish va boshqa jadval operatsiyalari ko'p hollarda hisoblashda ustun (ya'ni tezroq) alternativalarni taqdim etsa ham, pastki so'rovlardan foydalanish foydali yoki zarur bo'lishi mumkin bo'lgan ijro etilishida ierarxiyani joriy etadi. Quyidagi misolda birlashtirish funktsiyasi AVG pastki so'rov natijasini kirish sifatida qabul qiladi:
SELECT isbn, sarlavha, narx Dan Kitob Qaerda narx < (SELECT AVG(narx) Dan Kitob) Buyurtma BILAN sarlavha;Subquery tashqi so'rovning qiymatlarini ishlatishi mumkin, bu holda u a deb nomlanadi o'zaro bog'liq so'rov.
1999 yildan beri SQL standarti imkon beradi Bilan subqueries uchun bandlar, ya'ni nomlangan subqueries, odatda chaqiriladi umumiy jadval ifodalari (shuningdek, deyiladi subquery faktoring). CTE ham bo'lishi mumkin rekursiv o'zlariga murojaat qilish bilan; hosil bo'lgan mexanizm daraxtlar yoki grafalar bo'ylab o'tishga imkon beradi (munosabatlar sifatida ifodalangan bo'lsa) va umuman olganda tuzatish nuqtasi hisoblashlar.
Hosil qilingan jadval
A olingan jadval FROM bandida SQL subquery-ga murojaat qilishdan foydalanish. Aslida, olingan jadval tanlanishi yoki qo'shilishi mumkin bo'lgan pastki so'rovdir. Olingan jadval funktsionalligi foydalanuvchiga pastki so'rovga jadval sifatida murojaat qilishiga imkon beradi. Ichki ko'rinish an deb ham nomlanadi ichki ko'rinish yoki a pastki tanlov.
Quyidagi misolda SQL bayonoti dastlabki "Kitob" jadvalidan olingan "sotish" jadvaliga qo'shilishni o'z ichiga oladi. Ushbu olingan jadval "Kitob" jadvaliga qo'shilish uchun ISBN-dan foydalangan holda kitob sotuvi bilan bog'liq ma'lumotlarni aks ettiradi. Natijada, olingan jadval natijalar to'plamini qo'shimcha ustunlar bilan ta'minlaydi (sotilgan narsalar soni va kitoblarni sotgan kompaniya):
SELECT b.isbn, b.sarlavha, b.narx, sotish.buyumlar_sotildi, sotish.company_nmDan Kitob b QO'SHILING (SELECT JUM(Mahsulotlar_Sotilgan) Mahsulotlar_Sotilgan, Kompaniya_Nm, ISBN Dan Kitob_Sotish GURUH BILAN Kompaniya_Nm, ISBN) sotish YOQDI sotish.isbn = b.isbnBo'sh yoki uch qiymatli mantiq (3VL)
Tushunchasi Bekor SQL-ga relyatsion modeldagi etishmayotgan ma'lumotlar bilan ishlashga imkon beradi. So'z NULL SQL-da saqlangan kalit so'z bo'lib, Null maxsus markerini aniqlash uchun ishlatiladi. NULL bilan taqqoslash, masalan, WHERE bandlarida tenglik (=) natijasida Noma'lum haqiqat qiymati paydo bo'ladi. SELECT bayonotlarida SQL faqat WHERE bandi True qiymatini qaytaradigan natijalarni qaytaradi; ya'ni False qiymatlari bilan natijalarni chiqarib tashlaydi va qiymati noma'lum bo'lganlarni chiqarib tashlaydi.
Haqiqiy va yolg'on bilan bir qatorda, Null bilan to'g'ridan-to'g'ri taqqoslash natijasida hosil bo'lgan Noma'lum, shuning uchun uch qiymatli mantiq SQL-ga. SQL-dan AND, OR va NOT-dan foydalanadigan haqiqat jadvallari Kleene va Lukasiewiczning uchta qiymatli mantig'ining umumiy qismiga to'g'ri keladi (ular imlikatsiya ta'rifi bilan farq qiladi, ammo SQL bunday operatsiyani aniqlamaydi).[6]
|
| ||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||
Biroq, to'g'ridan-to'g'ri taqqoslashdan tashqarida muomala qilganligi sababli, SQL-da Nullsning semantik talqini to'g'risida tortishuvlar mavjud. Yuqoridagi jadvalda ko'rinib turganidek, SQL-dagi ikkita NULL o'rtasidagi to'g'ridan-to'g'ri tenglikni taqqoslash (masalan: {{{1}}}) noma'lum haqiqat qiymatini qaytaring. Bu Null qiymatiga ega emas (va hech qanday ma'lumot domenining a'zosi emas), aksincha joy topuvchi yoki etishmayotgan ma'lumot uchun "belgi" degan sharhga mos keladi. Biroq, ikkita Null bir-biriga teng emasligi printsipi uchun SQL spetsifikatsiyasida samarali ravishda buzilgan Ittifoq va INTERSECT nulllarni bir-birlari bilan aniqlaydigan operatorlar.[7] Binobarin, bular SQL-da operatsiyalarni o'rnatish NULL bilan aniq taqqoslashni o'z ichiga olgan operatsiyalardan farqli o'laroq, aniq ma'lumotni ko'rsatmaydigan natijalarga olib kelishi mumkin (masalan Qaerda yuqorida muhokama qilingan band). Coddning 1979 yildagi taklifida (asosan SQL92 tomonidan qabul qilingan) ushbu semantik nomuvofiqlik o'rnatilgan operatsiyalarda dublikatlarni olib tashlash "qidirish operatsiyalarini baholashda tenglik sinovidan pastroq tafsilotlar darajasida" sodir bo'lishini ta'kidlash orqali ratsionalizatsiya qilingan.[6] Biroq, kompyuter fanlari professori Ron van der Meyden "SQL standartidagi nomuvofiqliklar SQL-da nulllarni davolashga intuitiv mantiqiy semantikani kiritish mumkin emasligini anglatadi" degan xulosaga keldi.[7]
Bundan tashqari, to'g'ridan-to'g'ri Null bilan taqqoslaganda SQL operatorlari Noma'lumni qaytarganligi sababli, SQL Nullga xos ikkita taqqoslash predikatini taqdim etadi: NULL va NULL EMAS ma'lumotlar bo'sh yoki yo'qligini tekshirib ko'ring.[8] SQL aniq qo'llab-quvvatlamaydi universal miqdoriy miqdorva buni bekor qilingan sifatida ishlab chiqishi kerak ekzistensial miqdoriy miqdor.[9][10][11] Bundan tashqari, "BOOLEAN tipidagi o'zgaruvchilar, agar ular standartga muvofiq, agar u bo'sh bo'lsa, noma'lum qiymatlarni ham saqlashi mumkin. Amalda bir qator tizimlar (masalan, PostgreSQL) BOOLEAN Unknown-ni BOOLEAN NULL sifatida amalga oshiring, bu standart NULL BOOLEAN va UNNNNNNK "aynan shu narsani anglatishi uchun bir-birining o'rnida ishlatilishi mumkin" deb aytadi.C. Sana (2011). SQL va munosabat nazariyasi: aniq SQL kodini qanday yozish kerak. O'Reilly Media, Inc. p. 83. ISBN 978-1-4493-1640-2.</ref>[12]
Ma'lumotlarni manipulyatsiya qilish
The Ma'lumotlarni manipulyatsiya qilish tili (DML) - bu ma'lumotlarni qo'shish, yangilash va o'chirish uchun ishlatiladigan SQL to'plamidir:
KIRITMOQ ICHIGA misol (ustun1, ustun 2, ustun 3) QIYMATLAR ("sinov", "N", NULL);YANGILASHmavjud jadval qatorlari to'plamini o'zgartiradi, masalan:
YANGILASH misol O'rnatish ustun1 = "yangilangan qiymat" Qaerda ustun 2 = "N";O'chirishmavjud qatorlarni jadvaldan olib tashlaydi, masalan:
O'chirish Dan misol Qaerda ustun 2 = "N";MERGEbir nechta jadvallarning ma'lumotlarini birlashtirish uchun ishlatiladi. U birlashtirganKIRITMOQvaYANGILASHelementlar. SQL: 2003 standartida aniqlangan; undan oldin ba'zi ma'lumotlar bazalari turli xil sintaksis orqali o'xshash funktsiyalarni ta'minlagan, ba'zan "ko'tarilish".
MERGE ICHIGA table_name FOYDALANISH table_reference YOQDI (holat) QACHON MUVOFIB Keyin YANGILASH O'rnatish ustun1 = qiymati1 [, ustun 2 = qiymati2 ...] QACHON YO'Q MUVOFIB Keyin KIRITMOQ (ustun1 [, ustun 2 ...]) QIYMATLAR (qiymati1 [, qiymati2 ...])Tranzaktsiyalarni boshqarish
Tranzaksiyalar, agar mavjud bo'lsa, DML operatsiyalarini o'rash:
Amaliyotni boshlash(yokiIshni boshlang, yokiAmaliyotni boshlash, SQL shevasiga qarab) a boshlanishini belgilaydi ma'lumotlar bazasi bilan operatsiya, bu to'liq yoki umuman bajarilmaydi.Amaliyotni saqlash(yokiSAQLASH) ma'lumotlar bazasining holatini operatsiyaning joriy nuqtasida saqlaydi
YARATMOQ Jadval tbl_1(id int); KIRITMOQ ICHIGA tbl_1(id) QIYMATLAR(1); KIRITMOQ ICHIGA tbl_1(id) QIYMATLAR(2);QO'ShIMChA; YANGILASH tbl_1 O'rnatish id=200 Qaerda id=1;SAQLASH id_1upd; YANGILASH tbl_1 O'rnatish id=1000 Qaerda id=2;Teskari aloqa ga id_1upd; SELECT id dan tbl_1;QO'ShIMChAoperatsiyadagi barcha ma'lumotlarni o'zgartirishni doimiy ravishda amalga oshiradi.Teskari aloqaoxirgi vaqtdan beri barcha ma'lumotlarni o'zgartirishni bekor qiladiQO'ShIMChAyokiTeskari aloqa, ma'lumotlarni ushbu o'zgarishlardan oldingi kabi qoldiring. Bir martaQO'ShIMChAbayonotni to'ldiradi, tranzaksiya o'zgarishini qaytarib bo'lmaydi.
QO'ShIMChA va Teskari aloqa joriy operatsiyani tugatish va ma'lumotlar qulflarini chiqarish. Yo'qligida a Amaliyotni boshlash yoki shunga o'xshash bayonotda, SQL-ning semantikasi amalga oshirishga bog'liq bo'lib, quyidagi misolda pul mablag'lari bir hisobdan olib tashlanib, boshqasiga qo'shiladigan pul o'tkazmalarining klassik o'tkazmasi ko'rsatilgan. Agar olib tashlash yoki qo'shib qo'yish muvaffaqiyatsiz bo'lsa, butun operatsiya orqaga qaytariladi.
BOSHLASH Amaliyot; YANGILASH Hisob qaydnomasi O'rnatish miqdori=miqdori-200 Qaerda hisob raqami=1234; YANGILASH Hisob qaydnomasi O'rnatish miqdori=miqdori+200 Qaerda hisob raqami=2345;IF XATOLAR=0 QO'ShIMChA;IF XATOLAR<>0 Teskari aloqa;Ma'lumotlarning ta'rifi
The Ma'lumotlarni aniqlash tili (DDL) jadval va indekslar tuzilishini boshqaradi. DDL ning eng asosiy elementlari quyidagilardir YARATMOQ, ALTER, Qayta nomlash, YO'Q va TRUNCATE bayonotlar:
YARATMOQma'lumotlar bazasida ob'ektni yaratadi (masalan, jadval), masalan:
YARATMOQ Jadval misol( ustun1 INTEGER, ustun 2 VARCHAR(50), ustun 3 Sana YO'Q NULL, Boshlang'ich KALIT (ustun1, ustun 2));ALTERmavjud ob'ektning tuzilishini turli xil usullar bilan o'zgartiradi, masalan, mavjud jadvalga ustun qo'shish yoki cheklash, masalan:
ALTER Jadval misol QO'ShIMChA ustun4 INTEGER Xato 25 YO'Q NULL;TRUNCATEbarcha ma'lumotlarni jadvaldan juda tez o'chiradi, jadvalning o'zi emas, balki jadval ichidagi ma'lumotlarni o'chirib tashlaydi. Odatda, bu keyingi COMMIT operatsiyasini nazarda tutadi, ya'ni uni orqaga qaytarib bo'lmaydi (DELETE-dan farqli o'laroq, ma'lumot orqaga qaytarish uchun jurnallarga yozilmaydi).
TRUNCATE Jadval misol;YO'Qma'lumotlar bazasidagi ob'ektni, odatda qaytarib bo'lmaydigan tarzda o'chiradi, ya'ni orqaga qaytarib bo'lmaydi, masalan:
YO'Q Jadval misol;Ma'lumot turlari
SQL jadvalidagi har bir ustun tarkibida bo'lishi mumkin bo'lgan tur (lar) ni e'lon qiladi. ANSI SQL quyidagi ma'lumotlar turlarini o'z ichiga oladi.[13]
- Belgilar satrlari va milliy xarakter satrlari
Xarakter (n)(yokiCHAR (n)): belgilangan kenglik n- kerak bo'lganda bo'shliqlar bilan to'ldirilgan belgilar qatoriXarakter o'zgarishi (n)(yokiVARCHAR (n)): maksimal o'lchamdagi o'zgaruvchan kenglikdagi mag'lubiyat n belgilarXarakterli katta ob'ekt (n [K | M | G | T])(yokiCLOB (n [K | M | G | T])): maksimal kattalikka ega bo'lgan katta ob'ekt n [K | M | G | T] belgilarMILLIY XARAKTER (n)(yokiNCHAR (n)): xalqaro belgi to'plamini qo'llab-quvvatlaydigan sobit kenglikdagi satrMILLIY XUSUSIYAT VARING (n)(yokiNVARCHAR (n)): o'zgaruvchan kenglikNCHARmag'lubiyatMILLIY XARAKTERLARNING KO'P OB'EKTI (n [K | M | G | T])(yokiNCLOB (n [K | M | G | T])): maksimal hajmga ega bo'lgan milliy xarakterli katta ob'ekt n [K | M | G | T] belgilar
Uchun Xarakterli katta ob'ekt va MILLIY XARAKTERLARNING KATTA OB'EKTI ma'lumotlar turlari, ko'paytirgichlar K (1 024), M (1 048 576), G (1 073 741 824) va T Uzunlikni ko'rsatishda ixtiyoriy ravishda (1 099 511 627 776) foydalanish mumkin.
- Ikkilik
Ikkilik (n): Belgilangan uzunlikdagi ikkilik mag'lubiyat, maksimal uzunlik n.Ikkilik bilan farq qilish (n)(yokiVARBINAR (n)): O'zgaruvchan uzunlikdagi ikkilik satr, maksimal uzunlik n.BINAR KATTA OBJAT (n [K | M | G | T])(yokiBLOB (n [K | M | G | T])): maksimal uzunlikdagi ikkilik katta ob'ekt n [K | M | G | T].
Uchun BINAR KATTA OBJAT ma'lumotlar turi, ko'paytirgichlar K (1 024), M (1 048 576), G (1 073 741 824) va T Uzunlikni ko'rsatishda ixtiyoriy ravishda (1 099 511 627 776) foydalanish mumkin.
- Mantiqiy
BOOLEAN
The BOOLEAN ma'lumotlar turi qiymatlarni saqlashi mumkin Rost va Yolg'on.
- Raqamli
INTEGER(yokiINT),SMALLINTvaBIGINTFLAT,HAQIQIYvaIkki karra aniqlikNUMERIC (aniqlik, o'lchov)yokiO'nlik (aniqlik, o'lchov)DECFLOAT (aniqlik)
Masalan, 123.45 raqamining aniqligi 5 ga va shkalasi 2. ga teng aniqlik ma'lum bir radiusdagi muhim sonlarning sonini (ikkilik yoki o'nlik) aniqlaydigan musbat tamsayı. The o'lchov manfiy bo'lmagan tamsayı. 0 o'lchovi raqamning butun son ekanligini bildiradi. S o'lchovli o'nlik son uchun aniq raqam qiymati 10 ga bo'lingan muhim raqamlarning butun sonidirS.
SQL funktsiyalarni ta'minlaydi Shift va Qavat raqamli qiymatlarni yaxlitlash uchun. (Mashhur sotuvchilarning o'ziga xos funktsiyalari TRUNC (Informix, DB2, PostgreSQL, Oracle va MySQL) va DAVRA (Informix, SQLite, Sybase, Oracle, PostgreSQL, Microsoft SQL Server va Mimer SQL.))
- Vaqtinchalik (datetime)
Sana: sana qiymatlari uchun (masalan:2011-05-03).TIME: vaqt qiymatlari uchun (masalan,15:51:36).Vaqt zonasi bilan vaqt: xuddi shundayTIME, lekin ko'rib chiqilayotgan vaqt zonasi haqida batafsil ma'lumot.TIMESTAMP: BuSanava aTIMEbir o'zgaruvchiga (masalan,2011-05-03 15:51:36.123456).Vaqt zonasi bilan vaqt belgilash: xuddi shundayTIMESTAMP, lekin ko'rib chiqilayotgan vaqt zonasi haqida batafsil ma'lumot.
SQL funktsiyasi CHIQARISh datetime yoki interval qiymatining bitta maydonini (masalan, soniya) ajratib olish uchun ishlatilishi mumkin. Ma'lumotlar bazasi serverining joriy sana / vaqtini quyidagi funktsiyalar yordamida chaqirish mumkin CURRENT_DATE, CURRENT_TIMESTAMP, Mahalliy vaqt, yoki LOCALTIMESTAMP. (Mashhur sotuvchilarning o'ziga xos funktsiyalari HOZIRGI KUNGACHA, TO_TIME, TO_TIMESTAMP, YIL, OY, KUN, SAAT, MINUTE, IKKINCHI, DAYOFYEAR, DAYOFMONTH va DAYOFWEEK.)
- Interval (datetime)
YIL (aniqlik): bir necha yilYIL (aniqlik) OYGA: bir necha yil va oyOY (aniqlik): bir necha oyKUN (aniqlik): bir necha kunKUN (aniqlik) SAATGA: bir necha kun va soatKUN (aniqlik) DAKUTA: bir necha kun, soat va daqiqaKUN (aniqlik) Ikkinchi (o'lchov): bir necha kun, soat, daqiqa va soniyaSAAT (aniqlik): bir necha soatSAAT (aniqlik) DAKUTA: bir necha soat va daqiqaSAAT (aniqlik) Ikkinchi (o'lchov): bir necha soat, daqiqa va soniyalarMINUTE (aniqlik): bir necha daqiqaMINUTE (aniqlik) Ikkinchi (o'lchov): bir necha daqiqa va soniyalar
Ma'lumotlarni boshqarish
The Ma'lumotlarni boshqarish tili (DCL) foydalanuvchilarga ma'lumotlarga kirish va ularni boshqarish huquqini beradi, uning ikkita asosiy bayonoti:
GRANTbir yoki bir nechta foydalanuvchiga ob'ektda operatsiya yoki bir qator operatsiyalarni bajarish huquqini beradi.REVOKEstandart grant bo'lishi mumkin bo'lgan grantni bekor qiladi.
Misol:
GRANT SELECT, YANGILASH YOQDI misol TO kimdir_user, another_user;REVOKE SELECT, YANGILASH YOQDI misol Dan kimdir_user, another_user;Izohlar
- ^ ANSI / ISO / IEC xalqaro standarti (IS). Ma'lumotlar bazasi tili SQL - 2-qism: Foundation (SQL / Foundation). 1999 yil.
- ^ "Transact-SQL ma'lumotnomasi". SQL Server tiliga ma'lumotnoma. SQL Server 2005 Kitoblar Onlayn. Microsoft. 2007-09-15. Olingan 2007-06-17.
- ^ SAS 9.4 SQL protsedurasidan foydalanuvchi qo'llanmasi. SAS instituti. 2013. p. 248. ISBN 9781612905686. Olingan 2015-10-21.
UNIQUE argumenti DISTINCT bilan bir xil bo'lsa-da, ANSI standarti emas.
- ^ Leon, Aleksis; Leon, Metyuz (1999). "Dublikatlarni yo'q qilish - DISTINCT yordamida SELECT". SQL: to'liq ma'lumot. Nyu-Dehli: Tata McGraw-Hill Education (2008 yilda nashr etilgan). p. 143. ISBN 9780074637081. Olingan 2015-10-21.
[...] DISTINCT kalit so'zi [...] natija to'plamidagi dublikatlarni yo'q qiladi.
- ^ "SQL so'rovini bajarish tartibi qanday? - Designcise.com". www.designcise.com. Olingan 2018-02-04.
- ^ a b Xans-Yoaxim, K. (2003). "Relatsion ma'lumotlar bazalaridagi nol qiymatlar va aniq ma'lumotlarga javoblar". Ma'lumotlar bazalaridagi semantika. Ikkinchi Xalqaro Seminar Dagstuhl Qal'asi, Germaniya, 2001 yil 7–12 yanvar. Qayta ko'rib chiqilgan hujjatlar. Kompyuter fanidan ma'ruza matnlari. 2582. 119-138 betlar. doi:10.1007/3-540-36596-6_7. ISBN 978-3-540-00957-3.
- ^ a b Ron van der Meyden, "To'liq bo'lmagan ma'lumotlarga mantiqiy yondashuvlar: so'rovnoma" Chomicki, Jan; Saake, Gunter (nashr.) Ma'lumotlar bazalari va axborot tizimlari uchun mantiq, Kluwer Academic Publishers ISBN 978-0-7923-8129-7, p. 344
- ^ ISO / IEC. ISO / IEC 9075-2: 2003, "SQL / Foundation". ISO / IEC.
- ^ "Semantik va SQLda universal miqdoriy hisoblash muammolari". Kompyuter jurnali. 1989 yil fevral. doi:10.1093 / comjnl / 32.1.90. Olingan 2017-01-16.
- ^ Fratarkangeli, Klaudio (1991). "SQL-da universal miqdoriy hisoblash texnikasi". ACM SIGMOD yozuvi. 20 (3): 16–24. doi:10.1145/126482.126484. Olingan 2017-01-16.
- ^ Kawash, Jalol (2004) Strukturaviy so'rovlar tilidagi kompleks miqdoriy (SQL): relyatsion hisob yordamida qo'llanma; Matematika va tabiatni o'qitishda kompyuterlar jurnali ISSN 0731-9258 23 jild, 2004 yil 2-son, AACE Norfolk, Virjiniya. Thefreelibrary.com
- ^ ISO / IEC 9075-2: 2011 §4.5
- ^ "ISO / IEC 9075-1: 2016: Axborot texnologiyalari - Ma'lumotlar bazasi tillari - SQL - 1 qism: Framework (SQL / Framework)".