SQL синтаксисі - SQL syntax

The синтаксис туралы SQL бағдарламалау тілі анықталады және қолдайды ISO / IEC SC 32 бөлігі ретінде ISO / IEC 9075. Бұл стандарт еркін қол жетімді емес. Стандарттың болуына қарамастан, SQL коды әр түрлі мәліметтер қоры жүйелері арасында түзетулерсіз толық тасымалданбайды.

Тіл элементтері

Бір операторды құрайтын SQL тілінің бірнеше элементтерін көрсететін диаграмма. Бұл елдегі кестеде АҚШ тұрғындарының бірін толықтырады.

SQL тілі бірнеше тілдік элементтерге бөлінеді, оның ішінде:

  • Кілт сөздер - бұл SQL тілінде анықталған сөздер. Олар не сақталған (мысалы, ТАҢДАУ, COUNT және ЖЫЛ), немесе резервтелмеген (мысалы, ASC, ДОМЕН және КІЛТ). Тізімі SQL сақталған сөздер.
  • Идентификаторлар бұл кестелер, бағандар және схемалар сияқты мәліметтер қорының объектілеріндегі атаулар. Идентификатор, егер ол бөлінген идентификатор болмаса, резервтелген кілт сөзіне тең келмеуі мүмкін. Бөлінген идентификаторлар дегеніміз екі тырнақшаға алынған идентификаторлар. Олар әдетте SQL идентификаторларында қолдау көрсетілмейтін символдарды қамтуы мүмкін және олар резервтелген сөзге ұқсас болуы мүмкін, мысалы. ЖЫЛ.
  • Сөйлемдер, олар өтініштер мен сұраулардың құрамдас бөлігі болып табылады. (Кейбір жағдайларда бұлар міндетті емес.)[1]
  • Өрнектер, ол да өндіре алады скаляр мәндері немесе кестелер тұратын бағандар және жолдар мәліметтер
  • Болжамдар, онда SQL-ге бағалауға болатын шарттар көрсетіледі үш мәнді логика (3VL) (шын / жалған / белгісіз) немесе Буль шындық құндылықтары және өтініштер мен сұраныстардың әсерін шектеу үшін немесе бағдарлама ағымын өзгерту үшін қолданылады.
  • Сұрақтар, нақты критерийлер негізінде деректерді шығарады. Бұл маңызды элемент SQL.
  • Мәлімдемелер, бұл схемаларға және деректерге тұрақты әсер етуі мүмкін немесе транзакцияларды, бағдарламалар ағымын, қосылыстарды, сеанстарды немесе диагностиканы басқаруы мүмкін.
    • SQL операторларына сонымен қатар нүктелі үтір («;») оператордың терминаторы. Әр платформада қажет болмаса да, ол SQL грамматикасының стандартты бөлігі ретінде анықталады.
  • Бос кеңістік SQL операторлары мен сұрауларында әдетте еленбейді, сондықтан SQL кодын оқуға ыңғайлы етіп пішімдеуді жеңілдетеді.

Операторлар

ОператорСипаттамаМысал
=ТеңАвтор = 'Алкотт'
<>Тең емес (көптеген ДҚБЖ қабылдайды != қосымша ретінде <>)Бөлім <> 'Сату'
>Қарағанда үлкенЖалдау_күні > '2012-01-31'
<Одан азырақБонус < 50000.00
>=Үлкен немесе теңТәуелділер >= 2
<=Аз немесе теңБағасы <= 0.05
[ЖОҚ] АРАСЫ [СИММЕТРИКА]Инклюзивті диапазон арасында. SYMMETRIC диапазон шекараларын аударады, егер біріншісі екіншісінен жоғары болса.Құны АРАСЫ 100.00 ЖӘНЕ 500.00
[ЖОҚ] ЛАЙК [ҚАШУ]Таңбалар үлгісінен басталадыТолық аты ЛАЙК «% Болады»
Құрамында таңба үлгісі барТолық аты ЛАЙК '% Болады%'
[ЖОҚ] INБірнеше мүмкін мәндердің біріне теңDeptCode IN (101, 103, 209)
IS [ЖОҚ] ЖОҚЖоқ (жоқ деректерді) салыстыруМекен-жай IS ЖОҚ ЖОҚ
IS [ЖОҚ] ШЫН немесе IS [ЖОҚ] ЖАЛҒАНЛогикалық шындықты тексеруАқылы демалыс IS ШЫН
IS ЖОҚ БІЛУ КІМДЕНМәнге тең немесе екеуі де нөл (жоқ деректер)Қарыз IS ЖОҚ БІЛУ КІМДЕН - Дебиторлық қарыздар
ASНәтижелерді қарау кезінде баған атауын өзгерту үшін қолданыладыТАҢДАУ қызметкер AS бөлім1

