Sql haqida va buyruqlar
Download 37.5 Kb.
|
SQL haqida va b-WPS Office
SQL haqida va buyruqlar Tuzilami So'rovlar Tili(ing - Structured Query Language=SQL) - Nisbiy ma'lumotlar bazasida(Relational DBMS, qisqartmasi RDBMS) ma'lumotni boshqarish va saqlash uchun ishlatiladigan baza so'rovlar tili hisoblanadi. SQL E.F Codd-ning ma'lumotlar bazasining Relational model-i uchun birinchi taqdim etilgan tijoriy tildir. Bugun deyarli barcha RDMBS-lar(MySql, Oracle, Infomix, Sybase, MS Access) standart baza so'rovlar tili sifatida SQL-ni ishlatadilar. SQL - RDMBS-larda barcha ma'lumot turlari bo'yicha operatsiyalarni amalga oshirish uchun ishlatiladi. SQL buyruqlar SQL RDBMS-da saqlanadigan ma'lumotni boshqarish uchun quyidagi usullarni belgilaydi. DDL: Data Definition Language Bunga jadvalning tuzilishi, jadvalni o'zgartirish, jadvalni o'chirish va boshqalar kabi jadvalning tuzilishidagi o'zgarishlar kiradi. Barcha DDL buyruqlari avtomatik bajariladi. Bu barcha o'zgarishlarni ma'lumotlar bazasida doimiy ravishda saqlashini anglatadi. Buyrug' Ta'rifi create yangi baza yoki ro'yhat yaratish alter o'zgartirish truncate ro'yhatdan ma'lumotni o'chirish drop ro'yhatni tashash rename ro'yhatni qayta nomlash DML: Ma'lumotni boshqarish tili DML buyruqlari jadvalning o'zida emas, balki jadvalda saqlanadigan ma'lumotni boshqarish uchun ishlatiladi. DML buyruqlari avtomatik bajarilmaydi. Bu ma'lumotlar bazasida doimiy emasligini va ularni orqaga qaytarish mumkinligini anglatadi. Buyruq Ta'rifi insert yangi qator qo'shish uchun update mavjud qatorni yangilash delete qatorni o'chirish merge ikkita qatorni yoki ikkita jadvalni birlashtirish TCL: Tranzaktsiyalarni boshqarish tili Ushbu buyruqlar boshqa buyruqlar va ularning ma'lumotlar bazasiga ta'sirini tekshirishni o'z ichiga oladi. Ushbu buyruqlar boshqa buyruqlar tomonidan kiritilgan o'zgarishlarni ma'lumotlarni asl holatiga qaytarish orqali bekor qilishi mumkin. Har qanday vaqtinchalik o'zgarishni doimiy holga keltirishi mumkin. Buyruq Ta'rifi commit doimiy saqlash rollback o'zgarishni ortga qaytarish savepoint vaqtinchalik saqlash DCL: Ma'lumotlarni boshqarish tili Ma'lumotni boshqarish tili - bu ma'lumotlar bazasining har qanday foydalanuvchisidan vakolat berish va qaytarib olish buyruqlari. Buyruq Ta'rifi grant ruxsat berish revoke ruxsatni qaytaib olish DQL: Ma'lumotlar so'rovi tili Ma'lumotlar so'rovi tili biz osonlikcha qo'llashimiz mumkin bo'lgan shartlarga asoslanib jadvallardan ma'lumotlarni olish uchun ishlatiladi. MySQL ga kirish PHP - foydalanuvchi ma'lumotlarini ma'lumotlar omboriga saqlash imkoni mavjud bo'lgan va veb-app(application) larni yaratishda ko'p ishlatiladigan skriptlash tili hisoblanadi. Bu darsda biz ma'lumotlar ombori bilan masofadan turib bog'lash va ro'yhat(table) lar ustida SQL so'rovlarni bajarishni o'rganamiz. Agar SQL so'rovlarni yozishni bilmasangiz, keyingi darslarimiz MySQL darslari bo'lib, o'sha darslarimizda bemalol o'rganishga imkoningiz bo'ladi. Biz MySQL bilan PHP-dan foydalanish uchun mysqli yoki PDO-dan foydalanishimiz mumkin. Bu darsimizda biz 12 tilni va shuningdek, SQL inyeksiyani oldini olish uchun prepared statements(oldindan tayyorlangan buyruqlar)-ni qo'llab-quvvatlaganligi sababli PDO-ni ko'proq yoritamiz. PDO-ni o'rnatish Quyidagi ko'rsatmalarga amal qiling: http://php.net/manual/en/pdo.installation.php MySQL serverga ulash Har qanday so'rovni bajarishdan oldin biz birinchi MySQL serveriga ulashimiz kerak. Quyidagi kod PDO orqali MySQL serveriga ulanish uchun:
// server ma'lumotlar $servername = "localhost"; $username = "username"; $password = "password"; try
{ $conn = new PDO("mysql:host=$servername; dbname=myDB", $username, $password); // istisno holatida PDO xato rejimini o'rnatish $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Muvaffaqiyatli bog'landi"; } catch(PDOException $e) { echo "Ulanishda xatolik: " . $e->getMessage(); } ?>
Bog'lanishni to'xtatish Biz o'zimizga bog'liq ishni bajarib bo'lganimizdan keyin MySQL serveridan aloqani uzish ya'ni to'xtatish bu yaxshi amaliyot. Bu juda oson, shunchaki ulanish obyektimizni null-ga tenglab qo'ysak bo'lgani, quyidagidek: // MySQL server aloqasini uzish $conn = null; ?> Ma'lumot omborini yaratish Ma'lumot ombori ma'lumot saqlanadigan joyda bir yoki undan ko'p ro'yhat(table)-larni o'z ichiga oladi. Biz MySQL-da PDO orqali PHP-dan foydalanib, ma'lumot omborini yaratish uchun CREATE sql so'rovini yozishimiz kifoya. Quyidagi kod:
$servername = "localhost"; $username = "username"; $password = "password"; try
{ $conn = new PDO("mysql:host=$servername", $username, $password); // istisno holatida PDO xato rejimini o'rnatish $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // ma'lumot ombori yaratish uchun sql so'rov $sql = "CREATE DATABASE myDBPDO"; // exec() dan foydalaning, chunki hech qanday natija qaytmaydi $conn->exec($sql); echo "Ma'lumot ombori yaratildi!
} catch(PDOException $e) { echo $sql . " " . $e->getMessage(); } $conn = null; ?> PHP da exception handling mavjud bo'lib, ma'lumotlar omborida SQL so'rovlar bajarish paytida istisnolar duch kelishi ehtimoli yuqori bo'lganligi sababli exception handling, mysqli dan ko'ra yaxshiroq. Xuddi yuqoridagi kodga o'xshab, $sql o'zgaruvchimizda xohlagan SQL so'rovimizni kiritishimiz va exec() funksiyasi orqali so'rovni bajarishimiz mumkin bo'ladi. Ro'yhat(table) yaratish Xuddi yuqoridagi kodimizdagidek, biz ro'yhat ham yaratishimiz mumkin, shunchaki biz $sql o'zgaruvchimizdagi so'rovni CREATE TABLE so'roviga almashtirishimiz kifoya. Quyida User ro'yhatini yaratish va uning ustunlari userid, email, password va fullname-ga namuna mavjud: // ro'yhatni yaratish uchun sql so'rov $sql = "CREATE TABLE User ( userid INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, email VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL, fullname VARCHAR(50) )"; Bu yerda ma'lumot uchun to'liq kod: // MySQL serverga ulash $servername = "localhost"; $username = "username"; $password = "password"; try
{ $conn = new PDO("mysql:host=$servername", $username, $password); // istisno holatida PDO xato rejimini o'rnatish $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // ro'yhatni yaratish uchun sql so'rov $sql = "CREATE TABLE User ( userid INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, email VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL, fullname VARCHAR(50) )"; // exec() dan foydalaning, chunki hech qanday natija qaytmaydi $conn->exec($sql); echo "Jadval muvaffaqiyatli yaratildi "; } catch(PDOException $e) { echo $sql . " " . $e->getMessage(); } // MySQL serverdan uzish $conn = null; ?> Ma'lumotni ro'yhatga kiritish Ro'yhat yaratilishi bilanoq, keyingi qadam uni ichiga ma'lumot kiritish bo'ladi. Ro'yhatga ma'lumot kiritish uchun biz quyidagi maxsus qoidalarga rioya qilishimiz kerak: Agar kiritiladigan qiymat satr bo'lsa, u holda biz uni qo'shtirnoqqa olishimiz kerak bo'ladi. Sonli qiymat qo'shtirnoqqa olinmaydi. NULL qo'shtirnoqqa olinmaydi. Agar jadvaldagi ustun AUTO_INCREMENT bo'lsa, unda biz ushbu jadvalga ma'lumotlarni kiritishimiz shart emas, u avtomatik ravishda jadvalga kiritiladi. SQL so'rov shunday bo'ladi: // ro'yhatga ma'lumot kiritish uchun sql so'rov $sql = "INSERT INTO User (email, password, fullname) VALUES ('john@studytonight.com', 'IKilledBoogieMan', 'John Wick')"; Biz qiladigan ish yuqoridagi so'rovga $sql o'zgaruvchisining qiymatini almashtirish va qolgan kod shundayligicha qoladi, xuddi baza va ro'yhat yaratish kabi. Ro'yhatdan ma'lumotni o'chirish Yuqorida insert SQL buyrug'ini bajarganimizdek, biz ro'yhatdan ma'lumotni delete SQL buyru'gi orqali o'chirishimiz ham mumkin: // ro'yhat ichidagi ma'lumotni o'chirish $sql = "DELETE FROM User WHERE userid=1"; Qolgan to'liq kod qanday bo'lsa shunday qoladi. Ro'yhatdan ma'lumotni tanlash Ro'yhatdan ma'lumotni tanlash boshqa jarayonlarga qaraganda ozgina farq qiladi. Agar biz ro'yhatdan bir necha ma'lumotlar qatorini tanlashimiz kerak bo'lsa, unda biz siklda fetch() metodini ishlatishimiz kerak. Keling, User table-dagi ma'lumotlarni qaytarishimiz uchun namuna ko'ramiz: // User table-da ma'lumotni tanlash uchun sql so'rov $stmt = $conn->prepare("SELECT userid, email, fullname FROM User"); // ma'lumotni saqlash uchun massiv e'lon qilish $data = array(); // sql buyrug'ini bajarish $stmt->execute(); // barcha qatorlarni olish uchun siklga qo'ydik while($row = $stmt->fetch(PDO::FETCH_OBJ)) { $data[] = $row; } // aloqani yopish $conn = null; // ma'lumotni qaytarish return $data; Download 37.5 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling