Ms sql серверінің сұраулары. MS SQL Server дерекқорында сұранысты (Query) құру мысалы

Соңғы жаңарту: 07/05/2017

Соңғы тақырыпта SQL Management Studio бағдарламасында бір кестеден тұратын қарапайым деректер қоры құрылды. Енді бірінші SQL сұранысын анықтап, орындайық. Ол үшін SQL Management Studio бағдарламасын ашыңыз, Object Explorer шолғышындағы (сервер атауы) жоғарғы деңгейлі элементті тінтуірдің оң жақ түймешігімен нұқыңыз және пайда болған контекстік мәзірден Жаңа сұрауды таңдаңыз:

Осыдан кейін бағдарламаның орталық бөлігінде SQL пәрмендерін енгізу терезесі ашылады.

Өткен тақырыпта құрылған кестеде сұранысты орындайық, атап айтқанда, біз одан барлық мәліметтерді аламыз. Біздің деректер базамыз университет деп аталады, ал кесте dbo.Students, сондықтан кестеден деректерді алу үшін келесі сұранысты енгіземіз:

ТАҢДАҢЫЗ * university.dbo.Students

SELECT операторы деректерді таңдауға мүмкіндік береді. FROM деректерді қайдан алуға болатын көзді көрсетеді. Шындығында, бұл сұрау арқылы біз «Барлығын ТАҢДАУ кестесінен university.dbo.Students» дейміз. Айта кету керек, кестенің толық жолы деректер қоры мен схемасын көрсете отырып, кестенің атауы үшін пайдаланылады.

Сұранысты енгізгеннен кейін құралдар тақтасының Орындау түймесін басыңыз немесе F5 пернесін басуға болады.

Сұранысты орындау нәтижесінде программаның төменгі жағында шағын кесте пайда болады, онда сұраныстың нәтижелері – яғни Студенттер кестесіндегі барлық мәліметтер көрсетіледі.

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

Университетті ТАҢДАУ * Студенттерден ПАЙДАЛАНЫҢЫЗ

Бұл жағдайда біз сервер үшін тұтастай сұрауды орындаймыз, сервердегі кез келген дерекқорға қол жеткізе аламыз. Бірақ біз сұрауларды тек белгілі бір дерекқор ішінде орындай аламыз. Ол үшін қажетті дерекқорды тінтуірдің оң жақ түймешігімен нұқыңыз және контекстік мәзірден Жаңа сұрауды таңдаңыз:

Егер бұл жағдайда біз жоғарыда қолданылған Студенттер кестесін сұрағымыз келсе, онда сұрауда дерекқор атауын және схемасын көрсетудің қажеті жоқ, өйткені бұл мәндер бұрыннан түсінікті болар еді.

SQL Server Management Studio сұраулардың барлық түрлерін жасауға арналған толық құралды ұсынады. Оның көмегімен сұрауларды жасауға, сақтауға, жүктеуге және өңдеуге болады. Сонымен қатар, сіз кез келген серверге қосылмай-ақ сұраулармен жұмыс істей аласыз. Бұл құрал сонымен қатар әртүрлі жобалар үшін сұрауларды әзірлеу мүмкіндігін береді.

Сұрау өңдегіші және Шешім Жетекшісі арқылы сұраулармен жұмыс істеуге болады. Бұл мақалада осы екі құрал да қарастырылады. SQL Server Management Studio бағдарламасының осы екі құрамдас бөлігінен басқа, біз кірістірілген отладчик көмегімен SQL кодын жөндеуді қарастырамыз.

Сұраныс редакторы

Сұрау өңдегіші тақтасын ашу үшін Сұрау редакторы, SQL Server Management Studio құралдар тақтасында Жаңа сұрау түймешігін басыңыз. Бұл панельді тек Database Engine сұрауларын емес, барлық ықтимал сұрауларды жасауға арналған түймелерді көрсету үшін кеңейтуге болады. Әдепкі бойынша, жаңа Database Engine сұрауы жасалады, бірақ құралдар тақтасындағы сәйкес түймені басу арқылы MDX, XMLA және басқа сұрауларды да жасауға болады.

Сұрау өңдегіші тақтасының төменгі жағындағы күй жолағы редактордың серверге қосылу күйін көрсетеді. Серверге автоматты түрде қосылмасаңыз, Сұрау өңдегішін іске қосқан кезде сізге қосылу үшін серверді және аутентификация режимін таңдауға болатын Серверге қосылу диалогтық терезесі көрсетіледі.

Сұрауларды желіден тыс өңдеу серверге қосылғаннан гөрі көбірек икемділікті қамтамасыз етеді. Сұрауларды өңдеу үшін серверге қосылудың қажеті жоқ, сонымен қатар сұрау өңдегішінің терезесін бір серверден ажыратуға болады (Сұраныс --> Қосылу --> Ажырату мәзірінің командасы арқылы) басқа редактор терезесін ашпай-ақ басқасына қосылуға болады. Офлайн өңдеу режимін таңдау үшін, белгілі бір сұрау түрі үшін өңдегішті іске қосқан кезде пайда болатын сервер қосылымы диалогында "Болдырмау" түймесін басыңыз.

Сұрау өңдегішін келесі тапсырмаларды орындау үшін пайдалануға болады:

    Transact-SQL операторларын құру және орындау;

    жасалған Transact-SQL операторларын файлға сақтау;

    жалпы сұраныстар бойынша орындау жоспарларын құру және талдау;

    таңдалған сұраныстың орындалу жоспарының графикалық иллюстрациясы.

Сұраныс редакторында әр түрлі әрекеттерге арналған түймелер жиыны бар кірістірілген мәтіндік редактор және құралдар тақтасы бар. Сұрау өңдегішінің негізгі терезесі көлденеңінен Сұраулар тақтасына (жоғарғы) және Нәтижелер тақтасына (төменгі) бөлінген. Орындалатын Transact-SQL мәлімдемелері (яғни сұраулар) жоғарғы тақтаға енгізіледі, ал сол сұрауларды өңдейтін жүйенің нәтижелері төменгі аумақта көрсетіледі. Төмендегі суретте сұрау өңдегішіне сұрау енгізу мысалы және осы сұрауды орындау нәтижелері көрсетілген:

Бірінші USE сұрау мәлімдемесі SampleDb дерекқорын ағымдағы дерекқор ретінде пайдалануды көрсетеді. Екінші оператор, SELECT, Қызметкерлер кестесіндегі барлық жолдарды шығарып алады. Осы сұрауды орындау және нәтижелерді көрсету үшін Сұрау өңдегішінің құралдар тақтасында Орындау түймесін басыңыз немесе F5 пернесін басыңыз.

Сұраныс өңдегішінің бірнеше терезесін ашуға болады, яғни. Дерекқор механизмінің бір немесе бірнеше данасына бірнеше қосылымдар жасаңыз. Жаңа қосылым SQL Server Management Studio құралдар тақтасындағы Жаңа сұрау түймешігін басу арқылы жасалады.

