46
Кілттік сөзден немесе кейін жүретін долларға алынған қатар одан бос
орында таңбалармен бөлінуі керек, әйтпесе доллар таңбасы алдыңғы
идентификатордың жалғасы ретінде саналады.
Қатарларды долларға алу SQL стандартының бөлігі емес, бірақ жиі бұл
күрделі қатарларды жазуда стандартты апострофпен әдісіне қарағанда
оңтайлырақ әдіс. Ол, әсіресе, жиірек процедуралық функцияларды анықтауда
талап етілетін қатарлық константаларды басқа қатар ішінде көрсету керек
болғанда пайдалы.
47
6 SQL кеңейтілуі
PostgreSQL SQL тілінің сұраныстарын кеңейтуге болады. Пайдаланушы
өзіндік:
- функцияларын;
- агрегаттық функцияларын;
- мәліметтер типін;
- операторлар;
- индекс үшін оператор класстарын;
- байланысқан объектілер пакетін қоса отырып кеңейтуге болады.
6.1 Кеңейтілуді жүзеге асыру
PostgreSQL кеңейтілу қасиеті бар, өйткені оның жұмысы каталогтармен
басқарылады. Олар деректер қоры, кестелер, бағандар және тағы басқалары
туралы информация сақтайды, жиі оларды жүйелік каталогтар деп атайды.
Кейбір жүйелерде оларды мәліметтер сөздігі деп атайды. Осы каталогтар
пайдаланушыға басқалар секілді кестелер ретінде көрсетіледі, бірақ ДҚБЖ
оның ішінде ішкі жазбаларын жүргізеді. PostgreSQL басқа реляционды
ДҚБЖ
нен басты айырмашылығы осы каталогтарда әлдеқайдам көп мәлімет
сақтайды: тек кестелер мен бағандар туралы емес, сонымен қатар мәліметтер
типі, функциялар, рұқсат әдістері және тағы басқалары туралы мәліметтер,
осы кестелер пайдаланушы арқылы өзгеруі мүмкін, ал PostgreSQL өзінің
іс
әрекетінде
осы
кестелерді
басшылыққа
алғандықтан,
демек
пайдаланушылар PostgreSQL кеңейте алады. Қарапайым ДҚБЖ тек бастапқы
кодтағы қатқыл бағдарланған процедуларды өзгертіп немесе ДҚБЖ
өндірушісі шығарған арнайы жасалған модульдарды жүктеу жолымен
кеңейтуга болады. Сонымен қатар PostgreSQL сервері динамикалық түрде
өзінің процесіне пайдаланушы жазған кодты жүктей алады. Яғни,
пайдаланушы объектілі кодпен файлды қоса алады (мысалы, бөлінетін
кітапхана); ол файл жаңа типті немесе функцияны іске асырады, ал
PostgreSQL керек кезінде жүктейді. SQL
де жазылған код серверге тіпті оңай
қосылады. Осы қас
қағымда өзінің мінез
құлқын өзгерту мүмкіндігі
PostgreSQL жаңа бағдарламалар мен сақтау құрылымдарының жылдам
прототиптеуге ерекше қолайла болып келеді.
6.2 PostgreSQL типтер жүйесі
PostgreSQL мәліметер типі негізгі, құрамдас, доменді және жалған
типтер (псевдотип) болып бөлінеді.
6.2.1 Негізгі типтер
48
Негізгі типтер
бұл int4 секілді типтер, олар SQL тілінен төмен
деңгейде жүзеге асады (әдетте төменгі деңгейлі тілде, мысалы С). Жалпы
түрде олар аталмыш абстрактілі мәліметтер типіне сәйкес келеді. PostgreSQL
осындай типтермен пайдаланушы берген функциялар арқылы жұмыс жасай
алады, және де олардың мінез
құлқын қалай пайдаланушы сипаттағынына
байланысты сол деңгейде түсінеді. Негізгі типтер скаляр типтер мен
массивтерге тағы бөлінеді. Әр скаляр типке автоматты түрде осы скаляр типі
туралы айнамалы өлшемдегі көптеген мәндері құрамында бола алатын массив
типі жасалынады.
6.2.2 Құрамдас типтер
Құрамдас типтер, немесе қатарлар типі, кез келген кесте құрылғанда
пайда болады. Сонымен қатар CREATE TYPE командасының көмегімен
«тәуелсіз», кестеге байланысы жоқ құрамдас типті анықтауға болады.
Құрамдас тип өзімен белгілі бер жолдар атымен типтер тізімі ретінде
көрсетіледі. Құрасдас тип мәндері кесте қатары немесе жолдардың мәндерінен
алынған жазба болып табылады. Пайдаланушы осы жолдарға SQL
сұраныстары арқылы байланыса алады.
6.2.3 Домендер
Домен белгілі бір негізгі типте негізделеді және көптеген аспектілерде
онымен қарым
қатынаста. Алайда домен төмен орналасқан негізгі типке
қарағанда көптеген рұқсат етілген мәндерді кішірейтетін қосымша шектеулері
болуы мүмкін. Домендік типтерді CREATE DOMAIN SQL
командасы арқылы
құрыға болады.
6.2.4 Жалған типтер (псевдотип)
Арнайы мақсаттар үшін бірнеші «жалған» типтер қолданылады. Жалған
типтер кестелер қатарында немесе құрамдас типтердің атрибутикасында
қолданыла алмайды, бірақ та оларды аргументтерді хабарлауда және функция
нәтижелерінде қолдануға болады. Бұл әрекет типтер жүйесіне арнайы
функциялар классын ерекшелеуге мүмкіндік береді.
6.2.5 Полиморфты типтер
Арнаулы қызығушылықты бес жалған типтер тудырады: полиморфты
типтер деп аталатын anyelement, anyarray, anynonarray, anyenum