Pyetjet e serverit Ms sql. Një shembull i krijimit të një pyetje (Query) në një bazë të dhënash MS SQL Server

Përditësimi i fundit: 07/05/2017

Në temën e fundit, një bazë të dhënash e thjeshtë me një tabelë u krijua në SQL Management Studio. Tani le të përcaktojmë dhe ekzekutojmë pyetjen e parë SQL. Për ta bërë këtë, hapni SQL Management Studio, kliko me të djathtën në elementin e nivelit të lartë në Object Explorer (emri i serverit) dhe zgjidhni New Query nga menyja e kontekstit që shfaqet:

Pas kësaj, një dritare për futjen e komandave SQL do të hapet në pjesën qendrore të programit.

Le të ekzekutojmë një pyetje në tabelën e krijuar në temën e mëparshme, në veçanti, ne do të marrim të gjitha të dhënat prej saj. Baza jonë e të dhënave quhet universitet, dhe tabela është dbo.Students, kështu që për të marrë të dhëna nga tabela, do të fusim pyetjen e mëposhtme:

ZGJIDH * NGA universiteti.dbo.Studentët

Deklarata SELECT ju lejon të zgjidhni të dhëna. FROM specifikon burimin nga ku mund të merren të dhënat. Në fakt, me këtë pyetje po themi "ZGJIDHni të gjithë nga tabela universiteti.dbo.Studentët". Vlen të përmendet se shtegu i plotë i tabelës përdoret për emrin e tabelës, duke treguar bazën e të dhënave dhe skemën.

Pasi të keni futur pyetjen, klikoni në butonin e shiritit të veglave Ekzekutoni, ose mund të shtypni tastin F5.

Si rezultat i ekzekutimit të pyetjes, në fund të programit do të shfaqet një tabelë e vogël, e cila do të shfaqë rezultatet e pyetjes - domethënë të gjitha të dhënat nga tabela Studentët.

Nëse na duhet të bëjmë pyetje të shumta kundër të njëjtës bazë të dhënash, atëherë mund të përdorim komandën USE për të kryer bazën e të dhënave. Në këtë rast, kur kërkoni tabela, mjafton të specifikoni emrin e tyre pa emrin dhe skemën e bazës së të dhënave:

PËRDORNI universitetin SELECT * FROM studentë

Në këtë rast, ne jemi duke ekzekutuar pyetjen në tërësi për serverin, ne mund të aksesojmë çdo bazë të dhënash në server. Por ne gjithashtu mund të ekzekutojmë pyetje vetëm brenda një baze të dhënash specifike. Për ta bërë këtë, klikoni me të djathtën në bazën e të dhënave të dëshiruar dhe zgjidhni New Query nga menyja e kontekstit:

Nëse në këtë rast do të donim të kërkonim tabelën Studentët e përdorur më sipër, atëherë nuk do të duhej të specifikonim emrin e bazës së të dhënave dhe skemën në pyetje, pasi këto vlera do të ishin tashmë të qarta.

SQL Server Management Studio ofron një mjet të plotë për krijimin e të gjitha llojeve të pyetjeve. Me të, ju mund të krijoni, ruani, ngarkoni dhe modifikoni pyetje. Përveç kësaj, ju mund të punoni në pyetje pa u lidhur me ndonjë server. Ky mjet gjithashtu ofron mundësinë për të zhvilluar pyetje për projekte të ndryshme.

Ju mund të punoni me pyetje si përmes Redaktorit të Query ashtu edhe në Solution Explorer. Ky artikull mbulon të dyja këto mjete. Përveç këtyre dy komponentëve të SQL Server Management Studio, ne do të shikojmë korrigjimin e kodit SQL duke përdorur korrigjuesin e integruar.

Redaktori i pyetjeve

Për të hapur panelin e Redaktuesit të pyetjeve Redaktori i pyetjeve, në shiritin e veglave të SQL Server Management Studio, klikoni butonin New Query. Ky panel mund të zgjerohet për të shfaqur butonat për krijimin e të gjitha pyetjeve të mundshme, jo vetëm pyetjeve të motorit të bazës së të dhënave. Si parazgjedhje, krijohet një pyetje e re e motorit të bazës së të dhënave, por gjithashtu mund të krijoni MDX, XMLA dhe pyetje të tjera duke klikuar butonin përkatës në shiritin e veglave.

Shiriti i statusit në fund të panelit "Editori i pyetjeve" tregon statusin e lidhjes së redaktuesit me serverin. Nëse nuk jeni i lidhur automatikisht me serverin, kur hapni Redaktuesin e pyetjeve, do t'ju shfaqet kutia e dialogut Lidhu me serverin, ku mund të zgjidhni serverin me të cilin do të lidheni dhe mënyrën e vërtetimit.

Redaktimi i pyetjeve jashtë linje ofron më shumë fleksibilitet sesa kur jeni i lidhur me një server. Nuk është e nevojshme të jeni të lidhur me një server për të redaktuar pyetjet dhe dritarja e redaktuesit të pyetjeve mund të shkëputet nga një server (duke përdorur komandën e menysë Query --> Connection --> Shkëputje) dhe të lidhet me një tjetër pa hapur një dritare tjetër redaktuesi. Për të zgjedhur modalitetin e redaktimit jashtë linje, në dialogun e lidhjes së serverit që shfaqet kur hapni redaktorin për një lloj pyetjeje specifike, thjesht klikoni butonin Anulo.

Ju mund të përdorni Redaktorin e pyetjeve për të kryer detyrat e mëposhtme:

    krijimin dhe ekzekutimin e deklaratave Transact-SQL;

    duke ruajtur deklaratat e gjeneruara Transact-SQL në një skedar;

    krijimin dhe analizimin e planeve të ekzekutimit për pyetjet e zakonshme;

    ilustrim grafik i planit të ekzekutimit të pyetjes së zgjedhur.

Redaktori i pyetjeve përmban një redaktues teksti të integruar dhe një shirit veglash me një sërë butonash për veprime të ndryshme. Dritarja kryesore e Redaktorit të Pyetjeve është e ndarë horizontalisht në një Panel Pyetësor (lart) dhe një Panel Rezultatesh (poshtë). Deklaratat Transact-SQL (d.m.th., pyetjet) që do të ekzekutohen futen në panelin e sipërm dhe rezultatet e sistemit që përpunon ato pyetje shfaqen në panelin e poshtëm. Figura më poshtë tregon një shembull të futjes së një pyetjeje në redaktuesin e pyetjeve dhe rezultatet e ekzekutimit të kësaj pyetjeje:

Deklarata e parë e pyetjes USE specifikon përdorimin e bazës së të dhënave SampleDb si bazën aktuale të të dhënave. Deklarata e dytë, SELECT, merr të gjitha rreshtat në tabelën Employee. Për të ekzekutuar këtë pyetje dhe për të shfaqur rezultatet, në shiritin e veglave të Redaktuesit të pyetjeve, klikoni butonin Ekzekutoni ose shtypni F5.

Ju mund të hapni shumë dritare të Query Editor, d.m.th. bëni lidhje të shumta me një ose më shumë instanca të motorit të bazës së të dhënave. Një lidhje e re krijohet duke klikuar butonin New Query në shiritin e veglave të SQL Server Management Studio.

