Мәліметтер қорының кестесіне жаңа ақпаратты қосу процесі әдетте мәліметтерді жүктеу деп аталады. Мәліметтерді жүктеу үшін INSERT операторы пайдаланылады.
Кестеге жаңа жазу қосу
Кестеге жаңа жазу қосу үшін INSERT операторының келесі синтаксистік формасы пайдаланылады:
INSERT INTO имя_таблицы
VALUES (значение_1.значение_2….значение_N)
INSERT операторының бұл формасын пайдаланғанда VALUES тізімінде мәндер саны кесте өрістерінің санына тең ьболуы керек. Және де VALUES тізімінде көрсетілген әдбір мәннің типі, өріс мәліметтерінің типімен сәйкес болуы керек.
Символдық типтер мен даталарға қатысты мәндер апостроф ішінде тұруы тиіс. Мәндер тізімінде NULL мәні де пайдаланылуы мүмкін.
Мысал қарастырайық. СПЕЦИАЛЬНОСТЬ кестесі келесі оператор пайдаланылып құрылған:
CREATE TABLE ДОЛЖНОСТИ (
Код_должности INTEGER NOT NULL PRIMARY KEY
Должность VAR CHAR (50) NOT NULL UNIQUE.
Разряд INTEGER NOT NULL).
Зарплата DECIMAL (7.2) NOT NULL).
Осы кестеге жаңа жазу қосу үшін келесі INSERT операторын пайдаланған жөн:
INSERT INTO Должности
VALUES (12 ‘Ведущий программист’.12.2000.00)
Кестенің жеке өрістеріне мәліметтер енгізу
Кестеге мәліметтер қосқанда барлық өрістерін емес, кейбіреулерін ғана толтыруға болады. Бұл жағдайда INSERT операторының келесі синтаксистік формасы пайдаланылады:
INSERT INTO имя_таблицы (имя_поля_1.имя_поля_2…имя_поля_N)
VALUES (значение_1.значение_2…значение_ N)
Мысалы, СТУДЕНТЫ кестесіне жаңа студент туралы ақпарат қосқанда, студенттің толық аты туралы ақпаратты көрсетсе болғаны. Бұл жағдайда келесі операторды пайдалануға болады:
INSERT INTO Студенты (Номер_зач_книжки.Имя. Фамилия.Отчество)
VALUES (234.’Абылгазина’.’Айнур’.’Кадыровна’)
Бұл оператор орындалғанда басқа барлық өрістерге NULL мәні енгізіледі. Кесте атынан кейін жақша ішінде көрсетілмейтін өрістердің NOT NULL шектеуі болмайды, әйтпесе INSERT операторын орындау талабы табыссыз аяқталады.
Басқа кестедегі мәліметтерді кестеге енгізу
Кейде бір кестедегі ақпаратты екінші кестеге тасымалдау қажет болады. Бұл типтегі операцияларды INSERT опареторымен SELECT мәліметтерді таңдау операторының комбинациясының көмегімен орындауға болады.
INSERT және SELECT операторын біріктіріп, басқа кестеге сұраныс орындалуы нәтижесінде алынатын мәліметтерді кестеге қогсуға болады. Бұл жағдайда INSERT операторының синтаксисі келесі түрде болады:
INSERT INTOимя_таблицы(имя_поля_1.имя_поля_2…имя_поля_N)
FROM имя_таблицы
WHERE условие.
Бұл операторда VALUES сөйлемінің орнына SELECT операторы пайдаланылады. Бұл оператордың синтаксисінің қысқаша түсініктемесі. SELECT сөзінен кейін мәндері таңдамаға қосылатын өрістер тізімі көрсетіледі (егер SELECT кейін * символын көрсетсе, таңдамаға барлық өрістер қосылады).FROM сөйлемі мәліметтерді таңдау орындалатын кестенің атын көрсету үшін пайдаланылады. WHERE сөйлемі міндетті емес және таңдамаға қосылатын мәліметтерге шектеулерді қосу үшін пайдаланылады.
Кесте атынан кейін INSERT операторында жақша ішінде көрсетілетін өрістердің саны таңдамаға қосылатын өріс санына тең болуы керек. Өрістердің сәйкестігі, олардың тізбектелу ретімен анықталады: SELECT операторының тізіміндегі 1-ші өрісі сәйкес келеді және т.с.с.
Кестеде сақталатын мәліметтерді өзгерту
Кестеге енгізіліп қойылған мәліметтерді өзгерту үшін UPDATE операторы пайдаланылады. Бұл опаретор кестеге жаңа жазу қоспайды, бар мәліметтерді жаңаға ауыстырады. UPDATE операторы бір өріске де, бірнеше өрістерге де қолданылуы мүмкін. Өзгертілетін жазулардың саны қолданушы қажеттілігіне тәуелді- UPDATE көмегімен бір немесе бірнеше жазуларды өзгертуге болады.
Кестенің бір өрісіндегі мәліметтерді түрлендіру
Кестенің бір ғана өрісіндегі мәліметтерді өзгерту үшін UPDATE операторының қарапайым формасы пайдаланылады:
UPDATE имя_таблицы
SET имя_поля=значение
[WHERE условие]
UPDATE операторының синтаксистік элементтерінің мағынасы мынадай: UPDATEкілттік сөзінен кейін мәліметтер түрлендірілетін кестенің аты көрсетіледі, SET кілттік сөзінен кейін аты берілген өріске жаңа мәді меншіктеу орындалады. Міндетті емес WHERE сөйлемінің көмегімен берілген шарт, түрлендірілетін жазулар санын анықтайды .
Мысалы, СТУДЕНТЫ кестесінде сақталған факультет студентінің телефон номерін өзгерту қажет болсын. Бұл жағдайда UPDATE операторы бір өрістің және бір жазудың ғана мәнін өзгертуі керек. Сондықтан WHERE сөйлемінде бізге қажетті жазуды таңдайтын шартты көрсету керек. Қарапайым шешімі. «Код_физического_лица» алғашөқы кілтіің өрісін қажетті жазуды таңдауға пайдалану болып табылады. Осы өрісте сақталатын мәнде қызметкерді бірмәнді анықтайды. Онда телефон номерін өзгертуді орындайтын UPDATE операторының түрі келесідей болады:
UPDATE Физические_лица
SET Телефон=(095)2347890
WHERE Код_физического_лица=16
Бұл оператор мәліметтер қорында 146 номерімен тіркелген қызметкерге сәйкес келетін жазу үшін телефон номерінің мәнін өзгертеді. Егер біз жоғарыда келтірілген оператордща шектеулі шартты бермесек, ондла телефон номерінің мәні кестенің барлық жазулары үшін өзгерер еді.
Кестенің бірнеше өрістеріндегі мәндерді өзгерту
UPDATE операторының көмегімен бір уақытта кестенің бірнеше өрістерінің мәндерін өзгертуге болады. Ол үшін SET кілттік сөзінен кейін бір емес, бірнеше өрістерді көрсету керек:
UPDATE имя_таблицы
SET имя_поля_1=значение_1
имя_поля_2=значение_2
…
имя_поля_N=значение_ N
[WHERE условие]
Кестеден мәліметтерді өшіру
Кестеден мәліметтерді өшіру DELETE операторының көмегіен орындалады. Бұл оператор жеке өрістердегі мәліметтерді емес, бүкіл жазуды толығымен өшіреді. DELETE операторының синтаксисі келесідей:
DELETE FROM имя_таблицы
[WHERE условие]
Өшірілетін жазулар міндетті емес WHERE сөйлемінің көмегімен берілген шартқа сәйкес анықталады. WHERE сөйлемі DELETE операторында болмаса, мәліметтер бүкіл кестеден өшіріледі.
Дәріс №15.
Дәріс тақырыбы: Мәліметтер қорының қауіпсіздігін басқару
Мәліметтер қорын басқарудың ең маңызды есептерінің бірі мәліметтердің қауіпсіздігін қамтамасыз ету, яғни мәліметтерді рұқсатсыз пайдаланудан қорғау.
Қолданушылардың артықшылықтары
Артықшылықтары деп қолданушылардың өкілеттік деңгейлерін айтады. Мәліметтер қорында сақталатын ақпараттарға кіру рұқсатын шексіздендіру артықшылықтарының көмегімен реттеледі.
Артықшылықтардың екі түрін бөледі:
-
Жүйелік артықшылықтар;
-
Объектілік артықшылықтар.
Жүйелік артықшылықтар
Жүйелік артықшылықтар мәліметтер қорының пайдаланушысына, оны администрациялаумен байланысты әрекеттерді орындау мүмкіндігін береді: мәліметтер қорының, сондай-ақ жүйелік артықшылықтар мәліметтер қорымен олардың жеке объектілерінің күйін өзгерту хұқын береді.
Мүмкін болатын жүйелік артықшылықтар пайдаланылатын МҚБЖ тәуелді болады. Бірақ кез-келген жағдайда олар мыналарға хұқы бар анықтамаларды қосады:
-
Кестені құру;
-
Ұсыныстарды құру;
-
Сақталатын процедураларды құру;
-
Кестелерді өшіру;
-
Ұсыныстарды жою;
-
Сақталатын процедураларды жою.
Бұл тізім одан әр і қарай кеңеюі мүмкін және де әрбір артықшылықтың әртүрлі МҚБЖ-де өз ерекшеліктері бар.
Объектілік артықшылықтар.
Объектілік артықшылықтар дегеніміз мәліметтер қорының объектілеріне таралатын пайдаланушының өкілеттік деңгейлері. Ол дегеніміз мәліметтер қорының объектілерімен қандай да бір әрекеттерді орындау үшін пайдаланушының сәйкес хұқы болуы керек.
ANSI стандартымен келесі объектілік артықшылықтар қарастырылған:
-
SELECT–көрсетілген кесьеден мәліметтер таңдамасын жүргізуге рұқсат береді;
-
INSERT(имя_поля)-көрсетілген кестенің қандай да бір өрісіне мәліметтерді қосуды орындауға рұқсат береді;
-
INSERT-көрсетілген кестенің барлық өрістеріне мәліметтерді қосуға рұқсат береді;
-
UPDATE(имя_поля)-көрсетілген кестенің берілген өрісінде мәліметтері түрлендіруге рұқсат береді;
-
UPDATE-көрсетілген кестенің барлық өрістерінде түрлендіру жүргізуге рұқсат береді;
-
REFERENCE(имя_поля)-көрсетілген кестенің берілген өрісіне сілтелуге рұқсат береді (бұл артықшылық кез-келген тұтастық шектеуін орнатқан кезде қажет етіледі)
-
REFERENCE- көрсетілген кестенің барлық өрістеріне сілтелуге рұқсат береді.
Мәліметтер қорының кіру рұқсатын басқару
Пайдаланушылардың мәліметтер қорына кіру рұқсатын басқару үшін SQL тілінде екі оператор бар:
Ереже бойынша бұл операторлар мәліметтер қорының администраторымен немесе оның қауіпсіздік бойынша көмекшісімен пайдаланылады.
GRANT операторы
GRANT операторы пайдаланушыға жүйелік және объектілік артықшылықтарды беру үшін пайдаланылады. Бұл операторының синтаксисі келесідей:
GRANT привелегия_1[.привелегия_2]
ON имя_объекта
TO имя_пользователя [WITH GRANT OPTION]
USER атты пайдаланушыға СОТРУДНИКИ кестесінен мәліметтерді таңдау хұқын беру келесі оператордың көмегімен орындалады:
GRANT SELECT
ON СОТРУДНИКИ
TO USER
Бір GRANT операторының көмегімен бірнеше артықшылықтарды беруге болады. Мысалы, келесі оператор USER пайдаланушыға СОТРУДНИКИ кестесінің мәліметтерін қарау және жаңасын қосу хұқын береді:
GRANT SELECT.INSERT
ON СОТРУДНИКИ
TO USER.
Шақырғанда GRANT операторы міндетті емес WITH GRANT OPTION сөйлемін де пайдалануы мүмкін. Бұл сөйлем артықшылық берілетін пайдаланушы осы объектіге артықшылық хұқын алады дегенді білдіреді. Мысалы, егер жоғарыда қарастырылған операторды шақырса, онда USER атты пайдаланушы осы артықшылықтарды басқа пайдаланушыларға беру хұқын алады:
GRANT SELECT.INSERT
ON СОТРУДНИКИ
TO USER
WITH GRANT OPTION
REVOKE операторы
REVOKE операторы пайдаланушыға берілген артықшылықтарды тойтару үшін пайдаланылады. Бұл оператор екі параметрдің біреуімен шақырылады –RESTRICT немесе CASCADE RESTRICT вариантасын пайдаланғанда REVOKE операторы табысты орындалады, егер оның орындалуы қалып-қалған артықшылық пайда болуына әкелмесе.
CASCADE режимін пайдаланғанда басқа пайдаланғанда басқа пайдаланушыларға қалып-қалған барлық артықшылықтар жойылады.
REVOKE операторының синтаксисі:
REVOKE привелегия_1[.привелегия_2]
On имя_объекта
FROM имя_пользователя [RESTRICT/ CASCADE]
Ұсынылатын әдебиеттер:
-
Избачков. Ю.С., Петров В.Н. Информационные системы: Учебникдля вузов. 2-е изд.-СПб.:
-
Информационные технологии управления: Учебное пособие/Под ред. Ю.М.Черкасова.-М.ИНФА-М..2001-216с.
-
Мейер Д. Теория реляционных баз данных: Пер. С анг. М.:Мир.,1987.-608с.
-
Миловзоров В.К. Элементы информационных систем..-М.-Высшая школа.,1989.
-
Морозов В.К. Основы теории информационных систем.-М.:-Высшая школа.1994.
-
С.В. Назаров, И. Першиков и др. Компьютерные технологиии обработки информации: Учебное пособие.- М.:Финансы и статистика.1995.-248с
3. ПРАКТИКАЛЫҚ САБАҚТАРЫ
Практикалық сабақтарының жоспары
Практикалық сабақтарын орындауға арналған әдістемелік нұсқаулар: Әр студент журналдағы аты-жөні бойынша вариант нөмірін анықтап, әр тапсырмадан өз вариантын жазып алуы қажет. Берілген тапсырмаларды орындау талап етіледі. Алынған нәтижелерді анализдеуі керек. Төменде әр тақырып бойынша есептерді шығарудың әдістемелік нұсқаулары келтірілген. Тақырыптар тізімі 2-кестедегі тақырыптық жоспарда келтірілген. Нұсқауда көрсетілген рет бойынша төменде келтірілген тапсырмаларды орындап, мұғалімге тапсыру талап етіледі.
№ 1 практикалық сабағы (1-сағат).
Тақырыбы: РЕЛЯЦИЯЛЫҚ ДЕРЕКТЕР БАЗАСЫ
Әдістемелік нұсқау. SQL ( "СЭКВЭЛ" )-бұл сұраныстардың құрылымды тілі. Бұл кестелерде сақталған байланысқан ақпараттар жиынтығы болып табылатындықтан, реляциялық ДБ-сын құру және жұмыс істеу мүмкіндігін беретін тіл.
SQL-дің стандарты ANSI (Американским Национальным Институтом Стандартов)-мен анықталған және қазіргі уақытта ISO (МЕЖДУНАРОДНОЙ ОРГАНИЗАЦИЕЙ ПО СТАНДАРТИЗАЦИИ)-мен қабылданған.
Реляциялық база деген- бұл екіөлшемді кестеде сақталған байланысқан ақпараттар денесі. Бұл бізге телефон немесе адрес кітабын елестетеді. Кітапта әрқайсысы белгілі бір ерекшелікке сәйкес келетін бірнеше кірулер бар. Әрбір осындай ерекшелік бірнеше тәуелсіз деректер фрагменті болуы мүмкін, мысалы, аты, телефон нөмірі және адрес. Айталық, біз осы адрес кітабын жолдар мен бағандардан тұратын кесте түрінда форматтауымыз керек. Әрбір жол (жазу деп те аталады) анықталған ерекшеліктерге сәйкес келеді; әрбір баған әрбір деректің типінің мәнінен тұрады. Адрес кітабы келесі түрде болады:
Аты Телефон Адрес
Gerry Farish ( 415)365-8775 127 Primrose Ave.,SF
Celia Brock ( 707)874-3553 246 #3rd St.,Sonoma
Yves Grillet ( 762)976-3665 778 Modernas,Barcelona
Бұл алғанымыз РДБ-ның негізі болып табылады. Бірақ РДБ бірнеше кестеден тұрады.
ЖОЛДАРДЫ ЕРЕКШЕЛЕНДІРУ ( БАСТАПҚЫ КІЛТТЕР )
Кестеде әрбір жолды ерекшелендіретін бір баған болуы керек. Негізінде бұл баған нөмірден тұрғаны дұрыс. Әрбір жолды ерекшелендіретін және барлық жолдарды жеке сақтауға пайдаланылатын осындар баған немесе бағандар тобы кестенің бастапқы кілттері д.а. Бастапқы кілттер ДБ құрылымында қажетті элемент болып табылады. Олар файлға жэазуда жүйенің негізі; және кестеден қандай да бір жолды табу керек болса, онда осы бастапқы кілттерге сілтеме жасаймыз.
Бағандар аталады және нөмірленеді. Жолдарға қарағанда, кестенің бағандары (өрісі деп те аталады) реттеледі және аталады.
========= ТИПТІК МӘЛІМЕТТЕР БАЗАСЫ ==========
SQL –ді практикада пайдалану үшін мынада үш кестені қарастырайық: 1.1, 1.2 және 1.3 кестелері реляциялық мәліметтер базасын құрайды.
Кесте 1.1: Сатушылар
-----------------------------------------------------------
SNUM SNAME CITY COMM
-----------------------------------------------------------
1001 Peel London .12
1002 Serres San Jose .13
1004 Motika London .11
1007 Rifkin Barcelona .15
1003 Axelrod New York .10
-----------------------------------------------------------
Кесте 1.2: Тапсырыс берушілер(Тапсырушылар)
----------------------------------------------
CNUM | CNAME | CITY | RATING | SNUM
-------|------------|---------|--------|------
2001 | Hoffman | London | 100 | 1001
2002 | Giovanni | Rome | 200 | 1003
2003 | Liu | SanJose | 200 | 1002
2004 | Grass | Berlin | 300 | 1002
2006 | Clemens | London | 100 | 1001
2008 | Cisneros | SanJose | 300 | 1007
2007 | Pereira | Rome | 100 | 1004
----------------------------------------------
Кесте 1.3: Реттер
-----------------------------------------------
ONUM | AMT | ODATE | CNUM | SNUM
-------|-----------|-------------|------|------
3001 | 18.69 | 10/03/1990 | 2008 | 1007
3003 | 767.19 | 10/03/1990 | 2001 | 1001
3002 | 1900.10 | 10/03/1990 | 2007 | 1004
3005 | 5160.45 | 10/03/1990 | 2003 | 1002
3006 | 1098.16 | 10/03/1990 | 2008 | 1007
3009 | 1713.23 | 10/04/1990 | 2002 | 1003
3007 | 75.75 | 10/04/1990 | 2004 | 1002
3008 | 4723.00 | 10/05/1990 | 2006 | 1001
3010 | 1309.95 | 10/06/1990 | 2004 | 1002
3011 | 9891.88 | 10/06/1990 | 2006 | 1001
-----------------------------------------------
Мысалы, snum өрісі Тапсырыс берушілер кестесіндегі қандай сатушыға осы тапсырыс беруші белгіленгенін көрсетеді. Snum өрісінің нөмірі Сатушылар кестесімен байланысты, ол сатушылар туралы ақпарат береді. Шынында да, тапсырыс берушілер белгіленген сатушы бар болуы керек, демек Тапсырыс берушілер кестесіндегі snum мәні Сатушылар кестесінде берілуі тиіс. Егер солай болса, онда «жүйе анықтамалық бүтіндік жағдайында тұр» деп айтады.
Кесте 1.1 келесі бағандардан тұрады:
ӨРІС МАЗМҰНЫ
--------- ----------------------------------------------
snum әрбір сатушыға белгіленген номер
( " қызметкердің номері" ).
sname сатушының аты
city сатушының орналасқан жері ( қала ).
comm сатушының комиссиондары ондық формада
Кесте 1.2 келесі бағандардан тұрады:
ӨРІС МАЗМҰНЫ
-------- ---------------------------------------------------
cnum әрбір тапсырыс берушіге белгіленген номер
cname тапсырыс берушінің аты
city тапсырыс берушінің орналасқан жері ( қала ).
rating тапсырыс берушінің басқаларға қарағандағы деңгейін көрсететін код.
Жоғары номер жоғарғы деңгейді көрсетеді( рейтинг ).
snum тапсырыс берушіге белгіленген сатушының номері
( Сатушылар кестесінен )
Кесте 1.3 Реттер кестесі мынадай бағандар бар:
ӨРІС МАЗМҰНЫ
--------- ---------------------------------------------------
onum әрбір тапсырысқа белгіленген номер
amt тапсырыстың заттың сомасының мәні
odate тапсырыс уақыты
cnum тапсырыс жасаушы Тапсырушының номері
( Тапсырыс берушілер кестесінен ).
snum тапсырысты сатқан сатушының номері
(Сатушылар кестесінен ).
№ 1 практикалық сабағына арналған тапсырмалар:
1. Тапсырыс берушілер кестесіндегі қай өріс алғашқы кілт болып табылады?
2. Тапсырыс берушілер кестесіндегі 4-ші баған нені білдіреді?
3. Жол басқаша қалай аталады? Баған?
4. Кестенің алғашқы бес жолды көру үшін сұраныс жасамауға болады. Неге?
№ 2 практикалық сабағы (2-сағат).
Тақырыбы: SQL. МӘЛІМЕТТЕРДІҢ ӘР ТҮРЛІ ТИПТЕРІ
Әдістемелік нұсқау. SQL бұл реляционды мәліметтер базасына негізделген тіл. Ол сіз программалаудың универсалды тілін қолданып жасау керек көптеген жұмыстарды жояды, мысалы С тілін. С тілінде реляционды мәліметтер базасын құру үшін бәрін басынан бастау керек болар еді. Сіз кесте деп аталатын объектті анықтап, кез келген жолдар саны болатындай өсуі керек болады, ары қарай оларға бірте-бірте процедуралардың мәнін енгізу және қайтадан шыара алатындай болуы қажет. Егер кейбір жолдарды анықтау үшін сізге келесідей процедураларды қадамдап істеу қажет болар еді :
1. Кестенің жолын қараңыз.
2. Тексеру жүргізіңіз – бұл жол сізге қажетті жолдардың бірі ма.
3. Егер солай болса, кестені толық тексергенше дейін оны басқа бір жерге сақтап қойыңыз.
4. Кестеде басқа жолдар бар ма соны тексеріңіз.
5. Егер бар болса, онда 1 қадам арқа жылжыңыз.
6. Егер жолдар жоқ болса, онда 3-ші қадамда сақталған мәндерді шығарыңыз.
ИНТЕРАКТИВТІ ЖӘНЕ ЕНГІЗІЛГЕН SQL
SQL-дің екі түрі бар: Интерактивті және Енгізілген. Екі формада бірдей жұмыс істейді, бірақ әр түрлі қолданылады. Интерактивті SQL, сіз команданы енгізгенде, ол сол сәтте орындалады және сіз нәтижені бірден көре аласыз (егер ол орындалса). Енгізілген SQL жалпы SQL-дің программаларының ішінде орналасқан командаларынан тұрады, олар жалпы басқа тілде жазылады ( КОБОЛ немесе Паскаль сияқты).
Бұл осы программаларды бұрынғыдан эффектілі және қуатты жасайды. Бірақ, бұл тілдерді қолдана отырып, SQL-дің структурасымен және мәліметтерді басқару стилімен жұмыс істеуге әкеледі, ал ол интерактивті SQL-дің кейбір кеңейтілуін қажет етеді.
======== МӘЛІМЕТТЕРДІҢ ӘР ТҮРЛІ ТИПТЕРІ ========
ANSI SQL стандарты тек қана мәтін және номер типін анықтайды, бұл уақытта коммерциялық программалардың көпшілігі басқа арнайы типтер қолданады. DATA(мерзім) және TIME(уақыт) – іс жүзінде стандартты типтер болып табылады(бірақ олардың нақты форматы өзгертіледі). Кейбір пакеттер мынадай типтерді құрайды, мысалы MONEY(АҚША) және BINARY (ЕКІЛІК). (MONEY – бұл компьютермен қолданылатын санаудың арнайы жүйесі. Компьютерде барлық ақпарат екілік сандармен беріледі және одан кейін біз оларды оңай қолдану және түсіну үшін олар басқа жүйелерге түрленеді).
ANSI , INTEGER(БҮТІН САН) және DECIMAL (ОНДЫҚ САН) ( оларды INT және DEC деп қысқартуға болады ) сандарының екі типі біздің мақсатымыз үшін адекватты болады, сондай-ақ көптеген практикалық іскерлік қолданбалы программалардың мақсаты үшін қолданылады. Шын мәнінде, БҮТІН типті ондық нүктенін оң жағынан ешқандай мән қабылдамайтын ОНДЫҚ САН деп көрсетуге болады.Мәтін жолына жататын - CHAR ( немесе СИМВОЛ ) мәтін үшін тип. CHAR типінің өрісі бүл өріске енгізілуі мүмкін сиволдың максималды санымен анықталатын анықталған өрістен тұрады.
Реализациямен анықталған максимумге дейінгі (әдетте 254 символ) кез-келген ұзындыққа ие бола алатын мәтіндік жол болып табылатын VARCHAR(СИМВОЛОВДЫҢ АЙНЫМАЛЫ САНДАРЫ) деп аталатын стандартты емес типтен бәрінен көп реализацияға ие. CHARACTER және VARCHAR мәндері «текст» бір тырнақшаға алынады. CHAR мен VARCHAR айырмашылығы мынада: CHAR максималды ұзын жолға жеткілікті жады көлемін резервтеу керек, ал VARCHAR жадыны керегінше бөледі.
Символдық типтер баспа символдарынан, сандардан тұрады. Алайда 1 номері және "1" символы бірдей емес. "1" символы – жүйемен 1 сандық мәні ретінде анықталмайтын мәтіннің басқа баспа фрагменті. Мысалы, 1 + 1 = 2, бірақ "1" + "1" "2"-ге тең емес.
№2 практикалық сабағына арналған тапсырмалар:
1. SQL-да берілген типтердің арасындағы негізгі айырмашылықтары қандай?
2. ANSI типі DATA мәліметтерін оқи ма(Распознает) ?
3. SQL-дің қай ішкі бөлімі кестеге мәліметтер орналастыру үшін қолданылады?
4. Кілтті сөз дегеніміз не?
№ 3 практикалық сабағы (2-сағат).
Тақырыбы: SQL-ДІ КЕСТЕДЕН АҚПАРАТТЫ ШЫҒАРУ ҮШІН ҚОЛДАНУ
Әдістемелік нұсқау. СҰРАНЫСТЫ ҚҰРАСТЫРУ
Жоғарыды айтқанымыздай, SQL құрылымдық сұраныс тілін өзімен белгілейді. Сұраныстар – SQL-дағы ең көп қолданылатын аспект болып табылады. SQL категориясының қолданушылары бұл тілді басқадай жұмыс үшін қолдануы мүмкін емес.
Сұраныс – бұл сіз өзініңіздің мәліметтер базасына беретін команда, және ол белгілі бір анықталған ақпаратты кестеден сақтауға жібергені туралы мәлімет береді. Бұл ақпарат жалпы жағдайда компьютер экранына немесе сіз қолданып отырған термиеалға жіберіледі, бірақ көп жағдайда оны принтерге жіберуге, не файл ретінде компьютерде сақтауға болады, басқа команда не процесс үшін енгізу ақпараты ретінде де келтіруге болады.
СҰРАНЫСТАР ҚАЙДА ҚОЛДАНЫЛАДЫ?
Сұраныстар жалпы DML тілінің бөлігі ретінде қарастырылады. Бірақ, сұраныс кестедегі ақпаратты өзгертпейтіндіктен, оны тек қолданушыға көрсетеді, біз сұраныстарды DML командаларының ішіндегі тек мәліметтер базасының мазмұнын ғана емес, өзі іс-әрекет жасайтын категория деп қарастырамыз.
SQL-дағы барлық сұраныстар жалғыз командадан тұрады. Бұл команданың құрылымы алдамшы қарапайым, себебі сіз оны жоғары қиын бағалау және мәліметтерді өңдеу үшін кеңейтіп отыруыңыз керек. Бұл команда - SELECT(ТАҢДАУ).
SELECT КОМАНДАСЫ
Ең жеңіл формада SELECT командасы кестеден ақпарат алу үшін мәліметтер базасын жай ғана бағыттап отырады. Мысалы, сіз Сатушылар кестесін төмендегіні басып шығаруыңызға болады: SELECT snum, sname, sity, comm FROM Salespeople;
Сурет 3.1-де осы сұраныстың нәтижесі көрсетілген.
=============== SQL Execution Log ============
| SELECT snum, sname, sity, comm |
| FROM Salespeople; |
| ==============================================|
| snum sname city comm |
| ------ ---------- ----------- ------- |
| 1001 Peel London 0.12 |
| 1002 Serres San Jose 0.13 |
| 1004 Motika London 0.11 |
| 1007 Rifkin Barcelona 0.15 |
| 1003 Axelrod New York 0.10 |
===============================================
Сурет 3.1: SELECT командасы
Басқа сөзбен айтқанда, бұл команда кестедегі барлық мәліметтерді шығарады. Көтеген программалар жоғарыда көрсетілгендей бағанның атын береді, кейбіреулері нәтижені форматтауға мүмкіндік береді, бірақ бұл стандартты спецификацияның өзімен байланыты болмайды.
Осы команданың әрбір бөлігінің түсіндірмесі бар.
SELECT мәліметтер базасына бұл команда сұраныс екенін жеткізетін кілтті сөз. Барлық сұраныстар осы сөзбен басталады, одан кейін пробел қойылады.
snum, sname бұл сұраныс таңдап алатын бағандар тізімі. Енгізілмеген кез келген баған команданың нәтижесінде қосылмайды. Ол осы көрсетілмеген бағандардағы ақпарат жойылады деген сөз емес, сұраныс тек мәліметтерді ғана көрсетеді.
FROM FROM – кілтті сөз, SELECT сияқты, ол әрбір Salespeople сұранысында көрсетілуі тиіс. Ол пробелдан кейін ақпарат көзі ретінде қолданылатын кестенің аты жазылуы тиіс. Дәл осы жағдайда бұл – Сатушылар кестесі (Salespeople). Үтір-нүкте SQL –дің әрбір интерактивті командаларында қолданылады, ол мәліметтер базасына команда толық және орындалуға дайын деген ақпарат жібереді. Біз сұранысты құрастырудың ыңғайлы жолдарын қарастыруымыз керек, бірнеше жолға ма, әлде бір жолға ма келесі түрде:
SELECT snum, sname, city, comm FROM Salespeople;
SQL үтір-нүктені команданың соңы ретінде қолданғалы бері SQL-дің көптеген программалары пробелді қайтару ретінде қолданады.
ӘРҚАШАН ЖЕҢІЛ ТӘСІЛДІ ТАҢДАҢЫЗДАР
Егер кестенің әрбір бағанын көргіңіз келсе, онда міндетті емес қысқарту бар, оны қолдана аласыз. Жұлдызшаны (*) бағандардың толық тізімін шығару үшінқолдануға болады. Келесі түрде көрсетілгендей:
SELECT * FROM Salespeople;
Бұл алдынғы нәтижеге әкеледі.
SELECT – ТІҢ СИПАТТАМАСЫ
Жалпы жағдайда, SELECT командасы SELECT кілтті сөзінен басталады. Осыдан кейін көргіңіз келген бағандар тізімі жазылуы керек, бір-бірімен үтірмен ажыратылған. Егер сіз барлық бағандарды көргіңіз келсе, онда бұл тізімді жұлдызшамен (*) алмастыруыңызға болады. FROM кілтті сөзі бос орыннан кейін сұраныс жасалынатын кестенің атымен жасалынады. Срңында үтірөнүкте ( ; ) қойылады, ол сұранысты аяқтау үшін қолданылады және команда орындалуға дайындығын білдіреді.
БЕЛГІЛІ БІР КЕСТЕНІҢ БАҒАНЫН КӨРУ
SELECT командасы қатаң анықталған ақпаратты кестеден шығаруға мүмкіндігі бар. Алдымен, біз тек кестенің анықталған бағандарын көрсете аламыз. Ол жеңіл орындалады, ол сіз көргініз келмейтін бағандарды SELECT командасының бөлігінен алып тастау арқылы жүзеге асады. Мысалы, сұраныстан
SELECT sname, comm FROM Salespeople;
Сурет 3.2-де көрсетілген нәтижені аламыз.
=============== SQL Execution Log ============
| SELECT snum, comm FROM Salespeople;
| ==============================================|
| sname comm |
| ------------- --------- |
| Peel 0.12 |
| Serres 0.13 |
| Motika 0.11 |
| Rifkin 0.15 |
| Axelrod 0.10 |
===============================================
Сурет 3.2: анықталған бағандарды таңдау
БАҒАНДАРДЫ ҚАЙТА РЕТТЕУ
Егер анықтама бойынша кестенің бағандары реттелген болса да, ол оларды сол ретте қалпына келтіріп отыру керек деген сөз емес. Әрине, жұлдызша (*) бағандарды өз нақты ретімен көрсетеді, бірақ егер бағандарды жекелей белгілесеңіз, онда көргіңіз келген бағанды еш қиындықсыз көре аласыз. Реттер кестесін қарастырайық, ол сатып алу уақытынан (odate), сатушының номерінен (snum), рет номерінен (onum), және сатып алу құнынан (amt) тұрады:
SELECT odate, snum, onum, amt FROM Orders;
Сурет 3.3-те осы сұраныстың нәтижесі көрсетілген.
============= SQL Execution Log ===============
| SELECT odate, snum, onum, amt FROM Orders;
| ------------------------------------------------|
| odate snum onum amt |
| ----------- ------- ------ --------- |
| 10/03/1990 1007 3001 18.69 |
| 10/03/1990 1001 3003 767.19 |
| 10/03/1990 1004 3002 1900.10 |
| 10/03/1990 1002 3005 5160.45 |
| 10/03/1990 1007 3006 1098.16 |
| 10/04/1990 1003 3009 1713.23 |
| 10/04/1990 1002 3007 75.75 |
| 10/05/1990 1001 3008 4723.00 |
| 10/06/1990 1002 3010 1309.95 |
| 10/06/1990 1001 3011 9891.88 |
===============================================
Сурет 3.3: Бағандардың реконструкциясы
Сіз көріп отырғаңыздай, кестенің ішіндегі ақпараттың құрылымы – бұл SQL-да негізгі активті қайта құрудың негізі.
АРТЫҚ ДЕРЕКТЕРДІ ЖОЮ
DISTINCT (АЙЫРМАШЫЛЫҚ) –сіздің SELECT сөйлеміңіздегі бірдей мәндерді жою үшін қолданылатын аргумент. Нақты осы уақытта сіз сатушылардың Реттер кестесінде қандай орын алатынын білгіңіз келеді делік. Рет деп бұл жерде Реттер кестесіндегі жазуды айтамыз, белгілі бір уақытта белгілі бір тапсырыс беруші қандай да бір белгілі сатушыдан белгілі бір сомаға зат сатып алғаны жөніндегі мәліметтер тіркеледі. Сізге әрбіреуі қанша реті бар екенін білу қажет емес, сізге тек сатушылардың нөмері ғана керек (snum). Сондықтан төмендегідей сұраныс жасайсыз:
SELECT snum FROM Orders;
Сурет 3.4-те берілген нәтижені алу үшін
=============== SQL Execution Log ============
| SELECT snum | FROM Orders;
| ============================================= |
| snum |
| ------- |
| 1007 | 1001 | 1004 | 1002 | 1007
| 1003 || 1002 || 1001 | 1002 |
| 1001 |
=============================================
Сурет 3. 4: SELECT сатушылар номерлерінің қайталануымен.
Көшімесінсіз тізімді алу үшін, жеңіл оқылу үшін төмендегіні теріңіз:
SELECT DISTINCT snum FROM Orders;
Сурет 3.5-те осы сұраныстың нәтижесі көрсетілген.
Басқа сөзбен айтқанда, DISTINCT тізімде бұрын қайталаудын(дублирование) өтпеген мәндерді қарап тексеріп отырады. Бұл – мәліметтердің көбейуін(избыточность) жоятын қажетті тәсіл, бірақ сіз не істеп отырғаныз жайлы толық білсеңіз болды. Егер сіз кейбір мәліметтерден айырылғыңыз келмесе, сіз DISTINCT-ті еш қаперсіз қолдануыңызға болмайды, себебі ол кейбір шешілмеген мәселелерді немесе кейбір маңызды мәліметті жасыруы мүмкін.
DISTINCT-ТІҢ ПАРАМЕТРЛЕРІ
DISTINCT SELECT сөйлемін тек бір рет қана көрсете алады. Егер сөйлем көптеген жолдардан тұрса,
=============== SQL Execution Log ============
| SELECT DISTINCT snum FROM Orders;
| ============================================= |
| snum |
| ------- |
| 1001 |
| 1002 |
| 1003 |
| 1004 |
| 1007 |
=============================================
Сурет 3.5: SELECT дубликатсыз
DISTINCT бірдей мәнді жолдарды жойып отырады. Ал кейбір мәндері ұқсас, кейбір мәндері әр түрлі жолдарды сақтап отырады.
ALL-ДІҢ ОРНЫНА DISTINCT
DISTINCT орнына, сіз ALL-ді қоюыңызға болады. Бұл қарамаөқарсы эффект береді, жолдардың дублированиесі сақталып отырады. Бұл сіз DISTINCT-ті де ALL –ді де қолданбағаңыздағыдай болады, бірақ ALL түсіндіруші рөлін атқарады.
ҚОСЫМШАЛАРДЫ ПАЙДАЛАНУДА ТАҢДАУ
WHERE - SELECT командасының сөйлемі, ол предикаттарды орнатуға мүмкіндік береді, олардың шарттары дұрыс немесе дұрыс емес болуы мүмкін кез келген кестенің бағаны үшін. Команда кестедегі тек осы ұйғарым дұрыс болатын бағандарды ғана шығарады.
Мысалы, сіз Лондондағы барлық сатушылардың аттары мен комиссиондарын көргіңіз келеді. Сіз төмендегі команданы тере аласыз:
SELECT sname, city FROM Salespeople WHERE city = "LONDON";
WHERE сөйлемі берілген кезде, мәліметтер базасының программасы бір-бірлеп барлық кестенің бағандарын қарап өтеді және әрбір жолды тексереді ұйғарымның дұрыстығын тексеру үшін. Демек, Peel жазуы үшін, программа city бағанының ағымды мәнін қарайды, ол "London" екнін анықтайды, және осы жолға нәтижесін шығарады. Serres үшін жазу енгізілмейді, және сола сияқты. Жоғарыда айтылған сұраныстың нәтижесі Сурет 3.6-да көрсетілген.
=============== SQL Execution Log ============
| SELECT sname, city FROM Salespeople | WHERE city = 'London'
| ============================================= |
| sname city |
| ------- ---------- |
| Peel London |
| Motika London |
=============================================
Сурет 3.6: SELECT WHERE сөйлемімен.
WHERE сөйлеміндегі сандық өрісға мысал келтірейік. rating жолы Тапсырыс берушілер кестесіндегі тапсырыс берушілерді кейбір критерийлер бойынша негізгі топтарға бөлу үшін қолданылады, олар кейіннен осы номер арқылы алынады. Мүмкін бұл – кредитті бағалау немесе алдыңғы сатып алынған заттар томына бағалау формасы. Мұндай сандық кодтар реляциялық мәліметтер базалары үшін қиын ақпараттарға қорытынды шығаруға арналған тәсіл ретінде өте маңызды. Біз рейтингісі 100 болатын барлық тапсырыс берушілерді келесі түрдегідей таңдап ала аламыз.
SELECT * FROM Customers WHERE rating = 100;
Жалғыз жақшалар мұнда қолданылмайды, себебі бағалау – ол сандық өріс. Сұраныс нәтижесі Сурет 3. 7-де көрсетілген.
=============== SQL Execution Log ============
| SELECT * |
| FROM Customers |
| WHERE rating = 100; |
| ============================================= |
| сnum cname city rating snum |
| ------ -------- ------ ---- ------ |
| 2001 Hoffman London 100 1001 |
| 2006 Clemens London 100 1001 |
| 2007 Pereira Rome 100 1001 |
=============================================
Сурет 3.7: SELECT предикаттағы сандық өрісімен
№ 3 практикалық сабағына арналған тапсырмалар:
1. Реттер кестесідегі рет нөмірді, соманы және күнді шығаратын SELECT командасын жазыңыз.
2. Реттер кестесіндегі нөмірі 1001-ге тең болатын сатушылардың барлық жолдарын шығаратын сұраныс жазыңыз.
3. Кестені бағандарын мына ретпен city, sname, snum, comm шығаратын сұраныс жазыңыз.
4. San Jose-дегі әрбір тапсырушының атымен бірге оның бағасын(rating) шығаратын SELECT командасын жазыңыз.
5. Реттер кестесінен барлық сатушылардың snum өрісінің мәндерін ағымдағы ретпен қайталаусыз шығаратын сұраныс жазыңыз.
№ 4 практикалық сабағы (2-сағат).
Достарыңызбен бөлісу: |