De SQL-projecttaalinstructie is ontworpen voor. Basis SQL-instructies. Syntaxis en voorbeelden van het gebruik van de SELECT-instructie. SELECT-instructiesyntaxis en verwerkingsvolgorde

De gestructureerde zoektaal SQL is gebaseerd op relationele calculus met variabele tupels. De SQL-taal is ontworpen om bewerkingen uit te voeren op tabellen, het maken, verwijderen, wijzigen van de structuur, en op tabelgegevens, selecteren, wijzigen, toevoegen en verwijderen, evenals enkele gerelateerde bewerkingen. SQL is een niet-procedurele taal en bevat geen controle-instructies voor het organiseren van routines, invoer, uitvoer, enz.


Deel uw werk op sociale netwerken

Als dit werk je niet bevalt, staat onderaan de pagina een lijst met soortgelijke werken. Je kunt ook de zoekknop gebruiken


Gestructureerde querytaal SQL: geschiedenis, standaarden,

Basistaaloperatoren.

De gestructureerde zoektaal SQL is gebaseerd op relationele calculus met variabele tupels. De taal kent verschillende standaarden. De SQL-taal is ontworpen om bewerkingen uit te voeren op tabellen (maken, verwijderen, wijzigen van de structuur) en op tabelgegevens (selecteren, wijzigen, toevoegen en verwijderen), evenals enkele gerelateerde bewerkingen. SQL is een niet-procedurele taal en bevat geen besturingsinstructies, subroutine-organisatie, I/O, enz. In dit opzicht wordt SQL niet autonoom gebruikt; het wordt meestal ondergedompeld in de omgeving van de ingebouwde DBMS-programmeertaal (bijvoorbeeld FoxPro DBMS Visual FoxPro, ObjectPAL DBMS Paradox, Visual Basic for Applications DBMS Access).

In moderne DBMS'en met een interactieve interface kunt u query's maken met behulp van andere tools, zoals QBE. Het gebruik van SQL kan echter vaak de efficiëntie van de gegevensverwerking in de database verbeteren. Wanneer u bijvoorbeeld een query voorbereidt in de Access-omgeving, kunt u van het Query Builder-venster (waarin u een voorbeeldquery formuleert in de QBE-taal) naar een venster met de equivalente SQL-instructie gaan. In sommige gevallen is het voorbereiden van een nieuwe query door een bestaande query te bewerken eenvoudiger door de SQL-instructie te wijzigen. De samenstelling van SQL-instructies kan in verschillende DBMS'en enigszins verschillen. De SQL-taal heeft niet de functies van een volwaardige ontwikkeltaal, maar is gericht op gegevenstoegang en is daarom opgenomen in programma-ontwikkeltools. In dit geval wordt het embedded SQL genoemd. De SQL-taalstandaard wordt ondersteund door moderne implementaties van de volgende programmeertalen: PL/1, Ada, C, COBOL, Fortran, MUMPS en Pascal.

In gespecialiseerde applicatieontwikkelingssystemen van het client-server-type wordt de programmeeromgeving bovendien meestal aangevuld met communicatiemiddelen (het tot stand brengen en verbreken van verbindingen met databaseservers, het detecteren en verwerken van fouten die optreden in het netwerk, enz.), hulpmiddelen voor het ontwikkelen gebruikersinterfaces, ontwerptools en foutopsporing Er zijn twee hoofdmethoden voor het gebruik van ingebedde SQL: statisch en dynamisch. Bij statisch gebruik van een taal (statische SQL) bevat de programmatekst aanroepen naar SQL-taalfuncties, die na compilatie strikt worden opgenomen in de uitvoerbare module.

Veranderingen in opgeroepen functies kunnen zich op het niveau van individuele oproepparameters bevinden met behulp van programmeertaalvariabelen. Bij dynamisch gebruik van de taal (dynamische SQL) wordt ervan uitgegaan dat oproepen naar SQL-functies dynamisch worden opgebouwd en dat de interpretatie van deze oproepen, bijvoorbeeld toegang tot gegevens uit een externe database, tijdens de uitvoering van het programma plaatsvindt. De dynamische methode wordt meestal gebruikt in gevallen waarin de applicatie het type SQL-aanroep niet vooraf kent en wordt in dialoog met de gebruiker opgebouwd. Het belangrijkste doel van de SQL-taal (evenals andere talen voor het werken met databases) is het voorbereiden en uitvoeren van query's. Het ophalen van gegevens uit een of meer tabellen kan resulteren in een reeks records die een weergave wordt genoemd. Een weergave is in wezen een tabel die wordt gegenereerd als resultaat van een query. We kunnen zeggen dat het een soort opgeslagen zoekopdracht is. U kunt meerdere weergaven maken met dezelfde tabellen. De weergave zelf wordt beschreven door de weergave-ID op te geven en het verzoek dat moet worden gedaan om deze te verkrijgen.

Om het werken met views eenvoudiger te maken, is het concept van een cursor in de SQL-taal geïntroduceerd. Een cursor is een soort aanwijzer die wordt gebruikt om door sets records te bewegen terwijl deze worden verwerkt. De beschrijving en het gebruik van een cursor in SQL is als volgt. In het beschrijvende deel van het programma wordt een variabele van het type cursor (CURSOR) geassocieerd met een SQL-instructie (meestal een SELECT-instructie). In het uitvoerende deel van het programma wordt de cursor geopend (OPEN<имя курсора>), waarbij de cursor door records wordt verplaatst (FETCH<имя курсора>...), gevolgd door de juiste verwerking en uiteindelijk het sluiten van de cursor (CLOSE<имя курсора>).

Basistaaloperatoren

Laten we een minimale subset van de SQL-taal beschrijven, gebaseerd op de implementatie ervan in de standaard ODBC-interface (Open Database Connectivity) van Microsoft. SQL-taaloperatoren kunnen worden onderverdeeld in twee subtalen: Data Definition Language (DDL) en Data Manipulation Language (DML). De belangrijkste SQL-taaloperatoren worden in de tabel weergegeven.

Laten we eens kijken naar het formaat en de basismogelijkheden van de belangrijkste operators, met uitzondering van specifieke operators die in de tabel zijn gemarkeerd met het symbool “*”. We zullen onbelangrijke operanden en syntaxiselementen weglaten (bijvoorbeeld de regel die in veel programmeersystemen wordt gebruikt om “;” aan het einde van de operator te plaatsen).

1. Exploitant een tafel makenheeft het formaat:

MAAK TABEL<имя таблицы>

(<имя столбца> <тип данных>

[,<имя столбца> <тип данных> ]...)

De vereiste operanden van de operator zijn de naam van de tabel die wordt gemaakt en de naam van ten minste één kolom (veld) die het type gegevens aangeeft dat in deze kolom is opgeslagen.

Bij het maken van een tabel kunnen voor afzonderlijke velden enkele aanvullende regels worden opgegeven voor het controleren van de waarden die erin zijn ingevoerd. De NOT NULL-constructie dient precies dit doel en betekent voor een tabelkolom dat er in die kolom een ​​waarde moet worden gedefinieerd.

SQL-instructies

Weergave

Naam

Doel

MAAK TABEL

DRUPTAFEL

WIJZIG TABEL

INDEX MAKEN

DALINGSINDEX

CREËER UITZICHT

DROP-VIEW

GROOT*

HERROEPEN*

een tafel maken

een tabel verwijderen

veranderende tabelstructuur

indexcreatie

een index verwijderen

het creëren van een weergave

een weergave verwijderen

het toekennen van privileges

verwijdering van privileges

SELECTEER

BIJWERKEN

INVOEGEN

VERWIJDEREN

voorbeeldregistraties

het wijzigen van records

nieuwe records invoegen

vermeldingen verwijderen

