SQL-programmeertaal. Wat is een "gebruiker"? Andere beperkingen – UNIEK, STANDAARD, CONTROLEREN

In dit hoofdstuk...

SQL is een flexibele taal die door de meeste mensen kan worden gebruikt op verschillende manieren. Het is het meest gebruikte hulpmiddel om te communiceren met een relationele database. In dit hoofdstuk leg ik uit wat SQL is en wat het niet is, en specifiek waarin SQL verschilt computertalen andere soorten. Dan raak je vertrouwd met de commando's en datatypes die standaard SQL ondersteunt. Daarnaast zal ik basisbegrippen uitleggen zoals ongedefinieerde waarden En beperkingen. Ten slotte wordt een overzicht gegeven van hoe SQL past in de client/server-omgeving, evenals het internet en intranetten van organisaties.

Wat SQL is en wat het niet is

Het eerste dat u over SQL moet begrijpen, is dat het geen procedureel zoals FORTRAN, Basic, C, COBOL, Pascal en Java. Om een ​​probleem op te lossen met behulp van een van deze proceduretalen, moet u een procedure schrijven die gespecificeerde bewerkingen één voor één uitvoert totdat de taak is voltooid. De procedure kan een lineaire reeks zijn of vertakkingen bevatten, maar in beide gevallen specificeert de programmeur de volgorde van uitvoering.

Met andere woorden: SQL is dat wel niet-procedureel tong. Als u het wilt gebruiken om een ​​probleem op te lossen, vertelt u SQL: Wat precies je hebt het nodig alsof je met de geest uit de lamp van Aladdin praat. En tegelijkertijd is het niet nodig om te zeggen: Hoe krijg je wat je wilt. Het databasebeheersysteem (DBMS) beslist hoe het beste aan uw verzoek kan worden voldaan.

Prima. Ik zei net dat SQL geen proceduretaal is. In wezen is dit waar. Miljoenen programmeurs in de buurt (en jij bent misschien een van hen) zijn echter gewend om problemen procedureel op te lossen, dus in de afgelopen jaren Er was veel druk om procedurele mogelijkheden aan SQL toe te voegen. Daarom nu inbegrepen nieuwe versie SQL-specificatie, SQL:2003, er zijn procedurele taalhulpmiddelen zoals BEGIN-blokken, voorwaardelijke uitspraken IF, functies en procedures. Met deze nieuwe tools kunnen programma's op een server worden opgeslagen, zodat ze door veel gebruikers kunnen worden hergebruikt.

Om te illustreren wat ik bedoelde toen ik zei: 'Vertel het systeem precies wat u nodig heeft', stellen we dat u een EMPLOYEE-tabel met werknemersgegevens hebt en dat u daaruit alle rijen wilt selecteren die overeenkomen met alle 'senior'-werknemers. ‘Senior’ werknemers kunnen worden gedefinieerd als iedereen ouder dan 40 jaar of die meer dan $60.000 per jaar verdient. De gewenste selectie kunt u maken met behulp van de volgende query:

SELECTEER * VAN WERKNEMER WAAR LEEFTIJD >40 OF SALARIS >60000;

Deze instructie selecteert uit de EMPLOYEE-tabel alle rijen waarin de kolomwaarde AGE (leeftijd) groter is dan 40 of de kolomwaarde SALARY (salaris) groter is dan 60.000. SQL zelf weet hoe de informatie moet worden geselecteerd. De database-engine controleert de database en beslist zelf hoe de query moet worden uitgevoerd. U hoeft alleen maar aan te geven welke gegevens u nodig heeft.

Herinneren:
Een query is een vraag die u aan de database stelt. Als een van de gegevens ervan voldoet aan de voorwaarden van uw verzoek, geeft SQL deze aan u door
.

Moderne SQL-implementaties missen veel van de eenvoudige programmeerconstructies die fundamenteel zijn voor de meeste andere talen. Bij aanvragen voor het dagelijks leven meestal zijn ten minste enkele van deze constructies vereist, dus SQL is dat eigenlijk ook subtaal gegevens. Zelfs met de toevoegingen die in SQL verschenen samen met de SQL-standaard: 1999 en extra uitbreidingen toegevoegd in SQL:2003, moet u nog steeds een van de volgende gebruiken in combinatie met SQL om een ​​volledige toepassing te maken. programma talen, zoals S.

U kunt op een van de volgende manieren informatie uit de database selecteren.

  • Gebruik een eenmalige, niet-programmeerbare zoekopdracht vanaf de computerconsole, voer een SQL-opdracht in en lees de resultaten van de uitvoering ervan op het scherm. Console is een traditionele term die betekenis heeft computerapparatuur, dat het werk uitvoert van het toetsenbord en scherm dat op moderne pc's wordt gebruikt. Consolequery's zijn handig als u snel antwoord op een specifiek verzoek nodig heeft. Om aan een huidige behoefte te voldoen, heeft u mogelijk gegevens uit de database nodig die nog nooit eerder nodig zijn geweest. Je hebt ze misschien nooit meer nodig, maar je hebt ze nu nodig. Voer de juiste SQL-query in via het toetsenbord en na een tijdje verschijnt het resultaat op uw scherm.
  • Met behulp van een programma dat informatie uit een database haalt en vervolgens op basis van deze gegevens een rapport maakt, weergegeven op het scherm of afgedrukt. SQL kan ook op deze manier worden gebruikt. Moeilijk SQL-query, die in de toekomst nog nuttig kunnen zijn, kunnen rechtstreeks in het programma worden geplaatst. Hierdoor kun je het in de toekomst hergebruiken. De vraagformulering wordt dus één keer uitgevoerd. Hoofdstuk 15 behandelt hoe u SQL-code invoegt in programma's die in een andere taal zijn geschreven.

