Sql



Жоспар
1. SQL сұраныс тілі
2. Ақпараттарды басқару операторлары
3. Қолданылған әдебиеттер.
SQL тілі қазіргі кезде мәліметтер қорын басқару жүйесінің бірден-бір стандартты тілі болып табылады. SQL – Structured Queries Language сөзініңқысқартылған түрі, аударылғанда сұраныстың құрылымдық тілі дегенді білдіреді. SQL тілі реляциялық типтегі мәліметтермен жұмыс істеуге арналған. Ол реляциялық МҚБЖ пайдаланушы істейтін барлық негізгі мүмкіндіктерді жүзеге асырады:
мәліметтерді ұйымдастыру - мәліметтер қорының құрылымын құру және өзгерту;
мәліметтерді оқу; кешені.
мәліметтерді өңдеу - мәліметтерді қосу, өзгерту және өшіру;
мәліметтерге кіру мүмкіндігін басқару - мәліметтерді оқу және өзгерту үшін пайдаланушыға шектеу мүмкіндіктерін беру;
мәліметтерді бірге пайдалану - бірнеше пайдаланушылар мәліметтерді жалпы пайдалану;
мәліметтердің бүтіндігі - жүйе істен шыққанда немесе басқа жағдайларда бұзылудан мәліметтерді қорғау;

SQL тілі келесі DML, DDL яғни кіру мүмкіндігін басқару,транзакциямен басқару топтарынан тұратын командалар жүйесінен тұрады;
DML (Date Manipulation Language) мәліметтерді өзгерту тілі;
SELECT – мәліметті оқуға сұраныс;
INSERT – мәліметтер қорында жаңа жазбаларды енгізу (қосу);
DELETE – мәліметтер қорында жазбаларды өшіру;
DDL (Date Definition Language) мәліметтерді анықтау тілі;
CREATE TABLE – жаңа кесте құру,оның құрылымын сипаттау;
DROP TABLE – кестені өшіру;
Кіру мүмкіндігін басқару
DROP INDEX – индексті жою;
GRANT – пайдаланушыға шектеу мүмкіндігін беру;
REVOKE – пайдаланушыға шектеу мүмкіндігін алып тастау;
Транзакцияны басқару
COMMIT-транзакцияны аяқтау;
ROLLBACK-транзакцияны алып тастау;

Пайдаланушы не интерактивті режимде,немесе программада SQL сұранысын МҚБЖ –ға жібереді.Нәтижесінде МҚБЖ МҚ-н қарап шығады,мәліметтерді сәйкес түрде өңдеп және сұралып тұрған ақпаратты пайдаланушыға кесте түрінде береді.
SQL- тілі мәліметтер базасындағы кестелер мен және кестедегі мәліметтермен жұмыс істейтін іс- әрекеттерді орындауға бағытталған.
Бұл тілдің процедуралық программалау тілдерінен айырмашылығы,
SQL- тілінде енгізу- шығару құралдары және есептеу үрдісін басқару (цикл,көшу,тармақталу) нұсқалары жоқ.
Қолданылған әдебиетттер.
Ульман Д. ВВедение в системы баз данных.-М..2000
Кузин А.В., Демин В.М.Разработка баз данных в системе MicrosoftAccess:
Учебник – Учебник – м.: Форум: Инфра-М, 2005г.
. Дейт К. Введение в систему баз данных. Наука, 1990г.
Джеймс Р. Грофф, Пол Н. Вайнберг SQL - полное руководство. Перевод, Киев1999г.
Дж.Мартин Организация баз данных в вычислительных системах. М, Наука 1980г.
Наумова М.А. Системы управления базами данных и знаний. Высшая школа,1992г.
Диго С.М. Проектирование баз данных. Финансы и статистика, 1990г.
Мейс С. Использование языка SQL обеспечивает возможность объединения баз данных, в мире компьютеров, № 2, 1988 г.
Золотова С.И. Практикум по Access. Финансы и статистика, Москва,2000.
Робинсон С. Access 2000. Учебный курс.

Жоспар
1. SQL сұраныс тілі
2. Ақпараттарды басқару операторлары
3. Қолданылған әдебиеттер.