Over het algemeen kunnen verschillende DBMS'en verschillende soorten gegevens gebruiken. De ODBC-interface ondersteunt zijn eigen standaardgegevenstypen, bijvoorbeeld karaktergegevens (SQL_CHAR, SQL_VARCHAR, SQL_LONGVARCHAR), enz. Wanneer u via de ODBC-interface met de database van een bepaald DBMS werkt, worden de standaardgegevenstypen die door de interface worden ondersteund automatisch geconverteerd naar brongegevenstypen en omgekeerd. Indien nodig kan de gegevensuitwisseling tussen het programma en de gegevensbron plaatsvinden zonder conversie in het interne gegevensformaat van de bron.

Voorbeeld 1 . Een tabel maken.

Stel dat u een goederentabel wilt maken die goederen beschrijft en die de volgende velden bevat: type producttype, comp_id-identificator van het productiebedrijf, naam van het product en prijs van het product. De tabeldefinitie-instructie zou er als volgt uit kunnen zien:

CREATE TABLE goederen (type SQL_CHAR(8) NOT NULL,

comp_id SQL_CHAR(10) NIET NULL, naam SQL_VARCHAR(20),

prijs SQL_DECIMAL(8,2)).

2. Exploitant tabelstructuur verandertheeft het formaat:

WIJZIG TABEL<имя таблицы>

((TOEVOEGEN, WIJZIGEN, VERLATEN)<имя столбца> [<тип данных>]

[,(TOEVOEGEN, WIJZIGEN, VERLATEN)<имя столбца> [<тип данных>]]...)

Het wijzigen van de structuur van een tabel kan bestaan ​​uit het toevoegen (ADD), wijzigen (MODIFY) of verwijderen (DROP) van een of meer tabelkolommen. De regels voor het schrijven van de ALTER TABLE-instructie zijn dezelfde als voor de CREATE TABLE-instructie. Wanneer u een kolom verwijdert, geef dit dan aan<тип данных>geen behoefte.

3. Exploitant een tabel verwijderenheeft het formaat:

DRUPTAFEL<имя таблицы>

Met de operator kunt u een bestaande tabel verwijderen. Als u bijvoorbeeld een tabel met de naam items wilt verwijderen, volstaat het om een ​​instructie te schrijven als: DROP TABLE items.

4. Exploitant het maken van een indexheeft het formaat:

INDEX MAKEN< имя индекса >

OP< имя таблицы >

(<имя столбца>[ASC | OMSCHRIJVING ]

[,<имя столбца>[ASC | OMSCHRIJVING]...)

Met de operator kunt u een index maken op een of meer kolommen van een bepaalde tabel om de uitvoering van zoek- en zoekbewerkingen in de tabel te versnellen. U kunt meerdere indexen op één tabel maken. Door de optionele UNIQUE-optie op te geven, kunt u ervoor zorgen dat de waarden in alle kolommen die in de instructie worden opgegeven, uniek zijn. In wezen betekent het maken van een index met behulp van het UNIQUE-attribuut het definiëren van een sleutel in een eerder gemaakte tabel. Wanneer u een index aanmaakt, kunt u instellen dat de waarden in kolommen automatisch worden gesorteerd in oplopende volgorde ASC (standaard), of aflopende volgorde DESC. U kunt voor verschillende kolommen een verschillende sorteervolgorde instellen.

5. Exploitant een index verwijderenheeft het formaat:

DALINGSINDEX<имя индекса>

Met deze operator kunt u een eerder gemaakte index met de bijbehorende naam verwijderen. Om bijvoorbeeld de index main_indx in de emp-tabel te vernietigen, volstaat het om de instructie DROP INDEX main_indx te schrijven.

6. Exploitant het creëren van een weergaveheeft het formaat:

CREËER UITZICHT<имя представления>

[(<имя столбца> [,<имя столбца> ]...)]

ALS<оператор SELECT>

Met deze operator kunt u een weergave maken. Als er geen kolomnamen zijn opgegeven in de weergave, worden de kolomnamen uit de query die wordt beschreven door de bijbehorende SELECT-instructie gebruikt.

7. Operator verwijderen representatie heeft het volgende formaat:

DROP-VIEW<имя представления>

Met de operator kunt u een eerder gemaakte weergave verwijderen. Houd er rekening mee dat wanneer u een weergave verwijdert, de tabellen die aan de query deelnemen, niet worden verwijderd. Het verwijderen van een gerg-representatie gebeurt met een operator van het formulier: DROP VIEW repr.

8. Operator voor recordselectie heeft het formaat:

SELECTEER

< список данных >

VAN<список таблиц>

... ]

...]

Dit is de belangrijkste instructie van alle SQL-instructies. De functionaliteit is enorm. Laten we naar de belangrijkste kijken. Met de SELECT-instructie kunt u gegevens uit een of meer tabellen selecteren en berekeningen uitvoeren. Het resultaat van de instructie is een responstabel, die al dan niet (DISTINCT) dubbele rijen kan bevatten. Standaard worden alle rijen, inclusief dubbele rijen, opgenomen in de responstabel. Bij de gegevensselectie zijn records betrokken uit een of meer tabellen die zijn opgenomen in de lijst van de FROM-operand. De gegevenslijst kan de namen bevatten van de kolommen die aan de zoekopdracht deelnemen, evenals uitdrukkingen over de kolommen. In het eenvoudigste geval kunnen expressies kolomnamen, rekenkundige symbolen (+, , *, /), constanten en haakjes bevatten. Als een expressie in de gegevenslijst wordt geschreven, worden naast de gegevensselectie berekeningen uitgevoerd, waarvan de resultaten in een nieuwe (aangemaakte) kolom van de antwoordtabel vallen. Bij het gebruik van kolomnamen van meerdere tabellen in gegevenslijsten wordt een constructie van het formulier gebruikt om aan te geven dat een kolom bij een bepaalde tabel hoort:<имя таблицы>.<имя столбца>.

De WHERE-operand specificeert de voorwaarden waaraan de records in de resulterende tabel moeten voldoen. Uitdrukking<условие выборки>is Booleaans. De elementen kunnen kolomnamen, vergelijkingsbewerkingen, rekenkundige bewerkingen, logische verbindingen (AND, OR, NOT), haakjes, speciale functies LIKE, NULL, IN, enz. zijn. Met de GROUP BY-operand kunt u groepen selecteren in de resulterende set records.

9. Exploitant wijzigingen registrerenheeft het formaat:

UPDATE<имя таблицы>

SET<имя столбца> = {<выражение>, NUL )

[, SET<имя столбца> = {<выражение>, NULL)...]

De uitvoering van een UPDATE-instructie bestaat uit het wijzigen van de waarden in de tabelkolommen die zijn opgegeven door de SET-operand voor die records die voldoen aan de voorwaarde die is opgegeven door de WHERE-operand. Nieuwe veldwaarden in records kunnen leeg zijn (NULL) of berekend volgens een rekenkundige uitdrukking. De regels voor het schrijven van rekenkundige en logische expressies zijn vergelijkbaar met de overeenkomstige regels voor de SELECT-instructie.

10. Exploitant nieuwe records invoegenheeft twee soorten formaten:

INVOEGEN IN<имя таблицы>

[(<список столбцов>)]

WAARDEN (<список значений>)

INVOEGEN IN<имя таблицы>

[(<список столбцов>)]

<предложение SELECT>

In het eerste formaat wordt de INSERT-instructie gebruikt om nieuwe records met opgegeven waarden in de kolommen in te voeren. De volgorde waarin de kolomnamen worden vermeld, moet overeenkomen met de volgorde van de waarden in de lijst van de VALUES-operand. Als<список столбцов>weggelaten, dan in<списке значений>Alle waarden moeten worden vermeld in de volgorde van de kolommen van de tabelstructuur.In het tweede formaat is het de bedoeling dat de INSERT-instructie wordt ingevoerdeen gegeven tabel met nieuwe rijen geselecteerd uit een andere tabel metmet behulp van de SELECT-clausule.

PAGINA 1

Andere soortgelijke werken die u mogelijk interesseren.vshm>