Сұрау өңдегіші терезесінің төменгі жағындағы күй жолағы сұрау мәлімдемелерінің орындалуына қатысты келесі ақпаратты көрсетеді:

    ағымдағы операцияның күйі (мысалы, «Сұраныс сәтті аяқталды»);

    дерекқор серверінің атауы;

    ағымдағы пайдаланушы аты және сервер процесінің идентификаторы;

    ағымдағы деректер қорының атауы;

    соңғы сұранысты орындауға кеткен уақыт;

    табылған жолдар саны.

SQL Server Management Studio бағдарламасының негізгі артықшылықтарының бірі оның қолданудың қарапайымдылығы болып табылады, ол Сұраныс өңдегішіне де қатысты. Сұраныс өңдегіші Transact-SQL мәлімдемелерін кодтауды жеңілдететін көптеген мүмкіндіктерді қамтамасыз етеді. Атап айтқанда, Transact-SQL мәлімдемелерінің оқылуын жақсарту үшін синтаксистік бөлектеуді пайдаланады. Барлық сақталған сөздер көк түспен, айнымалылар қара түспен, жолдар қызыл түспен, түсініктемелер жасыл түспен көрсетіледі.

Бұған қоса, Сұрау өңдегішінде контекстке сезімтал анықтама деп аталады Динамикалық анықтама, ол арқылы белгілі бір нұсқау туралы ақпарат алуға болады. Егер сіз мәлімдеменің синтаксисін білмесеңіз, оны редакторда таңдап, F1 пернесін басыңыз. Сондай-ақ Books Online қолданбасынан анықтама алу үшін әртүрлі Transact-SQL мәлімдемелерінің параметрлерін бөлектеуге болады.

SQL Management Studio бағдарламасы автотолтыру құралының түрі болып табылатын SQL Intellisense бағдарламасын қолдайды. Басқаша айтқанда, бұл модуль ішінара енгізілген Transact-SQL операторының элементтерінің ең ықтимал аяқталуын ұсынады.

Object Explorer бағдарламасы сұрауды өңдеуге де көмектесе алады. Мысалы, егер сіз Қызметкер кестесі үшін CREATE TABLE мәлімдемесін жасауды үйренгіңіз келсе, Object Explorer бағдарламасында кестені тінтуірдің оң жақ түймешігімен нұқыңыз және таңбаша мәзірінен Сценарий кестесін басқаша --> СҰРАУ --> Жаңа сұрау өңдегішінің терезесін таңдаңыз. кестелер --> CREATE пайдалану --> Жаңа сұраныс өңдегіші терезесі). Осылайша жасалған CREATE TABLE операторы бар Сұрау өңдегішінің терезесі төмендегі суретте көрсетілген. Бұл мүмкіндік сақталған процедуралар мен функциялар сияқты басқа нысандарға да қолданылады.

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

Solution Explorer

SQL Server Management Studio бағдарламасындағы сұрауларды өңдеу шешімдер әдісіне негізделген. Жаңа сұрау түймешігін пайдаланып бос сұрау жасасаңыз, ол бос шешімге негізделеді. Мұны бос сұрауды ашқаннан кейін бірден Көрініс -> Шешім жетектеушісі мәзірінен пәрмендер тізбегін орындау арқылы көруге болады.

Шешім ешбір, бір немесе бірнеше жобаға қатысты болуы мүмкін. Ешбір жобамен байланысты емес бос шешім. Жобаны шешіммен байланыстыру үшін бос шешімді, Шешім жетектеушісін және Сұрау өңдегішін жабыңыз және Файл --> Жаңа --> Жоба пәрмендер тізбегін іске қосу арқылы жаңа жоба жасаңыз. Ашылған «Жаңа жоба» терезесінде ортаңғы аумақта SQL серверінің сценарийлері опциясын таңдаңыз. Жоба – белгілі бір жерде файлдарды ұйымдастыру тәсілі. Жобаға атау беруге және оның дискідегі орны үшін орынды таңдауға болады. Жаңа жобаны жасаған кезде жаңа шешім автоматты түрде іске қосылады. Жобаны бар шешімге Solution Explorer арқылы қосуға болады.

Әрбір жасалған жоба үшін Solution Explorer бағдарламасы Қосылымдар (Байланыстар), Сұраулар (Сұраулар) және Әртүрлі (Әртүрлі) қалталарды көрсетеді. Берілген жоба үшін жаңа сұраныс өңдегішінің терезесін ашу үшін оның Сұраулар қалтасын тінтуірдің оң жақ түймешігімен басып, контекстік мәзірден Жаңа сұрау таңдаңыз.

SQL серверін жөндеу

SQL Server 2008-ден бастап SQL Server-де кірістірілген кодты жөндеуші бар. Түзету сеансын бастау үшін SQL Server Management Studio бағдарламасының негізгі мәзірінен Debug --> Start Debugging пәрмендер тізбегін таңдаңыз. Біз пәрмендер бумасын қолданатын мысалды пайдалана отырып, отладчик жұмысын қарастырамыз. Бума – құрамындағы барлық мәлімдемелерді орындау үшін Дерекқор механизміне жіберілетін SQL мәлімдемелерінің және процедуралық кеңейтімдердің логикалық тізбегі.

Төмендегі суретте p1 жобасында жұмыс істейтін қызметкерлер санын есептейтін пакет көрсетілген. Егер бұл сан 4 немесе одан көп болса, сәйкес хабарлама көрсетіледі. Әйтпесе, қызметкерлердің аты-жөні көрсетіледі.

Белгілі бір нұсқау бойынша пакеттің орындалуын тоқтату үшін суретте көрсетілгендей тоқтау нүктелерін орнатуға болады. Мұны істеу үшін тоқтағыңыз келетін жолдың сол жағындағы түймені басыңыз. Түзетуді бастаған кезде, орындау сары көрсеткімен белгіленген кодтың бірінші жолында тоқтайды. Орындауды және жөндеуді жалғастыру үшін Debug --> Continue (Debugging --> Continue) мәзір командасын орындаңыз. Бума нұсқауларын орындау бірінші тоқтау нүктесіне дейін жалғасады, ал сары көрсеткі сол нүктеде тоқтайды.

Түзету процесіне қатысты ақпарат Сұрау өңдегіші терезесінің төменгі жағындағы екі тақтада көрсетіледі. Түзету ақпаратының әртүрлі түрлері туралы ақпарат осы панельдерде бірнеше қойындыларда топтастырылған. Сол жақ панельде Autos (Автоматты), Locals (Жергілікті) қойындысы және бес қойындыға дейін Watch (Көрінетін) бар. Оң жақ тақтада Қоңыраулар стекі, ағындар, үзіліс нүктелері, пәрмен терезесі, жедел терезе және шығыс қойындылары бар. «Жергіліктілер» қойындысы айнымалы мәндерді көрсетеді, Қоңыраулар стек қойындысы қоңыраулар стекінің мәндерін көрсетеді, ал «Үзіліс нүктелері» қойындысы тоқтау нүктелері туралы ақпаратты көрсетеді.

