Мәліметтер қоры және ақпараттық жүйелер
SQL тілінің стандарты және жүзеге асуы
Деректер
көлемінің артуы, оларды сақтау және өңдеу қажеттілігі әртүрлі компьютерлік жүйелерде қолдана алатын деректер қорының стандартты тілінің пайда болуына әкелді. Шынымен де, оның көмегімен деректердің қай ортада болмасын, желілік жұмыс бекеті болсын, дербес компьютер болсын барлығында да жұмыс істеуге мүмкіндік береді. Деректердің реляциялық үлгісінің құрылуы нәтижесінде пайда болған тілдердің бірі SQL тілі (Structured Query Language), осы тіл деректер қорын басқарудың стандартты тіліне айналды және кең таралды. SQL тіліне стандарт 1986 жылы Стандарттардың Америкалық Ұлттық Институтымен (ANSI) шығарылды, ал 1987 жылы Стандарттардың Халықаралық Ұйымы (ISO) оны халықаралық ретінде қабылдады. Қазіргі стандарт SQL/92 деген атпен әйгілі. Кез-келген стандартарды қолданумен көптеген артықшылықтар мен анықталған кемшіліктер байланысты. Стандарттар ең алдымен сәйкес индустрияны дамуын анықталған бағытқа жол сілтейді: SQL тілінің жағдайында қатаң негізді құрайтын қағидаттардың болуы соңында оның әртүрлі жүзеге асырулардың сәйкестігіне әкеледі және бағдарламалық қамтама мен деректер қорын жылжымалы
қолдануын жоғарылатуға, сонымен қатар деректер қоры әкімшіліктері жұмысының әмбебаптылығына алып келеді. Басқа жағынан, стандарттарды нақты бір жүзеге асырудың функционалды мүмкіндіктерін және икемділігін шектейді. SQL тілінің жүзеге асырылуы дегеніміз сәйкес өндірушінің SQL бағдарламалық өнімін айтады. Функционалдық мүмкіндіктерін арттыру үшін көптеген өндірушілер, қабылдаған стандартты ұстанады, стандартты SQL тіліне түрлі кеңейтулер қосады. айырмашылықтары болады. Пайдаланушылар жұмысының орындалуына ыңғайлы болуы үшін, өндірушілер жүзеге асыру нұсқалары заманауи ANSI стандарттарына сәйкес болуына кепілдік беруі керек. Осыған қарамастан, SQL тілінің жүзеге асыру нұсқасы деректер қоры серверінің талаптарын қанағаттандыратын жаңартулардан тұрады. SQL тілінің енгізілген жаңартулары мен кеңеймелері стандартты пакетке қосылған және қолданысқа дайын қосымша командалар мен опциялар болып табылады.
Қазіргі кезде, SQL тілі, дербес компьютерден бастап мейнфреймдерге дейінгі әртүрлі есептеу платформаларына арналып жасалған әртүрлі деректер қорын басқару жүйесімен (ДҚБЖ) қолданылады. Деректер қорын басқару жүйесі, реляциялық деректер қоры пайда болмастан бұрын, файлдардың логикалық жазбалары ретінде берілетін 10 деректермен жұмыс істейтін операциялар арқылы құрылатын болған. Мұндай ДҚБЖ-мен жұмыс істеу пайдаланушының деректер туралы ақпараттың барлығын білу керектігін талап етті, мысалы, қандай деректер қажет, керек деректер
қай папкада орналасқан, оларды қалай алуға болады, т.б. Қарастырып отырған SQL тілі бір-бірімен логикалық түрде байланысқан кестелер – қатынастар жиыны ретінде берілген деректермен операцияларға бағытталған. Оның құрылымының ең негізгі ерекшелігі − басты назар өңдеу процедурасына емес, соңғы деректердің өңдеудің нәтижесіне аударылады. SQL тілі деректердің, индекстердің қай жерде сақталғанын және нәтижені алу үшін қандай ең тиімді операциялар тізбегін қолдану керек екенін өзі анықтайды, сондықтан бұл ерекшеліктерді сұраныстарға жазу міндетті емес.
Стандартпен анықталған SQL тілінің деректер типтері
Деректер – әртүрлі типтердің бірі ретінде деректер қорында сақталатын ақпараттар жиынтығы. Кестенің нақты бағанында сақталатын деректер үшін деректер типі көмегімен негізгі ережелер қойылады, соның ішінде оларға берілетін жады көлемі. SQL тілінде стандартпен анықталған алты скалярлы деректер типтері бар Деректер типтерінің қысқаша сипаттамасы Деректер типі Символдық CHAR | VARCHAR Биттік BIT | BIT VARYING Нақты сандар NUMERIC | DECIMAL | INTEGER | SMALLINT Бүтін сндар FLOAT | REAL | DOUBLE PRECISION Мерзім/уақыт DATE | TIME | TIMESTAMP Арақашықтық INTERVAL Символдық деректер Символдық деректер ДҚБЖ құрушыларымен анықталған символдар жиынының ішіне кіретін символдардың тізбектілігінен тұрады. Символдар жиыны SQL тілінің түріне байланысты болғандықтан, символдық типтің құрамына кіретін символдар тізімі оның нақты жүзеге асырылуына байланысты болады. Көбінесе ASCII және EBCDIC символдар жиыны қолданады. Символдық типтің деректерін анықтау үшін келесі пішін қолданылады: ::= { CHARACTER [ VARYING][ұзындығы] | [CHAR | VARCHAR] [ұзындығы]} Символдық типті деректері бар бағанды анықтағанда ұзындық параметрі бағанға енгізілетін деректердің максималды ұзындығын көрсету үшін қолданылады (үнсіз келесім бойынша 1 мәні қабылданады). Символдық жол бекітілген немесе айнымалы (VARYING) ұзындықты болып анықтала алады. Егер жол бекітілген ұзындықты болып анықталса, онда оған символдардың аз саны енгізілсе қалған мәндер оң жағынан бастап бос орындармен толтырылады. Егер жол айнымалы ұзындық болып анықталса, онда оған символдардың аз саны енгізілгенде деректер қорында енгізілген
символдар ғана сақталады, бұл әдіс сыртқы жадыны үнемделуіне алып келеді. Биттік деректер 19 Деректердің биттік типі биттік жолдарды анықтау үшін қолданылады, яғни екілік сандардың жинағы, оның әрқайсысы не 0, не 1 мәнін қабылдайды. Биттік типтің деректері келесі пішінмен анықталады: ::= BIT [VARYING][ұзындығы] Нақты сандар Деректердің нақты сандар типі нақты көрсетілімі бар, нақты сандарды анықтау үшін қолданады. Басқаша айтқанда,
сандар сан белгілерінен, міндетті емес ондық нүктеден және міндетті емес белгі символынан тұрады. Нақты сандық типті деректер нақтылықпен және бөлшек жағының ұзындығымен анықталады. Нақтылық санның мәнді ондық сан белгілер көлемін береді, оған бүтін және бөлшек жақтарының ұзындығы, ондық нүктені есепке алмай кіреді. Масштаб санның бөлшек ондық разрядтар көлемін көрсетеді. ::= {NUMERIC[нақтылық[,масштаб]]|{DECIMAL|DEC} [нақтылық[, масштаб]] | {INTEGER |INT}| SMALLINT} NUMERIC және DECIMAL типтері ондық пішіндегі сандарды сақтау үшін қолданылады. Үнсіз бойынша санның бүтін бөлігі нөлге тең, ал үнсіз қабылданатын нақтылық жүзеге асыруына байланысты. INTEGER ( INT ) типі үлкен оң және теріс бүтін сандарды сақтау үшін қолданылады. SMALLINT типі кішкентай оң және теріс бүтін сандарды сақтау үшін қолданылады, ондай жағдайда сырқы жады үнемделеді. Дөңгелектелген сандар Дөңгелектелген сандар типі компьютерде нақты көрсетуге болмайтын деректерді сипаттау үшін
қолданады, мысалы нақты сандарды. Дөңгелектелген сандар немесе жылжымалы үтірлі сандар ғылыми түрде онның дәрежесіне көбейтілген мантисса көмегімен жазылатын сан ретінде жазылады, мысалы: 10Е3, +5.2Е6,-0.2Е-4 . Айғақ типті деректерді анықтау үшін келесі пішінді қолданады: ::= { FLOAT [нақтылық]| REAL | DOUBLE PRECISION} Нақтылық параметрі мантиссаның маңызы бар санын береді. REAL және DOUBLE PRECISION типтерінің нақтылығы жүзеге асыруға тәуелді. Мерзім және уақыт «Мерзім/уақыт» деректер типі белгілі бір орнатылған нақтылықпен уақыт мезгілін анықтау үшін қолданылады. SQL стандарты келесі пішінді қолдайды: ::= {DATE | TIME[нақтылық][WITH TIME ZONE]| 20 TIMESTAMP[нақтылық][WITH TIME ZONE]} Деректердің DATE типі YEAR(жыл), MОNTH(ай) және DAY(күн) өрістерінен тұратын күнтізбелік мерзімді сақтау үшін қолданылады. Деректердің TIME типі – HOUR(сағат), MINUTE(минуттар) және SECOND(секундтар) өрістерінен тұратын уақыт кезеңін сақтау үшін қолданылады. TIMESTAMP – мерзім мен уақытты қатар сақтау үшін қолданылады. Нақтылық параметрі SECОND өрісіде мәнді сақтау нақтылығын анықтау үшін бөлшекті ондық белгілер санын береді. Егер ол параметр берілмесе, онда үнсіз бойынша TIME типі бағандар үшін оның мәні 0-ге тең (тұтас секундтар сақталады), TIMESTAMP типті өрісте оның мәні 6-ға тең (уақыт кесіндері миллисекунд нақтылығымен сақталады) болып қабылданады. WITH TIME ZONE кілттік сөзінің болуы TIMEZONE HOUR және TIMEZONE MINUTE өрістерінің қолданылуын анықтайды, сол арқылы әмбебап координаттық уақытқа (Гринвич бойынша) қатынасты зоналық уақыттың жылжу сағаты мен минуттары беріледі. INTERVAL типінің деректері уақыттың периодтарын көрсету үшін қолданылады. Домен түсінігі Домен – бір немесе бірнеше атрибуттардың мүмкінді мәндер жиыны. Егер дерекқордың бір немесе бірнеше кестелерінде бір сиапттамаларға ие бағандар болса, онда сондай баған типін және оның тәртібін
домен арқылы сипаттауға болады, ал содан кейін әр бірдей бағанға сәйкестікке домен атын қоюға болады. Домен атрибутқа меншіктеуге болатын барлық потенциалдық мәндерді анықтайды. SQL стандарты доменді келесі оператормен анықтауға мүмкіндік береді: ::= CREATE DOMAIN домен_аты [AS] деректер_типі [ DEFAULT мәні] [ CHECK (рұқсат_етілген_мәндер)] Құрылып жатқан әр доменге ат, деректер типі, үнсіз бойынша мәні және рұқсат етілген мәндер жиыны беріледі. Келтірілген пішін толық емес екенін айта кету керек. Енді кесте құру кезінде деректер типінің орнына домен атын көрсетуге болады. Дерекқордан домендерді жою келесі опертордың көмегімен жүзеге асырылады: DROP DOMAIN домен_аты [ RESTRICT |CASCADE] CASCADE кілттік сөзі көрсетілген жағдайда жойылатын домен көмегімен құрылған кестенің кез келген бағандары автоматты түрде өзгертіледі және жойылатын домен анықтамасында берілген типті деректерді сақтайтын болып сипатталады. SQL Server ортасында доменнің альтернативасы болып пайдаланушы деректер типі табылады.