Кейде басқа операторлар ұсынылған немесе жүзеге асырылған, мысалы Skyline операторы (басқаларға қарағанда «нашар» емес жолдарды табу үшін).

SQL-де іс < енгізілген өрнек SQL-92. SQL стандартында «ізделген жағдай» деп аталатын ең жалпы түрінде:

ІС ҚАШАН n > 0          ОНДА 'оң'     ҚАШАН n < 0          ОНДА «теріс»     БАСҚА 'нөл'СОҢЫ

SQL тесттері ҚАШАН олар дерек көзінде пайда болу реті бойынша. Егер дереккөзінде БАСҚА өрнек, SQL әдепкі бойынша БАСҚА НОЛ. «Қарапайым жағдай» деп аталатын қысқартылған синтаксисті де қолдануға болады:

ІС n ҚАШАН 1            ОНДА 'Бір'       ҚАШАН 2            ОНДА «Екі»       БАСҚА «Мен соншалықты жоғары деп санай алмаймын»СОҢЫ

Бұл синтаксисте айқын емес теңдік салыстырулары қолданылады NULL-мен салыстыруға арналған әдеттегі ескертулер.

Арнайы екі қысқа форма бар ІС өрнектер: COALEASE және NULLIF.

The COALEASE өрнек солдан оңға қарай жұмыс жасау арқылы табылған бірінші NULL емес операнданың мәнін немесе барлық операндалар NULL-ге тең болса, NULL мәнін қайтарады.

COALEASE(x1,x2)

балама:

ІС ҚАШАН x1 IS ЖОҚ ЖОҚ ОНДА x1     БАСҚА x2СОҢЫ

The NULLIF өрнекте екі операнд болады және егер операндтардың мәні бірдей болса, NULL мәнін береді, әйтпесе ол бірінші операндтың мәніне ие болады.

NULLIF(x1, x2)

дегенге тең

ІС ҚАШАН x1 = x2 ОНДА ЖОҚ БАСҚА x1 СОҢЫ

Түсініктемелер

Стандартты SQL екі форматқа мүмкіндік береді түсініктемелер: - түсініктемебірінші болып аяқталады жаңа сызық, және / * түсініктеме * /, ол бірнеше жолдарды қамтуы мүмкін.

Сұрақтар

SQL-де ең көп таралған операция, сұраныс декларативті қолданады ТАҢДАУ мәлімдеме. ТАҢДАУ бір немесе бірнеше деректерді алады кестелер немесе өрнектер. Стандартты ТАҢДАУ мәлімдемелер мәліметтер базасына тұрақты әсер етпейді. Кейбір стандартты емес енгізулер ТАҢДАУ сияқты тұрақты әсер етуі мүмкін КІСІНІ ТАҢДА кейбір мәліметтер базасында берілген синтаксис.[2]

Сұраулар пайдаланушыға қалаған деректерді сипаттауға мүмкіндік береді мәліметтер базасын басқару жүйесі (ДҚБЖ) жүзеге асыру жоспарлау, оңтайландыру және нәтижені алу үшін қажетті физикалық операцияларды орындау қажет.

Сұрауға, әдетте, келесіден кейін, соңғы нәтижеге қосылатын бағандар тізімі кіреді ТАҢДАУ кілт сөз. Жұлдызша («*«) сұраныстың барлық кестелер бағандарын қайтаруы керектігін анықтауға болады. ТАҢДАУ SQL ішіндегі ең күрделі оператор болып табылады, оған қосымша кілт сөздер мен сөйлемдер кіреді:

  • The КІМДЕН деректерді алуға арналған кесте (лер) ді көрсететін сөйлем. The КІМДЕН сөйлем міндетті емес болуы мүмкін ҚОСЫЛЫҢЫЗ кестелерге қосылу ережелерін көрсететін тармақшалар.
  • The ҚАЙДА сөйлемде сұрау арқылы қайтарылатын жолдарды шектейтін салыстыру предикаты бар. The ҚАЙДА сөйлем нәтижелер жиынтығындағы барлық жолдарды салыстырады, онда салыстыру предикаты шын мәніне бағаламайды.
  • The ТОП сөйлем жалпы мәндері бар жолдарды кіші жолдар қатарына шығарады.[түсіндіру қажет ] ТОП көбінесе SQL біріктіру функцияларымен бірге немесе нәтижелер жиынтығындағы қайталанатын жолдарды жою үшін қолданылады. The ҚАЙДА тармағының алдында қолданылады ТОП тармақ.
  • The БАР сөйлемде жолдардың нәтижесінде сүзгілеу үшін қолданылатын предикат бар ТОП тармақ. Себебі ол нәтижелері бойынша әрекет етеді ТОП тармағында, біріктіру функцияларын қолдануға болады БАР сөйлем предикаты.
  • The БОЙЫНША СҰРЫПТАУ тармақ алынған деректерді сұрыптау үшін қандай бағанды ​​[-тарды] және оларды қай бағытта сұрыптауды (өсу немесе кему) анықтайды. Жоқ БОЙЫНША СҰРЫПТАУ сөйлем, SQL сұранысы қайтарылған жолдардың реті анықталмаған.
  • The БІЛУ кілт сөз[3] қайталанатын деректерді жояды.[4]
  • The ӨШІРУ сөйлем деректерді қайтаруды бастамас бұрын өткізіп жіберетін жолдар санын анықтайды.
  • The БІРІНШІ ФЕТХ сөйлем қайтарылатын жолдар санын анықтайды. Оның орнына кейбір SQL мәліметтер базасында стандартты емес баламалар бар, мысалы. ШЕК, TOP немесе ROWNUM.

