т.ғ.к., доцент Дүйсенбиев Е.Е., математика
магистрі, аға оқытушы Бурлибаева Ш.М.
MYSQL-дің SELECT
операторы
қайтарылатын
мәндерді
топтауға мүмкіндік береді.
Мысалы, Клиент Абитаев
(K_NOM=1) бірнеше рет
бір тауарға тапсырыс
берген. Сондықтан оның
нөмірі ORDERS кестеде
бірнеше рет кездеседі.
Басқа да клиент
бірнеше тапсырыс беру
мүмкін. K_NOM (клиент
нөмірі) өріс бойынша
барлық жазбаларды топтауға болады, содан кейін
әр клиент тапсырысының соммасын
шығаруға болады.
SELECT KLIENT.FIO, SUM(ORDERS.AMOUNT) AS TOTALSUM
FROM KLIENT, ORDERS
WHERE KLIENT.K_NOM= ORDERS.C_NO
GROUP BY ORDERS.K_NOM;
Топтау SELECT
операторының
бөлігі болатын GROUP
BY оператор көмегімен орындалады. GROUP BY
операторымен
қайтаратын жолдарды таңдауға WHERE
– ге ұқсас HAVING оператор
қолданылады.
HAVING <шарт>
Мысалы, жалпы
соммасы 3000 асатын
тауарларға тапсырыс берген
клиенттердің тізімін шығарайық:
SELECT KLIENT.FIO, SUM(ORDERS.AMOUNT) AS TOTALSUM
FROM KLIENT, ORDERS
WHERE KLIENT.K_NOM= ORDERS.
K_NOM
GROUP BY ORDERS.
K_NOM
HAVING TOTALSUM
> 3000;
Жазбаларды сұрыптау
Кестенің сұрыптауы бастапқы кілт орнатылмай
орындалмайды. Деректер енгізілгеніне қарай бейнеленеді. KLIENT
кестенің шығару нәтижесі бойынша K_NOM өрісі
бойынша сұрыптау үшін
келесі оператор қолданылады (кестенің
өзі
сұрыпталынбайды):
SELECT *
FROM KLIENT
ORDER BY K_NOM;
Кілттер
Мысалы,
KLIENT кестеге жазба
қосылды:
1 Мусаев
Желтоқсан 215 Актау
123456781
Сонымен
қатар,
бұған дейін нөмірі 1 деп Абитаев бекітілген.
Нәтижесінде бұл бір
нөмірі бойынша әр
түрлі клиенттер тіркелген.
Бұндай шатасу болмау
үшін бастапқы кілттер
орнатылады.
ALTER TABLE
CUSTOMER
ADD PRIMARY
KEY (K_NOM);
Бұл сұраныстан кейін K_NOM өрісте тек бірегей мәндер орналасады.
Бастапқы кілт ретінде
NULL мәнді қабылдайтын өрісті
қолдануға
болмайды. Бастапқы кілтті
кесте
құрған
кезде орнтуға болады:
CREATE TABLE KLIENT
(
K_NOM int NOT NULL,
FIO char(50) NOT
NULL,
ADDR char(55) NOT
NULL,
CITY char(20) NOT
NULL,
PHONE char(8) NOT
NULL,
PRIMARY KEY
(C_NO);
);
ORDERS кестеде
тапсырыстар туралы ақпарат орналасқан.
Бұл кестенің K_NOM
өрісі бойынша тапсырыс
берушіні табуға болады.
Мысалы, KLIENT кестеде
жоқ мәнді ORDERS
кестеге енгізілді. Кім
тапсырыс бергені белгісіз.
Бұндай әрекет болмау
үшін келесі сұранысты орындау керек:
ALTER TABLE
ORDERS
ADD FOREIGN KEY(K_NOM)
REFERENCES KLIENT;
ORDERS кестеге
енгізілген K_NOM клиенттердің нөмірлері
KLIENT кестеде де
болу керек. Осылай,
T_NO өрісі бойынша
қосымша сыртқы кілт
орнатуға болады.
ALTER командасы
кілттерді орнатумен бірге
кестені жалпы өзгертуге қолданылады:
өріс қосуға немесе
әр өріс бойынша
допустимых мәндер тізімі:
ALTER TABLE KLIENT
ADD ZIP char(7)
NULL;
Бұл оператор
KLIENT кестеге char
типті ZIP жаңа өріс
қосады. Бірақ, деректер
орналасқан кестеге NOT
NULL мәнді жаңа
өріс
қосуға болмайды. Мысалы,
егер комапания тек
Астана немесе Актау
қалалармен
жұмысты атқарып жатса,
онда KLIENT кесте
үшін допустимых мәндер тізімін енгізуге тиімді:
ALTER TABLE
KLIENT
ADD CONSTRAINT
INVALID_STATE SHECK (CITY
IN ('Астана', 'Актау'));
ПАЙДАЛАНҒАН
ӘДЕБИЕТТЕР
1.
Конноли Т., Бегг
К. Базы данных:
проектирование, реализация, сопровождение. Теория и практика.
3-е изд. М.:
Вильямс, 2008
2.
Виктор Гольцман. MySQL
5.0. Библиотека программиста. СПб.: Питер.-253б
3.
http://www.mysql.com MySQL
Databases