16. Leer de basisprincipes van de gestructureerde querytaal T-SQL 34,15 KB
Om dit doel te bereiken, is het noodzakelijk om de volgende taken op te lossen: maak query's voor selectie uit verschillende tabellen in SQL-taal met behulp van gespecificeerde selectiecriteria; maak een selectiequery in SQL met statische aggregatiefuncties; maak een query die de resultaten van twee of meer query's combineert in één resultatenset met behulp van de opdracht UNION. Als resultaat van het voltooien van het werk moeten studenten het volgende kennen: categorieën SQL-opdrachten; basis SQL-opdrachten die worden gebruikt om een ​​query op te bouwen; principes voor het maken van SQL-query's...
6030. TAAL ALS ONTWIKKELINGSFENOMEEN. EXTERNE EN INTERNE FACTOREN VAN TAALONTWIKKELING 17,38 KB
Het probleem van de oorsprong van de taal omvat twee vragen. De eerste vraag houdt verband met het probleem van de oorsprong van taal in het algemeen, hoe de menselijke taal zich ontwikkelde, hoe iemand leerde spreken, de tweede met de oorsprong van elke individuele taal. Er is geen bewijs voor deze periode bewaard gebleven. Daarom moeten taalkundigen bij het bestuderen van de oorsprong van taal in het algemeen niet alleen met taalkundige feiten werken, maar ook met gegevens uit aanverwante wetenschappen. De belangstelling voor het probleem van de oorsprong van taal ontstond lang geleden.
10870. Interdisciplinaire verbindingen van de cursus “Professionele Russische taal”. Transformatie en differentiatie van de professionele Russische taal 10,57 KB
Transformatie en differentiatie van de professionele Russische taal 1. Transformatie en differentiatie van de professionele Russische taal. Syntactische normen worden bepaald door de structuur van de taal en ondergaan, net als andere orthoepische, lexicale en morfologische normen, veranderingen in het proces van taalontwikkeling. Bij het beheersen van de syntaxis van een niet-moedertaal doen zich een aantal problemen voor bij het kiezen van vormen van controle en het coördineren van de constructie van zinnen, het gebruik van deelwoorden, het kiezen van het juiste voorzetsel, enzovoort.
6929. Geschiedenis van de Delphi-taal 13,01 KB
Delphi is de Griekse stad waar het orakel van Delphi woonde. Delphi is een combinatie van verschillende belangrijke technologieën: Hoogwaardige compiler naar machinecode Objectgeoriënteerd model van componenten Visuele en dus snelle constructie van applicaties vanuit softwareprototypes Schaalbare tools voor het bouwen van databases Compiler naar machinecode De in Delphi ingebouwde compiler zorgt voor de hoge prestaties die nodig zijn voor het bouwen van toepassingen in de architectuur ...
10869. De concepten van "professionele taal", "speciale taal", hun differentiatie. Professionele Russische taal: de oorsprong, functies, reikwijdte van het functioneren (rekening houdend met de specifieke kenmerken van de specialiteit) 9,5 KB
Differentiatie van taal. Elke economische specialiteit heeft, naast de gemeenschappelijke taal die alle economen gemeen hebben, ook zijn eigen speciale en gespecialiseerde taal. Specialisten communiceren mondeling en schriftelijk in deze professionele talen; deze professionele talen worden aan studenten onderwezen; dergelijke professionele talen beschrijven systemen van kennis en vaardigheden in wetenschappelijke onderwijsreferentie en andere literatuur. In het economische taalsysteem zijn er problemen die alle beroepstalen gemeen hebben.
1335. Basismodellen voor woordvorming in modern Amerikaans Engels 117,01 KB
De belangrijkste verschillen tussen Amerikaans en Brits Engels. Het probleem van het bepalen van de wereldstatus van Amerikaans Engels. Amerikaans Engels in de moderne wereld. Lexicale kenmerken van Amerikaans Engels.
1936. GESCHIEDENIS, STRUCTUUR EN BASISCONCEPTEN VAN ECOLOGIE 495,77 KB
De term ‘ecologie’ is gevormd uit de Griekse wortels ‘oikos’ – thuis, de directe omgeving van een persoon en ‘logos’ – wetenschap. Daarom is ecologie in letterlijke zin de wetenschap van organismen, inclusief mensen, waargenomen binnen de grenzen van hun huis, met speciale aandacht voor de aard van de relaties tussen organismen en hun omgeving.
17746. Pedagogiek van de beeldende kunst: geschiedenis en belangrijkste ontwikkelingstrends 25,96 KB
De taak van de test is om het concept van de artistieke creativiteit van kinderen te overwegen, om het onderzoek van uitstekende leraren en psychologen en de geschiedenis van de vorming van de artistieke creativiteit van kinderen te identificeren. Een uiting van artistieke creativiteit kunnen individuele werken zijn - zelfstandig of onder begeleiding van een volwassene gemaakt, tekeningen, modellering, mondelinge en schriftelijke kunst, melodieën, dramatisering, dans, maar ook koorzang, theatervoorstellingen, kunst en handwerk, snijwerk, poppentheater, tekenfilms en fictiefilms, en...
6285. Controleverklaringen 103,51 KB
Lusoperatoren Lusoperatoren worden gebruikt om herhaalde berekeningen te organiseren. Om een ​​lus te organiseren, hebt u een variabele nodig die een lusparameter of een lusbesturingsvariabele wordt genoemd. Elke cyclus bestaat uit: initiële instellingen of een; luslichamen, dat wil zeggen instructies die meerdere keren worden uitgevoerd; cyclusparameterwijzigingsblok; het controleren van de voorwaarde voor het verlaten van de lus, die vóór het lichaam van de lus kan worden geplaatst, dan spreken we van een lus met een voorwaarde of na het lichaam...
2784. Voorwaardelijke en selectieverklaringen 16 KB
Conditie-operator If. Daarom kunt u de volgende toewijzingsoperatoren al schrijven: Koren:=Sqrtxy; Module:=bsxy. Om dergelijke voorwaardelijke sprongen in Pascal te implementeren, worden de operatoren If en Else gebruikt, evenals de onvoorwaardelijke sprongoperator Goto. Laten we eens kijken naar de If-instructie.

Basis SQL-instructies. Syntaxis en voorbeelden van het gebruik van de SELECT-instructie.

De basis van de SQL-taal bestaat uit operators, voorwaardelijk verdeeld in verschillende groepen op basis van de functies die ze uitvoeren.

De volgende groepen operators kunnen worden onderscheiden (niet alle SQL-operators worden vermeld):

DDL-instructies (Data Definition Language) - instructies voor het definiëren van databaseobjecten

· CREATE SCHEMA - maak een databaseschema

· DROP SHEMA - verwijder een databaseschema

· MAAK TAFEL - maak een tabel

ALTER TABLE - verander de tabel

· DROP TABLE - verwijder een tabel

· DOMEIN MAKEN - maak een domein aan

WIJZIG DOMEIN - wijzig domein

· DROP DOMAIN - verwijder een domein

· CREËER COLLATIE - maak een reeks

· DROP COLLATION - verwijder een reeks

· CREËER WEERGAVE - maak een weergave

· DROP VIEW - verwijder een weergave

DML-operatoren (Data Manipulation Language) - operators voor gegevensmanipulatie

· SELECTEER - selecteer rijen uit tabellen

INSERT - rijen toevoegen aan de tabel

· UPDATE - wijzig rijen in de tabel

· DELETE - verwijder rijen in de tabel

· COMMIT - doorgevoerde wijzigingen

· ROLLBACK - gemaakte wijzigingen ongedaan maken

Operators voor gegevensbescherming en -beheer

· CREËER BEWEGING - creëer een beperking

· DROP ASSERTION - verwijder een beperking

· GRANT - geef rechten aan een gebruiker of applicatie om objecten te manipuleren

REVOKE - trek gebruikers- of applicatierechten in

Tegelijkertijd zijn er groepen operators voor het instellen van sessieparameters, het verkrijgen van informatie over de database, statische SQL-operators en dynamische SQL-operators.

Het belangrijkste voor de gebruiker zijn gegevensmanipulatieverklaringen (DML).

Voorbeelden van het gebruik van operatoren voor gegevensmanipulatie