Сұраудың сөйлемдері белгілі бір орындалу тәртібіне ие[5], ол оң жағындағы санмен белгіленеді. Бұл келесідей:

ТАҢДАУ <columns>5.
КІМДЕН <table>1.
ҚАЙДА <predicate on rows>2.
ТОП <columns>3.
БАР <predicate on groups>4.
БОЙЫНША СҰРЫПТАУ <columns>6.
ӨШІРУ7.
БІРІНШІ ФЕТХ8.

Келесі мысал a ТАҢДАУ сұраныс қымбат кітаптардың тізімін береді. Сұрау барлық жолдарды алады Кітап кесте, онда баға бағанда 100.00-ден үлкен мән бар. Нәтиже өсу ретімен сұрыпталады тақырып. Жұлдызшасы (*) тізімді таңдаңыз барлық бағандары екенін көрсетеді Кітап кесте нәтижелер жиынтығына қосылуы керек.

ТАҢДАУ * КІМДЕН  Кітап ҚАЙДА баға > 100.00 ТАПСЫРЫС BY тақырып;

Төмендегі мысалда кітаптардың тізімін және әр кітапқа байланысты авторлардың санын қайтару арқылы бірнеше кестенің, топтастырудың және біріктірудің сұранысы көрсетілген.

ТАҢДАУ Кітап.тақырып AS Тақырып,       санау(*) AS Авторлар КІМДЕН  Кітап ҚОСЫЛЫҢЫЗ  Кітап_авторы   ҚОСУЛЫ  Кітап.isbn = Кітап_авторы.isbn ТОП BY Кітап.тақырып;

Мысал шығысы келесідей болуы мүмкін:

Тақырып авторлары ---------------------- ------- SQL мысалдары және нұсқаулық 4 SQL 1 қуанышы SQL 2-ге кіріспе SQL 1 қателіктері

Алғышарт бойынша isbn - бұл екі кестенің жалпы баған атауы және баған аталған тақырып ғана бар Кітап кестеде жоғарыдағы сұранысты келесі түрде қайта жазуға болады:

ТАҢДАУ тақырып,       санау(*) AS Авторлар КІМДЕН  Кітап ТАБИҒИ ҚОСЫЛЫҢЫЗ Кітап_авторы ТОП BY тақырып;

Алайда, көп[сандық ] жеткізушілер бұл тәсілді қолдамайды немесе табиғи қосылыстардың тиімді жұмыс істеуі үшін баған атауының белгілі бір шарттарын талап етеді.

SQL құрамына сақталған шамалар бойынша мәндерді есептеу үшін операторлар мен функциялар кіреді. SQL ішіндегі өрнектерді пайдалануға мүмкіндік береді тізімді таңдаңыз құны 100.00-ден жоғары кітаптардың тізімін қосымша келтіретін келесі мысалдағы сияқты деректерді жобалау сату_ салығы сатылым салығының 6% -бен есептелген көрсеткіші бар баған баға.

ТАҢДАУ isbn,       тақырып,       баға,       баға * 0.06 AS сату_ салығы КІМДЕН  Кітап ҚАЙДА баға > 100.00 ТАПСЫРЫС BY тақырып;

Сұраулар

Бір сұраныстың нәтижесін реляциялық оператор немесе біріктіру функциясы арқылы екінші сұраныста қолдануға болатындай етіп сұраулар енгізуге болады. Кірістірілген сұрау а деп те аталады сұрау. Қосылу және басқа кестелік операциялар көптеген жағдайда есептік жағынан жоғары (яғни жылдамырақ) баламалар ұсынса да, ішкі сұраныстарды орындау пайдалы немесе қажет болуы мүмкін иерархияны енгізеді. Келесі мысалда біріктіру функциясы AVG кіріс сұранысының нәтижесін алады:

ТАҢДАУ isbn,       тақырып,       баға КІМДЕН  Кітап ҚАЙДА баға < (ТАҢДАУ AVG(баға) КІМДЕН Кітап) ТАПСЫРЫС BY тақырып;

Ішкі сұрау сыртқы сұраныстың мәндерін қолдана алады, бұл жағдайда ол а деп аталады өзара байланысты сұрау.