SQL тілі қазіргі кезде мәліметтер қорын басқару жүйесінің бірден-бір
стандартты тілі болып табылады. SQL – Structured Queries Language
сөзініңқысқартылған түрі, аударылғанда сұраныстың құрылымдық тілі дегенді
білдіреді. SQL тілі реляциялық типтегі мәліметтермен жұмыс істеуге
арналған. Ол реляциялық МҚБЖ пайдаланушы істейтін барлық негізгі
мүмкіндіктерді жүзеге асырады:
мәліметтерді ұйымдастыру - мәліметтер қорының құрылымын құру және өзгерту;
мәліметтерді оқу; кешені.
мәліметтерді өңдеу - мәліметтерді қосу, өзгерту және өшіру;
мәліметтерге кіру мүмкіндігін басқару - мәліметтерді оқу және өзгерту үшін
пайдаланушыға шектеу мүмкіндіктерін беру;
мәліметтерді бірге пайдалану - бірнеше пайдаланушылар мәліметтерді жалпы
пайдалану;
мәліметтердің бүтіндігі - жүйе істен шыққанда немесе басқа жағдайларда
бұзылудан мәліметтерді қорғау;

SQL тілі келесі DML, DDL яғни кіру мүмкіндігін басқару,транзакциямен
басқару топтарынан тұратын командалар жүйесінен тұрады;
DML (Date Manipulation Language) мәліметтерді өзгерту тілі;
SELECT – мәліметті оқуға сұраныс;
INSERT – мәліметтер қорында жаңа жазбаларды енгізу (қосу);
DELETE – мәліметтер қорында жазбаларды өшіру;
DDL (Date Definition Language) мәліметтерді анықтау тілі;
CREATE TABLE – жаңа кесте құру,оның құрылымын сипаттау;
DROP TABLE – кестені өшіру;
Кіру мүмкіндігін басқару
DROP INDEX – индексті жою;
GRANT – пайдаланушыға шектеу мүмкіндігін беру;
REVOKE – пайдаланушыға шектеу мүмкіндігін алып тастау;
Транзакцияны басқару
COMMIT-транзакцияны аяқтау;
ROLLBACK-транзакцияны алып тастау;

Пайдаланушы не интерактивті режимде,немесе программада SQL сұранысын МҚБЖ
–ға жібереді.Нәтижесінде МҚБЖ МҚ-н қарап шығады,мәліметтерді сәйкес түрде
өңдеп және сұралып тұрған ақпаратты пайдаланушыға кесте түрінде береді.
SQL- тілі мәліметтер базасындағы кестелер мен және кестедегі мәліметтермен
жұмыс істейтін іс- әрекеттерді орындауға бағытталған.
Бұл тілдің процедуралық программалау тілдерінен айырмашылығы,
SQL- тілінде енгізу- шығару құралдары және есептеу үрдісін басқару
(цикл,көшу,тармақталу) нұсқалары жоқ.

SQL-сұранысының екі түрі бар:
1. Статикалық
2. динамикалық
Статикалық SQL- сұранысы өңдеу кезеңінде бастапқы кодқа қосылады
және қосымшаның орындалу үрдісінде өзгермейді. ¤ңдеуші текстініде басқа
параметрлер болса,сол параметрлердің көмегімен ғана SQL- сұранысты
өзгертуге болады.
Динамикалық SQL- сұраныстың коды қосымшаның орындалу үрдісінде
өзгереді немесе қалыптасады. Мұндай сұраныс қолданушының іс-
әрекеттерін ескеру керек деген жағдайларда ғана қолданады.
SQL- тілінің бірнеше стандарттары бар. Соның ішінде ең көп тараған
стандарттар SQL -89 және SQL-92.
Америка ұлттық стандарттар институты (ANSI,American National
Standards Institute) және стандарттау бойынша Бүкіл әлемдік ұйымы
(ISO,International Standards Organization) бірігіп қолданған SQL-92
стандартын,басқаша ANSI немесе ANSIISO деп те атайды.
SQL-тілінде төмендегідей көптеген негізгі нұсқауларды көрсетуге болады:
Мәліметтерді анықтау;
Мәліметтерді өңдеу;
Мәліметтерге қатынас құруды басқару;
Транзакциямен басқару;
SQL- тілі нұсқасының негізгі мүмкіншіліктері;
Бұл нұсқаны SQL-92 стандарттарынан бірнеше айырмашылығы бар.
Delphi қосымшаларында BDE-механизімін пайдаланып, SQL-
нұсқаларын орындау үшін,Query мәліметтерін пайдалануға болады. SQL-
сұранысының тексті Query компонентінің SQL-қасиетінің мәні екендігін
және ол қосымшаны әзірлеу барысында немесе орындалу барысында
қалыптасатындығын ескерте кеткен жөн.Query компоненті SQL-
сұранысының орындалуын және сәйкес мәліметтер қатарын алуын қамтамассыз
етеді.
Мәліметтер қабылдауда ұйымдастыру Active қасиетінің мәні True болғанда
немесе Open әдісін шақыру арқылы Query компонентін активизациялау кезінде
ғана орындалады.