INSERT - rijen in een tabel invoegen

Voorbeeld 1. Eén rij in een tabel invoegen:

WAARDEN(4, "Ivanov");

UPDATE - rijen in een tabel bijwerken

Voorbeeld 3. Meerdere rijen in een tabel bijwerken:

SET PNAME = "Poesjnikov"

WAAR P.PNUM = 1;

DELETE - rijen in een tabel verwijderen

Voorbeeld 4. Meerdere rijen in een tabel verwijderen:

WAAR P.PNUM = 1;

Voorbeelden van het gebruik van de SELECT-instructie

De SELECT-instructie is feitelijk de meest gebruikerskritische en meest complexe SQL-instructie. Het is ontworpen om gegevens uit tabellen op te halen, ᴛ.ᴇ. het implementeert in feite een van de basisdoelen van de database: het verstrekken van informatie aan de gebruiker.

De SELECT-instructie wordt altijd uitgevoerd op sommige tabellen die deel uitmaken van de database.

Opmerking. In databases zijn er namelijk niet alleen permanent opgeslagen tabellen, maar ook tijdelijke tabellen en zogenaamde views. Weergaven zijn eenvoudigweg SELECT-expressies die in de database zijn opgeslagen. Vanuit het oogpunt van de gebruiker is een weergave een tabel die niet permanent in de database is opgeslagen, maar "verschijnt" wanneer deze wordt geopend. Vanuit het oogpunt van de SELECT-instructie zien zowel persistente tabellen als tijdelijke tabellen en views er precies hetzelfde uit. Wanneer het systeem daadwerkelijk een SELECT-instructie uitvoert, wordt er uiteraard rekening gehouden met de verschillen tussen opgeslagen tabellen en views, maar deze verschillen verborgen van de gebruiker.

Het resultaat van een SELECT-instructie is altijd een tabel. Op basis van de resultaten van zijn acties is de SELECT-instructie echter vergelijkbaar met de operators van relationele algebra. Elke relationele algebra-operator moet worden uitgedrukt door een passend geformuleerde SELECT-instructie. De complexiteit van de SELECT-instructie wordt bepaald door het feit dat deze alle mogelijkheden van relationele algebra bevat, evenals aanvullende mogelijkheden die niet aanwezig zijn in relationele algebra.

Uitvoeringsvolgorde van de SELECT-instructie

Om te begrijpen hoe het resultaat van het uitvoeren van een SELECT-instructie wordt verkregen, kunt u het conceptuele diagram van de uitvoering ervan bekijken. Dit schema is slechts conceptueel, omdat het is gegarandeerd dat het resultaat hetzelfde zal zijn alsof het stap voor stap volgens dit schema zou worden uitgevoerd. In feite wordt het daadwerkelijke resultaat verkregen door meer geavanceerde algoritmen die een bepaald DBMS ‘bezit’.

Fase 1: Een enkele SELECT-instructie uitvoeren

Als de operator de trefwoorden UNION, EXCEPT en INTERSECT bevat, wordt de zoekopdracht opgedeeld in verschillende onafhankelijke zoekopdrachten, die elk afzonderlijk worden uitgevoerd:

Stap 1 (VANAF). Het directe cartesiaanse product van alle tabellen die zijn opgegeven in de verplichte FROM-sectie wordt berekend. Als resultaat van stap 1 verkrijgen we tabel A.

Stap 2 (WAAR). Als de SELECT-instructie een WHERE-clausule bevat, wordt tabel A, verkregen in stap 1, gescand. In dit geval wordt voor elke rij uit tabel A de voorwaardelijke expressie berekend die in de WHERE-clausule is opgegeven. Alleen de rijen waarvoor de voorwaardelijke expressie TRUE retourneert, worden in het resultaat opgenomen. Als de WHERE-sectie wordt weggelaten, ga dan onmiddellijk verder met stap 3. Als er geneste subquery's bij de voorwaardelijke expressie betrokken zijn, worden deze berekend in overeenstemming met dit conceptuele schema. Als resultaat van stap 2 verkrijgen we tabel B.

Stap 3 (GROEPEREN OP). Als de SELECT-instructie een GROUP BY-sectie bevat, worden de rijen van tabel B die in de tweede stap zijn verkregen, gegroepeerd in overeenstemming met de groeperingslijst in de GROUP BY-sectie. Als de sectie GROUP BY wordt weggelaten, ga dan onmiddellijk verder met stap 4. Als resultaat van stap 3 verkrijgen we tabel C.

Stap 4 (HEBBEN). Als de SELECT-instructie een HAVING-sectie bevat, worden groepen uitgesloten die niet voldoen aan de voorwaardelijke expressie die in de HAVING-sectie is gegeven. Als de HAVING-sectie wordt weggelaten, ga dan onmiddellijk verder met stap 5. Als resultaat van stap 4 verkrijgen we tabel D.

Stap 5 (SELECTIE). Elke groep verkregen in stap 4 genereert als volgt één resultaatrij. Alle scalaire expressies die zijn opgegeven in de sectie SELECT worden geëvalueerd. Volgens de regels voor het gebruik van de GROUP BY-clausule moeten dergelijke scalaire expressies hetzelfde zijn voor alle rijen binnen elke groep. Voor elke groep worden de waarden van de aggregatiefuncties in de sectie SELECT berekend. Als er geen GROUP BY-sectie is, maar er wel aggregatiefuncties zijn in de SELECT-sectie, wordt ervan uitgegaan dat er slechts één groep is. Als er geen GROUP BY-sectie of aggregatiefuncties zijn, wordt ervan uitgegaan dat er op dit moment net zoveel groepen zijn als er rijen zijn geselecteerd. Als resultaat van stap 5 verkrijgen we tabel E, die evenveel kolommen bevat als er elementen zijn vermeld in de sectie SELECT en evenveel rijen als er groepen zijn geselecteerd.

Fase 2. Uitvoeren van UNION, EXCEPT, INTERSECT-bewerkingen

Als de SELECT-instructie de trefwoorden UNION, EXCEPT en INTERSECT bevatte, worden de tabellen verkregen als resultaat van de eerste fase samengevoegd, afgetrokken of doorsneden.

Fase 3. Het resultaat bestellen

Als de SELECT-instructie een ORDER BY-sectie bevat, worden de rijen van de tabel die in de voorgaande stappen zijn verkregen, geordend in overeenstemming met de bestellijst in de ORDER BY-sectie.

Basis SQL-instructies. Syntaxis en voorbeelden van het gebruik van de SELECT-instructie. - concept en typen. Classificatie en kenmerken van de categorie "Basis SQL-operatoren. Syntaxis en voorbeelden van het gebruik van de SELECT-operator." 2017, 2018.

En boven de tabelgegevens.

De SQL-taal wordt aangeroepen ingebouwd, omdat Het bevat de functies van een volwaardige ontwikkeltaal en is gericht op datatoegang, waardoor het onderdeel is van applicatie-ontwikkeltools. SQL-taalstandaarden ondersteunen de programmeertalen Pascal, Fortran, COBOL, C, etc.

Bestaat 2 methoden om ingebedde SQL te gebruiken:

  • statisch taalgebruik ( statische SQL) – de programmatekst bevat oproepen naar SQL-functies, die na compilatie in de uitvoerbare module worden opgenomen.
  • dynamisch taalgebruik ( dynamische SQL) – dynamische constructie van SQL-functieaanroepen en hun interpretatie. Bijvoorbeeld, hebt u tijdens de uitvoering van het programma toegang tot gegevens uit een externe database.

De SQL-taal is (net als andere talen voor het werken met databases) ontworpen voor het voorbereiden en uitvoeren van queries. Als resultaat van het uitvoeren van een gegevensquery uit een of meer tabellen, wordt een reeks records verkregen, die wordt aangeroepen presentatie.

Definitie 1

Prestatie is een tabel die wordt gevormd als resultaat van het uitvoeren van een query.

Basisoperatoren voor SQL-querytaal

SQL-taaloperatoren worden conventioneel onderverdeeld in 2 subtalen:

  1. Gegevensdefinitietaal DDL;
  2. Taal voor datamanipulatie DML.

