36-Mavzu: SQL tili operatorlari va ular bilan ishlash
Reja:
1. SQL konventsiyalari va dastlabki tushunchalar
2. INFORMIX identifikatorlari
3. Ma'lumotlar bazasini yaratish.
SQL konventsiyalari va dastlabki tushunchalar
4GL-da yozilgan dastur ma'lumotlar bazasini boshqarish uchun SQL (Structural Query Language) tilining retseptlaridan foydalanadi.
SQL bayonotlarini yozish formati bepul. Siz hamma narsani bir qatorga, bitta operatorni bir nechta satrga yozishingiz mumkin, operatorlarning so'zlarini ixtiyoriy miqdordagi bo'shliqlar va izohlar bilan ajratish mumkin. Operatorlarni biron bir belgi bilan ajratishning hojati yo'q (kabi; kabi). Bayonotning oxiri kontekstga qarab belgilanadi.
Eslatma: Agar siz SQL bayonotlarini 4GL dasturida emas, balki INFORMIX-SQL muhitida yozayotgan bo'lsangiz, u holda bayonotlarni nuqta-vergul (;) bilan ajratishingiz kerak.
SQL kalit so'zlarining to'liq to'plami zaxiralangan, ulardan boshqa maqsadlarda foydalanish mumkin emas (SQL va 4GL da ob'ektlar va o'zgaruvchilar nomlari).
Til kompilyatori operatorlarning katta yoki kichik harflar bilan yozilishiga ahamiyat bermaydi. U ularning o'rtasida farq qilmaydi.
Izohlar satr oxirigacha { comment } yoki -- (ikki minus belgisi) bilan belgilanadi.
INFORMIX identifikatorlari
Identifikator (ob'ekt nomi) harf yoki belgi (_) bilan boshlangan harflar, raqamlar va pastki chiziq (_) dan iborat so'zdir. INFORMIX-4GL kichik va katta harflarni ajratmaydi. Shuning uchun i_Un1023Tt va I_UN1023TT bir xil nom.
Ma'lumotlar bazasi nomi 10 dan oshmasligi kerak.
Boshqa SQL ob'ektlari - jadvallar, ustunlar, ko'rinishlar (psevdo jadvallar), sinonimlar - 18 dan ortiq emas.
SQL bayonotlari guruhlari.
SQL 4 ta guruhni o'z ichiga oladi:
Ma'lumotlarni tavsiflash operatorlari: CREATE, DROP, ALTER va boshqalar.
Ma'lumotlarni manipulyatsiya qilish operatorlari: INSERT, DELETE, SELECT, UPDATE va boshqalar.
Ma'lumotlar bazasiga kirish huquqlarini o'rnatish uchun operatorlar: GRANT / REVOKE , LOCK / OCK , SET LOCK MODE
Ma'lumotlarni himoya qilish, ma'lumotlarni tiklash va boshqa operatorlar.
1. Ma'lumotlarni tavsiflash operatorlari.
Ma'lumotlarni tavsiflash operatorlari ma'lumotlar bazasi ob'ektlarini tavsiflash (yaratish), tavsifni o'zgartirish va yo'q qilish uchun mo'ljallangan.
SQL quyidagi turdagi ob'ektlarni ajratadi:
ma'lumotlar bazasi (ma'lumotlar bazasi);
stol (stol);
ustun (ustun);
indeks (indeks);
oniy tasvir (ko'rish);
sinonim.
Har bir ob'ekt o'z nomiga ega - identifikator. Har bir ob'ektning egasi bor - ya'ni. uni yaratgan foydalanuvchi. Ob'ekt nomi ushbu shaklda egasining nomi (egasining ismi) yordamida kvalifikatsiya qilinishi mumkin: moshkow.table1
Quyida barcha ma'lumotlarni tavsiflash operatorlaridan foydalanish misollari keltirilgan. Ularning toʻliq sintaksisini 4GL Tezkor Reference Guide yoki INFORMIX-4GL Reference Guide da topish mumkin.
Ma'lumotlar bazasini yaratish.
Ma'lumotlar bazasini yarating
Istalgan vaqtda siz faqat bitta - HOZIRGI (JORIY) - ma'lumotlar bazasidagi ob'ektlarga kirishingiz mumkin. DATABASE bayonoti yangi bazani joriy bazaga aylantiradi, shu bilan birga oldingi joriy baza ob'ektlariga kirishni yopadi. CLOSE DATABASE bayonoti shunchaki joriy ma'lumotlar bazasini yopadi.
MA'LUMOTLAR BAZASI kasbi
. . . # joriy asos - zawod
MA'LUMOTLAR BAZASI stanciq
. . . # joriy baza stanciq
MA'LUMOTLAR BAZASINI YOPISH
# joriy baza yo'q
Har xil turdagi ustunlarni o'z ichiga olgan kadrlar va cheh jadvallari yaratilgan.
JADVAL YARATISH kadry(
nomerceh INT,
SERIAL tabnom,
fio CHAR(20) UNIKAL,
ish haqi PUL(16,2),
datarovd DATE,
pribytie DATETIME yildan daqiqagacha)
JADVAL YARATISH ceh ( nomerceh int, nameceh char(20) )
Mavjud jadvalda biz ustun turini o'zgartirishimiz, yangisini qo'shishimiz, eskisini yo'q qilishimiz mumkin.
ALTER TABLE kadry ADD (dolvnostx CHAR(20) OLDIN zarplata),
DROP(pribytie), CHEKLASHNI QO'SHISH UNIQUE(tabnom, fio) CHEKLASH
tabnomfio
ALTER TABLE elementlarini O'zgartirish (manu_code char(4))
Jadvalning tuzilishini o'zgartirish undagi ma'lumotlarning jismoniy o'zgarishiga olib keladi. Agar ustun turi o'zgartirilsa, undagi ma'lumotlar yangi turga aylantiriladi va agar buning iloji bo'lmasa, ALTER bayonoti xato kodi bilan "tushadi" va jadval o'zgarishsiz qoladi.
Ko'rish - "psevdo" jadval, mavjud jadvallar asosida.
CREATE VIEW faqir AS SELECT tabnom, fio, datarovd FROM kadry
QAYERDA ish haqi < 120
# yaratilgan ko'rinish - uchta ustundan iborat "psevdo-jadval"
Zarplata 120 rubldan kam bo'lgan kadrlar jadvalidan # qatorlar.
U xuddi haqiqiy jadval kabi ishlaydi, faqat uning uchun diskda bo'sh joy ajratilmaydi, chunki undagi ma'lumotlar aslida ushbu ko'rinishga asoslangan jadvalda saqlanadi.
Indeks - bu jadval ustunlariga qo'shimcha tuzilma bo'lib, ustundagi qiymatlarni qidirishni tezlashtirish uchun kerak.
Indkdtb ON kadrlar (tabnom) BO'YICHA INDEKS YARATING
# kadrlar jadvalidan tabnom ustunida indeks yaratdi. Indeks
# noyob, bu ustunda bir xil bo'lishi mumkin emasligini anglatadi
# qiymatlar.
Jadvalni indeks bo'yicha jismoniy buyurtma qilishimiz mumkin. Klasterlangan jadvalda SELECT tezroq ishlaydi.
INDEX indkdtb ni KLASTERGA ALTER
Turli jadvallardagi ustun nomlari bir xil bo'lishi mumkin. Agar biron bir SQL bayonotida bir xil nomga ega ikkita ustun qayd etilgan bo'lsa, ular o'z ichiga olgan jadvallarning nomlari bilan mos kelishi kerak. Har qanday ob'ekt nomidan oldin uning egasining ismini (egasining ismi) - ushbu ob'ektni yaratgan (CREATE) foydalanuvchining kirish nomini ko'rsatish mumkin (va ba'zan kerak).
kadry.nomerceh # ustun nomerceh jadvaldan kadry
ceh.nomerceh # ustun nomerceh jadvaldan ceh
iwanow.table1.c1 # jadval1 dan c1 ustuni iwanowga tegishli
moshkow.table1.c1 # moshkowga tegishli boshqa (!) jadval1 jadvalidan c1 ustuni
Jadval nomining sinonimi yozuvni qisqartirish uchun ishlatiladi.
petrow.sostoqnie_postow UCHUN t1 SINONIMLIGI YARATING
Endi hamma joyda (shart bo'lmasa ham) petrow.sostoqnie_postow nomi o'rniga t1 nomidan foydalanishingiz mumkin.
Ma'lumotlar bazasida tizim operatsiyalari jurnali (logfayl) bo'lishi mumkin.
KIRISH BILAN "/udd/moshkow/logfile/zawod" ma'lumotlar bazasini ishga tushirish
Agar butun ma'lumotlar bazasi uchun tranzaktsiyalar jurnali bo'lmasa, xuddi shu maqsadda ma'lumotlar bazasidagi alohida jadvallar uchun audit izi yaratilishi mumkin.
"/udd/moshkow/kadry.audit" DA kadry UCHUN AUDIT YARATING
Tabiiyki, ma'lumotlar bazasida yaratilgan har qanday ob'ekt yo'q qilinishi mumkin. Shuni yodda tutish kerakki, ma'lumotlarni tavsiflash operatorlari orqaga qaytmaydi va shuning uchun agar siz jadval yoki ma'lumotlar bazasini yo'q qilsangiz, bu abadiy ekanligini biling.
DROP VIEW kambag'al # Faqat ko'rinish yo'q qilingan. U asoslangan jadvallardagi ma'lumotlar bilan hech narsa sodir bo'lmaydi.
DROP TABLE kadry # jadvalni ma'lumotlar bilan birga yo'q qiladi.
DROP INDEX indkdtb
DOP SINONIMI t1
DROP DATABASE zawod # ma'lumotlar bazasini barcha ma'lumotlar va syslog bilan birga yo'q qiladi
2. Ma'lumotlar bazasiga kirish huquqini o'rnatish operatorlari.
Jadval egasi, ma'lumotlar bazasi ma'muri (DBA huquqlariga ega), shuningdek, huquqlarni berish huquqiga ega bo'lgan foydalanuvchi (GRANT WITH GRANT OPTIONS bayonotidan foydalangan holda) jadvalga kirish huquqini berishi va qaytarib olishi mumkin.
HAMMA MIJOLARNI OMAMMATDAN O'CHIRISH
iwanow, petrow TO mijozga BARCHA GRANT OPTION BILAN
GRANT YANGILANISH (fname, lname, kompaniya, sity), SELECT
MIJOZ TO'G'RISIDA
SIDOROVADAN BOG'LANISHNI REVOKE, ildiz
Ivanovdan DBAni bekor qilish
Faqat boshqa DBA sizning DBA huquqlaringizni olib qo'yishi mumkin (agar siz shunday bo'lsangiz, albatta). Tranzaktsiyaning davomiyligi uchun barcha o'zgartirilgan qatorlar tizim tomonidan o'zgartirishdan avtomatik ravishda bloklanadi (lekin ko'rishdan emas). Siz butun jadvalni aniq bloklashingiz mumkin, keyin tizim qatorlarni alohida bloklamaydi. Siz butun jadvalni nafaqat o'zgartirishdan, balki ko'rishdan ham bloklashingiz mumkin.
ISHNI BOSHLASH
LOCK TABLE qutisi
. . .
JADVAL ramkasini BULFIDAN OCHISH
. . .
EKSKLUZIV TABLEni qulflash
Agar sizning operatoringiz boshqa foydalanuvchi tomonidan bloklangan qatorga yozishga harakat qilsa, operator "yiqilib tushadi". Siz dasturni "Qatorlar qulfdan chiqarilishini kutish" ga o'rnatishingiz mumkin.
KUTISH UCHUN QULFLANISH REJIMINI SOZLASH
3. Tranzaktsiyalar va ma'lumotlarni qayta tiklash operatorlari.
Tizim jurnaliga ega bo'lmagan ma'lumotlar bazasida tranzaktsiyalarni amalga oshirish va joriy nazorat nuqtasiga tiklash mumkin emas.
Barcha yaxshi narsalar o'z narxiga ega bo'lganligi sababli, ma'lumotlar bazasi tizimiga ega bo'lish qo'shimcha xarajatlarni sezilarli darajada oshiradi va so'rovlarni sekinlashtiradi. Bundan tashqari, ma'lumotlar bazasi bilan faol ishlash jarayonida tizim jurnali tezda "shishib ketadi". Uni vaqti-vaqti bilan kuzatib borish va tozalash kerak.
Ma'lumotlar bazasi uchun yangi tizim jurnalini belgilang.
Do'stlaringiz bilan baham: |