Shiriti i statusit në fund të dritares së Redaktuesit të pyetjeve shfaq informacionin e mëposhtëm në lidhje me ekzekutimin e deklaratave të pyetjeve:

    statusi i operacionit aktual (për shembull, "Kërkesa u krye me sukses");

    emri i serverit të bazës së të dhënave;

    emri aktual i përdoruesit dhe ID e procesit të serverit;

    emri i bazës aktuale të të dhënave;

    koha e nevojshme për të plotësuar kërkesën e fundit;

    numri i rreshtave të gjetur.

Një nga avantazhet kryesore të SQL Server Management Studio është lehtësia e përdorimit të tij, e cila vlen edhe për Redaktorin e Query. Redaktori i pyetjeve ofron shumë veçori që e bëjnë më të lehtë kodimin e deklaratave Transact-SQL. Në veçanti, ai përdor theksimin e sintaksës për të përmirësuar lexueshmërinë e deklaratave Transact-SQL. Të gjitha fjalët e rezervuara tregohen me blu, variablat me të zezë, vargjet me të kuqe dhe komentet me jeshile.

Për më tepër, Redaktori i pyetjeve ka ndihmë të ndjeshme ndaj kontekstit Ndihmë dinamike, përmes të cilit mund të merrni informacion për një udhëzim specifik. Nëse nuk e dini sintaksën e një deklarate, zgjidhni atë në redaktues dhe më pas shtypni tastin F1. Ju gjithashtu mund të nënvizoni parametrat e deklaratave të ndryshme Transact-SQL për të marrë ndihmë për to nga Books Online.

SQL Management Studio mbështet SQL Intellisense, i cili është një lloj mjeti i plotësimit automatik. Me fjalë të tjera, ky modul sugjeron përfundimin më të mundshëm të elementeve të deklaratës Transact-SQL të futura pjesërisht.

Object Explorer mund të ndihmojë gjithashtu me redaktimin e pyetjeve. Për shembull, nëse doni të mësoni se si të krijoni një deklaratë CREATE TABLE për tabelën Employee, kliko me të djathtën mbi tabelën në Object Explorer dhe zgjidhni Script Table As --> CREATE to --> New Query Redditor Window nga menyja e shkurtoreve që shfaqen tabelat --> Përdorimi i CREATE --> Dritarja e redaktuesit të pyetjeve të reja). Dritarja e Redaktorit të pyetjeve që përmban deklaratën CREATE TABLE të krijuar në këtë mënyrë është paraqitur në figurën më poshtë. Kjo aftësi vlen edhe për objekte të tjera si procedurat dhe funksionet e ruajtura.

Shfletuesi i Objekteve është shumë i dobishëm për paraqitjen grafike të planit të ekzekutimit për një pyetje të caktuar. Një plan ekzekutimi i pyetjeve është një opsion ekzekutimi i zgjedhur nga optimizuesi i pyetjeve midis disa opsioneve të mundshme për ekzekutimin e një pyetjeje të veçantë. Futni pyetjen e kërkuar në panelin e sipërm të redaktuesit, zgjidhni një sekuencë komandash nga menyja Query --> Shfaq planin e vlerësuar të ekzekutimit (Query --> Trego planin e vlerësuar të ekzekutimit) dhe plani i ekzekutimit për këtë pyetje do të shfaqet në paneli i poshtëm i dritares së redaktuesit.

Eksploruesi i zgjidhjeve

Redaktimi i pyetjeve në SQL Server Management Studio bazohet në metodën e zgjidhjeve. Nëse krijoni një pyetje bosh duke përdorur butonin New Query, ai do të bazohet në një zgjidhje boshe. Kjo mund të shihet duke ekzekutuar sekuencën e komandës nga menyja View --> Solution Explorer menjëherë pas hapjes së një pyetjeje boshe.

Një vendim mund të lidhet me asnjë, një ose më shumë projekte. Një zgjidhje boshe, që nuk lidhet me asnjë projekt. Për të lidhur një projekt me një zgjidhje, mbyllni zgjidhjen boshe, Solution Explorer dhe Query Editor dhe krijoni një projekt të ri duke ekzekutuar sekuencën e komandës File --> New --> Project. Në dritaren e Projektit të Ri që hapet, zgjidhni opsionin SQL Server Scripts në panelin e mesëm. Një projekt është një mënyrë për të organizuar skedarë në një vend të caktuar. Ju mund t'i jepni projektit një emër dhe të zgjidhni një vendndodhje për vendndodhjen e tij në disk. Kur krijoni një projekt të ri, një zgjidhje e re hapet automatikisht. Ju mund të shtoni një projekt në një zgjidhje ekzistuese duke përdorur Solution Explorer.

Për çdo projekt të krijuar, Solution Explorer shfaq dosjet Connections (Connections), Queries (Kërkesat) dhe Miscellaneous (Të ndryshme). Për të hapur një dritare të re të redaktuesit të pyetjeve për një projekt të caktuar, kliko me të djathtën në dosjen e tij Queries dhe zgjidhni New Query nga menyja e kontekstit.

Korrigjimi i serverit SQL

SQL Server, duke filluar me SQL Server 2008, ka një korrigjues të kodit të integruar. Për të filluar një sesion korrigjimi, zgjidhni sekuencën e mëposhtme të komandës Debug --> Filloni korrigjimin nga menyja kryesore e SQL Server Management Studio. Ne do të shikojmë funksionimin e korrigjuesit duke përdorur një shembull duke përdorur një paketë komanduese. Një grup është një sekuencë logjike e deklaratave SQL dhe zgjerimeve procedurale që i dërgohet motorit të bazës së të dhënave për të ekzekutuar të gjitha deklaratat që përmban.

Figura më poshtë tregon një paketë që numëron numrin e punonjësve që punojnë në një projekt p1. Nëse ky numër është 4 ose më shumë, atëherë shfaqet një mesazh përkatës. Përndryshe, shfaqen emrat dhe mbiemrat e punonjësve.

Për të ndaluar ekzekutimin e një pakete në një udhëzim specifik, mund të vendosni pikat e ndërprerjes, siç tregohet në figurë. Për ta bërë këtë, klikoni në të majtë të rreshtit në të cilin dëshironi të ndaloni. Kur filloni korrigjimin, ekzekutimi ndalon në rreshtin e parë të kodit, i cili shënohet me një shigjetë të verdhë. Për të vazhduar ekzekutimin dhe korrigjimin, ekzekutoni komandën e menusë Debug --> Continue (Debugging --> Continue). Ekzekutimi i udhëzimeve të paketës do të vazhdojë deri në pikën e parë të ndërprerjes dhe shigjeta e verdhë do të ndalet në atë pikë.

Informacioni në lidhje me procesin e korrigjimit shfaqet në dy panele në fund të dritares së Redaktimit të pyetjeve. Informacioni rreth llojeve të ndryshme të informacionit të korrigjimit është i grupuar në këto panele në disa skeda. Paneli i majtë përmban skedën Autos (Automatic), Locals (Local) dhe deri në pesë skeda Watch (E dukshme). Paneli i djathtë përmban skedat Call Stack, Threads, Breakpoints, Command Window, Immediate Window dhe Output. Skeda Locals tregon vlerat e ndryshueshme, skeda Call Stack tregon vlerat e stivës së thirrjeve dhe skeda Breakpoint tregon informacion rreth pikave të ndërprerjes.

