SQL bizning hamma narsamiz
Endi balki tushungan bo'lsang kerak, SQL-serverga barcha buyruqlarni SQL-so'rovlar orqali berish mumkin. Absolyut har qanday buyruqni.
Bu buyruqlar rasmiy ravishda 4 guruhga bo'lingan:
Ma'lumotlarni belgilash tili (Data Definition Language, DDL) buyruqlari:
- CREATE baza obyektini yaratadi (baza, jadval, ko'rinish, foydalanuvchi va hokazo)
- ALTER obyektni o'zgartiradi
- DROP obyektni o'chiradi
Ma'lumotlarni manipulyatsiya qilish tili (Data Manipulation Language, DML) buyruqlari:
- SELECT belgilangan shartlarga javob beradigan ma'lumotlarni tanlaydi
- INSERT yangi ma'lumotlarni qo'shadi
- UPDATE mavjud ma'lumotlarni o'zgartiradi
- DELETE ma'lumotlarni o'chiradi
Ma'lumotlarga kirishni boshqarish tili (Data Control Language, DCL) buyruqlari:
- GRANT foydalanuvchi (guruh)ga obyekt bilan ma'lum operatsiyalarni bajarish uchun ruxsat beradi
- REVOKE berilgan ruxsatlarni qaytaradi
- DENY ruxsatdan ustun bo'lgan taqiqni belgilaydi
Tranzaksiyalarni boshqarish tili (Transaction Control Language, TCL) buyruqlari:
- COMMIT tranzaksiyani qo'llaydi
- ROLLBACK joriy tranzaksiya doirasida qilingan o'zgarishlarni bekor qiladi
- SAVEPOINT tranzaksiyani kichikroq bo'limlarga ajratadi
Va biz birinchi ikki darajada faqat SELECT operatorining turlarini o'rganib chiqdik. Tasavvur qil, kelajakda bizni qancha qiziqarli narsalar kutmoqda.
Lekin, biz, birinchi navbatda, Java dasturchilarini tayyorlashda ishlayapmiz, shuning uchun ishda muqarrar ravishda duch keladigan ssenariylarni o'rganamiz.
Barcha ma'lumotlar bazalarini yaratish bilan, ehtimol, loyiha tizim administratori shug'ullanadi, lekin ma'lumotlarni tanlashni o'zingiz mustaqil ravishda amalga oshirishingiz kerak bo'ladi, ko'p marta.
Bundan tashqari, ba'zida kodingiz ma'lumotlar bazasiga barcha ma'lumotlarni kiritmaydi yoki ularni noto'g'ri kiritadi, shuning uchun siz tez-tez ma'lumotlar bazasiga kirib, u yerda nima saqlanishini ko'rishingiz kerak bo'ladi.
Keling, oldingi ma'ruzalarda ko'rib o'tgan ba'zi narsalarni ko'rib chiqaylik.
Ma'lumotlar bazasida sxemani yaratish
SXEMni yaratish uchun yangi sxemani yaratish kerak:
CREATE SCHEMA nomi;
Bu eng oddiy variant. Shu bilan birga, yangi sxema yaratishda ma'lumotlar kodlash formati va boshqa parametrlarni ko'rsatish mumkin.
Agar siz sxemani o'chirishni xohlasangiz, lekin u mavjudligiga ishonchingiz komil bo'lmasa, quyidagi buyruqni bajarishingiz kerak:
DROP SCHEMA IF EXIST nomi;
Siz bu buyruqlarni turli bazalarning backup fayllarida tez-tez uchratasiz, shuning uchun men ularni bu yerda keltiraman.
Joriy sxemani tanlash
Agar sizning SGBDda ko'p sxemalar bo'lsa, turli sxemalarda bir xil jadval mavjud bo'lgan holatga tushishingiz mumkin. Chalkashmaslik uchun quyidagi ikkita ishni qilishingiz mumkin:
- Jadval nomidan oldin har doim sxema nomini ko'rsating
- Sxemani sukut bo'yicha ko'rsating
Keling, user jadvalidan ma'lumotlarni tanlovchi so'rov yozamiz, bu test sxemasida joylashgan. U taxminan quyidagicha bo'ladi:
SELECT * FROM test.user;
Agar bir nechta sxemadan bir nechta jadvallarni birlashtirish (JOIN) kerak bo'lsa, shunchaki bundan qochib bo'lmaydi.
Aytgancha, Java tilida biz ko'pincha shunga o'xshash ishlarni bajarishimiz mumkin: agar kodda turli paketlardagi bir xil nomli sinflarni ishlatishimiz kerak bo'lsa, sinf nomining oldidan paket nomini qo'shamiz.
Ikkinchi usul - bu sukut bo'yicha sxemani ko'rsatish. Agar so'rovda jadval nomi ko'rsatilgan bo'lsa, lekin sxema ko'rsatilmagan bo'lsa, sukut bo'yicha sxema ishlatiladi. Buning uchun USE operatoridan foydalaniladi:
USE sxema-nomi;
Keling, oldingi so'rovni USE operatoridan foydalanib qayta yozaylik:
USE test; SELECT * FROM user;
View yaratish
SQL faqat real ma'lumotlarga ega jadvallarni emas, balki virtual jadvallarni ham saqlash imkoniyatini beradi, ularga real jadvallardan ma'lumotlar tortib olinadi. Bunday virtual jadvallar VIEW deb ataladi.
Bunday jadval haqiqiy ma'lumotlarni saqlay olmaydi va har safar unga murojaat qilinganda haqiqiy jadvallardan olingan ma'lumotlarni qaytaradi. Bunday VIEW ning mazmuni SQL-so'rovi bilan belgilangan.
Har qanday SELECT so'rovidan VIEW yaratishingiz mumkin, quyidagi ko'rinishdagi buyruq yordamida:
CREATE VIEW nomi AS
SELECT-so'rov;
CREATE VIEW public_employee AS
SELECT id, name FROM employee
Berilgan misolda bizning public_employee VIEW jadvallar faqat xodimlarning IDlari va ularning ismlarni saqlaydi, lekin ular haqidagi maosh ma'lumotlari bo'lmaydi. Bunday View larni haqiqiy jadvallar joylashgan joylarda ham ishlatish mumkin.
View lar nima uchun kerak? Ularning bir qator afzalliklari bor:
Ma'lumotlarga kirishni moslashuvchan boshqarish. Siz ma'lum bir foydalanuvchilarga faqat View ga kirish huquqini berishingiz mumkin, lekin jadvallarga kirish huquqini bermaysiz. Va View da faqat jadvallardan umumiy ma'lumotlarni chiqarib turish mumkin. Bundan tashqari, agar kelajakda jadvallarga yangi ustunlar qo'shilsa, ular tasodifan View yga tushib qolmaydi.
Ma'lumotlarni denormalizatsiya qilish. Ma'lumotlarni saqlash uchun, ular ko'pincha yuzlab va minglab jadvallarga bo'linadi, lekin bunday ma'lumotlar bilan oddiy odam oson ishlay olmaydi - juda murakkab so'rovlar yozish kerak bo'ladi. View yordamida biror bir jadvaldagi ma'lumotlarni ko'rsatadigan virtual jadvallar yaratishingiz mumkin, bu esa o'nlab turli jadvallardan tashkil topgan ma'lumotlarni bitta jadval sifatida aks ettiradi.
Polimorfizm va inkapsulyatsiya. Siz ma'lumotlar bazangizning tuzilmalarini o'zgartirishingiz mumkin. Ammo, sizning View lar bilan ishlaydigan dasturning foydalanuvchilari biron bir narsa o'zgarganini seza olmaydi. Va View ga kirish huquqiga ega bo'lgan dasturlar dastur kodini qayta yozishga hojat bo'lmaydi. Faqat View bilan bog'liq bo'lgan SQL-skriptni to'g'rilashingiz kerak bo'ladi.
Faqat o'qish. View ni faqat SELECT so'rov bilan belgilash mumkin, shuning uchun View bilan ishlash real jadvallardagi ma'lumotlarni o'zgartira olmaydi. Aytgancha, bu so'rovlarni kesh qilish foydasiga yana bir plus. Lekin bu haqida biron bir keyingi safar gaplashamiz.
GO TO FULL VERSION