SQL- тілінің басқада программалау тілдері секілді өзіндік функциялары бар.
Ең көп қолданылатындары:
Агрегатық немесе статистикалық функциялар:
AVG () -(орташа мән)
MAX ()-(ең үлкен мән)
MIN ()-(ең кіші мән)
SUM ()-(сумма)
COUNT ()-(мәндердің саны)
COUNT ()-(нөлге тең емес мәндердің саны)
Жолдармен жұмыс істейтін функциялар:
UPPER (str)-( str жолының символдарының жоғары регисторға
ауысуы);
LOWER (str)-( str жолының символдарының төменгі регисторға
ауысуы);
TRIM (str)-( str жолының бастапқы және соңғы бос орындарын
жою);
SUBSTRING (str From n1 to n2)-(str n1 n2)-( str жолында n1
симвлоынан басталып n2 символынан аяқталатын символдарды
белгілеу);
CAST (ExpressionAS Type)-(Expression өрнегін Type типіне
келтіру);
Уақыт пен күннің жадын декодтау функциялары;
EXTRACT(элементFromөрнек)(уақыт пен күннің жадынан тұратын
өрнектен,элементке сәйкес келетін мәнді алуға болады)
Қәзіргі кезде SQL2 және SQL3 стандарттары кеңінен таралған.
SQL-тілінің элементтері:
- кілттік сөз;
- аты;
- тұрақтылар;
- мәліметтер типі;
- функциялар;
- өрнектер.
Кілттік сөз-бұл ағылшын тілінің белгіленген жиыны,ол сұраныстың типін және
бұл сұраныстың орындалуы үшін қажетті ақпараттарды анықтайды.
Команда бір немесе бірнеше сөйлемнен тұрады,олардың әр қайсысы кілттік
сөзден басталады.
SQL1-де 100 кілттік сөз қоры бар,ал SQL2-де 300 сөз қоры бар.
Атаулар-таблицаны белгілеу үшін пайдалынылады.
Аты- кесте атын,кесте бағанының атын,мәліметтер қорының атын белгілеу үшін
қолданады.
Команда таблицаларға және бағандарға ауысу кезінде олардың аттары
көрсетіледі.

Құрылған SQL тілін пайдалану арқылы программалау. Ақпараттарды басқару
операторлары.
SQL89 стандартындағы сұраныс құрылысы туралы толық әрі нақты таныту
үшін синтаксистік ережелерден бастау қажет:
cursor specification ::=
   query expression [order by clause]
query expression ::=
   query term
  query expression UNION [ALL] query term
query term ::=
   query specification
  (query expression)
query specification ::=
   (SELECT [ALL DISTINCT] select list table expression)
select statement ::=
   SELECT [ALL DISTINCT] select list
   INTO select target list table expression