Për të ndaluar procesin e korrigjimit, ekzekutoni sekuencën e komandave nga menyja kryesore Debug --> Stop Debugging ose shtypni butonin blu në shiritin e veglave të korrigjimit.

Në SQL Server 2012, korrigjuesi i integruar në SQL Server Management Studio është përmirësuar me disa veçori të reja. Tani mund të kryeni një numër prej operacioneve të mëposhtme në të:

    Specifikoni një kusht të pikës së ndërprerjes. Gjendja e pikës së ndërprerjesështë një shprehje SQL, vlera e vlerësuar e së cilës përcakton nëse ekzekutimi i kodit do të ndalet në një pikë të caktuar apo jo. Për të specifikuar një kusht të pikës së ndërprerjes, kliko me të djathtën në ikonën e kuqe për pikën e dëshiruar të ndërprerjes dhe zgjidhni Kushti nga menyja e kontekstit. Hapet kutia e dialogut të kushtit të pikës së ndërprerjes, në të cilën duhet të futni shprehjen e nevojshme logjike. Përveç kësaj, nëse dëshironi të ndaloni ekzekutimin nëse shprehja është e vërtetë, atëherë duhet të vendosni çelësin Is True. Nëse ekzekutimi duhet të ndërpritet nëse shprehja ka ndryshuar, atëherë duhet të vendosni çelësin When Changed (Changed).

    Specifikoni numrin e goditjeve në pikën e ndërprerjes. Numri i goditjeve është kushti për ndalimin e ekzekutimit në një pikë të caktuar, bazuar në numrin e herëve që është goditur ajo pikë e ndërprerjes gjatë ekzekutimit. Kur arrihet numri i specifikuar i përsëritjeve dhe çdo kusht tjetër i specifikuar për pikën e caktuar të ndërprerjes, korrigjuesi kryen veprimin e specifikuar. Kushti i pushimit bazuar në numrin e goditjeve mund të jetë një nga sa vijon:

    1. i pakushtëzuar (veprim i parazgjedhur) (Të thyej gjithmonë);

      nëse numri i goditjeve është i barabartë me vlerën e specifikuar (Pushim kur numërimi i tij është i barabartë me një vlerë të caktuar);

      nëse numri i goditjeve është shumëfish i vlerës së specifikuar (Të thyhet kur numri i goditjeve është i barabartë me një shumëfish të një vlere të specifikuar);

      nëse numri i goditjeve është i barabartë ose më i madh se vlera e specifikuar (Buhet kur numërimi i tij është më i madh ose i barabartë me një vlerë të caktuar).

    Për të vendosur numrin e goditjeve gjatë korrigjimit, klikoni me të djathtën në ikonën e pikës së ndërprerjes së dëshiruar në skedën Breakpoints, zgjidhni Hit Count nga menyja e kontekstit, më pas zgjidhni një nga kushtet e mëposhtme në kutinë e dialogut Breakpoint Hit Count që shfaqet: nga lista e mësipërme . Për opsionet që kërkojnë një vlerë, futeni atë në kutinë e tekstit në të djathtë të listës rënëse të kushteve. Për të ruajtur kushtet e specifikuara, klikoni butonin OK.

    Specifikoni një filtër të pikës së ndërprerjes. Filtri i pikës së ndërprerjes kufizon funksionimin e pikës së ndërprerjes vetëm në kompjuterë, procese ose thread të specifikuar. Për të vendosur një filtër të pikës së ndërprerjes, kliko me të djathtën në pikën e dëshiruar dhe zgjidhni Filter nga menyja e kontekstit. Më pas, në kutinë e dialogut Filtrat e pikës së ndërprerjes që hapet, specifikoni burimet në të cilat dëshironi të kufizoni ekzekutimin e kësaj pike ndërprerjeje. Për të ruajtur kushtet e specifikuara, klikoni OK.

    Specifikoni një veprim në një pikë ndërprerjeje. Kushti When Hit specifikon veprimin që do të ndërmerret kur ekzekutimi i paketës arrin pikën e caktuar të ndërprerjes. Si parazgjedhje, kur të dyja kushtet e numërimit të goditjeve dhe kushti i ndalimit plotësohen, atëherë ekzekutimi ndërpritet. Përndryshe, mund të shfaqni një mesazh të paracaktuar.

    Për të specifikuar se çfarë të bëni kur goditet një pikë ndërprerjeje, kliko me të djathtën në ikonën e kuqe për pikën e dëshiruar të ndërprerjes dhe zgjidhni Kur goditet nga menyja e kontekstit. Në kutinë e dialogut Kur pika e ndërprerjes goditet që hapet, zgjidhni veprimin e dëshiruar. Për të ruajtur kushtet e specifikuara, klikoni butonin OK.

    Përdorni dritaren Quick Watch. Në dritaren QuickWatch, mund të shikoni vlerën e një shprehje Transact-SQL dhe më pas ta ruani atë shprehje në dritaren Watch Values. Për të hapur dritaren Quick Watch, nga menyja Debug, zgjidhni Quick Watch. Shprehja në këtë dritare ose mund të zgjidhet nga lista rënëse Shprehje (Shprehje), ose futet në këtë fushë.

    Përdorni këshillën e veglave Informata të shpejta. Kur kaloni pezull mbi një identifikues kodi, mjeti i Informacionit të Shpejtë shfaq deklaratën e tij në një dritare kërcyese.

Shprehjet e tabelës quhen subqueries, të cilat përdoren aty ku pritet një tabelë. Ekzistojnë dy lloje të shprehjeve të tabelës:

    tabela të prejardhura;

    shprehjet e përgjithësuara të tabelës.

Këto dy forma të shprehjeve të tabelës diskutohen në nënseksionet e mëposhtme.

Tabelat e përftuara

Tabela e prejardhurështë një shprehje tabele e përfshirë në klauzolën FROM të pyetjes. Tabelat e prejardhura mund të përdoren kur përdorimi i pseudonimeve të kolonave nuk është i mundur sepse përkthyesi SQL përpunon një deklaratë tjetër përpara se pseudonimi të njihet. Shembulli i mëposhtëm tregon një përpjekje për të përdorur një pseudonim kolone në një situatë ku një klauzolë tjetër po përpunohet përpara se të njihet pseudonimi:

PËRDORIMI SampleDb; ZGJIDH MUAJIN(EnterDate) si hyrje_muaj FROM Works_on GROUP BY enter_month;

Përpjekja për të ekzekutuar këtë pyetje do të kthejë mesazhin e mëposhtëm të gabimit:

Msg 207, Niveli 16, Shteti 1, Rreshti 5 Emri i kolonës "enter_month" është i pavlefshëm. (Mesazhi 207: Niveli 16, Gjendja 1, Rreshti 5 Emri i pavlefshëm i kolonës enter_month)

Arsyeja e gabimit është se klauzola GROUP BY përpunohet përpara se të përpunohet lista përkatëse e deklaratës SELECT dhe pseudonimi i kolonës enter_month nuk dihet kur përpunohet grupi.

Ky problem mund të zgjidhet duke përdorur një pamje që përmban pyetjen e mëparshme (pa klauzolën GROUP BY), sepse klauzola FROM ekzekutohet përpara klauzolës GROUP BY:

PËRDORIMI SampleDb; SELECT enter_month FROM (SELECT MUAJ(EnterDate) as enter_month FROM Works_on) AS m GROUP BY enter_month;