In de tabel zijn ze gemarkeerd met * specifieke exploitanten taal.

Laten we eens kijken naar de belangrijkste SQL-instructies.

    Verklaring voor het maken van tabellen:

    De naam van de tabel die wordt gemaakt en de naam van ten minste één kolom (veld) zijn verplichte operanden. Voor de kolomnaam moet u het type gegevens opgeven dat erin wordt opgeslagen.

    Voor individuele velden kunt u aanvullende regels opgeven om de waarden te controleren die erin worden ingevoerd. Bijvoorbeeld, NIET NUL geeft aan dat het veld niet leeg mag zijn en gevuld moet worden met een waarde.

    Voorbeeld 1

    Om een ​​tabel te maken boeken boekencatalogus, die de velden bevat:

    type– soort boek,

    naam- titel van het boek,

    prijs– prijs van het boek

    de verklaring zou er als volgt uit kunnen zien:

    Operator voor het wijzigen van de tafelstructuur:

    Wanneer u de tabelstructuur wijzigt, kunt u ( TOEVOEGEN), wijziging ( BEWERKEN) of verwijder ( DRUPPEL) een of meer tabelkolommen. De regels voor het vastleggen van deze operator zijn dezelfde als voor de operator MAAK TABEL. Als u een kolom wilt verwijderen, hoeft u deze niet op te geven.

    Voorbeeld 2

    Om toe te voegen aan een tabel boeken velden nummer, waarin het aantal boeken wordt opgeslagen, kunt u de operator schrijven:

    Operator voor het neerzetten van tabellen:

    Voorbeeld 3

    Als u bijvoorbeeld een bestaande tabel met de naam wilt verwijderen boeken het is voldoende om de operator te gebruiken:

    Operator voor het maken van indexen:

    De operator maakt een index op een of meer kolommen van een bepaalde tabel, waardoor query- en opzoekbewerkingen kunnen worden versneld. Voor één tabel kunnen meerdere indexen worden gemaakt.

    Optionele optie UNIEK is ervoor verantwoordelijk dat de waarden in alle kolommen die in de verklaring zijn opgegeven, uniek zijn.

    A.S.C. stelt de waarden in de kolommen in die automatisch in oplopende volgorde moeten worden gesorteerd (standaard), en OMSCHRIJVING– in aflopende volgorde.

    Operator voor indexdaling:

    Operator voor het maken van weergaven:

    Wanneer u een weergave maakt, hoeft u geen kolomnamen op te geven. Vervolgens worden de kolomnamen uit de query, die door de corresponderende operator wordt beschreven, gebruikt SELECTEER.

    Verwijderingsoperator bekijken:

    Operator voor recordselectie:

    Exploitant SELECTEER voert steekproeven en berekeningen uit op gegevens uit een of meer tabellen. Het resultaat van het uitvoeren van de operator is een responstabel die bevat ( ALLE) of bevat geen ( VERSCHILLEND) regels die worden herhaald.

    Operand VAN bevat een lijst met tabellen waaruit records worden gehaald voor gegevensselectie.

    Operator voor recordwijziging:

    Nieuwe veldwaarden in records mogen geen waarden bevatten ( NUL) of berekend volgens een rekenkundige uitdrukking.

    Operator voor het invoegen van nieuwe records:

    In het eerste operatorrecord INVOEGEN Nieuwe records worden ingevoerd met opgegeven waarden in de kolommen.

    In het tweede operatorrecord INVOEGEN er worden nieuwe rijen ingevoerd, geselecteerd uit een andere tabel via een clausule SELECTEER.

    Operator voor het verwijderen van records:

    Als gevolg van het uitvoeren van de operator worden rijen die voldoen aan de voorwaarde die is opgegeven door de optionele operand uit de opgegeven tabel verwijderd WAAR. Als de operand WAAR niet is opgegeven, worden alle tabelgegevens verwijderd.

Vraag nr. 1. SQL en zijn geschiedenis. 1

Vraag nr. 2. Beschrijving van eenvoudige SQL-instructies.. 1

Rekenkundige functies. 4

Tekenreeksverwerkingsfuncties. 5

Speciale functies. 6

Functies voor datumverwerking... 7

Het gebruik van aggregatiefuncties in query's. 7

Vraag nr. 1. SQL en zijn geschiedenis

Het enige communicatiemiddel tussen databasebeheerders, ontwerpers, ontwikkelaars en gebruikers met een relationele database is de gestructureerde querytaal SQL (Structured Query Language). SQL is een taal met volledige functionaliteit voor het manipuleren van gegevens in relationele databases. Momenteel is het een algemeen aanvaarde standaardinterface voor relationele databases zoals Oracle, Informix, Sybase, DB/2, MS SQL Server en verschillende andere (ANSI- en ISO-standaarden). SQL is een niet-procedurele taal die is ontworpen om sets te verwerken die bestaan ​​uit rijen en kolommen van relationele databasetabellen. Hoewel er uitbreidingen zijn die procedurele verwerking mogelijk maken. Databaseontwerpers gebruiken SQL om alle fysieke objecten van een relationele database te creëren.

De theoretische basis van SQL werd gelegd in het beroemde artikel van Codd, dat de basis legde voor de ontwikkeling van de theorie van relationele databases. De eerste praktische implementatie vond plaats in de onderzoekslaboratoria van IBM Chamberlin D.D. en Royce R.F. Het industriële gebruik van SQL werd voor het eerst geïmplementeerd in het Ingres DBMS. Een van de eerste industriële relationele DBMS'en is Oracle. In wezen is een relationeel DBMS software die de werking van een relationele database beheert.

De eerste internationale standaard voor de SQL-taal werd in 1989 aangenomen (SQL-89). Eind 1992 werd een nieuwe internationale standaard, SQL-92, aangenomen. Momenteel gebruiken de meeste relationele DBMS-fabrikanten het als basis. Het werk aan het standaardiseren van de SQL-taal is echter verre van voltooid en er is al een ontwerp-SQL-99-standaard ontwikkeld, die het concept van een object in de taal introduceert en het mogelijk maakt ernaar te verwijzen in SQL-instructies: In de originele versie van SQL er waren geen commando's voor het besturen van de gegevensstroom; deze verschenen in de onlangs aangenomen ISO/IEC 9075-5: 1996 Supplementary Part SQL.

Elk specifiek DBMS heeft zijn eigen SQL-implementatie, die doorgaans een bepaalde standaard ondersteunt, maar zijn eigen kenmerken heeft. Deze implementaties worden dialecten genoemd. De 1SO/IEC 9075-5-standaard biedt dus objecten die persistent opgeslagen modules of PSM-modules (Persistent Stored Modules) worden genoemd. In het Oracle DBMS is de PL/SQL-extensie analoog aan de bovenstaande standaardextensie."

Vraag nr. 2. Beschrijving van eenvoudige SQL-instructies

SQL bestaat uit een reeks opdrachten voor het manipuleren van gegevens in een relationele database, waarmee u relationele databaseobjecten kunt maken, gegevens in tabellen kunt wijzigen (invoegen, verwijderen, corrigeren), databaserelatieschema's kunt wijzigen, berekeningen op gegevens kunt uitvoeren, selecties kunt maken uit de database, het handhaven van de veiligheid en gegevensintegriteit.

De volledige set SQL-opdrachten kan in de volgende groepen worden verdeeld:

· gegevensdefinitieopdrachten (DDL - Data Defininion Language);

· opdrachten voor gegevensmanipulatie (DML - Data Manipulation Language);

· opdrachten voor gegevensbemonstering (DQL - Data Query Language);

· opdrachten voor transactiebeheer;

· opdrachten voor gegevensbeheer.

Wanneer het wordt uitgevoerd, doorloopt elk SQL-commando vier verwerkingsfasen:

· de parseerfase, die het controleren van de opdrachtsyntaxis omvat, het controleren van de namen van tabellen en kolommen in de database en het voorbereiden van de invoergegevens voor de optimalisatie;