1999 жылдан бастап SQL стандарты мүмкіндік береді Бірге ішкі сұрауларға арналған сөйлемдер, яғни әдетте деп аталатын ішкі сұраулар жалпы кестелік өрнектер (деп те аталады сұранысты факторинг ). CTE болуы мүмкін рекурсивті өздеріне сілтеме жасай отырып; нәтижесінде пайда болған механизм ағаштан немесе графиктен өтуге мүмкіндік береді (қатынас ретінде ұсынылғанда) және тұтастай алғанда түзету нүктесі есептеулер.

Туынды кесте

A алынған кесте - FROM сөйлемінде SQL ішкі сұранысына сілтеме жасау. Негізінде, алынған кесте - таңдалатын немесе оған қосылатын ішкі сұрау. Кестенің алынған функционалдығы пайдаланушыға ішкі сұранысты кесте ретінде сілтеуге мүмкіндік береді. Кірістірілген көріністі an деп те атайды ішкі көрініс немесе а қосалқы таңдау.

Келесі мысалда SQL операторы бастапқы «Кітап» кестесінен алынған «сату» кестесіне қосылуды көздейді. Бұл алынған кесте «Кітап» кестесіне қосылу үшін ISBN көмегімен кітап сатылымы туралы ақпаратты қамтиды. Нәтижесінде алынған кесте нәтижелер жиынтығын қосымша бағандармен қамтамасыз етеді (сатылған заттар саны және кітап сатқан компания):

ТАҢДАУ б.isbn, б.тақырып, б.баға, сату.заттар_сатылды, сату.company_nmКІМДЕН Кітап б  ҚОСЫЛЫҢЫЗ (ТАҢДАУ ҚОРЫТЫНДЫ(Заттар_сатылды) Заттар_сатылды, Компания_Nm, ISBN        КІМДЕН Кітап_сату        ТОП BY Компания_Nm, ISBN) сату  ҚОСУЛЫ сату.isbn = б.isbn

Жоқ немесе үш мәнді логика (3VL)

Туралы түсінік Жоқ SQL-ге реляциялық модельдегі жетіспейтін ақпаратпен жұмыс істеуге мүмкіндік береді. Сөз ЖОҚ - бұл Null арнайы маркерін анықтау үшін қолданылатын SQL-де сақталған кілт сөз. Null-мен салыстыру, мысалы WHERE сөйлемдеріндегі теңдік (=) нәтижесінде белгісіз шындық мәні пайда болады. SELECT операторларында SQL тек WHERE сөйлемі True мәнін беретін нәтижелерді береді; яғни, ол False мәндерімен нәтижелерді алып тастайды және мәні белгісіздерді де шығарады.

Шын және Өтірікпен қатар, Null-пен тікелей салыстыру нәтижесінде пайда болатын Белгісіз, фрагментін келтіреді үш құндылықты логика SQL-ге. ЖӘНЕ, НЕМЕСЕ, ЕМЕС үшін пайдаланылатын SQL шындық кестелері Kleene және Lukasiewicz үш мәнді логиканың жалпы фрагментіне сәйкес келеді (олар импликацияны анықтаумен ерекшеленеді, бірақ SQL мұндай әрекетті анықтамайды).[6]

p ЖӘНЕ qб
РасЖалғанБелгісіз
qРасРасЖалғанБелгісіз
ЖалғанЖалғанЖалғанЖалған
БелгісізБелгісізЖалғанБелгісіз
p НЕМЕСЕ qб
РасЖалғанБелгісіз
qРасРасРасРас
ЖалғанРасЖалғанБелгісіз
БелгісізРасБелгісізБелгісіз
p = qб
РасЖалғанБелгісіз
qРасРасЖалғанБелгісіз
ЖалғанЖалғанРасБелгісіз
БелгісізБелгісізБелгісізБелгісіз
qЕМЕС q
РасЖалған
ЖалғанРас
БелгісізБелгісіз

SQL-де Nulls-тің мағыналық интерпретациясы туралы даулар бар, себебі оны тікелей салыстырулардан тыс қарастырады. Жоғарыдағы кестеде көрсетілгендей, SQL-де екі NULL-ді тікелей теңдік салыстыру (мысалы: {{{1}}}) белгісіздің шындық мәнін қайтарады. Бұл Null мәніне ие емес (және кез-келген деректер доменінің мүшесі емес), бірақ жетіспейтін ақпарат үшін толтырғыш немесе «белгі» деген түсінікке сәйкес келеді. Алайда, SQL-дің спецификациясында екі нөлдің бір-біріне тең болмауы қағидасы бұзылған ОДАҚ және INTERSECT нөлдерді бір-бірімен анықтайтын операторлар.[7] Демек, бұлар операцияларды SQL-де орнату NULL-мен нақты салыстыру операцияларынан айырмашылығы, сенімді ақпаратты көрсетпейтін нәтижелер шығаруы мүмкін (мысалы, а ҚАЙДА тармақ жоғарыда талқыланды). Коддтың 1979 жылғы ұсынысында (негізінен SQL92 қабылдаған) бұл мағыналық сәйкессіздік жиынтық операциялардағы телнұсқаларды алып тастау «іздеу операцияларын бағалаудағы теңдікті тексеруге қарағанда егжей-тегжейлердің төменгі деңгейінде» жүреді деп дәлелденген.[6] Алайда, информатика профессоры Рон ван дер Мейден «SQL стандартындағы сәйкессіздіктер SQL-де нөлдерді емдеуге интуитивті логикалық семантиканы жатқызу мүмкін емес дегенді білдіреді» деген тұжырымға келді.[7]