Rezultati i kësaj pyetjeje do të jetë si ky:

Në mënyrë tipike, një shprehje e tabelës mund të vendoset kudo në një deklaratë SELECT ku mund të shfaqet emri i tabelës. (Rezultati i një shprehjeje tabele është gjithmonë një tabelë ose, në raste të veçanta, një shprehje.) Shembulli i mëposhtëm tregon përdorimin e një shprehjeje tabele në listën e përzgjedhjes së një deklarate SELECT:

Rezultati i kësaj pyetje është:

Shprehje gjenerike të tabelës

Shprehja e zakonshme e tabelës (OTB) (shkurt CTE)është një shprehje e emërtuar e tabelës e mbështetur nga gjuha Transact-SQL. Shprehjet e zakonshme të tabelës përdoren në dy llojet e mëposhtme të pyetjeve:

    jo-rekurzive;

    rekursive.

Këto dy lloje kërkesash diskutohen në seksionet e mëposhtme.

OTB dhe pyetje jo-rekurzive

Forma jo-rekursive e OTB mund të përdoret si një alternativë ndaj tabelave dhe pamjeve të prejardhura. Zakonisht OTB përcaktohet nga ME klauzola dhe një pyetje shtesë që i referohet emrit të përdorur në klauzolën WITH. Në Transact-SQL, kuptimi i fjalës kyçe WITH është i paqartë. Për të shmangur paqartësinë, deklarata që i paraprin deklaratës ME duhet të përfundojë me një pikëpresje.

PËRDORIMI AdventureWorks2012; SELECT SalesOrderID FROM Sales.SalesOrderHeader WHERE TotalDue > (SELECT AVG(TotalDue) FROM Sales.SalesOrderHeader WHERE YEAR(OrderDate) = "2005") AND Freight > (SELECT AVG(TotalDueS)HederaRHE)FROM "2005 ")/2.5;

Kërkesa në këtë shembull zgjedh porositë, taksat totale të të cilave (TotalDue) janë më të mëdha se mesatarja e të gjitha taksave dhe tarifat e transportit të të cilave (Mallrat) janë më të mëdha se 40% e taksave mesatare. Vetia kryesore e këtij pyetësori është vëllimi i tij, pasi pyetja e mbivendosur duhet të shkruhet dy herë. Një mënyrë e mundshme për të zvogëluar shtrirjen e konstruksionit të pyetjes do të ishte krijimi i një pamjeje që përmban një nënpyetje. Por kjo zgjidhje është paksa e ndërlikuar sepse kërkon që pamja të krijohet dhe më pas të fshihet pasi të përfundojë pyetja. Qasja më e mirë do të ishte krijimi i një OTB. Shembulli i mëposhtëm tregon përdorimin e OTB jo-rekurzive, i cili shkurton përkufizimin e pyetjes më sipër:

PËRDORIMI AdventureWorks2012; WITH price_calc(viti_2005) AS (SELECT AVG(TotalDue) FROM Sales.SalesOrderHeader WHERE YEAR(OrderDate) = "2005") SELECT SalesOrderID FROM Sales.SalesOrderHeader WHERETesëTresëDue >FELRED_05Cmimi SELECTRO TotalM0_05cVit. 5 NGA çmimi_calc) /2.5;

Sintaksa e klauzolës WITH në pyetjet jo-rekurzive është si më poshtë:

Parametri cte_name është emri OTB që përcakton tabelën që rezulton, dhe parametri kolona_lista është lista e kolonave në shprehjen e tabelës. (Në shembullin e mësipërm, OTB quhet price_calc dhe ka një kolonë, viti_2005.) Parametri inner_query përfaqëson një deklaratë SELECT që specifikon grupin e rezultateve të shprehjes përkatëse të tabelës. Shprehja e përcaktuar e tabelës mund të përdoret më pas në pyetësorin_outer. (Kërkesa e jashtme në shembullin e mësipërm përdor OTB price_calc dhe kolonën e saj viti_2005 për të thjeshtuar pyetjen e dyfishtë të mbivendosur.)

OTB dhe pyetje rekursive

Ky seksion paraqet material me kompleksitet të shtuar. Prandaj, kur ta lexoni për herë të parë, rekomandohet ta kaloni dhe t'i ktheheni më vonë. OTB-të mund të jenë rekursive sepse OTB-të mund të përmbajnë referenca për veten e tyre. Sintaksa bazë OTB për një pyetje rekursive duket si kjo:

Parametrat cte_name dhe column_list kanë të njëjtin kuptim si në OTB për pyetjet jo-rekurzive. Trupi i klauzolës WITH përbëhet nga dy pyetje të bashkuara me deklaratën UNION TË GJITHA. Pyetja e parë thirret vetëm një herë, dhe fillon të grumbullojë rezultatin e rekursionit. Operandi i parë i operatorit UNION ALL nuk i referohet një OTB. Ky pyetje quhet një pyetje referencë ose burim.

Pyetja e dytë përmban një lidhje me OTB dhe përfaqëson pjesën e saj rekursive. Për shkak të kësaj, ai quhet një anëtar rekurziv. Në thirrjen e parë në pjesën rekursive, referenca OTB përfaqëson rezultatin e pyetjes së referencës. Anëtari rekurziv përdor rezultatin e thirrjes së parë në pyetje. Pas kësaj, sistemi thërret përsëri pjesën rekursive. Një thirrje për një anëtar rekurziv përfundon kur një thirrje e mëparshme ndaj tij kthen një grup të zbrazët të rezultateve.

Operatori UNION ALL bashkohet me rreshtat që janë grumbulluar deri tani, si dhe me rreshtat shtesë të shtuara nga thirrja aktuale te anëtari rekurziv. (Prania e operatorit UNION ALL do të thotë që rreshtat e kopjuar nuk do të hiqen nga rezultati.)

Së fundi, parametri outer_query përcakton pyetjen e jashtme që përdor OTB për të marrë të gjitha thirrjet në bashkimin e të dy anëtarëve.

Për të demonstruar formën rekursive të OTB, ne përdorim një tabelë Aeroplani të përcaktuar dhe të mbushur me kodin e treguar në shembullin më poshtë:

PËRDORIMI SampleDb; CREATE TABLE Aeroplan (Përmban Montim VARCHAR(10), ContainedAssembly VARCHAR(10), Sasi Përmban INT, Kosto Njësi DECIMAL(6,2)); INSERT INTO INTO Aeroplane VALUES ("Airplane", "Fuselage", 1, 10); INSERT INTO VALUES Aeroplane ("Airplane", "Wings", 1, 11); INSERT INTO VALUES Aeroplan ("Airplane", "Tail", 1, 12); INSERT INTO VALUES Aeroplan ("Fuselage", "Salon", 1, 13); INSERT INTO VLERAT E Aeroplanit ("Fuselage", "Cockpit", 1, 14); INSERT INTO VALUES Aeroplan ("Fuselage", "Nose", 1, 15); INSERT INTO VALUES Aeroplan ("Salon", NULL, 1,13); INSERT INTO Aeroplan VALUES ("kabina", NULL, 1, 14); INSERT INTO VALUES Aeroplan ("Hundë", NULL, 1, 15); INSERT INTO VALUES Aeroplan ("Wings", NULL,2, 11); INSERT INTO VALUES Aeroplan ("Tail", NULL, 1, 12);

