Amaliy Mashg`ulot № 2
Mavzu: Standart funksiyalardan foydalanib so’rovlar yaratish.
Ishdan maqsad: Standart funksiyailardan foydalanish bo`yicha ko`nikmaga ega bo`lish.
Masalani qo`yilishi: Berilgan predmet soha ma`lumotlar bazasidagi barcha ob`yektlarni ustida standart funksiyalardan foydalanib amallarini bajarish.
Jadvallarga satr yoki satrlar qo`shish uchun quyidagi kodlardan foydalaniladi:
Insert into jadval_nomi values (satr_nomi)
Jadvallardan satrlarni o`chirish uchun quyidagi kodlardan foydalaniladi (bu holatda biror bir ustundan ma’lumot tanlab olinadi va o`sha ma’lumot bo`lgan satr o`chiriladi):
Delete from jadval_nomi where ustun_nomi=’malumot’
Jadvallardagi ma’lumotni o`zgartirish uchun quyidagi kodlardan foydalaniladi:
Update jadval_nomi set ustun_nomi=’malumot’ where ustun_nomi=’malumot’;
Ustun tipini o’zgartirish:
Alter table jadval_nomi modify ustun_nomi tipi;
Ustun nomini o’zgartirish:
Alter table jadval_nomi change column mavjud_ustun_nomi yangi_ustun_nomi tipi;
Ichki kalitni qo’shish:
Alter table jadval_nomi add primary key (ustun_nomi);
Ichki kalitni o’chirish:
Alter table jadval_nomi drop primary key;
Tashqi kalitni qo’shish:
Alter table jadval_nomi add foreign key (ustun_nomi) references jadval_nomi(ustun_nomi);
Saqlangan funktsiyani yaratish uchun siz CREATE FUNCTION iborasidan foydalanasiz.
Quyida yangi saqlangan funktsiyani yaratish uchun asosiy sintaksis ko'rsatilgan:
DELIMITER $$
CREATE FUNCTION function_name(
param1,
param2,…
)
RETURNS datatype
[NOT] DETERMINISTIC
BEGIN
-- statements
END $$
DELIMITER ;
MySQL CREATE FUNCTION misoli
Saqlangan funktsiyani yaratish misolini olaylik. Namoyish uchun namunaviy ma'lumotlar bazasidagi mijozlar jadvalidan foydalanamiz.
Quyidagi CREATE FUNCTION iborasi kredit asosida mijoz darajasini qaytaruvchi funksiya yaratadi
DELIMITER $$
CREATE FUNCTION CustomerLevel(
credit DECIMAL(10,2)
)
RETURNS VARCHAR(20)
DETERMINISTIC
BEGIN
DECLARE customerLevel VARCHAR(20);
IF credit > 50000 THEN
SET customerLevel = 'PLATINUM';
ELSEIF (credit >= 50000 AND
credit <= 10000) THEN
SET customerLevel = 'GOLD';
ELSEIF credit < 10000 THEN
SET customerLevel = 'SILVER';
END IF;
-- return the customer level
RETURN (customerLevel);
END$$
DELIMITER ;
Funktsiya yaratilgandan so'ng uni MySQL Workbench da Funktsiyalar bo'limi ostida ko'rishingiz mumkin:
Yoki siz Klassik modellar maʼlumotlar bazasida saqlangan barcha funksiyalarni SHOW FUNCTION STATUS yordamida quyidagi tarzda koʻrishingiz mumkin:
SHOW FUNCTION STATUS
WHERE db = 'classicmodels';
Quyidagi bayonot CustomerLevel saqlangan funksiyasidan foydalanadi:
SELECT
customerName,
CustomerLevel(creditLimit)
FROM
customers
ORDER BY customerName;
Saqlangan protsedurada saqlangan funksiyani chaqirish
Quyidagi bayonot CustomerLevel() saqlangan funksiyasini chaqiruvchi yangi saqlangan protsedura yaratadi:
DELIMITER $$
CREATE PROCEDURE GetCustomerLevel(
IN customerNo INT,
OUT customerLevel VARCHAR(20)
)
BEGIN
DECLARE credit DEC(10,2) DEFAULT 0;
-- get credit limit of a customer
SELECT
creditLimit
INTO credit
FROM customers
WHERE
customerNumber = customerNo;
-- call the function
SET customerLevel = CustomerLevel(credit);
END$$
DELIMITER ;
Quyida GetCustomerLevel() saqlangan protsedurasini qanday chaqirish ko'rsatilgan:
CALL GetCustomerLevel(-131,@customerLevel);
SELECT @customerLevel;
Xulosa:
Xulosa qilsam ushbu amaliy mashg`ulotida ma`lumotlar bazasida Standart funksiyalar bilan ishlash bilan o`z tajribamni yanada mustahkamlab yanda oshirdim.
Do'stlaringiz bilan baham: |