Сонымен қатар, SQL операторлары кез-келген нәрсені тікелей Null-мен салыстырған кезде белгісіз болып келетіндіктен, SQL Null-ға арналған екі салыстыру предикатын ұсынады: ЖОҚ және ЖОҚ деректердің нөл немесе жоқ екенін тексеріңіз.[8] SQL нақты қолдамайды әмбебап сандық, және оны жоққа шығарылған ретінде өңдеу керек экзистенциалды сандық.[9][10][11] Сондай-ақ, «<жол мәнінің өрнегі> IS DISTINCT FROM <жол мәнінің өрнегі>» салыстырмалы операторы бар, ол екі амал тең немесе екеуі де NULL болмаса, TRUE мәнін береді. Дәл сол сияқты, БІЛМЕЙДІ: «ЕМЕС (<жол мәнінің өрнегі> АЖЫРАТ <жол мәнінің өрнегі>)» деп анықталады. SQL: 1999 ж енгізілді BOOLEAN айнымалыларды теріңіз, стандартқа сәйкес, егер ол нөлдік болса, белгісіз мәндерді де сақтай алады. Іс жүзінде бірқатар жүйелер (мысалы. PostgreSQL ) BOOLEAN белгісізді BOOLEAN NULL ретінде жүзеге асырыңыз, стандартта NULL BOOLEAN және БІЛМЕУ «бір-бірімен бірдей мағынада қолданылуы мүмкін» делінген.C. Күні (2011). SQL және қатынас теориясы: SQL кодын қалай дұрыс жазу керек. O'Reilly Media, Inc. б. 83. ISBN  978-1-4493-1640-2.</ref>[12]

Мәліметтерді манипуляциялау

The Деректерді манипуляциялау тілі (DML) - деректерді қосу, жаңарту және жою үшін пайдаланылатын SQL жиынтығы:

  • INSERT жолдарды қосады (формальды түрде) кортеждер ) бар кестеге, мысалы:
INSERT КІШКЕ мысал (1-баған, 2-баған, 3-баған) ҚҰНДЫЛЫҚТАР ('тест', «N», ЖОҚ);
  • ЖАҢАРТУ бар кесте жолдарының жиынын өзгертеді, мысалы:
ЖАҢАРТУ мысал ОРНАТУ 1-баған = 'жаңартылған мән' ҚАЙДА 2-баған = «N»;
  • ЖОЮ бар жолдарды кестеден жояды, мысалы:
ЖОЮ КІМДЕН мысал ҚАЙДА 2-баған = «N»;
  • MERGE бірнеше кестенің мәліметтерін біріктіру үшін қолданылады. Ол біріктіреді INSERT және ЖАҢАРТУ элементтер. Ол SQL: 2003 стандартында анықталған; бұған дейін кейбір мәліметтер базалары әр түрлі синтаксис арқылы ұқсас функционалдылықты қамтамасыз еткен, кейде «көтерілу ".
 MERGE КІШКЕ кесте_аты ҚОЛДАНУ кесте_сілтеме ҚОСУЛЫ (жағдай) ҚАШАН СӘЙКЕСТІ ОНДА ЖАҢАРТУ ОРНАТУ 1-баған = мәні1 [, 2-баған = мәні2 ...] ҚАШАН ЖОҚ СӘЙКЕСТІ ОНДА INSERT (1-баған [, 2-баған ...]) ҚҰНДЫЛЫҚТАР (мәні1 [, мәні2 ...])

Транзакцияны басқару

Транзакциялар, егер бар болса, DML операцияларын орайды:

  • ОПЕРАЦИЯНЫ БАСТАУ (немесе ЖҰМЫСТЫ БАСТАУ, немесе ОПЕРАЦИЯНЫ БАСТАУ, SQL диалектіне байланысты) а-ның басталуын белгілейді мәліметтер базасының транзакциясы, ол толығымен аяқталады немесе мүлдем аяқталмайды.
  • ОПЕРАЦИЯНЫ САҚТАУ (немесе САҚТАУ) мәміленің ағымдағы нүктесінде дерекқордың күйін сақтайды