Түзету процесін тоқтату үшін, Түзету --> Түзетуді тоқтату негізгі мәзірінен пәрмендер тізбегін орындаңыз немесе отладчик құралдар тақтасындағы көк түймені басыңыз.

SQL Server 2012 бағдарламасында SQL Server Management Studio бағдарламасындағы кірістірілген жөндеу құралы бірнеше жаңа мүмкіндіктермен жақсартылды. Енді сіз онда келесі операциялардың бірқатарын орындай аласыз:

    Тоқтау нүктесінің шартын көрсетіңіз. Үзіліс нүктесінің шартыбағаланатын мәні кодтың орындалуы берілген нүктеде тоқтатылатынын немесе тоқтатылатынын анықтайтын SQL өрнегі болып табылады. Тоқтау нүктесінің шартын көрсету үшін, қажетті тоқтау нүктесінің қызыл белгішесін тінтуірдің оң жақ түймешігімен басып, контекстік мәзірден Шартты таңдаңыз. «Үзіліс нүктесінің шарты» диалогтық терезесі ашылады, оған қажетті логикалық өрнекті енгізу қажет. Оған қоса, егер өрнек ақиқат болса, орындауды тоқтатқыңыз келсе, онда «Шын» қосқышын орнату керек. Егер өрнек өзгерсе, орындауды тоқтату қажет болса, онда Өзгертілгенде (Өзгертілгенде) қосқышты орнату керек.

    Тоқтау нүктесіне жету санын көрсетіңіз. Соққылар саны орындалу кезінде тоқтау нүктесіне қанша рет тигеніне негізделген берілген нүктеде орындауды тоқтату шарты болып табылады. Итерациялардың көрсетілген санына және берілген тоқтау нүктесі үшін көрсетілген кез келген басқа шартқа жеткенде, отладчик көрсетілген әрекетті орындайды. Соққылар санына негізделген үзіліс шарты келесілердің бірі болуы мүмкін:

    1. шартсыз (әдепкі әрекет) (Үнемі үзу);

      егер соққылар саны көрсетілген мәнге тең болса (Оның саны көрсетілген мәнге тең болған кезде үзу);

      егер соққылар саны көрсетілген мәннің еселігі болса (соққылар саны көрсетілген мәннің еселігіне тең болғанда үзу);

      егер соққылар саны көрсетілген мәнге тең немесе одан көп болса (Оның саны көрсетілген мәнге үлкен немесе тең болған кезде үзіліс).

    Түзету кезіндегі соққылар санын орнату үшін «Үзіліс нүктелері» қойындысындағы қажетті тоқтау нүктесі белгішесін тінтуірдің оң жақ түймешігімен нұқыңыз, контекстік мәзірден Соққылар саны параметрін таңдаңыз, содан кейін пайда болатын үзіліс нүктесінің соққы саны тілқатысу терезесінде келесі шарттардың бірін таңдаңыз: жоғарыдағы тізімнен. . Мәнді қажет ететін опциялар үшін оны шарттар ашылмалы тізімінің оң жағындағы мәтін жолағына енгізіңіз. Көрсетілген шарттарды сақтау үшін OK түймесін басыңыз.

    Тоқтау нүктесі сүзгісін көрсетіңіз. Тоқтау нүктесінің сүзгісі тоқтау нүктесінің жұмысын тек көрсетілген компьютерлерге, процестерге немесе ағындарға шектейді. Тоқтау нүктесі сүзгісін орнату үшін қажетті тоқтау нүктесін тінтуірдің оң жақ түймешігімен басып, контекстік мәзірден Сүзгі тармағын таңдаңыз. Содан кейін, ашылатын үзіліс нүктесі сүзгілері тілқатысу терезесінде осы тоқтау нүктесінің орындалуын шектегіңіз келетін ресурстарды көрсетіңіз. Көрсетілген шарттарды сақтау үшін OK түймесін басыңыз.

    Тоқтау нүктесінде әрекетті көрсетіңіз. When Hit шарты буманың орындалуы берілген тоқтау нүктесіне жеткенде орындалатын әрекетті көрсетеді. Әдепкі бойынша, соққыларды санау шарты да, тоқтату шарты да орындалғанда, орындау тоқтатылады. Немесе алдын ала көрсетілген хабарды көрсетуге болады.

    Тоқтау нүктесіне соғылған кезде не істеу керектігін көрсету үшін қажетті тоқтау нүктесінің қызыл белгішесін тінтуірдің оң жақ түймешігімен нұқыңыз және контекстік мәзірден Қашан соғу опциясын таңдаңыз. Ашылатын үзіліс нүктесі болған кезде тілқатысу терезесінде қажетті әрекетті таңдаңыз. Көрсетілген шарттарды сақтау үшін OK түймесін басыңыз.

    Жылдам қарау терезесін пайдаланыңыз. QuickWatch терезесінде Transact-SQL өрнегі мәнін көруге болады, содан кейін сол өрнекті қарау мәндері терезесінде сақтауға болады. Жылдам қарау терезесін ашу үшін Debug мәзірінен Жылдам қарау опциясын таңдаңыз. Бұл терезедегі өрнекті Өрнек (Өрнек) ашылмалы тізімінен таңдауға немесе оны осы өріске енгізуге болады.

    Жылдам ақпарат кеңесін пайдаланыңыз. Меңзерді код идентификаторының үстіне апарған кезде, Жылдам ақпарат құралы оның мәлімдемесін қалқымалы терезеде көрсетеді.

Кесте өрнектеріішкі сұраулар деп аталады, олар кесте күтілетін жерде қолданылады. Кесте өрнектерінің екі түрі бар:

    туынды кестелер;

    жалпыланған кесте өрнектері.

Кесте өрнектерінің осы екі пішіні келесі ішкі бөлімдерде талқыланады.

Туынды кестелер

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

USE SampleDb; АЙДЫ(EnterDate) Enter_month ретінде ТАҢДАУ FROM Works_on GROUP BY enter_month;

Бұл сұрауды орындау әрекеті келесі қате туралы хабарды қайтарады:

Хабарлама 207, 16-деңгей, 1-күй, 5-жол "enter_month" баған атауы жарамсыз. (207-хабарлама: 16-деңгей, 1-күй, 5-жолда баған атауы жарамсыз enter_month)

Қатенің себебі: GROUP BY сөйлемі SELECT операторының сәйкес тізімі өңделмес бұрын өңделеді және enter_month бағанының бүркеншік аты топ өңделген кезде белгісіз.

Бұл мәселені алдыңғы сұрауды қамтитын көріністі пайдалану арқылы шешуге болады (GROUP BY тармағынсыз), себебі FROM сөйлемі GROUP BY сөйлемінің алдында орындалады:

USE SampleDb; Енгізу_ай БІЛІНЕН ТАҢДАУ (Айды енгізу_ай ретінде(ЕнгізуКүні) Жұмыстар_қосында) ретінде m GROUP BY enter_month;

Бұл сұраудың нәтижесі келесідей болады:

Әдетте, кесте өрнегі кесте атауы пайда болуы мүмкін SELECT операторының кез келген жерінде орналастырылуы мүмкін. (Кесте өрнегі әрқашан кесте немесе ерекше жағдайларда өрнек болып табылады.) Келесі мысал SELECT операторының таңдау тізімінде кесте өрнегін пайдалануды көрсетеді:

Бұл сұраудың нәтижесі:

Жалпы кесте өрнектері

Common Table Expression (OTB) (қысқаша CTE) Transact-SQL тілі қолдайтын аталған кесте өрнегі болып табылады. Жалпы кесте өрнектері сұраулардың келесі екі түрінде қолданылады:

    рекурсивті емес;

    рекурсивті.

Сұраныстардың осы екі түрі келесі бөлімдерде талқыланады.

OTB және рекурсивті емес сұраулар

OTB рекурсивті емес түрін туынды кестелер мен көріністерге балама ретінде пайдалануға болады. Әдетте OTB анықталады WITH сөйлемдеріжәне WITH сөйлемінде қолданылған атқа сілтеме жасайтын қосымша сұрау. Transact-SQL тілінде WITH түйінді сөзінің мағынасы көп мағыналы. Түсініксіздікті болдырмау үшін WITH операторының алдындағы мәлімдеме нүктелі үтірмен аяқталуы керек.

AdventureWorks2012 пайдалану; Sales.SalesOrderHeader ЖЕРДЕН SalesOrderID ТАҢДАҢЫЗ. TotalDue > (Sales.SalesOrderHeader ҚАЙДА ЖЫЛЫ(ТапсырысКүні) = "2005") ЖӘНЕ жүк тасымалдау > (Sales.SalesOrderHeader = WHERE (Sales.SalesOrderOr)2005 ЖЫЛЫНАН АВГ(Жалпы төлеу мерзімі) ТАҢДАҢЫЗ. ")/2.5;

Бұл мысалдағы сұрау жиынтық салықтары (TotalDue) барлық салықтардың орташа мәнінен жоғары және жүк алымдары (Жүк тасымалы) орташа салықтардың 40%-дан асатын тапсырыстарды таңдайды. Бұл сұраудың негізгі қасиеті оның көлемділігі болып табылады, өйткені кірістірілген сұрауды екі рет жазу керек. Сұрау құрылымының ауқымын азайтудың бір ықтимал жолы ішкі сұрауды қамтитын көріністі жасау болады. Бірақ бұл шешім біршама қиын, себебі ол сұрау аяқталғаннан кейін көріністі жасауды және жоюды талап етеді. Ең жақсы тәсіл OTB құру болады. Төмендегі мысал рекурсивті емес OTB пайдалануды көрсетеді, ол жоғарыдағы сұрау анықтамасын қысқартады:

AdventureWorks2012 пайдалану; price_calc(year_2005) AS (Sales.SalesOrderHeader ҚАЙДА ЖЫЛЫ(ТапсырысКүні) = "2005") ҚАЙДА ЖАЛПЫ ТАПСЫРЫСТЫ ТАҢДАУ(ТапсырысКүні) ҚАЙДА ЖАЛПЫ ТӨЛЕМІН ТАҢДАҢЫЗ AVG(жалпы мерзімі) /2.5;

Рекурсивті емес сұраулардағы WITH сөйлемінің синтаксисі келесідей:

cte_name параметрі нәтижелік кестені анықтайтын OTB атауы, ал column_list параметрі кесте өрнегіндегі бағандар тізімі болып табылады. (Жоғарыдағы мысалда OTB баға_есеп деп аталады және бір баған бар, year_2005.) Inner_query параметрі сәйкес кесте өрнегі нәтижелер жиынын көрсететін SELECT мәлімдемесін көрсетеді. Анықталған кесте өрнегін одан кейін сыртқы_сұрауда қолдануға болады. (Жоғарыдағы мысалдағы сыртқы сұрау қос кірістірілген сұрауды жеңілдету үшін OTB price_calc және оның year_2005 бағанын пайдаланады.)

OTB және рекурсивті сұраулар

Бұл бөлімде күрделілігі жоғары материал ұсынылған. Сондықтан оны алғаш оқыған кезде оны өткізіп жіберіп, кейінірек қайта оралу ұсынылады. OTB рекурсивті болуы мүмкін, себебі OTB-де өздеріне сілтемелер болуы мүмкін. Рекурсивті сұрауға арналған негізгі OTB синтаксисі келесідей:

cte_name және column_list параметрлері рекурсивті емес сұраулар үшін OTB-дегідей мағынаға ие. WITH сөйлемінің негізгі бөлігі оператормен біріктірілген екі сұраудан тұрады БАРЛЫҚ ОДАҚ. Бірінші сұрау тек бір рет шақырылады және ол рекурсияның нәтижесін жинақтай бастайды. UNION ALL операторының бірінші операнды OTB-ге сілтеме жасамайды. Бұл сұрау анықтамалық сұрау немесе дереккөз деп аталады.

Екінші сұрауда OTB сілтемесі бар және оның рекурсивті бөлігін көрсетеді. Осыған байланысты ол рекурсивті мүше деп аталады. Рекурсивті бөлікке бірінші шақыруда OTB сілтемесі анықтамалық сұраудың нәтижесін көрсетеді. Рекурсивті мүше сұрауға бірінші шақырудың нәтижесін пайдаланады. Осыдан кейін жүйе рекурсивті бөлікті қайтадан шақырады. Рекурсивті мүшеге қоңырау алдыңғы шақыру бос нәтиже жиынын қайтарғанда аяқталады.

UNION ALL операторы осы уақытқа дейін жинақталған жолдарды, сондай-ақ рекурсивті мүшеге ағымдағы шақыру арқылы қосылған қосымша жолдарды қосады. (UNION ALL операторының болуы нәтижеден қайталанатын жолдар жойылмайтынын білдіреді.)

Соңында, outer_query параметрі екі мүшенің бірлестігіне барлық қоңырауларды алу үшін OTB пайдаланатын сыртқы сұрауды анықтайды.

OTB рекурсивті пішінін көрсету үшін біз төмендегі мысалда көрсетілген кодпен анықталған және толтырылған Ұшақ кестесін қолданамыз:

USE SampleDb; CREATE TABLE Airplane (VARCHAR(10) Құрамы, VARCHAR(10), ContainedAssembly Contained INT, UnitCost DECIMAL(6,2)); INSERT INTO Airplane VALUES («Ұшақ», «Фюзеляж», 1, 10); INSERT INTO Airplane VAVAES («Ұшақ», «Қанат», 1, 11); INSERT INTO Airplane VALUES («Ұшақ», «Құйрық», 1, 12); ҰШАҚ МӘНДЕРІНЕ INSERT INTO («Фюзеляж», «Салон», 1, 13); ҰШАҚ МӘНДЕРІНЕ КІРУ («Фюзеляж», «Кокпит», 1, 14); INSERT INTO Airplane VAVAES («Фюзеляж», «Мұрын», 1, 15); INSERT INTO Airplane VALUES("Салон", NULL, 1,13); INSERT INTO Airplane VALUES("кабин", NULL, 1, 14); INSERT INTO Airplane VALUES("Мұрын", NULL, 1, 15); INSERT INTO Airplane VALUES("Wings", NULL,2, 11); INSERT INTO Airplane VALUES("Tail", NULL, 1, 12);

Ұшақ кестесінде төрт баған бар. ContainingAssembly бағаны жинақты анықтайды, ал ContainedAssembly бағаны сәйкес жинақты құрайтын бөліктерді (бір-бірден) анықтайды. Төмендегі суретте ұшақтың ықтимал түрі мен оның құрамдас бөліктерінің графикалық иллюстрациясы көрсетілген:

Ұшақ кестесі келесі 11 жолдан тұрады:

Келесі мысал әрбір құрастырудың жалпы құнын есептейтін сұрауды анықтау үшін WITH сөйлемін пайдаланады:

USE SampleDb; БӨЛІКТЕР_ТІЗІМІМЕН(құрастыру1, саны, құны) АСҚАН (Құрамды жинақты, саны бар, Ұшақтан бірліктің құнын ТАҢДАУ ЖЕРІНДЕГІ ҰШАҚ БАРЛЫҒЫН ТАҢДАУ a. Құрамды құрастыру, a. Саны Contained, D (AS.2, CAST) ) Бөлшектердің_тізбесінен l, Ұшақ a ҚАЙДА l.құрастыру1 = a.Құрамды жинақ) ТАҢДАУ құрастыру1 "Бөлшек", "Саны", құны "Бағасы" бөлшектер_тізімінен;