Elke SQL-opdracht begint met een trefwoord, een werkwoord dat de actie beschrijft die de opdracht uitvoert, zoals CREATE. Een team kan een of meer zinnen hebben. De zin beschrijft de gegevens waarmee het commando werkt of bevat verduidelijkende informatie over de actie die het commando uitvoert. Elke clausule begint met een trefwoord, zoals WHERE. Sommige clausules in de opdracht zijn vereist, andere niet. Sommige zinnen kunnen aanvullende trefwoorden en uitdrukkingen bevatten. Veel zinnen bevatten tabel- of veldnamen. Namen moeten tussen 1 en 18 tekens lang zijn, beginnen met een letter, geen spaties bevatten, en speciale karakters interpunctie. Trefwoorden kunnen niet als naam worden gebruikt.

52. SQL (gestructureerde querytaal) – Gestructureerde taal Verzoeken- Dit standaard taal verzoeken om mee te werken relationele databases gegevens.

SQL bevat geen traditionele exploitanten, dat de uitvoering van programma's regelt, bevat slechts een set standaard operatoren toegang tot gegevens die zijn opgeslagen in de database.

SQL kan op twee manieren worden gebruikt om toegang te krijgen tot een database: interactief werk en binnen applicatieprogramma's .

Door te gebruiken SQL-gebruiker misschien erin interactieve modus snel antwoorden krijgen op alle, inclusief vrij complexe, vragen, terwijl het voor het implementeren van deze vragen in een andere taal nodig zou zijn om een ​​overeenkomstig programma te ontwikkelen. Applicatieprogramma's die in bepaalde programmeertalen zijn geschreven, gebruiken SQL als ingebouwd taal voor toegang tot de database.

Als we de SQL-taal als geheel karakteriseren, kunnen we de volgende kenmerken benadrukken:

· structuur op hoog niveau, die doet denken Engelse taal;

· onafhankelijkheid van specifieke DBMS;

· beschikbaarheid van ontwikkelingsnormen;

· de mogelijkheid om interactieve queries uit te voeren om gegevens te extraheren en hun structuur te wijzigen;

· voorraad softwaretoegang naar databases;

· ondersteuning voor client/server-architectuur;

· uitbreidbaarheid en ondersteuning voor objectgeoriënteerde technologieën;



· mogelijkheid om toegang te krijgen tot gegevens op internet.

Belangrijkste functies van de SQL-taal:

SQL- interactieve zoektaal. Gebruikers komen binnen SQL-opdrachten interactief om gegevens op te halen en op het scherm weer te geven, evenals om wijzigingen aan te brengen in de database;

SQL- programmeertaal voor databases. Om toegang te krijgen tot de database worden SQL-opdrachten in applicatieprogramma's ingevoegd;

SQL- taal voor databasebeheer. Een databasebeheerder kan SQL gebruiken om de databasestructuur te definiëren en de toegang tot gegevens te controleren;

SQL- client/server-toepassingstaal. Bij toegepast SQL-programma's gebruikt als middel om communicatie te organiseren lokaal netwerk met een databaseserver die gedeelde gegevens opslaat, enz.

55. Taalmogelijkheden De SQL-taal, die voldoet aan de nieuwste standaarden SQL:2003, SQL:1999, is een zeer rijke en complexe taal, waarvan alle mogelijkheden moeilijk onmiddellijk te realiseren zijn, laat staan ​​te begrijpen. Daarom moeten we de taal in niveaus opdelen. In een van de classificaties van de SQL-standaard is deze taal onderverdeeld in “basis” (instap), “intermediate” (intermediate) en “volledige” niveaus. Basisniveau bevat ongeveer veertig opdrachten die op basis van hun functionaliteit in categorieën kunnen worden gegroepeerd.

MAAK TABELdetails (NOMZ INT, VOLLEDIGE NAAM CHAR(15), JAAR INT, GESLACHT CHAR(3))

DROP TAFEL Details

WIJZIG TABELdetails (VOORBEELDTEKEN(10))

MAAK WEERGAVE Academische vooruitgang M1 ALS SELECTEER *VAN Academische prestaties WAAR GROEP= "M-1"

VOEG IN Informatie-WAARDEN IN (980101, "IVANOV I. I.", 1980, "ECHTGENOOT")

VERWIJDEREN UIT Details WAAR NOMZ=980201

UPDATE Informatie SET Volledige naam = "KRAVTSOVA I. I." WAAR NOMZ=980201

SELECT * FROM Informatie WAAR VOLLEDIGE NAAM = "SIDOROV S. S." OF VOLLEDIGE NAAM = "PETROV P. P."