subquery ::=
   (SELECT [ALL DISTINCT] result specification
   table expression
table expression ::=
   from clause
  [where clause]
  [group by clause]
  [having clause]
 
Тіл синтаксистік конструкциясның үш типін жібереді. Олар SELECT тірек
сөзінен басталады: курсор спецификациясы (cursor specification), іріктеу
операторы (select statement) және ішкісұраныс (subquery). Осыландың
ішіндегі ең негізгісі кестелі көрініс (table expression) синтаксистік
конструкциясы.
Кестелі көріністің семантикасы from, where, group by и having
тарауларын кезекті қолдануға негізделеді. From тарауында тапсырылған
кестелерден нәтижелі жаңа кестелер туындайды. Кесте жолдарының тәртібі
анықталмаған және дубликаттары болатын жолдар арасындағы тәртіпте
қамтылмаған (яғни жалпы алғанда кестелі көріністің кесте-нәтижесі мультикөп
жолдардан құралады). Негізінен, кестелі көріністің құрылымы SQL89сұраныс
тілінің құрылымына ұқсас келеді. Біз кестелі көрініс тарауының мазмұны мен
құрылымын төменде тереңінен қарастыратын бтоламыз, ал қазір кестелі
көрініске енетін үш құрылымды нақтырақ талқылап көрелік.
Курсорлар. Динамикалық және статикалық SQL. Сақталған процедуралар.
Бұл топтың операторлары бірнеше курсорлармен жұмыс жасаған
операцияларды біріктіреді, оның хабарламасы құрылған SQL бағдарламасында
немесе модулінде сақталуы тиіс.
Курсор хабарламасының операторы
Ыңғайлы болу үшін бұл жерде біз алда айтылып өткен курсор хабарламасының
синтаксистік ережелерін қайталап өтейік:
declare cursor ::=
   DECLARE cursor name CURSOR FOR cursor specification
cursor specification ::=
  query expression [order by clause...]
query expression ::=
  query term
query expression UNION [ALL] query term
query term ::= query specification (query expression)
order by clause ::=
   ORDER BY sort specification
  [{,sort specification}...]
sort specification ::=
{ unsigned integer column specification }
[ASC DESC]
 
Курсор хабарламасында UNION операциясын орындау мүмкіндігінің жалпы
түріне сұраныс жасалуы ықттимал және соңғы нәтижені сұрыптауға сұраныс
берілуі мүмкін. Бұл оператордың орындалуы мүмкін емес, ол тек курсор атауын
курсор қасиеттерімен байланыстырады.
Курсорды ашу оперторы
Оператор мынадай синтаксистік ережелермен сипатталады:
open statement ::= OPEN cursor name
Құрылған SQL реализациялау үшін әдетте курсордың хабарламасы курсорды
ашу операторымен алдын ала мәтін жағынан сәйкестендірілуін талап етеді.
Курсорды ашу операторы тапсырылған курсормен тікелей байланысты орындалатын
операторлар сериясында бірінші болып жүзеге асуы тиіс. Бұл операторды
орындау барысында курсордың ол жұмысқа дайындалу сәті жүргізіледі. Жеке
алғанда, нақ осы сәтте курсор қасиетінің негізгі SQL тілінде ауысқан
мағыналарымен байланысы орын алады.
SQL тілін реализациялау көбінесе курсорды ашу операторын орындау
барысында жүзеге асырылады және оның нәтижесі курсор қасиеттерінің
компиляциясына әкеліп тірейді.
Келесі операторларды ашық курсор аясында еркін орындауға
болады. Курсордың кезекті жолдарын оқу операторы
Оқу операторының синтаксисі мынадай:
fetch statement ::=
   FETCH cursor name INTO fetch target list
fetch target list ::=
  target specification[{,target specification}...]
Оқу операторында курсордың аты және INTO тарауы міндетті түрде
белгіленеді. Бұл тарауда бұйыру (белгілеу) қасиеттерінің тізімі беріледі.
Бұйыру тізімінде көрсетілген сандар мен ақпарат типтері курсор
спецификациясындағы іріктеу тізімінің сандары мен ақпарат типтеріне
толықтай сәйкес келуі тиіс.
Кез келген ашық курсор әрқашан мынадай позицияда болады: ол нәтиже
беретін кестенің кейбір жолдарының алдында белгіленуі мүмкін. (бірінші
жолдың алдында немесе курсор ашылғаннан кейін артынша). Яғни кейбір нәітиже
жолдатрының алдында немесе нәтиженің соңғы жолынан кейін.
Егер курсор нұсқап отырған кесте бос күйінде болса, немесе курсор соңғы
жолға не содан кейін белгіленсе, онда оқу операторын орындау кезінде курсор
соңғы жолдан кейін орындалады, SQLCODE параметріне  мағына енеді, INTO
тарауында бірегейленген барлық мағыналар бүтіндей ене алмайды.
Егер курсор кесте жолының алдында белгіленсе, онда ол нақ сол жолда
орындала береді және сол жолдың мағынасы сәйкес мақсаттарына ыңғайланып
жүзеге асырыла береді.
Егер курсор r жолында белгіленсе, яғни соңғы жолдан ерекшенетін қатарда
белгіленсе, онда курсор r жолынан кейінгі келесі қатарда орындалады және
оның мағынасы сол келесі қатарда мақсаттарына сәйкес жүзеге асырылады.
Бір ғана мәселе туындайды, мағынасы айқындалмаған курсорды қалай
параметрлеуге болады немесе кезекті жол қатарынан таңдалып алынған
мағыналардың қайсысы айқындалмаған деп саналады деген сұрақты анықтауға
мүмкіндік туады. SQL89 операторында бұл мәселелер индикаторлы параметрлер
мен ауыспалы параметрлерді пайдалану есебінен шешіледі. Егер АҚБЖ-нің басты
бағдарламаларынан алынатын мағыналар немесе АҚБЖ-ндегі негізгі
бағдарламалардан қабылданатын мағыналар айқындалмаған мағыналар боулы
мүмкін, және бұл факт қолданбалы программистік қызығушылығын оятса, онда
параметрдің спецификациясы немесе SQL операторындағы өзгерістер мынадай
түрде көрініс табады: parameter name[INDICATOR]parameter name - бұл
параметр спецификацияс кезінде орындалса, embedded variable
name[INDICATOR]embedded variable name - операторлардың өзгеру
спецификациясы кезінде орындалады.  Индикаторлы параметрдің теріс мағынасы
немесе индикаторлы өзгерістердің теріс мағынасы айқындалмаған мағына
параметріне немесе ауыспалы мағына параметрлеріне сәйкес келуі тиіс.
Шептік (позициялық) жою операторы.
Бұл оператордың синтаксисі келесідей:
delete statement: positioned ::=
   DELETE FROM table name
   WHERE CURRENT OF cursor name
Егер операторда көрсетілген курсор ашық болып, бірнеше жолдарға
белгіленген болса, және курсор өзгермейтін кестені танытатын болса, онда
курсордың ағымдық қатары жойылады, ал ол келесі қатардың алдынан орын
алады.  DELETE операторының FROM тарауында көрсетілген таблица курсор
спецификациясындағы FROM тарауының сыртқы шебіне көрінетін таблица болуы
тиіс.
Шептік (позициялық) модификация операторы
Оператор мынадай синтаксистік ережелермен сипатталады:  
update statement: positioned ::=
   UPDATE table name
   SET set clause:positioned
[{,set clause:positioned}...]
   WHERE CURRENT OF cursor name
set clause: positioned ::=
  object column:positioned =
{ value expression NULL }
object column: positioned ::= column name
 
Егер ашу курсор операторында белгіленіп, бірнеше кесте жолында көрініс
тапқан болса, және курсор өзгермелі кестені белгілейтін болса, онда
курсордың ағымдық қатарлары  SET тарауына сәйкес модификацияланады. Курсор
позициясы өзгермейді. DELETE операторындағы FROM тарауында белгіленген
кесте курсор спецификациясындағы FROM тарауының сыртындағы кестемен сәйкес
келуі тиіс.
Курсорды жабу операторы
Осы оператордың синтаксисі мынадай:
close statement ::= CLOSE cursor name
Егер осы операторды орындау сәтінде курсор ашық күйінде қалса, онда
оператор курсорды жабық күйге келтіреді. Бұдан кейін курсормен жұмыс жасау
үшін тек OPEN операторын ғана орындау тиісті болады.
Курсор арқылы орындалатын SQL динамикалық операторымен жұмыс жасау.
Аталмыш операторларды пайдалану үшін SQL стандартындағы курсорлардың
механизмін кеңейтуге тура келеді. Бірінішден, курсорды анықтау кезінде
курсордың тек литеральді қасиеттерін ғана көрсетіп қоймай, сондай-ақ
PREPARE операторының көмегімен енгізілген оператордың атын белгілеуге
болады. (бұл жағдайда PREPARE операторының мәтіні одан жоғары тұрған
DECLARE операторының бойында болуы тиіс). Бұнымен қоса, DECLARE
операторының толық синтаксисі мынадай болады:
declare cursor ::=
   DECLARE cursor name CURSOR
   FOR { cursor specification statement-name }
Статикада бұндай курсорлар үшін ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
SQL негіздері
SQL Server
SQL тілі туралы ақпарат
SQL кестелеріндегі мәліметтердің модификациясы
SQL-дің жүйелік құрылым және мәліметтер базасында қолданылуы
Sql-тілі
Ақпараттық жүйелерде қолданылатын кесте техникасының рөлі
Компьютерлік техниканың даму сатысы
SQL тілінің стандарты
Oracle мәліметтердің объектілі типтері
Пәндер