WITH сөйлемі үш бағаннан тұратын бөліктердің_тізімі деп аталатын OTB тізімін анықтайды: құрастыру1, сан және құн. Мысалдағы бірінші SELECT операторы рекурсия процесінің бірінші қадамының нәтижелерін сақтау үшін тек бір рет шақырылады. Мысалдың соңғы жолындағы SELECT операторы келесі нәтижені көрсетеді.

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

Бірақ, деректер қорын үнемі пайдалануына қарамастан, көптеген бағдарламалық жүйелерді әзірлеушілер үшін бірдей терминдердің әртүрлі түсіндірілуіне байланысты көптеген «ақ дақтар» бар. SQL тілін қарастырмас бұрын базалық мәліметтер базасының терминдеріне қысқаша анықтама береміз. Сонымен.

Мәліметтер базасы - реттелген деректер құрылымдарын және олардың қарым-қатынастарын сақтауға арналған файл немесе файлдар жиынтығы. Көбінесе мәліметтер қорын басқару жүйесі деп атайды – ол тек белгілі бір форматтағы ақпараттың репозиторийі болып табылады және әртүрлі ДҚБЖ-мен жұмыс істей алады.

Кесте - Белгілі бір атрибут бойынша топтастырылған құжаттарды сақтайтын қалтаны елестетейік, мысалы, соңғы айдағы тапсырыстар тізімі. Бұл компьютердегі кесте.Бөлек кестенің өзінің бірегей атауы бар.

Деректер түрі - белгілі бір бағанда немесе жолда сақтауға рұқсат етілген ақпарат түрі. Бұл сандар немесе белгілі бір форматтағы мәтін болуы мүмкін.

Баған және жол- бәріміз де жолдар мен бағандары бар электрондық кестелермен жұмыс істедік. Кез келген реляциялық мәліметтер базасы кестелермен бірдей жұмыс істейді. Жолдарды кейде жазбалар деп те атайды.

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

SQL дегеніміз не?

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

1992 жылдан бастап ANSI SQL деп аталатын жалпы қабылданған стандарт бар. Ол операторлардың негізгі синтаксисі мен функцияларын анықтайды және ORACLE сияқты ДҚБЖ нарығының барлық көшбасшыларымен қолдайды. Бір шағын мақалада тілдің барлық мүмкіндіктерін қамту мүмкін емес, сондықтан біз тек негізгі SQL сұрауларын қысқаша қарастырамыз. Мысалдар тілдің қарапайымдылығы мен мүмкіндіктерін анық көрсетеді:

  • мәліметтер қоры мен кестелерді құру;
  • мәліметтерді іріктеу;
  • жазбаларды қосу;
  • ақпаратты өзгерту және жою.

SQL деректер түрлері

Дерекқор кестесіндегі барлық бағандар деректердің бір түрін сақтайды. SQL тіліндегі деректер типтері басқа программалау тілдеріндегідей.

Кестелер мен мәліметтер қорын құру

SQL тілінде жаңа мәліметтер қорын, кестелерді және басқа сұрауларды құрудың екі жолы бар:

  • ДҚБЖ консолі арқылы
  • Дерекқор серверіне кіретін интерактивті басқару құралдарын пайдалану.

Оператор жаңа мәліметтер базасын жасайды ДЕРЕКТЕР БАЗЫН ҚҰРУ<наименование базы данных>; . Көріп отырғаныңыздай, синтаксис қарапайым және қысқа.

Төмендегі параметрлермен CREATE TABLE операторы арқылы мәліметтер базасының ішінде кестелерді жасаймыз:

  • кесте атауы
  • баған атаулары және деректер түрлері

Мысал ретінде келесі бағандары бар Тауарлар кестесін құрайық:

Біз кестені жасаймыз:

КЕСТЕН ​​ЖАСАУ Тауар

(тауар_идентификаторы CHAR(15) NULL ЕМЕС,

vendor_id CHAR(15) NULL ЕМЕС,

тауар_атауы CHAR(254) NULL,

тауар_бағасы DECIMAL(8,2) NULL,

commodity_desc VARCHAR(1000) NULL);

Кестеде бес баған бар. Атаудан кейін деректер түрі келеді, бағандар үтірмен бөлінеді. Бағанның мәні бос болуы мүмкін (NULL) немесе толтырылуы керек (NULL ЕМЕС) және бұл кесте жасалған кезде анықталады.

Кестеден деректерді таңдау

Деректерді таңдау операторы ең жиі қолданылатын SQL сұранысы болып табылады. Ақпарат алу үшін осындай кестеден нені таңдағымыз келетінін көрсету керек. Алдымен қарапайым мысал:

Тауардан тауар_атын ТАҢДАҢЫЗ

SELECT операторынан кейін ақпаратты алуға арналған бағанның атын көрсетеміз, ал FROM кестені анықтайды.

Сұрауды орындау нәтижесі дерекқорға енгізілген ретпен Тауар_атауы мәндері бар барлық кесте жолдары болады, яғни. ешқандай сұрыптаусыз. Нәтижеге тапсырыс беру үшін қосымша ORDER BY сөйлемі қолданылады.

Бірнеше өрістерге сұрау салу үшін оларды келесі мысалдағыдай үтірмен бөліп тізімдеңіз:

тауар_идентификаторын, тауар_атын, тауар_бағасын тауардан ТАҢДАҢЫЗ

Сұрау нәтижесі ретінде жолдың барлық бағандарының мәнін алуға болады. Ол үшін «*» белгісі қолданылады:

Тауардан * ТАҢДАҢЫЗ

  • Қосымша SELECT мыналарды қолдайды:
  • Деректерді сұрыптау (ORDER BY операторы)
  • Шарттарға сәйкес таңдаңыз (ҚАЙДА)
  • Топтастыру термині (GROUP BY)

