Современные  информационные  технологии/  2.  Вычислительная  техника  и  программирование

 

т.ғ.к., доцент Дүйсенбиев Е.Е., математика магистрі, аға оқытушы Бурлибаева  Ш.М.

 

ДҚБЖ  ЖАЗБАЛАРЫН  ТОПТАУ 

 

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