Tabela e aeroplanit ka katër kolona. Kolona ContainingAssembly përcakton asamblenë dhe kolona ContainedAssembly përcakton pjesët (një nga një) që përbëjnë asamblenë përkatëse. Figura më poshtë tregon një ilustrim grafik të një lloji të mundshëm avioni dhe pjesëve përbërëse të tij:

Tabela e aeroplanit përbëhet nga 11 rreshtat e mëposhtëm:

Shembulli i mëposhtëm përdor klauzolën WITH për të përcaktuar një pyetje që llogarit koston totale të çdo ndërtimi:

PËRDORIMI SampleDb; Me list_of_parts (asambleja1, sasia, kostoja) si (Zgjidhni përmbajtjen, sasinë e caktuar, njësitë nga aeroplanët, ku përmbajtja është bashkim i pavlefshëm të gjithë zgjedhin a.containingAsseMbly, a.quantitycontained, cast (l.quantity * l.cost si dhjetor (6,2) ) FROM list_of_parts l, Airplane a WHERE l.assembly1 = a.ContainedAssembly) SELECT assembly1 "Pjes", sasia "Sasia", kosto "Çmimi" NGA lista_e_pjeseve;

Klauzola WITH përcakton një listë OTB të quajtur list_of_parts, e përbërë nga tre kolona: montimi1, sasia dhe kostoja. Deklarata e parë SELECT në shembull thirret vetëm një herë për të ruajtur rezultatet e hapit të parë të procesit të rekursionit. Deklarata SELECT në rreshtin e fundit të shembullit shfaq rezultatin e mëposhtëm.

Secili prej nesh has dhe përdor rregullisht baza të të dhënave të ndryshme. Kur zgjedhim një adresë emaili, ne jemi duke punuar me një bazë të dhënash. Bazat e të dhënave përdorin shërbimet e kërkimit, bankat për të ruajtur të dhënat e klientëve, etj.

Por, pavarësisht përdorimit të vazhdueshëm të bazave të të dhënave, edhe për shumë zhvillues të sistemeve softuerike ka shumë "njolla të bardha" për shkak të interpretimeve të ndryshme të të njëjtave terma. Ne do të japim një përkufizim të shkurtër të termave bazë të bazës së të dhënave përpara se të shikojmë gjuhën SQL. Kështu që.

Baza e të dhënave - një skedar ose grup skedarësh për ruajtjen e strukturave të renditura të të dhënave dhe marrëdhëniet e tyre. Shumë shpesh, një bazë të dhënash quhet një sistem menaxhimi - është vetëm një depo informacioni në një format të caktuar dhe mund të funksionojë me DBMS të ndryshme.

Tabela - Le të imagjinojmë një dosje që ruan dokumente të grupuara sipas një atributi të caktuar, për shembull, një listë porosish për muajin e fundit. Kjo është tabela në kompjuter.Një tabelë e veçantë ka emrin e saj unik.

Lloji i të dhënave - lloji i informacionit që lejohet të ruhet në një kolonë ose rresht të caktuar. Mund të jenë numra ose tekst të një formati të caktuar.

Kolona dhe rreshti- të gjithë kemi punuar me fletëllogaritëse që kanë gjithashtu rreshta dhe kolona. Çdo bazë të dhënash relacionale punon me tabela në të njëjtën mënyrë. Rreshtat nganjëherë quhen rekorde.

çelesi primar- çdo rresht i tabelës mund të ketë një ose më shumë kolona për ta identifikuar atë në mënyrë unike. Pa një çelës primar, është shumë e vështirë të përditësosh, modifikosh dhe fshish rreshtat e dëshiruar.

Çfarë është SQL?

SQL(Anglisht - gjuhë e strukturuar e pyetjeve) u zhvillua vetëm për të punuar me bazat e të dhënave dhe aktualisht është standardi për të gjitha DBMS-të e njohura. Sintaksa e gjuhës përbëhet nga një numër i vogël operatorësh dhe është i lehtë për t'u mësuar. Por, megjithë thjeshtësinë e jashtme, ai lejon krijimin e pyetjeve sql për operacione komplekse me një bazë të dhënash të çdo madhësie.

Që nga viti 1992 ekziston një standard i pranuar përgjithësisht i quajtur ANSI SQL. Ai përcakton sintaksën bazë dhe funksionet e operatorëve dhe mbështetet nga të gjithë drejtuesit e tregut DBMS si ORACLE Është e pamundur të mbulohen të gjitha mundësitë e gjuhës në një artikull të vogël, kështu që ne do të shqyrtojmë shkurtimisht vetëm pyetjet bazë SQL. Shembujt tregojnë qartë thjeshtësinë dhe mundësitë e gjuhës:

  • krijimi i bazave të të dhënave dhe tabelave;
  • kampionimi i të dhënave;
  • shtimi i të dhënave;
  • modifikimin dhe fshirjen e informacionit.

Llojet e të dhënave SQL

Të gjitha kolonat në një tabelë të bazës së të dhënave ruajnë të njëjtin lloj të dhënash. Llojet e të dhënave në SQL janë të njëjta si në gjuhët e tjera të programimit.

Krijimi i tabelave dhe bazave të të dhënave

Ekzistojnë dy mënyra për të krijuar baza të dhënash të reja, tabela dhe pyetje të tjera në SQL:

  • përmes konsolës DBMS
  • Përdorimi i mjeteve të administrimit ndërveprues të përfshirë me serverin e bazës së të dhënave.

Një bazë e re e të dhënave krijohet nga operatori KRIJO BAZA E TË DHËNAVE<наименование базы данных>; . Siç mund ta shihni, sintaksa është e thjeshtë dhe koncize.

Ne krijojmë tabela brenda bazës së të dhënave duke përdorur deklaratën CREATE TABLE me parametrat e mëposhtëm:

  • emri i tabelës
  • emrat e kolonave dhe llojet e të dhënave

Si shembull, le të krijojmë një tabelë Mallrash me kolonat e mëposhtme:

Ne krijojmë një tabelë:

KRIJO TABELA Mall

(identifikues_komoditeti CHAR(15) JO NULL,

shitësi_id CHAR(15) JO NULL,

emri i mallit CHAR(254) NULL,

çmimi_mall DECIMAL(8,2) NULL,

commodity_desc VARCHAR(1000) NULL);

Tabela ka pesë kolona. Pas emrit vjen lloji i të dhënave, kolonat ndahen me presje. Vlera e një kolone mund të jetë bosh (NULL) ose duhet të plotësohet (NOT NULL), dhe kjo përcaktohet kur krijohet tabela.

Zgjedhja e të dhënave nga një tabelë

Operatori i përzgjedhjes së të dhënave është pyetja SQL më e përdorur. Për të marrë informacion, duhet të specifikoni se çfarë duam të zgjedhim nga një tabelë e tillë. Së pari një shembull i thjeshtë:

ZGJIDH emrin e_mallrit NGA Mall

Pas deklaratës SELECT, ne specifikojmë emrin e kolonës për marrjen e informacionit, dhe FROM përcakton tabelën.

Rezultati i ekzekutimit të pyetjes do të jenë të gjitha rreshtat e tabelës me vlerat e Commodity_name në rendin në të cilin janë futur në bazën e të dhënave, d.m.th. pa asnjë renditje. Një klauzolë shtesë ORDER BY përdoret për të renditur rezultatin.