Жолды қосу

Кестеге жол қосу үшін INSERT операторы бар SQL сұраулары қолданылады. Қосуды үш жолмен жасауға болады:

  • жаңа тұтас жолды қосыңыз;
  • жолдың бөлігі;
  • сұрау нәтижелері.

Толық жолды қосу үшін кесте атын және жаңа жолдың бағандарының (өрістерінің) мәндерін көрсету керек. Міне, мысал:

INSERT INTO TOUAR VALUES("106 ", "50", "Coca-Cola", "1,68", "Алкоголь жоқ ,)

Мысал кестеге жаңа өнімді қосады. Мәндер әрбір баған үшін VALUES мәнінен кейін көрсетіледі. Егер баған үшін сәйкес мән болмаса, NULL мәнін көрсету керек. Бағандар кесте жасалған кезде көрсетілген ретпен мәндермен толтырылады.

Жолдың бір бөлігін ғана қоссаңыз, мысалдағыдай баған атауларын нақты көрсетуіңіз керек:

INSERT INTO тауар (тауар_идентификаторы, сатушы_идентификаторы, тауар_атауы)

VALUES("106 ", '50", "Coca Cola",)

Біз тек өнімнің идентификаторларын, жеткізушіні және оның атауын енгіздік, ал қалған өрістерді бос қалдырдық.

Сұрау нәтижелерін қосу

INSERT негізінен жолдарды қосу үшін пайдаланылады, бірақ SELECT операторының нәтижелерін қосу үшін де пайдаланылуы мүмкін.

Деректерді өзгерту

Дерекқор кестесінің өрістеріндегі ақпаратты өзгерту үшін UPDATE операторын пайдалану керек. Операторды екі жолмен пайдалануға болады:

  • Кестедегі барлық жолдар жаңартылды.
  • Тек белгілі бір сызық үшін.

UPDATE үш негізгі элементтен тұрады:

  • өзгертулер енгізу қажет кесте;
  • өріс атаулары және олардың жаңа мәндері;
  • өзгерту үшін жолдарды таңдау шарттары.

Мысал қарастырайық. ID=106 бар өнімнің бағасы өзгерді делік, сондықтан бұл жолды жаңарту қажет. Біз келесі мәлімдемені жазамыз:

ЖАҢАРТУ ТАУАР ЖИНАҒЫ commodity_price = "3.2" ҚАЙДА commodity_id = "106"

Біз кестенің атын көрсеттік, біздің жағдайда Commodity, онда жаңарту орындалады, содан кейін SET - бағанның жаңа мәні және WHERE ішінде қажетті ID мәнін көрсету арқылы қажетті жазбаны таптық.

Бірнеше бағандарды өзгерту үшін SET операторынан кейін үтірмен бөлінген бірнеше баған-мән жұптарын көрсетіңіз. Өнімнің атауы мен бағасы жаңартылатын мысалды қарастырайық:

ЖАҢАРТУ ТАУАР ЖИНАҒЫ commodity_name='Fanta', commodity_price = "3.2" ҚАЙДА commodity_id = "106"

Бағандағы ақпаратты жою үшін кесте құрылымы рұқсат етсе, оны NULL мәніне орнатуға болады. NULL мәтін немесе сан түрінде нөл емес, дәл «жоқ» мәні екенін есте ұстаған жөн. Өнім сипаттамасын жою:

ЖАҢАРТУ ТАУАР ЖИНАҒЫ commodity_desc = NULL WHERE commodity_id = "106"

Жолдарды жою

Кестедегі жолдарды жоюға арналған SQL сұраулары DELETE операторымен орындалады. Екі пайдалану жағдайы бар:

  • кестедегі белгілі бір жолдар жойылады;
  • кестедегі барлық жолдар жойылады.

Кестеден бір жолды жою мысалы:

commodity_id = "106"

DELETE FROM командасынан кейін жолдар жойылатын кестенің атын көрсетеміз. WHERE сөйлемі жою үшін жолдар таңдалатын шартты қамтиды. Мысалда біз ID=106 өнім желісін жоямыз. ҚАЙДА дегенді көрсету өте маңызды. бұл мәлімдемені өткізіп жіберу кестедегі барлық жолдарды жояды. Бұл өрістердің мәнін өзгертуге де қатысты.

DELETE операторы баған атауларын немесе метатаңбаларды көрсетпейді. Ол жолдарды толығымен жояды, бірақ бір бағанды ​​жоя алмайды.

Microsoft Access-те SQL тілін қолдану

Әдетте интерактивті түрде кестелерді, дерекқорларды құру, дерекқордағы деректерді басқару, өзгерту, талдау және ыңғайлы интерактивті сұраныс құрастырушы (Query Designer) арқылы SQL Access сұрауларын жүзеге асыру үшін пайдаланылады, оның көмегімен кез келген күрделіліктегі SQL операторларын құруға және дереу орындауға болады.

Access ДҚБЖ кез келген ODBC деректер көзіне SQL сұрауларының генераторы ретінде пайдаланылуы мүмкін серверге кіру режиміне де қолдау көрсетіледі. Бұл мүмкіндік Access қолданбаларына кез келген пішіммен әрекеттесуге мүмкіндік береді.

SQL кеңейтімдері

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

Тілдегі ең көп таралған диалектілер:

  • Oracle деректер базасы - PL/SQL
  • Interbase, Firebird - PSQL
  • Microsoft SQL Server - Transact-SQL
  • PostgreSQL - PL/pgSQL.

SQL вебке

MySQL ДҚБЖ GNU General Public License бойынша таратылады. Жеке модульдерді әзірлеу мүмкіндігі бар коммерциялық лицензия бар. Құрамдас бөлігі ретінде ол XAMPP, WAMP және LAMP сияқты интернет-серверлердің ең танымал жинақтарына кіреді және Интернетте қосымшаларды әзірлеуге арналған ең танымал ДҚБЖ болып табылады.

Оны Sun Microsystems әзірлеген және қазіргі уақытта Oracle корпорациясы қолдайды. 64 терабайтқа дейінгі дерекқорларды, SQL:2003 синтаксистік стандартын, дерекқорларды және бұлттық қызметтерді репликациялауды қолдайды.

SQL- Құрылымдық сұрау тілі.
Бұл шолуда біз SQL сұрауларының ең көп тараған түрлерін қарастырамыз.
SQL стандарты анықталған ANSI(Америка ұлттық стандарттар институты).
SQL – реляциялық деректер қорларына арнайы бағытталған тіл.

SQL бөлу:


DDL
(Деректерді анықтау тілі) - ANSI жүйесіндегі схеманы сипаттау тілі деп аталатын, дерекқорда объектілерді (кестелер, индекстер, көріністер және т.б.) жасайтын командалардан тұрады.
DML(Деректерді өңдеу тілі) кез келген уақытта кестелерде қандай мәндер бар екенін анықтайтын командалар жиынтығы.
DCD(Деректерді басқару тілі) пайдаланушыға белгілі бір әрекеттерді орындауға рұқсат беру немесе бермеуді анықтайтын құралдардан тұрады. Олар ANSI жүйесіндегі DDL бөлігі болып табылады. Бұл атауларды ұмытпаңыз. Бұл әр түрлі тілдер емес, SQL пәрмендерінің функциялары бойынша топтастырылған бөлімдері.

Деректер түрлері:

SQL Server - Деректер түрлері

Сипаттама

бигинт (int 8)

бигинт (int 8)

екілік(n)

екілік(n) немесе сурет

кейіпкер
(синоним таңба)

ұлттық кейіпкернемесе ntext

сипаты әртүрлі(синоним char әр түрлі вархар)

ұлттық сипаты әртүрлінемесе ntext

дата уақыты

дата уақыты

ондық

ол сандық

қос дәлдік

қос дәлдік

бүтін сан (int 4) (синоним: int)

бүтін сан (int 4)

ұлттық мінез(синоним: ұлттық мінез, nchar)

ұлттық мінез

Сандық(синонимдер: ондық, желтоқсан)

ұлттық сипаты әртүрлі(синонимдер: ұлттық сипаты әртүрлі, nvarchar)

ұлттық сипаты әртүрлі

Smalldatetime

дата уақыты

кішкентай (int 2)

кішкентай (int 2)

Шағын ақша

sql_variant

Енді қолдау көрсетілмейді

Nмәтін
SQL Server 2005 нұсқасынан бастап оны пайдалану ұсынылмайды.

Уақыт белгісі

Қолдау көрсетілмейді

кішкентай (int 1)

кішкентай (int 1)

Бірегей идентификатор

бірегей идентификатор

варбинарлық(n)

варбинарлық(n) немесе сурет

smalldatetime

дата уақыты

кішкентай (int 2)

кішкентай (int 2)

шағын ақша

sql_variant

Қолдау көрсетілмейді

уақыт белгісі

Қолдау көрсетілмейді

кішкентай (int 1)

кішкентай (int 1)

бірегей идентификатор

бірегей идентификатор

варбинарлық(n)

варбинарлық(n) немесе сурет

SQL Server 2000 жүйесіндегі деректер типінің кестесі

СҰРАНЫС ДЕГЕН НЕ?

Сұранысдерекқор бағдарламасына беретін пәрмен. Сұраулар DML тілінің бөлігі болып табылады. SQL тіліндегі барлық сұраныстар бір командадан тұрады. Бұл пәрменнің құрылымы алдамшы қарапайым, себебі өте күрделі бағалаулар мен деректер манипуляцияларын орындау үшін оны кеңейту керек.

ТАҢДАУ пәрмені:

ТАҢДАУ«Таңдау» - ең жиі қолданылатын команда, ол кестеден деректерді таңдау үшін қолданылады.
SELECT көмегімен сұрау түрі:

пайдаланушылар_базасынан идентификаторды, пайдаланушы_атын, қаланы, туған_күнді ТАҢДАҢЫЗ;

Мұндай сұрау user_base кестесінен SELECT пәрменінен кейін үтірмен көрсетілген бағандардың барлық мәндерін көрсетеді. Сондай-ақ, сіз барлық бағандарды бір таңбамен көрсете аласыз, * яғни. ТАҢДАУ * FROM users_base ; - мұндай сұраныс кестедегі барлық мәліметтерді көрсетеді.

SELECT пәрмен құрылымы:

SELECT (сұрауда көрсетілетін үтірмен бөлінген баған атаулары) FROM (деректер қорындағы кесте атауы)
сұраныстың ең қарапайым түрі болып табылады. Деректерді шығаруға ыңғайлы болу үшін қосымша командалар бар («Функциялар» төменде қараңыз)

DML командалары:

Мәндерді өрістерден үш DML (Деректерді өңдеу тілі) пәрменімен орналастыруға және жоюға болады:
INSERT(Кірістіру)
ЖАҢАРТУ(жаңарту, өзгерту),
ЖОЮ(жою)

INSERT пәрмені:

INSERT INTO users_base (пайдаланушы_аты, қаласы, туған_күні) VALUES ('Александр', 'Ростов', '20.06.1991');

INSERT пәрмені INTO префиксімен келеді (in to - in), содан кейін жақшада біз деректерді енгізуіміз керек бағандардың аттары, содан кейін VALUES (мәндер) командасы келеді, ал жақшада өз кезегінде мәндер бар. (бағандармен мәндердің ретін сақтау міндетті, мәндер сіз көрсеткен бағандармен бірдей ретпен келуі керек).

UPDATE пәрмені:

UPDATE users_base SET user_name = 'Alex';

UPDATE пәрмені кестедегі мәндерді жаңартады. Алдымен UPDATE пәрменінің өзі, содан кейін кесте аты, SET пәрменінен (жиынынан) кейін баған атауы және оның тырнақшадағы мәні (мәннің жол пішімі болса, егер ол сандық мән болса және баған болса, тырнақша қойылады) vchar деректер түріне және кез келген басқа жол түрлеріне байланысты емес, тырнақшалар мағынасыз.)

DELETE пәрмені:

DELETE FROM users_base WHERE user_name = 'Василий';

DELETE командасы жолды түгел жояды, WHERE шарты бойынша жолды анықтайды (Қайда). Бұл жағдайда бұл сұрау user_name бағанының мәні Василий болған барлық жолдарды жояды. WHERE критерийлері және басқалары туралы сәл кейінірек айтатын боламыз.

Критерийлер, функциялар, шарттар және т.б. бұл бізге SQL-де көмектеседі:

Кестедегі кез келген жол үшін шарты ақиқат немесе жалған болуы мүмкін предикаттарды орнатуға мүмкіндік беретін SELECT пәрменінің WHERE сөйлемі және басқа DML пәрмендері. Пәрмен кестеден осындай мәлімдеме ақиқат болатын жолдарды ғана шығарады.
Мысалы:
Идентификаторды, қаланы, туған_күнді ТАҢДАУ FROM users_base WHERE user_name = 'Alex';- мұндай сұрау WHERE шартына сәйкес келетін жолдарды ғана көрсетеді, атап айтқанда user_name бағанында Alex мәні бар барлық жолдар.

ORDER BY – таңдалған жолдарды сұрыптау шарты. ASC және DESC 2 критерийі бар. ASC (А-Я немесе 0-ден 9-ға дейін сұрыптау)

DESC (ASC қарама-қарсы).
Мысалы:
пайдаланушылар_базасынан идентификаторды, қаланы, туған_күнді ТАҢДАУ ASC пайдаланушы_аты бойынша ТАПСЫРЫС; - мұндай сұрау пайдаланушы_аты бағанында А-дан Я-ға дейін сұрыпталған мәндерді көрсетеді (A-Z; 0-9)

Бұл шартты WHERE сөйлемімен бірге қолдануға болады.
Мысалы:
ТАҢДАУ идентификаторы, қала, туған_күн FROM users_base WHERE user_name = 'Alex' ASC идентификаторы бойынша ТАПСЫРЫС;

DISTINCT (Айрықша) — SELECT тармағынан қайталанатын мәндерді жою жолын ұсынатын аргумент. Анау. егер сізде бағанда қайталанатын мәндер болса, user_name делік, онда DISTINCT сіз үшін тек біреуін көрсетеді, мысалы, дерекқорда Алексей деген 2 адам бар, содан кейін DISTINCT функциясын пайдаланатын сұрау тек 1 мәнді көрсетеді ол бірінші кездеседі ...
Мысалы:
пайдаланушылар_базасынан DISTINCT пайдаланушы_атын ТАҢДАҢЫЗ;- мұндай сұрау user_name бағанындағы барлық жазбалардың мәндерін көрсетеді, бірақ олар қайталанбайды, яғни. егер сізде қайталанатын мәндердің шексіз саны болса, олар көрсетілмейді...

ЖӘНЕ - аргумент ретінде екі логикалық мәнді (A ЖӘНЕ В түрінде) қабылдайды және екеуінің де ақиқат екенін көру үшін оларды шынға қарсы бағалайды.
Мысалы:
SELECT * FROM users_base WHERE city = 'Ростов' ЖӘНЕ user_name = 'Александр';- қала атауы бір жолда кездесетін кестедегі барлық мәндерді көрсетеді (бұл жағдайда Ростов және пайдаланушы аты Александр.

НЕМЕСЕ - аргумент ретінде екі логикалық мәнді (A НЕМЕСЕ В түрінде) қабылдайды және олардың біреуінің ақиқаттығын дұрыстығын бағалайды.

SELECT * FROM users_base WHERE city = 'Ростов' OR user_name = 'Александр';- жолда Ростов қаласының атауы немесе Александр пайдаланушы аты бар кестедегі барлық мәндерді көрсетеді.

ЕМЕС - аргумент ретінде жалғыз логикалық мәнді (NO A пішінінде) қабылдайды және оның мәнін жалғаннан ақиқатқа немесе шын мәнін жалғанға өзгертеді.
SELECT * FROM users_base WHERE city = 'Ростов' OR NOT user_name = 'Александр';- Ростов қаласының атауы бір жолда кездесетін кестедегі барлық мәндерді көрсетеді немесе пайдаланушы аты дәл Александр болмайды.

IN - берілген мән қосылатын немесе қосылмауы мүмкін мәндер жинағын анықтайды.
ТАҢДАУ * пайдаланушылар_базасынан ҚАЙДА ҚАЛАДА («Владивосток», «Ростов»);- мұндай сұрау қала бағанында көрсетілген қалалардың атауларын қамтитын кестедегі барлық мәндерді көрсетеді

Betent - IN операторына ұқсас. Жиыннан сандар арқылы көрсетуден айырмашылығы, IN сияқты, BETWEEN предикатты ақиқат ету үшін мәндері азаюы қажет ауқымды анықтайды.
* 1 ЖӘНЕ 10 АРАСЫНДА идентификаторды пайдаланушылар_базасынан ТАҢДАҢЫЗ;- id бағанында 1-ден 10-ға дейінгі аралықта болатын кестедегі барлық мәндерді көрсетеді

COUNT - сұрау таңдалған өрістердің жол нөмірлерін немесе NULL емес мәндерін шығарады.
COUNT (*) пайдаланушылар_базасынан ТАҢДАУ;- берілген кестедегі жолдар санын көрсетеді.
user_base FROM COUNT (DISTINCT user_name) ТАҢДАУ ;- пайдаланушы аттары бар жолдар санын көрсетеді (қайталанбайды)

SUM - берілген өрістегі барлық таңдалған мәндердің арифметикалық қосындысын шығарады.
SUM (id) FROM users_base ТАҢДАУ;- id бағанының барлық жолдарының мәндерінің қосындысын көрсетеді.

AVG - берілген өрістің барлық таңдалған мәндерін орташалайды.
AVG (id) ТАҢДАУ FROM users_base ;- id бағанының барлық таңдалған мәндерінің орташа мәнін шығарады

MAX - берілген өрістегі барлық таңдалған мәндердің ең үлкенін шығарады.

MIN - берілген өріс үшін барлық таңдалған мәндердің ең кішісін шығарады.

Кестені құру:

CREATE TABLE users_base(id бүтін сан, пайдаланушы_аты мәтіні, қала мәтіні, туған_күннің күні);- мұндай команданы орындау кестені құруға әкеледі, оған сәйкес мен мысалдар келтірдім ... Мұнда бәрі қарапайым, біз CREATE TABLE командасын жазамыз, содан кейін құрғымыз келетін кестенің атын, содан кейін жақшаға, үтірмен, бағандардың аттары және олардың деректер түрімен бөлінген. Бұл SQL тілінде кесте құрудың стандартты тәсілі. Енді мен SQL Server 2005 жүйесінде кестелерді құрудың мысалын беремін:

ANSI_NULLS ҚОСУ
ӨТ
QUOTED_IDENTIFIER ҚОСУ
ӨТ
БАР БОЛМАСА (ТАҢДАУ * FROM sys.objects ҚАЙДА object_id = OBJECT_ID(N".") ЖӘНЕ (N"U") теріңіз)
БАСТА
КЕСТЕН ​​ЖАСАУ.(

НҰЛ ЕМЕС,
НҰЛ ЕМЕС,
НҰЛ ЕМЕС,
КЛАСТЕРДІҢ БІРІНШІ КІЛТІ
ASC


Соңы
ӨТ
ANSI_NULLS ҚОСУ
ӨТ
QUOTED_IDENTIFIER ҚОСУ
ӨТ
БАР БОЛМАСА (ТАҢДАУ * FROM sys.objects ҚАЙДА object_id = OBJECT_ID(N".") ЖӘНЕ (N"U") теріңіз)
БАСТА
КЕСТЕН ​​ЖАСАУ.(
IDENTITY(1,1) НҰЛ ЕМЕС,
NULL,
NULL,
КЛАСТЕРДІҢ БІРІНШІ КІЛТІ
ASC
)WITH(IGNORE_DUP_KEY=OFF) ҚОСУ
) TEXTIMAGE_ON
Соңы
ӨТ
ANSI_NULLS ҚОСУ
ӨТ
QUOTED_IDENTIFIER ҚОСУ
ӨТ
БАР БОЛМАСА (ТАҢДАУ * FROM sys.objects ҚАЙДА object_id = OBJECT_ID(N".") ЖӘНЕ (N"U") теріңіз)
БАСТА
КЕСТЕН ​​ЖАСАУ.(
IDENTITY(1,1) НҰЛ ЕМЕС,
NULL,
NULL,
КЛАСТЕРДІҢ БІРІНШІ КІЛТІ
ASC
)WITH(IGNORE_DUP_KEY=OFF) ҚОСУ
) ҚОСУ
Соңы

SQL Server 2005 синтаксисі басқа тақырып, мен жай ғана SQL бағдарламалау негіздерін сипаттағанымды көрсеткім келді, сіз негіздерді біле отырып, биіктерге жете аласыз.

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