ЖАСАУ КЕСТЕ tbl_1(идентификатор int); INSERT КІШКЕ tbl_1(идентификатор) ҚҰНДЫЛЫҚТАР(1); INSERT КІШКЕ tbl_1(идентификатор) ҚҰНДЫЛЫҚТАР(2);МІНДЕТТЕМЕ; ЖАҢАРТУ tbl_1 ОРНАТУ идентификатор=200 ҚАЙДА идентификатор=1;САҚТАУ id_1upd; ЖАҢАРТУ tbl_1 ОРНАТУ идентификатор=1000 ҚАЙДА идентификатор=2;Кері байланыс дейін id_1upd; ТАҢДАУ идентификатор бастап tbl_1;
  • МІНДЕТТЕМЕ транзакциядағы барлық өзгерістерді тұрақты етеді.
  • Кері байланыс деректердің соңғы өзгертулерінен бас тартады МІНДЕТТЕМЕ немесе Кері байланыс, деректерді сол өзгерістерге дейін қалдыру. Бір рет МІНДЕТТЕМЕ мәлімдеме аяқталады, транзакция өзгертілмейді.

МІНДЕТТЕМЕ және Кері байланыс ағымдағы транзакцияны тоқтату және деректердің құлыптарын босату. Болмаған жағдайда ОПЕРАЦИЯНЫ БАСТАУ немесе ұқсас мәлімдеме, SQL семантикасы іске асыруға тәуелді.Төмендегі мысалда ақша бір шоттан алынып, екінші шотқа қосылатын классикалық аударым трансакциясы көрсетілген. Егер жою немесе қосу сәтсіз аяқталса, транзакцияның барлығы кері қайтарылады.

БАСТАУ ОПЕРАЦИЯ; ЖАҢАРТУ Тіркелгі ОРНАТУ сома=сома-200 ҚАЙДА шот нөмірі=1234; ЖАҢАРТУ Тіркелгі ОРНАТУ сома=сома+200 ҚАЙДА шот нөмірі=2345;Егер ҚАТЕЛЕР=0 МІНДЕТТЕМЕ;Егер ҚАТЕЛЕР<>0 Кері байланыс;

Деректердің анықтамасы

The Деректерді анықтау тілі (DDL) кесте және индекс құрылымын басқарады. DDL негізгі элементтері болып табылады ЖАСАУ, АЛТЕР, АТЫҢЫЗ, ТҮСІРУ және ТРУНКАТ мәлімдемелер:

  • ЖАСАУ мәліметтер базасында объект жасайды (мысалы, кесте), мысалы:
ЖАСАУ КЕСТЕ мысал( 1-баған INTEGER, 2-баған ВАРХАР(50), 3-баған КҮН ЖОҚ ЖОҚ, БАСТАУЫШ КІЛТ (1-баған, 2-баған));
  • АЛТЕР бар нысан құрылымын әртүрлі тәсілдермен өзгертеді, мысалы, бар кестеге баған немесе шектеу қою, мысалы:
АЛТЕР КЕСТЕ мысал ҚОСУ 4. баған INTEGER АРҚЫЛЫ 25 ЖОҚ ЖОҚ;
  • ТРУНКАТ кестеден барлық деректерді кестенің өзін емес, кестенің ішіндегі деректерді жойып, өте жылдам түрде жояды. Әдетте бұл келесі COMMIT операциясын білдіреді, яғни оны кері қайтаруға болмайды (деректер кейінірек қайтару үшін журналдарға жазылмайды, DELETE сияқты).
ТРУНКАТ КЕСТЕ мысал;
  • ТҮСІРУ дерекқордағы нысанды, әдетте, қайтымсыз түрде жояды, яғни оны қайтаруға болмайды, мысалы:
ТҮСІРУ КЕСТЕ мысал;

Мәліметтер түрлері

SQL кестесіндегі әрбір баған құрамында баған болуы мүмкін типтер (дер) жарияланады. ANSI SQL келесі мәліметтер типтерін қамтиды.[13]

Кейіпкерлердің ішектері және ұлттық сипаттамалар тізбегі
  • МІНДЕТ (n) (немесе CHAR (n)): ені бекітілген n-қажет болған кезде бос орындармен толтырылған символдық жол
  • СИПАТТАМА ТҮРЛІ (n) (немесе ВАРЧАР (n)): максималды өлшемі бар айнымалы ені бар жол n кейіпкерлер
  • МІНДЕТТІҢ ІРІ НЫСАНЫ (n [K | M | G | T]) (немесе CLOB (n [K | M | G | T])): максималды өлшемі бар үлкен объект таңбасы n [K | M | G | T] кейіпкерлер
  • ҰЛТТЫҚ МІНДЕТ (n) (немесе NCHAR (n)): халықаралық таңбалар жиынтығын қолдайтын бекітілген ені бар жол
  • Ұлттық сипат әр түрлі (n) (немесе НВАРЧАР (n)): ені айнымалы NCHAR жіп
  • Ұлттық сипаттағы үлкен нысан (n [K | M | G | T]) (немесе NCLOB (n [K | M | G | T])): максималды өлшемі бар ұлттық сипаттағы ірі объект n [K | M | G | T] кейіпкерлер