54. Gegevenstypen en expressies Om toegang te krijgen tot een relationele tabel in SQL-taal u moet een opdracht schrijven (specificeren). SELECTEER (selecteer)trefwoord vertelt het DBMS welke actie het zal uitvoeren deze opdracht. Commandoverzoeken beginnen trefwoord. Naast SELECT kunnen dit ook woorden zijn CREËREN- creëren, INVOEGEN-invoegen, VERWIJDEREN- verwijderen, VERBINDEN– compleet, enz.

VAN - een sleutelwoord zoals SELECT dat in elke opdracht voorkomt. Het wordt gevolgd door een spatie en vervolgens de naam van de tabellen die als informatiebron worden gebruikt. Namen van tabellen en velden moeten 1 tot 18 tekens bevatten, beginnen met een letter en mogen geen spaties of speciale tekens bevatten.

WAAR een trefwoord gevolgd door een predikaat: een voorwaarde die wordt opgelegd aan een tabelinvoer waaraan deze moet voldoen om in de selectie te worden opgenomen.

BESTEL DOOR – sorteren van weergegeven records (Oplopend – oplopend, Desc – aflopend. Als het sorteertype niet is opgegeven, wordt er in oplopende volgorde gesorteerd).

TEKEN(lengte) TEKEN(lengte)Tekenreeksen van constante lengte

INTEGER INTgehele getallen

KLEININTKlein geheel getal

