Файл: 02. 09. 2010 1 басылым 03. 09. 2013 2 басылым.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.11.2023

Просмотров: 83

Скачиваний: 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 болатын барлық тапсырыс берушілерді келесі түрдегідей таңдап ала аламыз.