Për të kërkuar në fusha të shumta, renditini ato të ndara me presje, si në shembullin e mëposhtëm:

ZGJIDH ID-në e mallit, emrin e mallit, çmimin e mallit NGA mall

Është e mundur të merret vlera e të gjitha kolonave të një rreshti si rezultat i pyetjes. Për këtë, përdoret shenja "*":

ZGJIDH * NGA Mall

  • Për më tepër, SELECT mbështet:
  • Renditja e të dhënave (ORDER SIPAS deklaratës)
  • Zgjidhni sipas kushteve (KU)
  • Termi i grupimit (GROUP BY)

Shtimi i një rreshti

Për të shtuar një rresht në një tabelë, përdoren pyetjet SQL me deklaratën INSERT. Shtimi mund të bëhet në tre mënyra:

  • shtoni një linjë të re të tërë;
  • pjesë e një vargu;
  • rezultatet e pyetjes.

Për të shtuar një rresht të plotë, duhet të specifikoni emrin e tabelës dhe vlerat e kolonave (fushave) të rreshtit të ri. Ja një shembull:

INSERT NË VLERAT E MALLRAVE ("106", "50", "Coca-Cola", "1.68", "Pa alkool ,)

Shembulli shton një produkt të ri në tabelë. Vlerat përcaktohen pas VALUES për secilën kolonë. Nëse nuk ka vlerë përkatëse për kolonën, atëherë duhet të specifikohet NULL. Kolonat janë të mbushura me vlera në rendin e specifikuar kur është krijuar tabela.

Nëse shtoni vetëm një pjesë të një rreshti, duhet të specifikoni në mënyrë eksplicite emrat e kolonave, si në shembullin:

INSERT INTO Commodity (commodity_id, shitës_id, comodity_name)

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

Ne kemi futur vetëm identifikuesit e produktit, furnizuesin dhe emrin e tij dhe kemi lënë bosh pjesën tjetër të fushave.

Shtimi i rezultateve të pyetjeve

INSERT përdoret kryesisht për të shtuar rreshta, por mund të përdoret gjithashtu për të shtuar rezultatet e një deklarate SELECT.

Ndryshoni të dhënat

Për të ndryshuar informacionin në fushat e tabelës së bazës së të dhënave, duhet të përdorni deklaratën UPDATE. Operatori mund të përdoret në dy mënyra:

  • Të gjitha rreshtat në tabelë janë përditësuar.
  • Vetëm për një linjë të caktuar.

UPDATE përbëhet nga tre elementë kryesorë:

  • tabelën në të cilën është e nevojshme të bëhen ndryshime;
  • emrat e fushave dhe vlerat e tyre të reja;
  • kushtet për zgjedhjen e rreshtave për të ndryshuar.

Konsideroni një shembull. Le të themi se çmimi i një produkti me ID=106 ka ndryshuar, kështu që ky rresht duhet të përditësohet. Ne shkruajmë operatorin e mëposhtëm:

PËRDITËSO KOSOVËN e mallit commodity_price = "3.2" WHERE commodity_id = "106"

Specifikuam emrin e tabelës, në rastin tonë Commodity, ku do të kryhet përditësimi, pastaj pas SET - vlerën e re të kolonës dhe gjetëm rekordin e dëshiruar duke specifikuar vlerën e dëshiruar ID në WHERE.

Për të ndryshuar kolona të shumta, specifikoni çifte të shumta kolonash-vlerash të ndara me presje pas deklaratës SET. Le të shohim një shembull në të cilin përditësohet emri dhe çmimi i produktit:

PËRDITËSO SETI i mallrave commodity_name='Fanta', commodity_price = "3.2" WHERE commodity_id = "106"

Për të fshirë informacionin në një kolonë, mund ta vendosni në NULL nëse struktura e tabelës e lejon atë. Duhet mbajtur mend se NULL është saktësisht vlera "jo" dhe jo zero në formën e tekstit ose një numri. Hiq përshkrimin e produktit:

PËRDITËSO KONTIN E mallrave commodity_desc = NULL WHERE commodity_id = "106"

Heqja e rreshtave

Pyetjet SQL për të fshirë rreshtat në një tabelë ekzekutohen me deklaratën DELETE. Ka dy raste përdorimi:

  • disa rreshta në tabelë janë fshirë;
  • të gjitha rreshtat në tabelë janë fshirë.

Një shembull i fshirjes së një rreshti nga një tabelë:

FSHI NGA malli WHERE commodity_id = "106"

Pas DELETE FROM ne specifikojmë emrin e tabelës në të cilën do të fshihen rreshtat. Klauzola WHERE përmban një kusht me të cilin rreshtat do të zgjidhen për fshirje. Në shembull, ne po fshijmë linjën e produktit me ID=106. Specifikimi KU është shumë i rëndësishëm. Heqja e kësaj deklarate do të fshijë të gjitha rreshtat në tabelë. Kjo vlen edhe për ndryshimin e vlerës së fushave.

Deklarata DELETE nuk specifikon emrat e kolonave ose metakarakteret. Ai heq plotësisht rreshtat, por nuk mund të heqë një kolonë të vetme.

Përdorimi i SQL në Microsoft Access

Zakonisht përdoret në mënyrë interaktive për të krijuar tabela, baza të të dhënave, për të menaxhuar, modifikuar, analizuar të dhënat në bazën e të dhënave dhe për të zbatuar pyetje SQL Access përmes një projektuesi të përshtatshëm interaktiv të pyetjeve (Query Designer), duke përdorur të cilin mund të ndërtoni dhe ekzekutoni menjëherë deklarata SQL të çdo kompleksiteti.

Mbështetet gjithashtu modaliteti i aksesit në server, në të cilin Access DBMS mund të përdoret si gjenerues i pyetjeve SQL për çdo burim të dhënash ODBC. Kjo aftësi lejon që aplikacionet e Access të ndërveprojnë me çdo format.

Zgjerime SQL

Meqenëse pyetjet SQL nuk i kanë të gjitha tiparet e gjuhëve të programimit procedural, të tilla si unazat, degët, etj., shitësit e DBMS zhvillojnë versionin e tyre të SQL me veçori të avancuara. Para së gjithash, kjo është mbështetje për procedurat e ruajtura dhe operatorët standardë të gjuhëve procedurale.

Dialektet më të zakonshme të gjuhës:

  • Baza e të dhënave Oracle - PL/SQL
  • Interbase, Firebird - PSQL
  • Microsoft SQL Server - Transact-SQL
  • PostgreSQL - PL/pgSQL.

SQL në ueb

MySQL DBMS shpërndahet nën Licencën e Përgjithshme Publike GNU. Ekziston një licencë tregtare me aftësinë për të zhvilluar module me porosi. Si pjesë integrale, ai përfshihet në asambletë më të njohura të serverëve të Internetit, si XAMPP, WAMP dhe LAMP, dhe është DBMS më i njohur për zhvillimin e aplikacioneve në internet.

Ai u zhvillua nga Sun Microsystems dhe aktualisht mirëmbahet nga Oracle Corporation. Mbështet bazat e të dhënave deri në 64 terabajt, standardin e sintaksës SQL:2003, replikimin e bazave të të dhënave dhe shërbimet cloud.

SQL- Gjuha e strukturuar e pyetjeve.
Në këtë përmbledhje, ne do të shqyrtojmë llojet më të zakonshme të pyetjeve SQL.
Përcaktohet standardi SQL ANSI(Instituti Kombëtar Amerikan i Standardeve).
SQL është një gjuhë e synuar posaçërisht në bazat e të dhënave relacionale.

Ndarja SQL:


DDL
(Gjuha e përkufizimit të të dhënave) - e ashtuquajtura Schema Description Language në ANSI, përbëhet nga komanda që krijojnë objekte (tabela, indekse, pamje etj.) në bazën e të dhënave.
DML(Gjuha e manipulimit të të dhënave) është një grup komandash që përcaktojnë se cilat vlera janë të pranishme në tabela në çdo kohë të caktuar.
DCD(Gjuha e menaxhimit të të dhënave) përbëhet nga mjete që përcaktojnë nëse duhet të lejohet përdoruesi të kryejë veprime të caktuara apo jo. Ata janë pjesë e DDL në ANSI. Mos harroni këta emra. Këto nuk janë gjuhë të ndryshme, por seksione të komandave SQL të grupuara sipas funksionit të tyre.

Llojet e të dhënave:

SQL Server - Llojet e të dhënave

Përshkrim

bigint (int 8)

bigint (int 8)

binare(n)

binare(n) ose imazh

karakter
(sinonim karakter)

kombëtare karakter ose ntekst

karakter i ndryshëm(sinonim char varion varchar)

karakter kombëtar i ndryshëm ose ntekst

ora e datës

ora e datës

dhjetore

ai eshte numerike

saktësi të dyfishtë

saktësi të dyfishtë

numër i plotë (int 4) (sinonim: ndër)

numër i plotë (int 4)

karakter kombëtar(sinonim: karakter kombëtar, nchar)

karakter kombëtar

Numerike(sinonime: dhjetore, dhjetor)

karakter kombëtar i ndryshëm(sinonime: karakter kombëtar i ndryshëm, nvarchar)

karakter kombëtar i ndryshëm

Koha e vogël

ora e datës

i imët (int 2)

i imët (int 2)

Para të vogla

sql_variant

Nuk mbështetet më

Teksti tjetër
Duke filluar me SQL Server 2005, nuk rekomandohet për përdorim.

Vula kohore

Nuk mbështetet

i vogël (int 1)

i vogël (int 1)

Identifikues unik

identifikues unik

varbinare(n)

varbinare(n) ose imazh

data e vogël

ora e datës

i imët (int 2)

i imët (int 2)

para të vogla

sql_variant

Nuk mbështetet

vula kohore

Nuk mbështetet

i vogël (int 1)

i vogël (int 1)

identifikues unik

identifikues unik

varbinare(n)

varbinare(n) ose imazh

Tabela e tipit të të dhënave në SQL Server 2000

ÇFARË ËSHTË KËRKESA?

Kërkesëështë komanda që i jepni programit tuaj të bazës së të dhënave. Pyetjet janë pjesë e gjuhës DML. Të gjitha pyetjet në SQL përbëhen nga një komandë e vetme. Struktura e kësaj komande është jashtëzakonisht e thjeshtë, sepse ju duhet ta zgjeroni atë për të kryer vlerësime dhe manipulime shumë komplekse të të dhënave.

Komanda SELECT:

ZGJIDH"Zgjidh" është komanda më e përdorur, përdoret për të zgjedhur të dhëna nga një tabelë.
Lloji i pyetjes duke përdorur SELECT:

ZGJIDH ID-në, emrin e_përdoruesit, qytetin, ditëlindjen NGA baza e përdoruesve;

Një pyetje e tillë do të shfaqë nga tabela user_base të gjitha vlerat e kolonave të specifikuara me presje pas komandës SELECT. Gjithashtu, ju mund të shfaqni të gjitha kolonat me një karakter, * d.m.th. SELECT * FROM user_base ; - një pyetje e tillë do të shfaqë të gjitha të dhënat nga tabela.

ZGJIDH strukturën e komandës:

SELECT (Emrat e kolonave të ndara me presje do të shfaqen në pyetje) FROM (emri i tabelës në bazën e të dhënave)
është lloji më i thjeshtë i kërkesës. Ekzistojnë komanda shtesë për lehtësinë e nxjerrjes së të dhënave (shih më poshtë "Funksionet")

Komandat DML:

Vlerat mund të vendosen dhe hiqen nga fushat me tre komanda DML (Data Manipulation Language):
INSERT(Fut)
PËRDITËSOJE(përditësim, modifikim),
FSHIJE(fshirje)

INSERT komanda:

INSERT INTO user_base (emri_përdorues, qyteti, ditëlindja) VLERAT ('Alexander', 'Rostov', '20.06.1991');

Komanda INSERT vjen me parashtesën INTO (në - në), pastaj në kllapa janë emrat e kolonave në të cilat duhet të fusim të dhënat, pastaj vjen komanda VALUES (vlerat) dhe në kllapa ka vlera me radhë. (është e domosdoshme të vëzhgoni rendin e vlerave me kolonat, vlerat duhet të vijnë në të njëjtin rend si kolonat që specifikoni).

Komanda UPDATE:

PËRDITËSONI bazën e përdoruesve SET emrin e_përdoruesit = 'Alex';

Komanda UPDATE përditëson vlerat në një tabelë. Fillimisht vjen vetë komanda UPDATE, më pas emri i tabelës, pas komandës SET (set) më pas emri i kolonës dhe vlera e saj në thonjëza (thonjëzat vendosen nëse vlera ka një format vargu, nëse është vlerë numerike dhe kolona është jo i lidhur me llojin e të dhënave vchar dhe çdo lloj tjetër vargu, thonjëzat janë të pakuptimta.)

Komanda DELETE:

FSHI NGA users_base WHERE user_name = 'Vasily';

Komanda DELETE fshin të gjithë rreshtin, përcakton rreshtin me kriterin WHERE (Where). Në këtë rast, kjo pyetje do të hiqte të gjitha rreshtat ku vlera e kolonës së emrit të përdoruesit ishte Vasily. Për kriteret WHERE dhe të tjera do të flasim pak më vonë.

Kriteret, funksionet, kushtet etj. që na ndihmon në SQL:

Klauzola WHERE e komandës SELECT dhe komandave të tjera DML që ju lejon të vendosni kallëzues, gjendja e të cilave mund të jetë e vërtetë ose e gabuar për çdo rresht në një tabelë. Komanda nxjerr vetëm ato rreshta nga tabela për të cilat një deklaratë e tillë është e vërtetë.
Shembull:
SELECT ID-në, qytetin, ditëlindjen FROM user_base WHERE user_name = 'Alex';- një pyetje e tillë do të shfaqë vetëm ato rreshta që do të përputhen me kushtin WHERE, përkatësisht të gjitha rreshtat në të cilat kolona e emrit të përdoruesit ka vlerën Alex.

ORDER BY - kusht për renditjen e rreshtave të zgjedhur. Ka 2 kritere ASC dhe DESC. ASC (renditi nga A në Z ose nga 0 në 9)

DESC (përballë ASC).
Shembull:
ZGJIDH ID-në, qytetin, ditëlindjen NGA baza e përdoruesve ORDER SIPAS emrit të përdoruesit ASC; - një pyetje e tillë do të shfaqë vlerat e renditura sipas kolonës së emrit të përdoruesit nga A në Z (A-Z; 0-9)

Ky kusht mund të përdoret gjithashtu në lidhje me klauzolën WHERE.
Shembull:
ZGJIDH ID-në, qytetin, ditëlindjen FROM user_base WHERE user_name = 'Alex' ORDER BY id ASC;

DISTINCT (Distinct) është një argument që ju ofron një mënyrë për të eliminuar vlerat e kopjuara nga klauzola juaj SELECT. ato. nëse keni vlera të përsëritura në një kolonë, le të themi user_name, atëherë DISTINCT do të shfaqë vetëm një për ju, për shembull, ju keni 2 persona me emrin Alexey në bazën e të dhënave, atëherë një pyetje duke përdorur funksionin DISTINCT do të shfaqë vetëm 1 vlerë që ndeshet e para...
Shembull:
ZGJIDHni emrin e_përdoruesit të dallueshëm NGA baza e_përdoruesit;- një pyetje e tillë do të shfaqë vlerat e të gjitha rekordeve në kolonën e emrit të përdoruesit, por ato nuk do të përsëriten, d.m.th. nëse keni pasur një numër të pafund vlerash të dyfishta, ato nuk do të shfaqen...

AND - merr dy Boolean (në formën A DHE B) si argumente dhe i vlerëson ato kundrejt të vërtetës për të parë nëse janë të dyja të vërteta.
Shembull:
SELECT * FROM users_base WHERE city = 'Rostov' AND user_name = 'Alexander';- shfaq të gjitha vlerat nga tabela ku emri i qytetit shfaqet në një rresht (në këtë rast, Rostov dhe emrin e përdoruesit Alexander.

OSE - merr dy Boolean (në formën A OSE B) si argumente dhe vlerëson për korrektësinë nëse njëri prej tyre është i vërtetë.

SELECT * FROM users_base WHERE city = 'Rostov' OSE emri i përdoruesit = 'Alexander';- shfaq të gjitha vlerat nga tabela ku rreshti përmban emrin e qytetit të Rostovit ose emrin e përdoruesit Alexander.

NOT - merr një Boolean të vetëm (në formën NOT A) si argumente dhe ndryshon vlerën e tij nga false në true ose true në false.
SELECT * FROM users_base WHERE city = 'Rostov' OSE JO emri_përdorues = 'Alexander';- do të shfaqë të gjitha vlerat nga tabela ku emri i qytetit Rostov shfaqet në një rresht ose emri i përdoruesit nuk do të jetë saktësisht Alexander.

IN - përcakton një grup vlerash në të cilat vlera e dhënë mund ose nuk mund të përfshihet.
SELECT * NGA përdoruesit_baza WHERE city IN ('Vladivostok', 'Rostov');- një pyetje e tillë do të shfaqë të gjitha vlerat nga tabela që përmbajnë emrat e qyteteve të specifikuara në kolonën e qytetit

Ndërmjet - ngjashëm me operatorin IN. Ndryshe nga specifikimi me numra nga një grup, siç bën IN, BETWEEN përcakton një interval, vlerat e të cilit duhet të ulen për ta bërë kallëzuesin të vërtetë.
SELECT * FROM users_base WHERE id MES 1 DHE 10;- shfaq të gjitha vlerat nga tabela që do të jenë në rangun nga 1 në 10 në kolonën id

COUNT - prodhon numra rreshtash ose vlera jo NULL të fushave që pyetja ka zgjedhur.
SELECT COUNT (*) FROM user_base ;- tregon numrin e rreshtave në tabelën e dhënë.
ZGJIDH NUMRIN (EMRI_DISTINCT i përdoruesit) FROM users_base ;- do të shfaqë numrin e rreshtave me emrat e përdoruesve (të pa përsëritur)

SUM - Prodhon shumën aritmetike të të gjitha vlerave të zgjedhura në fushën e dhënë.
SELECT SUM (id) FROM users_base ;- shfaq shumën e vlerave të të gjitha rreshtave të kolonës id.

AVG - mesatarizon të gjitha vlerat e zgjedhura të fushës së dhënë.
SELECT AVG (id) FROM users_base ;- do të nxjerrë mesataren e të gjitha vlerave të zgjedhura të kolonës id

MAX - Prodhon më të madhen nga të gjitha vlerat e zgjedhura në fushën e dhënë.

MIN - Prodhon vlerën më të vogël nga të gjitha vlerat e zgjedhura për fushën e dhënë.

Krijimi i tabelës:

KRIJO TABELA user_base (id i plotë, teksti i emrit të përdoruesit, teksti i qytetit, data e ditëlindjes);- ekzekutimi i një komande të tillë do të çojë në krijimin e një tabele, sipas së cilës dhashë shembuj ... Gjithçka është e thjeshtë këtu, shkruajmë komandën CREATE TABLE, pastaj emrin e tabelës që duam të krijojmë, pastaj në kllapa, të ndara me presje, emrat e kolonave dhe lloji i të dhënave të tyre. Kjo është mënyra standarde për të krijuar një tabelë në SQL. Tani do të jap një shembull të krijimit të tabelave në SQL Server 2005:

AKTIVIZO ANSI_NULLS
SHKO
AKTIVIZO QUOTED_IDENTIFIER
SHKO
NËSE NUK EKZISTON (ZGJEDH * NGA sys.objektet WHERE objekt_id = OBJECT_ID(N".") DHE shkruaj (N"U"))
FILLOJ
KRIJON TABELA .(

JO NULL,
JO NULL,
JO NULL,
ÇELËSI PRIMAR I GRUPTUAR
ASC


FUND
SHKO
AKTIVIZO ANSI_NULLS
SHKO
AKTIVIZO QUOTED_IDENTIFIER
SHKO
NËSE NUK EKZISTON (ZGJEDH * NGA sys.objektet WHERE objekt_id = OBJECT_ID(N".") DHE shkruaj (N"U"))
FILLOJ
KRIJON TABELA .(
IDENTITET (1,1) JO NULL,
I PAVLEFSHËM,
I PAVLEFSHËM,
ÇELËSI PRIMAR I GRUPTUAR
ASC
)ME(IGNORE_DUP_KEY=OFF) AKTIVIZUAR
) NË TEXTIMAGE_ON
FUND
SHKO
AKTIVIZO ANSI_NULLS
SHKO
AKTIVIZO QUOTED_IDENTIFIER
SHKO
NËSE NUK EKZISTON (ZGJEDH * NGA sys.objektet WHERE objekt_id = OBJECT_ID(N".") DHE shkruaj (N"U"))
FILLOJ
KRIJON TABELA .(
IDENTITET (1,1) JO NULL,
I PAVLEFSHËM,
I PAVLEFSHËM,
ÇELËSI PRIMAR I GRUPTUAR
ASC
)ME(IGNORE_DUP_KEY=OFF) AKTIVIZUAR
) ON
FUND

Sintaksa në SQL Server 2005 është një temë tjetër, thjesht doja të tregoja se kam përshkruar bazat e programimit SQL, ju mund të arrini lartësitë vetë duke ditur bazat.

Nëse keni ndonjë pyetje në lidhje me këtë temë, ju lutem më dërgoni email.