· de optimalisatiefase, die het vervangen van de werkelijke namen van tabellen en databasekolommen in de weergave omvat, het identificeren van mogelijke opties voor het uitvoeren van een opdracht, het bepalen van de kosten voor het uitvoeren van elke optie, en het selecteren van de beste optie op basis van interne statistieken;

· de fase van het genereren van uitvoerbare code, die de constructie van uitvoerbare commandocode omvat;

· de opdrachtuitvoeringsfase, waarbij de opdrachtcode wordt uitgevoerd.

Momenteel optimalisatie is een integraal onderdeel van elke industriële SQL-implementatie. De optimizer werkt door statistieken te verzamelen over de opdrachten die het uitvoert en door gelijkwaardige algebraïsche transformaties uit te voeren op databaserelaties. Deze statistieken worden opgeslagen in de systeemdatabasedirectory. Systeemcatalogus is een datadictionary voor elke database en bevat informatie over tabellen, views, indexen, kolommen, gebruikers en hun toegangsrechten. Elke database heeft zijn eigen systeemcatalogus, die een verzameling vooraf gedefinieerde databasetabellen vertegenwoordigt.

Tabel 8.1 bevat een lijst met SQL-commando's volgens de geaccepteerde standaard, met uitzondering van enkele commando's die praktisch niet in dialecten worden gebruikt.

Tabel 8.1. Typische lijst met SQL-opdrachten

Team Beschrijving
Commando's voor het definiëren van objectgegevens
WIJZIG TABEL Wijzigt de tabelbeschrijving (relatieschema)
MAAK EVENEMENT Creëert een timergebeurtenis in de database
INDEX MAKEN Creëert een index op de tafel
CREËER VOLGORDE Creëert een reeks
MAAK TABEL Definieert een tabel
MAAK TAFELRUIMTE Er wordt een tabelruimte gemaakt
MAAK TRIGGER Creëert een trigger in de database
CREËER UITZICHT Definieert een weergave van tabellen
DALINGSINDEX Verwijdert fysiek een index uit de database
DROP-SEQUENTIE Verwijdert een reeks
DRUPTAFEL Verwijdert fysiek een tabel uit de database
DRAAG TAFELRUIMTE Verwijdert een tabelruimte
DROP-VIEW Verwijdert een weergave
Commando's voor gegevensmanipulatie
VERWIJDEREN Verwijdert een of meer rijen uit een databasetabel
INVOEGEN Voegt een of meer rijen in een databasetabel in
UPDATE Werkt kolomwaarden in een databasetabel bij
Commando's voor het ophalen van gegevens
SELECTEER Voert een query uit om gegevens uit tabellen en weergaven op te halen
UNIE Combineert de resultaten van twee of meer SELECT-opdrachten in één selectie
Transactiecontroleopdrachten
VERBINDEN Voltooit een transactie en werkt de huidige status van de database fysiek bij
ROLLBACK Beëindigt een transactie en retourneert de huidige status van de database op het moment van de laatste voltooide transactie en controlepunt
BESPAARPUNT Wijst een controlepunt toe binnen een transactie
Commando's voor gegevensbeheer
WIJZIG DATABANK Wijzigt opslaggroepen of transactielogboeken
WIJZIG DBAREA Wijzigt de grootte van databaseopslaggebieden
WIJZIG WACHTWOORD Wijzigt het wachtwoord voor toegang tot de database
ALTER STOGROEP Wijzigt de samenstelling van opslaggebieden in een opslaggroep
CONTROLEER DATABANK Controleert de database-integriteit
CONTROLEER INDEX Controleert de integriteit van de index
CONTROLEER TABEL Controleert de tabel- en indexintegriteit
DATABANK MAKEN Creëert fysiek de database
MAAK DBAREA Creëert een databaseopslaggebied
MAAK STOGROEP AAN Creëert een opslaggroep
CREËER SYNONIEM Creëert een synoniem voor een tabel of weergave
DATABASE DEINSTALLEREN Maakt de database ontoegankelijk voor netwerkgebruikers
DATABANK DROP Fysiek databases verwijderen
DROP DBAREA Verwijdert fysiek een databaseopslaggebied
DROP STOGROEP Verwijdert een opslaggroep
STUDIEBEURS Definieert gebruikersrechten en toegangscontrole tot de database
INSTALLEER DATABANK Maakt de database beschikbaar voor netwerkgebruikers
DATABANK VERGRENDELEN Vergrendelt de momenteel actieve database
HERROEPEN Trekt gebruikersrechten en databasetoegangsbeperkingen in
STEL DE STANDAARD STOGROEP IN Definieert de standaardopslaggroep
ONTGRENDELEN DATABANK Geeft de momenteel actieve database vrij
UPDATE STATISTIEKEN Updatet statistieken voor een database
Andere commando's
COMMENTAAR OP Plaatst commentaar op de beschrijving van databaseobjecten in de systeemcatalogus
CREËER SYNONIEM Definieert alternatieve namen voor databasetabellen en -weergaven in de systeemcatalogus
DROP-SYNONIEM Verwijdert alternatieve namen voor databasetabellen en views uit de systeemcatalogus
LABEL Wijzigt systeembeschrijvingslabels
RIJCOUNT Berekent het aantal rijen in een databasetabel

De set SQL-opdrachten in de tabel is niet compleet. Deze lijst is bedoeld om u een idee te geven van wat SQL in het algemeen kan doen. Voor een volledige lijst met opdrachten raadpleegt u de betreffende handleiding voor uw specifieke DBMS. Houd er rekening mee dat SQL het enige communicatiemiddel is voor alle categorieën gebruikers met relationele databases.

Rekenkundige functies

SQL ondersteunt een volledige set rekenkundige bewerkingen en wiskundige functies voor het construeren van rekenkundige uitdrukkingen over databasekolommen (+, -, *, /, ABS, LN, SQRT, enz.).

Een lijst met de belangrijkste ingebouwde wiskundige functies vindt u hieronder in Tabel 8.2.

Wiskundige functie Beschrijving
ABS(X) Retourneert de absolute waarde van een getal X
ACOS(X) Geeft de boogcosinus van een getal X terug
ASIN(X) Geeft de boogsinus van een getal X terug
ATAN(X) Geeft de boogtangens van X terug
COS(X) Geeft de cosinus van een getal X terug
EXP(X) Retourneert de exponent van een getal X
TEKEN(X) Geeft -] terug als X< 0, 0, если X = 0, + 1, если X > 0
LN(X) Retourneert de natuurlijke logaritme van een getal X
MOD(X,Y) Retourneert de rest wanneer X wordt gedeeld door Y
CEIL(X) Retourneert het kleinste gehele getal groter dan of gelijk aan X
RONDE(X,n) Rondt het getal X af op een getal met n plaatsen achter de komma
ZONDE(X) Geeft de sinus van X terug
SQRT(X) Retourneert de vierkantswortel van een getal X
TAN(X) Geeft de tangens van X terug
VLOER(X) Retourneert het grootste gehele getal kleiner dan of gelijk aan X
LOGBOEK(a,X) Retourneert de logaritme van een getal X met grondtal A
SINH(X) Geeft de hyperbolische sinus van X terug
COSH(X) Retourneert de hyperbolische cosinus van een getal X
TANH(X) Geeft de hyperbolische tangens van X terug
TRANC(X.n) Kapt het getal X af tot een getal met n decimalen
VERMOGEN(A,X) Retourneert de waarde van A verheven tot de macht X

De set ingebouwde functies kan variëren afhankelijk van de versie van het DBMS van één fabrikant en ook in DBMS'en van verschillende fabrikanten . In het SQLBase DBMS heeft Century Inc. Er is een functie @ATAN2(X,Y), die de boogtangens van Y/X retourneert, maar er is geen functie SIGN(X).

Rekenkundige expressies zijn nodig om gegevens te verkrijgen die niet rechtstreeks in de kolommen van databasetabellen zijn opgeslagen, maar waarvan de waarden door de gebruiker worden vereist. Stel dat u een lijst met werknemers nodig heeft waarop het loon staat dat elke werknemer heeft ontvangen, inclusief bonussen en boetes.