Үшін МІНДЕТТІҢ ІРІ НЫСАНЫ және Ұлттық сипаттағы үлкен нысан деректер типтері, көбейткіштер Қ (1 024), М (1 048 576), G (1 073 741 824) және Т (1 099 511 627 776) ерікті түрде ұзындығын көрсету кезінде пайдалануға болады.

Екілік
  • ЕКІНШІ (n): Бекітілген екілік жол, максималды ұзындық n.
  • ЕКІНШІ ТҮРЛЕРn) (немесе ВАРБИНАРЛЫҚ (n)): Айнымалы ұзындық екілік жол, максималды ұзындық n.
  • ЕКІНШІ ҮЛКЕН НЫСАН (n [K | M | G | T]) (немесе BLOB (n [K | M | G | T])): максималды ұзындығы бар екілік үлкен объект n [K | M | G | T].

Үшін ЕКІНШІ ҮЛКЕН НЫСАН деректер түрі, көбейткіштер Қ (1 024), М (1 048 576), G (1 073 741 824) және Т (1 099 511 627 776) ерікті түрде ұзындығын көрсету кезінде пайдалануға болады.

Буль
  • BOOLEAN

The BOOLEAN деректер түрі мәндерді сақтай алады ШЫН және ЖАЛҒАН.

Сандық
  • INTEGER (немесе INT), SMALLINT және BIGINT
  • ФЛОТ, ШЫН және Екі еселенген дәлдік
  • САНЫ (дәлдік, масштаб) немесе Ондық (дәлдік, масштаб)
  • ДЕФЛОАТ (дәлдік)

Мысалы, 123.45 санының дәлдігі 5 және масштабы 2-ге тең дәлдік белгілі бір радиуста (екілік немесе ондық) маңызды цифрлардың санын анықтайтын оң бүтін сан. The масштаб теріс емес бүтін сан. 0 шкаласы санның бүтін сан екенін көрсетеді. S масштабы бар ондық сан үшін нақты сан мәні 10-ға бөлінген маңызды цифрлардың бүтін мәні болып табыладыS.

SQL функцияларды қамтамасыз етеді ТӨБЕ және ҚАБАТ сандық мәндерді дөңгелектеу үшін. (Белгілі сатушының белгілі функциялары ТРУНК (Informix, DB2, PostgreSQL, Oracle және MySQL) және ДӨҢГЕЛЕК (Informix, SQLite, Sybase, Oracle, PostgreSQL, Microsoft SQL Server және Mimer SQL.))

Уақытша (күн)
  • КҮН: күн мәндері үшін (мысалы, 2011-05-03).
  • УАҚЫТ: уақыт мәндері үшін (мысалы: 15:51:36).
  • УАҚЫТ БЕЛГІСІМЕН УАҚЫТ: сол сияқты УАҚЫТ, бірақ қарастырылып отырған уақыт белдеуі туралы егжей-тегжейлі.
  • TIMESTAMP: Бұл КҮН және а УАҚЫТ бір айнымалыға біріктіру (мысалы: 2011-05-03 15:51:36.123456).
  • УАҚЫТ БӨЛІГІМЕН УАҚЫТТАР: сол сияқты TIMESTAMP, бірақ қарастырылып отырған уақыт белдеуі туралы егжей-тегжейлі.

SQL функциясы ҚЫСҚА деректер уақытының немесе интервал мәнінің бір өрісін (мысалы, секунд) шығару үшін пайдаланылуы мүмкін. Деректер базасының серверінің ағымдағы күні / уақыты сияқты функцияларды қолдану арқылы шақырылуы мүмкін CURRENT_DATE, CURRENT_TIMESTAMP, Жергілікті уақыт, немесе LOCALTIMESTAMP. (Белгілі сатушының белгілі функциялары КҮНГЕ ДЕЙІН, TO_TIME, TO_TIMESTAMP, ЖЫЛ, АЙ, КҮН, САҒАТ, МИНУТ, ЕКІНШІ, DAYOFYEAR, DAYOFMONTH және DAYOFWEEK.)