NUMERIC(nauwkeurigheid, graad) DECIMAL(nauwkeurigheid, graad DEC(nauwkeurigheid, graad)Vast puntnummer

FLOAT (precisie)Drijvende-kommagetal

Dubbele precisienummers met zwevend slot, hoge nauwkeurigheid

Uitdrukkingen in SQL worden gebruikt om criteria op te geven voor het selecteren van gegevens of het uitvoeren van bewerkingen op waarden die uit een database worden gelezen. Expressies zijn een specifieke reeks databasevelden, constanten en functies die met elkaar zijn verbonden door operators.

Constanten worden gebruikt om specifieke gegevenswaarden aan te geven. Vaste puntconstanten, bijvoorbeeld: 21 -375,18 62,3

Drijvende-kommaconstanten, bijvoorbeeld: 1.5E7 -3.14E9 2.5E-6 0.783E24

Tekenreeksconstanten moet worden opgenomen enkele aanhalingstekens. Voorbeelden van dergelijke constanten: "Minsk" "New York" "Ivanov I. I."

Ontbrekende waarde(NUL). SQL ondersteunt het omgaan met ontbrekende gegevens met behulp van het concept van een ontbrekende waarde.

De meeste SQL-georiënteerde DBMS'en ondersteunen de zogenaamde geaggregeerde (totale) functies. Te vaak gebruikt geaggregeerde functies Het volgende kan worden opgenomen:

· GRAAF– aantal waarden in de tabelkolom;

· SOM– de som van de waarden in de kolom;

· AVG– rekenkundig gemiddelde van de waarden in de kolom;

· MAXmaximale waarde in kolom;

· MINminimale waarde in de kolom.

De volgende uitdrukkingen kunnen worden gebruikt: typen operators:

· rekenkundig: + (toevoeging), - (aftrekken), * (vermenigvuldiging), / (divisie);

· relatie: = (gelijk), > (groter),< (меньше), >= (groter dan of gelijk aan),<= (меньше или равно), <>(niet gelijk);

· logisch: EN(logische "EN"), OF(logische "OF"), NIET(logische ontkenning);

56. Transactiecontroleopdrachten kunt u de integriteit van de database garanderen.

SQL-transactie zijn verschillende opeenvolgende SQL-opdrachten die als één eenheid moeten worden uitgevoerd.

In SQL-taal wordt transactieverwerking geïmplementeerd met behulp van twee opdrachten: VERBINDEN En ROLLBACK. Zij beheren de wijzigingen die door een groep teams zijn aangebracht. Team VERBINDEN rapporteert de succesvolle afronding van de transactie. Het informeert het DBMS dat de transactie is voltooid, dat alle opdrachten met succes zijn voltooid en dat er geen inconsistenties in de database zijn opgetreden. Team ROLLBACK meldt de mislukte voltooiing van de transactie. Het informeert het DBMS dat de gebruiker de transactie niet wil voltooien, en het DBMS moet alle wijzigingen die als gevolg van de transactie in de database zijn aangebracht, negeren. In dit geval retourneert het DBMS de database naar de staat waarin deze zich bevond voordat de transactie werd uitgevoerd.

Teams VERBINDEN En ROLLBACK worden voornamelijk in de programmeermodus gebruikt, maar kunnen ook interactief worden gebruikt.

57. Om toegang te krijgen tot bedieningsopdrachten Dit zijn opdrachten voor het uitvoeren van administratieve functies die het recht (privilege) toekennen of intrekken om databasetabellen op een bepaalde manier te gebruiken. Elke databasegebruiker heeft bepaalde rechten met betrekking tot databaseobjecten.

Rechten– dit zijn de acties met een object die de gebruiker kan uitvoeren. Rechten kunnen in de loop van de tijd veranderen: oude kunnen worden geannuleerd, nieuwe kunnen worden toegevoegd. De volgende rechten worden verleend:

· INSERT – het recht om gegevens aan de tabel toe te voegen;

· UPDATE – het recht om tabelgegevens te wijzigen;

· DELETE – het recht om gegevens uit de tabel te verwijderen;

· REFERENTIES – het recht om de primaire sleutel te definiëren.

58 Taal in applicatieprogramma's inbedden..Naar ingebouwd Dit zijn opdrachten die zijn ontworpen om toegang tot een database te implementeren vanuit applicatieprogramma's die in een specifieke programmeertaal zijn geschreven.

Vertaling: Alexandr Pyramidin

In dit artikel maakt u kennis met de structuur van de SQL-taal, evenals enkele algemene concepten, zoals de soorten gegevensvelden die kunnen bevatten en enkele dubbelzinnigheden die in SQL bestaan. U hoeft niet elk detail dat in dit artikel wordt genoemd te onthouden. Dit is slechts een kort overzicht; Er worden veel details gegeven, zodat u er later naar kunt verwijzen als u de taal onder de knie heeft.

Hoe werkt SQL?

SQL is een taal die speciaal is ontworpen voor relationele databases (RDB's). Het doet veel van het werk dat je zou moeten doen als je een programmeertaal voor algemene doeleinden zoals C zou gebruiken. Om een ​​RDB in C te vormen, zou je helemaal opnieuw moeten beginnen. U zou een object definiëren dat een tabel wordt genoemd en dat kan uitgroeien tot een willekeurig aantal rijen, en vervolgens incrementele procedures maken om waarden in te voegen en op te halen.

Als u bepaalde specifieke tekenreeksen wilt vinden, moet u een stapsgewijze procedure volgen, zoals de volgende:

  • Beschouw een tabelrij.
  • Controleer of deze string een van de snaren is die je nodig hebt.
  • Bewaar het dan ergens totdat de hele tabel is gecontroleerd.
  • Controleer of er nog andere rijen in de tabel staan.
  • Als dit het geval is, gaat u terug naar stap 1.
  • Als er geen rijen meer zijn, drukt u alle waarden af ​​die u in stap 3 hebt opgeslagen.

(Dit is natuurlijk niet de daadwerkelijke set C-opdrachten, maar alleen de logica van de stappen die in een echt programma zouden zijn opgenomen.) SQL zal dit allemaal voor u doen. Commando's in SQL kunnen op alle groepen tabellen als een enkele entiteit werken en kunnen elke hoeveelheid informatie die daaruit wordt geëxtraheerd of afgeleid als een enkele eenheid verwerken.

Wat doet ANSI?

Zoals we in de inleiding al zeiden, wordt de SQL-standaard gedefinieerd met behulp van ANSI-code (American National Standards Institute). SQL is niet uitgevonden door ANSI. Dit is in wezen een uitvinding van IBM. Maar andere bedrijven sprongen meteen op SQL. Ten minste één bedrijf (Oracle) heeft het recht verworven om SQL-producten van IBM op de markt te brengen.

Nadat een aantal concurrerende SQL-programma's op de markt verschenen, definieerde ANSI de standaard waaraan deze moesten voldoen. (Het definiëren van dergelijke normen is de functie van ANSI.) Hierna deden zich echter enkele problemen voor. Ze zijn ontstaan ​​als gevolg van ANSI-standaardisatie, in de vorm van enkele beperkingen. Omdat ANSI niet altijd definieert wat het nuttigst is, proberen programma's zich aan de ANSI-standaard te conformeren zonder dat deze deze te veel beperkt. Dit leidt op zijn beurt tot willekeurige inconsistenties. Databaseprogramma's voegen doorgaans extra functies toe aan ANSI SQL en versoepelen vaak veel van de beperkingen. Daarom zullen ook gangbare ANSI-varianten worden overwogen. Hoewel we uiteraard niet elke uitzondering of variatie kunnen behandelen, hebben goede ideeën de neiging om in een verscheidenheid aan programma's te worden overgenomen en gebruikt, zelfs als ze niet door de ANSI-standaard zijn gedefinieerd. ANSI is een soort minimumstandaard en u kunt meer doen dan toegestaan, hoewel u de richtlijnen ervan moet volgen bij het uitvoeren van de taken die daarin worden gespecificeerd.

Interactieve en geneste SQL

Er zijn twee SQL's: interactief en genest. Beide vormen werken grotendeels hetzelfde, maar worden anders gebruikt. Interactieve SQL wordt gebruikt om rechtstreeks op de database te draaien om uitvoer te produceren voor gebruik door de klant. In deze SQL - wanneer u een opdracht invoert, wordt deze onmiddellijk uitgevoerd en kunt u onmiddellijk de uitvoer zien (indien aanwezig).

Geneste SQL bestaat uit SQL-opdrachten die in programma's zijn geplaatst die meestal in een andere taal zijn geschreven (zoals COBOL of PASCAL). Dit maakt dergelijke programma’s krachtiger en effectiever.

Het toestaan ​​van deze talen gaat echter gepaard met een SQL-structuur en databeheerstijl die enkele interactieve SQL-extensies vereist. Het doorgeven van SQL-opdrachten aan geneste SQL wordt "doorgegeven" voor variabelen of parameters die worden gebruikt door het programma waarin ze zijn genest.

In dit boek presenteren we SQL op een interactieve manier. Dit geeft ons de mogelijkheid om opdrachten en hun acties te bespreken zonder ons zorgen te hoeven maken over de manier waarop ze met andere talen worden gekoppeld. Interactieve SQL is de vorm die het nuttigst is voor niet-programmeurs. Alles wat u over interactieve SQL leert, is over het algemeen van toepassing op een geneste vorm. De wijzigingen die nodig zijn om een ​​genest formulier te gebruiken, worden besproken in het laatste hoofdstuk van dit boek.

SQL-subsecties

Zowel interactieve als geneste vormen van SQL bestaan ​​uit talrijke onderdelen of subsecties. Omdat u deze terminologie waarschijnlijk tegenkomt bij het lezen van SQL, zullen we wat verduidelijking geven. Helaas worden deze termen niet universeel in alle implementaties gebruikt. Ze worden gespecificeerd door ANSI en zijn nuttig op conceptueel niveau, maar de meeste SQL-programma's doen er weinig aan om ze afzonderlijk te verwerken, dus worden het in wezen functionele categorieën van SQL-opdrachten.

  • DDL (Data Definition Language) - in ANSI Schema Description Language genoemd - bestaat uit opdrachten die objecten (tabellen, indexen, views, enzovoort) in een database creëren.
  • DML (Data Manipulation Language) is een reeks opdrachten die bepalen welke waarden op een bepaald moment in tabellen worden weergegeven.
  • DCD (Data Control Language) bestaat uit tools die bepalen of een gebruiker bepaalde acties mag uitvoeren of niet. Ze maken deel uit van ANSI DDL.

Vergeet deze namen niet. Dit zijn geen verschillende talen, maar secties van SQL-opdrachten gegroepeerd op hun functies.

Verschillende gegevenstypen

Niet alle typen waarden die in tabelvelden voorkomen zijn logischerwijs hetzelfde. Het meest voor de hand liggende verschil is tussen cijfers en tekst. U kunt getallen niet in alfabetische volgorde plaatsen of de ene naam van de andere aftrekken.

Omdat DDB-systemen gebaseerd zijn op relaties tussen stukjes informatie, moeten verschillende soorten gegevens van elkaar worden onderscheiden, zodat er passende processen en vergelijkingen tussen kunnen worden gemaakt. In SQL wordt dit gedaan door aan elk veld een gegevenstype toe te wijzen dat aangeeft welk type waarde dat veld kan bevatten. Alle waarden in dit veld moeten van hetzelfde type zijn. In de tabel Klanten bevatten cname en city bijvoorbeeld tekstregels die moeten worden geëvalueerd, en zijn snum en cnum getallen. Om deze reden kunt u geen waarde Hoogste of Geen invoeren in het beoordelingsveld, dat een numeriek gegevenstype is. Deze beperking is goed omdat het enige structuur aan uw gegevens oplegt. Vaak vergelijkt u enkele of alle waarden in een bepaald veld, dus het kan zijn dat u alleen een actie op bepaalde rijen wilt uitvoeren in plaats van op alle rijen. U zou dit niet kunnen doen als de veldwaarden van een gemengd gegevenstype waren.

Helaas is het definiëren van deze gegevenstypen een belangrijk gebied waarop de meeste commerciële databaseprogramma's en de officiële SQL-standaard het niet altijd eens zijn. De ANSI SQL-standaard herkent alleen tekst en cijfers, terwijl de meeste commerciële programma's andere speciale typen gebruiken. Zoals DATA en TIME zijn in feite bijna standaardtypen (hoewel hun exacte formaat varieert). Sommige pakketten ondersteunen ook typen zoals MONEY en BINARY. (GELD is een speciaal ‘valutasysteem’ dat door computers wordt gebruikt.)

Alle informatie in een computer wordt verzonden in binaire getallen en vervolgens omgezet in andere systemen, zodat we ze gemakkelijk kunnen gebruiken en begrijpen.

ANSI definieert verschillende numerieke typen, waarvan de verschillen vrij subtiel en soms verward zijn. De toegestane ANSI-gegevenstypen staan ​​vermeld in bijlage B. De complexiteit van numerieke ANSI-typen kan, althans gedeeltelijk, worden toegeschreven aan de inspanningen om geneste SQL compatibel te maken met een aantal andere talen. De twee typen ANSI-nummers, INTEGER en DECIMAL (die respectievelijk kunnen worden afgekort als INT en DEC), zullen voldoende zijn voor onze doeleinden, maar ook voor de doeleinden van de meeste praktische zakelijke toepassingen. Uiteraard kan het type INTEGER worden weergegeven als een DECIMAAL NUMMER, dat geen cijfers rechts van de komma bevat.

Het type voor tekst is CHAR (of CHAR), verwijzend naar een tekstreeks. Een CHAR-veld heeft een lengte die wordt bepaald door het maximale aantal tekens dat in het veld kan worden ingevoerd. De meeste implementaties hebben ook een niet-standaard type genaamd VARCHAR, wat een tekstreeks is en elke lengte kan hebben tot een door de implementatie gedefinieerd maximum (meestal 254 tekens). CHARACTER- en VARCHAR-waarden worden tussen enkele aanhalingstekens opgenomen als "tekst". Het verschil tussen CHAR en VARCHAR is dat CHAR voldoende geheugen moet reserveren voor de maximale lengte van de string, terwijl VARCHAR geheugen toewijst als dat nodig is.

Tekentypen bestaan ​​uit alle afdrukbare tekens, inclusief cijfers. Het getal 1 is echter niet hetzelfde als het symbool "1". Het teken "1" is slechts een afgedrukt stuk tekst, niet door het systeem gedefinieerd als de numerieke waarde 1. Bijvoorbeeld: 1 + 1 = 2, maar "1" + "1" is niet gelijk aan "2". Tekenwaarden worden in de computer opgeslagen als binaire waarden, maar worden als afgedrukte tekst aan de gebruiker weergegeven.

De conversie gebeurt in een formaat dat wordt bepaald door het systeem dat u gebruikt. Dit conversieformaat zal een van de twee standaardtypen zijn (mogelijk met extensies) die in computersystemen worden gebruikt: ASCII-code (gebruikt in alle persoonlijke en kleine computers) en EBCDIC-code (Extended Binary Decimal Information Interchange Code) (gebruikt in grote computers). Bepaalde bewerkingen, zoals het alfabetiseren van veldwaarden, veranderen met het formaat.

We moeten de markt volgen, en niet ANSI, bij het gebruik van het DATE-type. (Op een systeem dat het DATE-type niet herkent, kunt u de datum uiteraard declareren als een teken of numeriek veld, maar dit zal de meeste bewerkingen arbeidsintensiever maken.)

Raadpleeg de documentatie voor het softwarepakket dat u gaat gebruiken om erachter te komen welke gegevenstypen het precies ondersteunt.

SQL. Inconsistenties.

U kunt uit de vorige discussie begrijpen dat er afzonderlijke discrepanties bestaan ​​tussen de producten van de SQL-wereld. SQL is als hulpmiddel uit de commerciële databasewereld ontstaan ​​en is later doorontwikkeld tot een ANSI-standaard. Helaas bepaalt ANSI niet altijd wat het nuttigst is, dus proberen programma's zich te conformeren aan de ANSI-standaard zonder dat deze te veel wordt beperkt. ANSI is een soort minimumstandaard: u kunt meer doen dan toegestaan, maar u moet dezelfde resultaten kunnen behalen bij het uitvoeren van dezelfde taak.

WAT IS EEN "GEBRUIKER"?

SQL bevindt zich doorgaans op computersystemen met meer dan één gebruiker en moet daarom onderscheid maken tussen deze gebruikers (uw pc-familie kan een willekeurig aantal gebruikers hebben, maar er is meestal geen manier om de ene gebruiker van de andere te onderscheiden).

Normaal gesproken heeft elke gebruiker in een dergelijk systeem een ​​soort rechtenverificatiecode die hem of haar identificeert (de terminologie varieert). Aan het begin van een sessie met een computer logt een gebruiker in (registreert), waarbij hij aan de computer vertelt wie de gebruiker is door zich te identificeren met een specifiek ID. Een willekeurig aantal mensen dat een toegangs-ID gebruikt, is een individuele gebruiker; en op dezelfde manier kan één persoon een groot aantal gebruikers vertegenwoordigen (op verschillende tijdstippen) met behulp van verschillende SQL-toegangs-ID's. Acties in de meeste SQL-omgevingen worden toegewezen aan een specifieke Access Identifier die exact overeenkomt met een specifieke gebruiker. Een tabel of ander object is eigendom van een gebruiker die er volledige controle over heeft. De gebruiker kan al dan niet het recht hebben om een ​​actie op het object uit te voeren. Voor onze doeleinden gaan we ermee akkoord dat elke gebruiker de noodzakelijke rechten heeft om welke actie dan ook uit te voeren, totdat we specifiek terugkeren naar de bespreking van rechten in hoofdstuk 22. De speciale waarde USER kan als argument in een commando worden gebruikt. Het geeft de beschikbare ID aan van de gebruiker die de opdracht geeft.

Conventies en terminologie

Trefwoorden zijn woorden die een speciale betekenis hebben in SQL. Het kunnen opdrachten zijn, maar geen tekst- of objectnamen. We markeren sleutelwoorden door ze in HOOFDLETTERS te typen. U moet ervoor zorgen dat u zoekwoorden niet met termen verwart.

SQL heeft bepaalde speciale termen die worden gebruikt om het te beschrijven. Onder hen zijn woorden als "query", "clausule" en "predikaat", die het belangrijkst zijn in de beschrijving en het begrip van de taal, maar niets onafhankelijks betekenen voor SQL.

Commando's of instructies zijn instructies waarmee u toegang krijgt tot een SQL-database.

Commando's bestaan ​​uit een of meer afzonderlijke logische delen die clausules worden genoemd.

Zinnen beginnen met een trefwoord en bestaan ​​uit trefwoorden en argumenten. Clausules die u bijvoorbeeld tegen kunt komen zijn "FROM Salespeope" en "WHERE city = "London"". Argumenten vervolledigen of veranderen de betekenis van een zin. In de bovenstaande voorbeelden is Verkopers het argument en FROM het trefwoord van de FROM-clausule. Op dezelfde manier is "stad = "Londen"" een argument voor de WHERE-clausule.

Objecten zijn databasestructuren die een naam krijgen en in het geheugen worden opgeslagen. Dit omvat basistabellen, weergaven en indexen.

Om je te laten zien hoe teams gevormd worden, doen we dit met voorbeelden. Er is echter een meer formele methode voor het beschrijven van opdrachten die gebruikmaakt van gestandaardiseerde conventies. We zullen het in latere hoofdstukken gebruiken voor het gemak om deze conventies te begrijpen, voor het geval u ze in andere SQL-documenten tegenkomt.

Vierkante haakjes () geven delen aan die niet mogen worden gebruikt, en ellipsen (...) geven aan dat alles wat daaraan voorafgaat een onbeperkt aantal keren kan worden herhaald. De woorden tussen punthaken () zijn speciale termen die uitleggen wat ze zijn. We hebben de standaard SQL-terminologie aanzienlijk vereenvoudigd zonder dat deze moeilijk te begrijpen is.

Cv

In dit hoofdstuk hebben we de basisbeginselen kort besproken. Maar het was onze bedoeling om snel de basisbeginselen van SQL te behandelen, zodat u de volledige reikwijdte van de informatie kunt bestrijken.

Nu weet je een paar dingen over SQL: wat de structuur is, hoe het wordt gebruikt, hoe het gegevens representeert en hoe het is gedefinieerd (en enkele inconsistenties die daarmee gepaard gaan), enkele conventies en termen die worden gebruikt om ze te beschrijven. Dit is allemaal te veel informatie voor één hoofdstuk; We verwachten niet dat u al deze details onthoudt, maar u kunt er later naar verwijzen als dat nodig is.

Tegenwoordig worden SQL-cursussen “voor dummies” steeds populairder. Dit is heel eenvoudig uit te leggen, omdat je in de moderne wereld steeds vaker zogenaamde “dynamische” webdiensten tegenkomt. Ze onderscheiden zich door een redelijk flexibele schil en zijn gebaseerd op Alle beginnende programmeurs die besluiten websites te wijden, schrijven zich allereerst in voor SQL-cursussen "voor dummies".

Waarom deze taal leren?

Allereerst wordt SQL onderwezen om een ​​grote verscheidenheid aan applicaties verder te creëren voor een van de meest populaire blog-engines van vandaag: WordPress. Na het voltooien van een paar eenvoudige lessen kunt u zoekopdrachten van elke complexiteit maken, wat de eenvoud van deze taal alleen maar bevestigt.

Wat is SQL?

Of er is een gestructureerde zoektaal gemaakt met één enkel doel: deze in vrij korte tijd vaststellen, toegankelijk maken en verwerken. Als u de betekenis van SQL kent, begrijpt u dat deze server is geclassificeerd als een zogenaamde “niet-procedurele” taal. Dat wil zeggen dat de mogelijkheden alleen een beschrijving omvatten van alle componenten of resultaten die u in de toekomst op de site wilt zien. Maar wanneer geeft niet precies aan welke resultaten er zullen worden behaald. Elk nieuw verzoek in deze taal is als een extra “bovenbouw”. De zoekopdrachten worden uitgevoerd in de volgorde waarin ze in de database worden ingevoerd.

Welke procedures kunnen met deze taal worden uitgevoerd?

Ondanks zijn eenvoud kunt u met de SQL-database een grote verscheidenheid aan query's maken. Dus wat kunt u doen als u deze belangrijke programmeertaal leert?

  • maak een grote verscheidenheid aan tafels;
  • ontvangen, opslaan en wijzigen van ontvangen gegevens;
  • wijzig de tabelstructuren naar eigen goeddunken;
  • combineer de ontvangen informatie in enkele blokken;
  • bereken de ontvangen gegevens;
  • zorgen voor volledige bescherming van informatie.

Welke opdrachten zijn het populairst in deze taal?

Als u besluit een cursus SQL voor Dummies te volgen, ontvangt u gedetailleerde informatie over de commando's die worden gebruikt bij het maken van queries. De meest voorkomende vandaag de dag zijn:

  1. DDL is een commando dat gegevens definieert. Het wordt gebruikt om een ​​grote verscheidenheid aan objecten in de database aan te maken, te wijzigen en te verwijderen.
  2. DCL is een commando dat gegevens manipuleert. Het wordt gebruikt om verschillende gebruikers toegang te geven tot informatie in de database, maar ook om tabellen of weergaven te gebruiken.
  3. TCL is een team dat een verscheidenheid aan transacties beheert. Het belangrijkste doel is om de voortgang van een transactie te bepalen.
  4. DML - manipuleert de ontvangen gegevens. Het is zijn taak om de gebruiker in staat te stellen verschillende informatie uit de database te verplaatsen of daar in te voeren.

Typen rechten die op deze server bestaan

Privileges verwijzen naar de acties die een bepaalde gebruiker kan uitvoeren in overeenstemming met zijn status. Het meest minimale is natuurlijk een reguliere login. Uiteraard kunnen privileges in de loop van de tijd veranderen. Oude zullen worden verwijderd en nieuwe zullen worden toegevoegd. Tegenwoordig weet iedereen die SQL Server “voor dummies”-cursussen volgt dat er verschillende soorten toegestane acties zijn:

  1. Objecttype - de gebruiker mag alleen opdrachten uitvoeren met betrekking tot een specifiek object dat zich in de database bevindt. Tegelijkertijd verschillen de rechten voor verschillende objecten. Ze zijn ook niet alleen gebonden aan een bepaalde gebruiker, maar ook aan tabellen. Als iemand, met behulp van zijn mogelijkheden, een tafel heeft gemaakt, wordt hij als de eigenaar ervan beschouwd. Daarom heeft hij het recht om nieuwe rechten toe te kennen aan andere gebruikers met betrekking tot de informatie daarin.
  2. Het systeemtype is het zogenaamde dataauteursrecht. Gebruikers die dergelijke rechten hebben gekregen, kunnen verschillende objecten in de database aanmaken.

Geschiedenis van SQL

Deze taal is in 1970 gemaakt door IBM Research Laboratory. Destijds was de naam enigszins anders (SEQUEL), maar na een paar jaar gebruik werd deze gewijzigd en enigszins ingekort. Desondanks spreken veel wereldberoemde programmeerexperts de naam zelfs vandaag de dag nog steeds op de ouderwetse manier uit. SQL is gemaakt met één enkel doel: een taal uitvinden die zo eenvoudig zou zijn dat zelfs gewone internetgebruikers deze zonder problemen zouden kunnen leren. Een interessant feit is dat SQL destijds niet de enige dergelijke taal was. In Californië ontwikkelde een andere groep specialisten een soortgelijke Ingres, maar deze werd nooit wijdverspreid. Vóór 1980 waren er verschillende varianten van SQL die slechts een klein beetje van elkaar verschilden. Om verwarring te voorkomen werd in 1983 een standaardversie gemaakt, die nog steeds populair is. Met SQL-cursussen "voor dummies" kunt u veel meer over de dienst leren en deze in een paar weken volledig bestuderen.

Vandaag gaan we in op het computeronderwerp, dus dit artikel zal in de eerste plaats van bijzonder belang zijn voor programmeurs. Wij, beste lezer, zullen het hebben over de taal van gestructureerde zoekopdrachten, die in het Engels is gecodeerd als SQL (Structured Query Language). Laten we dus ter zake komen. Laten we het nu hebben over wat SQL is en waarvoor het nodig is.

Structured Query Language is een universele taal voor het creëren, wijzigen en beheren van informatie die deel uitmaakt van relationele databases. Aanvankelijk was SQL de belangrijkste manier om met data te werken. Hiermee kan de gebruiker de volgende acties uitvoeren:

  • het maken van een nieuwe tabel in de database (DB);
  • nieuwe records toevoegen aan bestaande tabellen;
  • archiefstukken bewerken;
  • volledige verwijdering van records;
  • het selecteren van een record uit verschillende tabellen in overeenstemming met gespecificeerde voorwaarden;
  • het uiterlijk en de structuur van een of meer tabellen wijzigen.

Naarmate het zich ontwikkelde, veranderde SQL enorm en werd het verrijkt met nieuwe handige functies, waardoor het steeds meer op een echte programmeertaal begon te lijken. Tegenwoordig is SQL het enige mechanisme dat applicatiesoftware en een database kan koppelen. Dat is wat SQL is.

SQL kent verschillende typen queries. Het is vermeldenswaard dat elke SQL-query ofwel een verzoek om gegevens uit de gewenste database impliceert, ofwel een toegang tot de database met de verplichte wijziging van gegevens daarin. In dit verband is het gebruikelijk om de volgende soorten verzoeken te onderscheiden:

  • het creëren of wijzigen van nieuwe of bestaande objecten in de database;
  • gegevens ontvangen;
  • nieuwe gegevens aan de tabel toevoegen;
  • gegevens verwijderen;
  • toegang tot een databasebeheersysteem (DBMS).

Iets over de voor- en nadelen van dit gegevensverwerkingssysteem.

Voordelen van SQL

  • Onafhankelijkheid van het bestaande DBMS in het gegeven systeem. SQL-teksten zijn universeel voor veel DBMS'en. Deze regel is echter van toepassing op eenvoudige taken die verband houden met het verwerken van gegevens in tabellen.
  • De aanwezigheid van SQL-standaarden helpt de taal te "stabiliseren".
  • Declarativiteit. Dit voordeel is dat de programmeur bij het werken met gegevens alleen de informatie selecteert die moet worden gewijzigd of aangepast. Hoe dit zal gebeuren, wordt automatisch bepaald op softwareniveau van het DBMS zelf.

Nadelen van SQL

  • SQL volgt niet het relationele gegevensmodel. In dit opzicht vervangt SQL de Tutorial D-taal, die echt relationeel is.
  • De complexiteit van SQL bepaalt het doel ervan. De taal is zo complex dat alleen een programmeur deze kan gebruiken. Hoewel het oorspronkelijk bedoeld was als een controletool waar de gemiddelde gebruiker mee zou werken.
  • Enige inconsistentie van normen. Veel bedrijven die DBMS ontwikkelen, voegen hun eigen functies toe aan het SQL-taaldialect, wat de universaliteit van de taal aanzienlijk beïnvloedt.

Nog een laatste vraag: wat is SQL Server? Dit is een databasebeheersysteem dat is ontwikkeld binnen de muren van het bekende bedrijf Microsoft. Dit systeem werkt met succes met databases van zowel pc's thuis als met grote databases van grote ondernemingen. In dit marktsegment is SQL Server meer dan concurrerend.

Laten we MySQL in een notendop onthouden. Deze applicatie wordt doorgaans gebruikt als een server die verzoeken ontvangt van lokale of externe clients. MySQL kan ook worden opgenomen in zelfstandige programma's. Opgemerkt moet worden dat deze applicatie een van de meest flexibele gegevensbeheersystemen is, omdat deze veel verschillende soorten tabellen bevat.