KIES ENAME, SAL, COMM. FIJN, SAL + COMM - FIJN

De rekenkundige uitdrukking SAL + COMM - FINE wordt als nieuwe kolom in de resultatentabel uitgevoerd, die op basis van de zoekopdracht wordt berekend. Dergelijke kolommen worden ook wel genoemd afgeleide (berekende) attributen of velden.

Tekenreeksverwerkingsfuncties

SQL biedt u een breed scala aan functies voor het manipuleren van stringgegevens (stringconcatenatie, CHR, LENGTH, INSTR en andere). Tabel 8.3 bevat een lijst met de belangrijkste functies voor het verwerken van stringgegevens.

Tabel 8.3. SQL-functies voor stringverwerking

Functie Beschrijving
CHR(N) Retourneert het ASCII-codeteken voor decimale code N
ASCII(S) Retourneert de decimale ASCII-code van het eerste teken van een tekenreeks
INSTR(S2,SI,pos|,N|) Retourneert de positie van de SI-tekenreeks in de S2-tekenreeks groter dan of gelijk aan pos. N - aantal keren dat dit voorkomt
LENGTE(S) Retourneert de lengte van een tekenreeks
ONDER(EN) Vervangt alle tekens in een tekenreeks door hoofdletters
INITCAP(S) Stelt het eerste teken van elk woord in een tekenreeks in op hoofdletters en de overige tekens van elk woord op hoofdletters
SUBSTR(S,pos,[,len|) Selecteert een substring met lengte tien in de string S, beginnend op positie pos
BOVENSTE(S) Converteert hoofdletters in een tekenreeks naar hoofdletters
LPAD(S,N |,A|) Geeft de string S terug, opgevuld met A's, met een maximum van N tekens. Het standaard opvulteken is een spatie.
RPAD(S,N |,A]) Geeft de tekenreeks S terug, rechts opgevuld met A's tot maximaal N tekens. Het standaard opvulteken is een spatie
LTRIM(S,|,Sll) Geeft de links afgekapte tekenreeks S terug. Tekens worden verwijderd zolang het te verwijderen teken zich in de tekenreeks bevindt - patroon SI (standaard is een spatie)
RTRIM(S,|,SI |) Geeft de naar rechts afgekapte tekenreeks S terug. Tekens worden verwijderd zolang het te verwijderen teken in de tekenreeks staat - patroon S1 (standaard is een spatie)
VERTAALT,(SI,S2) Retourneert de tekenreeks S, waarbij alle exemplaren van de tekenreeks SI zijn vervangen door de tekenreeks S2. Als S.I.<>S2, worden tekens die niet overeenkomen uitgesloten van de resulterende tekenreeks
VERVANGEN(SI,|,S2|) Retourneert de tekenreeks S waarvoor alle exemplaren van de subtekenreeks SI worden vervangen door de subtekenreeks S2. Als S2 niet is opgegeven, worden alle exemplaren van de subtekenreeks SI verwijderd uit de resulterende tekenreeks S
NVL(X,Y) Als X NULL is, retourneert Y een tekenreeks, een getal of een datum, afhankelijk van het oorspronkelijke type Y

De namen van dezelfde functies kunnen in verschillende DBMS'en verschillen. De Oracle DBMS-functie SUBSTR(S, pos, |, len|) in de SQLBase DBMS heet bijvoorbeeld @SUBSTRING(S, pos, Ien). Het SQLBase DBMS heeft functies die niet beschikbaar zijn in het Oracle DBMS (zie de onderstaande tabel voor een lijst met dergelijke functies).

Tabel 8.4. SQLBase DBMS-tekenreeksfuncties die verschillen van Oracle DBMS-tekenreeksfuncties

Functie Beschrijving
@EXACT(SI,S2) Retourneert het resultaat van het vergelijken van twee tekenreeksen
@LINKS(S,lcn) Retourneert de linker subtekenreeks van lengte len
@LENGTE(S) Retourneert de lengte van een tekenreeks
@MID(S, pos, len) Retourneert een subtekenreeks met de opgegeven lengte, beginnend op positie pos
@HERHAAL(S,n) Herhaalt de tekenreeks S n keer
@REPLACE(SI,pos,len,S2) Vervang posities pos len-tekens in string S2 door tekens in string SI
@RIGHT(S,len) Retourneert de rechter subtekenreeks van S met lengte len
@SCAN(S,pat) Geeft de positie van de subtekenreeks pat in de tekenreeks S terug
@STRING(X, schaal) Retourneert een symbolische weergave van een getal met de opgegeven schaal
@TRIM(S) Verwijdert spaties aan de rechter- en linkerkant van een tekenreeks
@WAARDEN) Converteert de symbolische weergave van een getal naar een numerieke waarde

Met de INITCAP-functie kunt u ervoor zorgen dat bij het ophalen van een lijst met werknemersnamen de achternamen altijd met een hoofdletter beginnen en alle overige namen met een hoofdletter worden geschreven.

SELECTEER INITCAP(ENAME)

Speciale kenmerken

SQL biedt een reeks speciale functies voor het transformeren van kolomwaarden. Een lijst van dergelijke functies wordt gegeven in Tabel 8.5.

Tabel 8.5. Speciale kenmerken

In de tabel WERKNEMER kunt u voor elke werknemer een geslachtskenmerk invoeren. Voeg een kolom SEX toe van het type CHAR(l) (0 - man, 1 - vrouw). Laten we zeggen dat u een lijst met werknemers nodig heeft, waarvoor ze moeten worden gedeeld op geslacht en aangegeven in een numeriek formaat; dan kun je het volgende commando geven:

SELECTEER ENAME, LNAME, LEEFTIJD, " Vloer:",TO_NUMBER(GESLACHT)

Als voorbeeld van het gebruik van de functie DECODE presenteren we een query die een lijst berekent met werknemers die hun manager aangeven. Indien de beheerder onbekend is, wordt standaard “heeft niet” weergegeven.