Аралық (күн уақыты)
  • ЖЫЛ (дәлдік): бірнеше жыл
  • ЖЫЛ (дәлдік) АЙҒА: бірқатар жылдар мен айлар
  • АЙ (дәлдік): бірнеше ай
  • КҮН (дәлдік): бірнеше күн
  • КҮН (дәлдік) САҒАТҚА: күндер мен сағаттар саны
  • КҮН (дәлдік) МИНУТАҒА: күндер, сағаттар мен минуттар саны
  • КҮН (дәлдік) ЕКІНШІГЕ (масштаб): күндер, сағаттар, минуттар мен секундтар саны
  • HOUR (дәлдік): бірнеше сағат
  • HOUR (дәлдік) МИНУТАҒА: бірнеше сағат және минут
  • HOUR (дәлдік) ЕКІНШІГЕ (масштаб): сағат, минут және секунд саны
  • MINUTE (дәлдік): бірнеше минут
  • MINUTE (дәлдік) ЕКІНШІГЕ (масштаб): минуттар мен секундтар саны

Деректерді басқару

The Деректерді басқару тілі (DCL) пайдаланушыларға деректерге қол жеткізуге және оларды басқаруға рұқсат береді, оның екі негізгі мәлімдемесі:

  • ГРАНТ бір немесе бірнеше қолданушыларға объектіде операция немесе операциялар жиынтығын жасауға рұқсат береді.
  • ҚАЙТАРУ стандартты грант болуы мүмкін грантты жояды.

Мысал:

ГРАНТ ТАҢДАУ, ЖАҢАРТУ ҚОСУЛЫ мысал TO кейбір_қолданушы, басқа_қолданушы;ҚАЙТАРУ ТАҢДАУ, ЖАҢАРТУ ҚОСУЛЫ мысал КІМДЕН кейбір_қолданушы, басқа_қолданушы;

Ескертулер

  1. ^ ANSI / ISO / IEC халықаралық стандарты (IS). Мәліметтер қорының тілі SQL - 2 бөлім: Foundation (SQL / Foundation). 1999 ж.
  2. ^ «Transact-SQL сілтемесі». SQL Server тіліне сілтеме. SQL Server 2005 Books Online. Microsoft. 2007-09-15. Алынған 2007-06-17.
  3. ^ SAS 9.4 SQL процедураларын пайдалану жөніндегі нұсқаулық. SAS институты. 2013. б. 248. ISBN  9781612905686. Алынған 2015-10-21. ЕРЕКШЕ аргумент DISTINCT-пен бірдей болғанымен, ANSI стандарты емес.
  4. ^ Леон, Алексис; Леон, Мэтьюз (1999). «Көшірмелерді жою - DISTINCT көмегімен таңдау». SQL: толық анықтама. Нью-Дели: Tata McGraw-Hill Education (жарияланған 2008). б. 143. ISBN  9780074637081. Алынған 2015-10-21. [...] DISTINCT кілт сөзі [...] нәтижелер жиынтығындағы көшірмелерді жояды.
  5. ^ «SQL сұрауын орындау тәртібі қандай? - Designcise.com». www.designcise.com. Алынған 2018-02-04.
  6. ^ а б Ханс-Йоахим, К. (2003). «Реляциялық мәліметтер қорындағы нөлдер және сенімді жауаптар». Мәліметтер қорындағы семантика. Екінші Халықаралық семинар Дагстюль қамалы, Германия, 7-12 қаңтар, 2001. Қайта қаралған құжаттар. Информатика пәнінен дәрістер. 2582. 119-138 беттер. дои:10.1007/3-540-36596-6_7. ISBN  978-3-540-00957-3.
  7. ^ а б Рон ван дер Мейден, «Толық емес ақпаратқа логикалық тәсілдер: сауалнама», Хомикки, Ян; Сааке, Гюнтер (Ред.) Деректер базасы мен ақпараттық жүйелерге арналған логика, Kluwer Academic Publishers ISBN  978-0-7923-8129-7, б. 344
  8. ^ ISO / IEC. ISO / IEC 9075-2: 2003, «SQL / Foundation». ISO / IEC.
  9. ^ «SQL-де әмбебап кванттаудың семантикасы және мәселелері». Компьютерлік журнал. Ақпан 1989 ж. дои:10.1093 / comjnl / 32.1.90. Алынған 2017-01-16.
  10. ^ Фратарканжели, Клаудио (1991). «SQL-де әмбебап сандық есептеу әдістемесі». ACM SIGMOD жазбасы. 20 (3): 16–24. дои:10.1145/126482.126484. Алынған 2017-01-16.
  11. ^ Каваш, Джалалель (2004 ж.) Құрылымдық сұраныстар тіліндегі кешенді сандық анықтама (SQL): реляциялық есептеулер қолданылған оқу құралы; Математика және жаратылыстану пәндерін оқытудағы компьютерлер журналы ISSN  0731-9258 23 том, 2 шығарылым, 2004 AACE Норфолк, Вирджиния. Thefreelibrary.com
  12. ^ ISO / IEC 9075-2: 2011 §4.5
  13. ^ «ISO / IEC 9075-1: 2016: Ақпараттық технологиялар - Мәліметтер қоры тілдері - SQL - 1 бөлім: Framework (SQL / Framework)».