SELECTEER ENAME, DEC0DE(DEPN0, 10, " Dryagin", 20,"Zhilyaeva". 30,"

Korotkov", "heeft niet")

Laten we aannemen dat het hoofd van de organisatie een ongedefinieerde waarde heeft voor de DEPNO-kolom en daarom zal de standaardinstelling in DECODE voor hem werken .


©2015-2019 website
Alle rechten behoren toe aan hun auteurs. Deze site claimt geen auteurschap, maar biedt gratis gebruik.
Aanmaakdatum van de pagina: 07-08-2016

Structure Query Language (SQL) is ontstaan ​​als resultaat van de ontwikkeling van het relationele datamodel en is momenteel de de facto standaardtaal voor relationele DBMS'en. De SQL-taal wordt tegenwoordig ondersteund door een groot aantal DBMS van verschillende typen.

De naam van de SQL-taal wordt meestal uitgesproken als "es-qu-el". Soms wordt de geheugensteunnaam "See-Quel" gebruikt.

De SQL-taal biedt de gebruiker (met minimale inspanning van zijn kant) de volgende mogelijkheden:

Creëer databases en tabellen met een volledige beschrijving van hun structuur

Voer basisbewerkingen voor gegevensmanipulatie uit: gegevens invoegen, wijzigen en verwijderen

Voer zowel eenvoudige als complexe query's uit.

De SQL-taal is relationeel compleet.

De structuur en syntaxis van de commando's zijn vrij eenvoudig, en de taal zelf is universeel, dat wil zeggen dat de syntaxis en structuur van de commando's niet veranderen bij het overstappen van het ene DBMS naar het andere.

De SQL-taal bestaat uit twee hoofdcomponenten:

DDL (Data Definition Language) voor het definiëren van databasestructuren en het controleren van de toegang tot gegevens

DML (Data Manipulation Language) taal ontworpen voor het ophalen en bijwerken van gegevens.

SQL is een niet-procedurele taal, wat betekent dat wanneer u deze gebruikt, u moet specificeren welke informatie moet worden verkregen, en niet hoe deze kan worden verkregen. SQL-opdrachten zijn gewone Engelse woorden (SELECT, INSERT, enz.). Laten we eerst naar de SQL DML-instructies kijken:

SELECT - gegevens uit de database selecteren

INSERT - gegevens in een tabel invoegen

UPDATE - gegevens in een tabel bijwerken

DELETE - gegevens uit een tabel verwijderen

SELECT-instructie

De SELECT-operator voert acties uit die gelijkwaardig zijn aan de volgende relationele algebra-bewerkingen: selectie, projectie en samenvoeging.

De eenvoudigste SQL-query die er gebruik van maakt, ziet er als volgt uit:

SELECTEER col_name VAN tbl

Het select-trefwoord wordt gevolgd door een door komma's gescheiden lijst met kolommen waarvan de gegevens door de query worden geretourneerd. Het sleutelwoord from geeft aan uit welke tabel (of weergave) de gegevens worden opgehaald.

Het resultaat van een selectiequery is altijd een tabel die de resultatentabel wordt genoemd. Bovendien kunnen de resultaten van een query die wordt uitgevoerd met behulp van de select-instructie worden gebruikt om een ​​nieuwe tabel te maken. Als de resultaten van twee query's in verschillende tabellen dezelfde indeling hebben, kunt u ze combineren in één tabel. Ook kan de tabel die wordt verkregen als resultaat van een zoekopdracht het onderwerp zijn van verdere zoekopdrachten.

Om alle kolommen en alle rijen van een tabel te selecteren, geeft u eenvoudigweg een SELECT * FROM tbl;

Kijk eens naar de Producttabel, die prijsinformatie bevat voor verschillende soorten producten:

Resultaat opvragen

SELECTEER * VAN Product;

zal de gehele producttabel zijn.

U kunt specifieke tabelkolommen selecteren met behulp van een query

SELECTEER col1, col2, …, coln VAN tbl;

Dus het resultaat van het verzoek

SELECTEER Type, Prijs VAN Product;

er zal een tafel zijn

De lijst met kolommen in de select-instructie wordt ook gebruikt als het nodig is om de volgorde van de kolommen in de resulterende tabel te wijzigen:

Om alleen die tabelrijen te selecteren die aan bepaalde beperkingen voldoen, wordt een speciaal trefwoord gebruikt, gevolgd door een logische voorwaarde. Als een record aan deze voorwaarde voldoet, wordt deze opgenomen in het resultaat. Anders wordt de invoer verwijderd.

Selecteer bijvoorbeeld die producten uit de Producttabel waarvan de prijs voldoet aan de Prijsvoorwaarde<3200, можно осуществить, используя запрос

SELECTEER * VAN Product waar Prijs<3200;

Zijn resultaat:

De voorwaarde kan worden samengesteld en gecombineerd met behulp van de logische operatoren NOT , AND, OR, XOR, bijvoorbeeld: waarbij id_ Price>500 AND Price<3500. Допускается также использование выражений в условии: where Price>(1+1) en stringconstanten: waarbij naam= "autoweights".

Met behulp van de constructie BETWEEN var1 AND var2 kunt u controleren of de waarden van een expressie binnen het bereik van var1 tot var2 vallen (inclusief deze waarden):

SELECTEER * VAN Product met prijs TUSSEN 3000 EN 3500;

Net als de NOT BETWEEN-operator is er de NOT IN-operator.

Kolomnamen die zijn opgegeven in de SELECT-clausule kunnen worden hernoemd. Hiervoor wordt het sleutelwoord AS gebruikt, dat echter kan worden weggelaten omdat het impliciet wordt geïmpliceerd. Opvragen bijvoorbeeld

SELECTEER Type AS-model, Type_id AS num FROM Product waarbij Type_id =3

zal terugkeren (aliasnamen moeten zonder aanhalingstekens worden geschreven):

De LIKE-operator is ontworpen om een ​​string met een patroon te vergelijken:

SELECT * FROM tbl waar col_name LIKE "abc"

Deze query retourneert alleen de records die de tekenreekswaarde abc in de kolom col_name bevatten.

Het voorbeeld mag twee jokertekens gebruiken: "_" en "%". De eerste vervangt één willekeurig teken in de sjabloon en de tweede vervangt een reeks willekeurige tekens. Dus "abc%" komt overeen met elke tekenreeks die begint met abc, "abc_" komt overeen met een reeks van vier tekens die begint met abc, "%z" komt overeen met elke tekenreeks die eindigt met z, en ten slotte "%z%" - reeksen tekens die z.

U kunt alle records van de tabel Product waarin de waarde Type begint met de letter "a" als volgt vinden:

SELECT * FROM Product waarbij Type LIKE "a%" is;

vrachtwagen weegschalen

Als de zoekreeks een jokerteken bevat, moet u het escape-teken opgeven in de ESCAPE-clausule. Dit controleteken moet in het patroon vóór het jokerteken worden gebruikt, wat aangeeft dat het jokerteken als een gewoon teken moet worden behandeld. Als u bijvoorbeeld alle waarden in een veld wilt vinden die het teken "_" bevatten, dan zal het patroon "%_%" ertoe leiden dat alle records uit de tabel worden geretourneerd. In dit geval moet de sjabloon als volgt worden geschreven:

"%|_%" ONTSNAPPEN "|"

Om de waarde te controleren op naleving van de string "20%", kunt u de volgende operator gebruiken:

LIKE "20#%" ONTSNAP "#"

Met de operator IS NULL kunt u de afwezigheid (aanwezigheid) van een NULL-waarde in de velden van een tabel controleren. Het gebruik van reguliere vergelijkingsoperatoren kan in deze gevallen onjuiste resultaten opleveren, omdat vergelijken met NULL resultaten in UNKNOWN oplevert. De selectievoorwaarde zou er dus als volgt uit moeten zien:

waar col_name IS NULL, in plaats van waar col_name=NULL.

Het standaardselectieresultaat retourneert records in dezelfde volgorde als waarin ze in de database zijn opgeslagen. Als u records op een van de kolommen wilt sorteren, moet u de ORDER BY-clausule gebruiken, gevolgd door de naam van die kolom:

SELECTEER * UIT tbl BESTEL OP col_name;

Deze query retourneert records in oplopende volgorde van de attribuutwaarde col_name.

U kunt records ook op meerdere kolommen sorteren. Om dit te doen, moeten hun namen worden gespecificeerd na ORDER BY, gescheiden door komma's:

SELECTEER * UIT tbl BESTEL OP kolomnaam1, kolomnaam2.

Records worden gesorteerd op het veld col_name1; als er meerdere records met een overeenkomende waarde in de kolom col_name1 staan, worden deze gesorteerd op het veld col_name2.

Als u de records in omgekeerde volgorde wilt sorteren (bijvoorbeeld aflopend op datum), moet u ORDER BY col_name DESC opgeven.

Voor directe sortering is er het trefwoord ASC, dat als standaardwaarde wordt geaccepteerd.

Als het voorbeeldresultaat honderden of duizenden records bevat, kost de uitvoer en verwerking ervan veel tijd.

Daarom wordt informatie vaak opgedeeld in pagina's en in gedeelten aan de gebruiker gepresenteerd. Paginering wordt gebruikt met behulp van het trefwoord limit, gevolgd door het aantal weer te geven vermeldingen. Met de volgende query worden de eerste tien records opgehaald en tegelijkertijd achteruit gesorteerd op het veld col_name1:

SELECTEER * UIT tbl BESTEL OP col_name1 DESC LIMIET 10

Om de volgende 10 records op te halen, gebruikt u het sleutelwoord limit met twee waarden: de eerste specificeert de positie waarvandaan het resultaat moet worden afgedrukt, en de tweede specificeert het aantal records dat moet worden opgehaald:

SELECTEER * UIT tbl BESTEL OP kolomnaam1 BESCHRIJVINGSLIMIET 10,10

Om de volgende 10 records op te halen, moet u de LIMIT 20, 10-constructie gebruiken.