Voorbeeld van een sql-tabel maken. SQL - wat het is, waar de taal voor is en basisfuncties voor beginners

Het type taal dat in een bepaald DBMS wordt gebruikt, heet dialectSQL. Het orakel-dialect heet bijvoorbeeld PL/ SQL; in MSSQLServer en DB2 wordt het dialect toegepast Transactie- SQL; in Interbase en Firebird– isql... Elk SQL-dialect is tot op zekere hoogte compatibel met de SQL-standaard, maar er kunnen verschillen en specifieke taalextensies zijn, dus om de syntaxis van een bepaalde SQL-operator te achterhalen, moet u eerst kijken naar Helpen specifieke DBMS.

Voor bewerkingen op databases en tabellen biedt de sql-standaard operators:

Hieronder volgt de SQL92-syntaxis voor deze operators. Aangezien hun syntaxis in het DBMS kan verschillen van de standaard, is het raadzaam om tijdens het labo het DBMS-helpsysteem te raadplegen.

Namen van databaseobjecten (tabellen, kolommen, enz.) kunnen bestaan ​​uit alfanumerieke tekens en het onderstrepingsteken. Speciale tekens (@ $ #, enz.) geven meestal een speciaal type tabel aan (systeem, tijdelijk, enz.). Het wordt niet aanbevolen om nationale (Russische) tekens, spaties en gereserveerde woorden in namen te gebruiken, maar als ze nog steeds worden gebruikt, moeten dergelijke namen tussen aanhalingstekens ".." of tussen vierkante haakjes [..].

In wat volgt, zullen bij het beschrijven van de constructies van SQL-statements de volgende aanduidingen worden gebruikt: tussen vierkante haken zijn optionele delen van de constructie geschreven; alternatieve ontwerpen worden gescheiden door een verticale streep | ; een beugel() logische blokken van de structuur toewijzen; weglatingsteken geeft aan dat het vorige deel van de structuur vele malen kan worden herhaald. "Uitbreidbare" constructies zijn geschreven in punthaken < >.

Database maken

MAAK DATABASE Database naam

Een of meer databases verwijderen

DROP DATABASE Database naam[,Database naam…]

De huidige database declareren

GEBRUIK MAKEN VAN Database naam -- in SQL Server en MySQL

DATABASE INSTELLEN Naam_ baseren_ gegevens - in Firebird

Een tabel maken

MAAK TAFEL Tafel naam (

<описание_столбца> [, <column_description> |

<table_integrity_constraint>…]

< column_description>

Kolomnaam SOORT VAN

(GEEN ACTIE | CASCADE | STANDAARD INSTELLEN | NULL INSTELLEN)]

SOORT VAN een kolom kan een standaard datatype zijn (zie tabel 1) of een domeinnaam (zie paragraaf 6.2).

Met sommige DBMS'en kunt u berekende kolommen (berekend kolommen). Dit zijn virtuele kolommen waarvan de waarde niet wordt opgeslagen in het fysieke geheugen, maar wordt berekend door de DBMS-server telkens wanneer deze kolom wordt geopend met behulp van de formule die is opgegeven toen deze kolom werd gedeclareerd. De formule kan de waarden van andere kolommen in die rij, constanten, ingebouwde functies en globale variabelen bevatten.

De beschrijving van een berekende kolom in SQL Server is:

<описание_столбца> Kolomnaam ALS uitdrukking

Berekende kolombeschrijving in Vuurvogel lijkt op:

<описание_столбца> Kolomnaam BEREKEND DOOR<uitdrukking>

MySQL 3.23 ondersteunt geen berekende kolommen.

< >

DWANG Integrity_constraint_name

(UNIEK | PRIMAIRE SLEUTEL) ( key_list_column_list)

BUITENLANDSE SLEUTEL ( lijst_ kolommen_FK)

REFERENTIES Tafel naam(column_listPK)

(GEEN ACTIE | CASCADE | STANDAARD INSTELLEN | NULL INSTELLEN)]

(GEEN ACTIE | CASCADE | STANDAARD INSTELLEN | NULL INSTELLEN)]

| CONTROLEREN ( validatie_voorwaarde)

Sommige DBMS'en staan ​​de declaratie van tijdelijke tabellen toe (die alleen tijdens een sessie aanwezig zijn). In SQL Server moeten tijdelijke tabelnamen beginnen met # (lokale tijdelijke tabellen die alleen zichtbaar zijn voor de gebruiker die ze heeft gemaakt) of ## (algemene tabellen die zichtbaar zijn voor alle gebruikers); MySQL gebruikt het sleutelwoord TEMPORARY om tijdelijke tabellen te maken, bijvoorbeeld:

CREËRENTIJDELIJKTAFEL… (Zie TABEL MAKEN voor meer syntaxis).

De structuur van een tabel wijzigen

Wordt gebruikt om het type kolommen in bestaande tabellen te wijzigen, kolommen toe te voegen en te verwijderen en integriteitsbeperkingen.

WIJZIG TABEL Tafel naam

Het kolomtype wijzigen (in SQLServer en Firebird)

WIJZIG KOLOM Kolomnaam nieuw type

Kolomtype, naam en beperkingen wijzigen (in MySQL)

KOLOM WIJZIGEN Kolomnaam <column_description>

Voeg een normale of berekende kolom toe

| TOEVOEGEN<column_description>

Een integriteitsbeperking toevoegen

| TOEVOEGEN

<table_integrity_constraint>

Een kolom verwijderen

| DROP KOLOM Kolomnaam

Een integriteitsbeperking verwijderen

| DROP-BEPERKING Integrity_constraint_name

Controle van integriteitsbeperkingen in- of uitschakelen

InMSSQLServer

| (CONTROLEER | GEEN CONTROLE) BEPERKING

{Integrity_constraint_name_list| ALLES)

Een tafel laten vallen

DROP TAFEL Tafel naam



Vervolgens zullen we bekijken hoe we declaratieve integriteitsbeperkingen declareren bij het maken van nieuwe tabellen met het CREATETABLE-commando of het wijzigen van de structuur van bestaande tabellen met het ALTERTABLE-commando (ze worden in meer detail beschreven in Paragraaf 4.2).

1. Verplichte beschikbaarheid van gegevens (NULL-waarden)

Het wordt gedeclareerd met het woord NULL (de kolom kan hebben lege cellen) of NIET NULL (vereist). De standaardwaarde is NULL.

Voorbeeld van het maken van tabel 7:

CREËRENTAFEL Klanten (

Klantnaam NVARCHAR(60) NIET NUL,

Geboortedatum DATUM NUL,

Telefoon CHAR(12)); - ook standaard NULL

2. Standaardwaarde (STANDAARD)

Voor elke kolom in de tabel kan een standaardwaarde worden ingesteld. Als bij het wijzigen van een cel de nieuwe waarde niet is opgegeven, voegt de server de standaardwaarde in. De standaardwaarde kan NULL zijn, een constante, een berekende uitdrukking of een systeemfunctie.

Laten we eens kijken naar een voorbeeld van het maken van een tabel Bestellingen(Bestellingen). Kolom Besteldatum neemt standaard de huidige datum en de kolom Hoeveelheid(getal) staat standaard op 0.

MAAK TAFEL Bestellingen (

BestelNum INT NIET NUL, -- Bestelnummer

Besteldatum DATUM TIJD NIET NUL-- besteldatum

STANDAARD Krijg datum (),

GetDate () functie retourneert de huidige datum 8

Hoeveelheid KLEIN NIET NUL- hoeveelheid goederen, STANDAARD 0);

3. Primaire sleutels declareren (HOOFDSLEUTEL)

Een eenvoudige primaire sleutel wordt gedeclareerd met de woorden PRIMARYKEY wanneer de tabel wordt gemaakt. Bijvoorbeeld,

CREËRENTAFEL Personeel ( - tabel "Werknemers"

TabNum INTPRIMAIRETOETS, - hoofdsleutel

WNaam NVARCHAR(40) NIETNUL, -- VOOR-EN ACHTERNAAM

... -- beschrijving van andere kolommen);

Een samengestelde primaire sleutel wordt anders gedeclareerd:

-- methode 1 (aangiftePKbij het maken van een tabel)

MAAK TAFEL Klanten (

PasSeria NUMERIEK(4,0)NIET NUL,-- serie paspoorten

PasNummer NUMERIEK(6,0)NIET NUL,-- Kamer paspoorten

Naam NVARCHAR(40)NIET NUL,

Telefoon CHAR(12),

-- samengestelde primaire sleuteldeclaratie

DWANG Clients_PK

PRIMAIRE TOETS(PasSeria, PasNumber));

-- methode 2 (PKgedeclareerd na het maken van de tabel)

- eerst maken we een tabel zonderPK

CREËREN TAFEL Klanten (

PasSeria NUMERIEK(4,0)NIET NUL,--serie paspoorten

PasNummer NUMERIEK(6,0)NIET NUL,--Kamer paspoorten

Klantnaam NVARCHAR(40)NIET NUL,

Telefoon CHAR(12));

-- wijziging tafelstoevoegen RK

WIJZIGEN TAFEL Klanten

TOEVOEGEN DWANG Clients_PK

PRIMAIRE TOETS(PasSeria, PasNumber);

4. Uniekheid van kolommen (UNIEK)

Leuk vinden primair Toets geeft aan dat een kolom of groep kolommen geen dubbele waarden kan bevatten, maar dat niet zijn PK... Alle kolommen die UNIQUE zijn gedeclareerd, moeten NOTNULL zijn. Een voorbeeld van het declareren van een eenvoudige unieke kolom:

MAAK TAFEL studenten (

SCode INT PRIMAIRE TOETS, - surrogaat RK

FIO NVARCHAR(40) NIET NUL, -- VOOR-EN ACHTERNAAM

Record boek CHAR(6) NIET NUL UNIEK); - student studentnummer

Een voorbeeld van het declareren van een samengesteld uniek veld:

CREËREN TAFEL Personeel (- tafel " arbeiders"

TabNum INT PRIMAIRE SLEUTEL, -- officieel Kamer

WNaam NVARCHAR(40) NIET NUL, -- Voor-en achternaam

PasSeria NUMERIEK(4,0) NIET NUL, -- serie paspoorten

PasNummer NUMERIEK(6,0) NIET NUL, -- Kamer paspoorten

-- Aankondiging composiet uniek velden

DWANG Staff_UNQ UNIEK(PasSeria, PasNumber));

5. Beperkingen Aan betekenis kolom (REKENING)

Met deze beperking kunt u een bereik, lijst of "masker" van de logische waarden van de kolom opgeven.

Een voorbeeld van het maken van een tabel arbeiders(Werknemers):

CREËRENTAFEL arbeiders (

- personeelsnummers 4-cijferig

TabNum INT PRIMAIRE SLEUTEL

REKENING(TabNum TUSSEN 1000 EN 9999),

Naam VARCHAR(60) NIET NUL, -- Voor-en achternaam medewerker

-- vloerbrief " m" of " F"

Gentry CHAR(1) NIET NUL

REKENING(Gentry) IN("m", "f")),

Leeftijd minimaal 14 jaar

Leeftijd KLEIN NIET NUL REKENING(Leeftijd> = 14),

- nummer van het attest van de pensioenverzekering (via masker)

PensioenCert CHAR(14)

REKENING(PensioenSert LEUK VINDEN ""));

Dit voorbeeld toont verschillende soorten controles. Het bereik van geldige waarden wordt aangegeven door de TUSSEN… EN; gebruikelijke voorwaarden (zoals voor de kolom) Leeftijd) gebruik vergelijkingstekens =,<>, >, >=, <, <=, связанные при необходимости логическими операциямиAND,OR,NOT(например,Leeftijd> = 14AND Leeftijd<=70); для указания списка допустимых значений используется предикатINи его отрицаниеNOTIN; конструкция

LEUK VINDEN toegestane_waarde_masker BEHALVE uitsluitingslijst

wordt gebruikt om het masker van geldige waarden voor tekenreekskolommen in te stellen. Het masker gebruikt twee speciale tekens: "%" - een willekeurige subtekenreeks, en "_" - elk afzonderlijk teken. De clausule EXCEPT is optioneel.

In de selectievoorwaarde CHECK kunnen de waarden van twee kolommen van dezelfde tabel en kolommen van verschillende tabellen worden vergeleken.

Tot nu toe hebben we gegevenstabellen doorzocht en opdrachten uitgevoerd om die gegevens op te halen, ervan uitgaande dat deze tabellen al door iemand voor ons zijn gemaakt. Dit is inderdaad de meest realistische situatie waarin een klein aantal mensen tafels maakt die vervolgens door andere mensen worden gebruikt. Ons doel is om de informatie eerst breder te behandelen en dan verder te gaan met kleinere onderwerpen.

In dit hoofdstuk bespreken we het maken, wijzigen en neerzetten van tabellen. Dit alles is van toepassing op de tabellen zelf, en niet op de gegevens die ze bevatten. Of u deze bewerkingen nu zelf uitvoert of niet, een conceptueel begrip ervan zal uw begrip van de SQL-taal en de aard van de tabellen die u gebruikt vergroten. Dit hoofdstuk laat ons kennismaken met een gebied van SQL genaamd DDL (Data Definition Language) waar SQL-gegevensobjecten worden gemaakt.

Dit hoofdstuk laat u ook een ander soort SQL-gegevensobject zien: Index. Indexen worden gebruikt om zoekopdrachten efficiënter te maken en soms om de waarden er anders uit te laten zien. Ze werken meestal onopgemerkt voor je, maar als je waarden in een tabel probeert te zetten en ze worden afgewezen omdat ze niet uniek zijn, betekent dit dat een andere rij dezelfde waarde heeft voor dit veld, en dat dit veld een unieke index heeft of een beperking die het uniek maakt. De bespreking van het bovenstaande wordt voortgezet in hoofdstuk 18.

TAFEL CREATIE TEAM

Tabellen worden gemaakt met de opdracht CREATE TABLE. Met deze opdracht wordt een lege tabel gemaakt - een tabel zonder rijen. Waarden worden ingevoerd met het DML INSERT-commando (zie hoofdstuk 15). De opdracht CREATE TABLE definieert er in feite tabellen mee, als een beschrijving van een reeks kolomnamen die in een specifieke volgorde zijn gespecificeerd. Het definieert ook gegevenstypen en kolomgroottes. Elke tabel moet minimaal één kolom hebben.

De syntaxis voor de opdracht CREATE TABLE is CREATE TABLE ( [()], [()] ...); Zoals besproken in hoofdstuk 2, verschillen gegevenstypen aanzienlijk van programma tot programma. Om aan de norm te voldoen, moeten ze allemaal op zijn minst een ANSI-standaard ondersteunen. Het staat beschreven in bijlage B.

Aangezien spaties worden gebruikt om delen van een SQL-opdracht te scheiden, kunnen ze geen deel uitmaken van de naam van een tabel (of enig ander object zoals een index). Underscore (_) - Wordt meestal gebruikt om woorden in tabelnamen te scheiden.

De betekenis van het grootteargument hangt af van het gegevenstype. Als u dit niet opgeeft, wijst uw systeem de waarde automatisch toe. Voor numerieke waarden is dit de beste optie, omdat in dit geval al je geslachten van dit type dezelfde grootte krijgen, wat je verlost van de problemen van hun algemene compatibiliteit (zie hoofdstuk 14). Ook is het gebruik van het grootteargument bij sommige getallenreeksen niet bepaald een eenvoudige zaak. Als u grote aantallen moet opslaan, moet u er ongetwijfeld voor zorgen dat de vloer groot genoeg is om ze te kunnen herbergen.

Een datatype waarvoor je in principe een grootte moet toekennen is CHAR. Het argument size is een geheel getal dat het maximum aantal tekens aangeeft dat het veld kan bevatten. In feite kan het aantal tekens voor een veld van nul (als het veld NULL is) tot dit aantal zijn. Het argument grootte is standaard 1, wat betekent dat het veld slechts één letter kan bevatten. Dit is natuurlijk niet helemaal wat je wilt.

Tabellen behoren toe aan de gebruiker die ze heeft gemaakt, en de namen van alle tabellen die aan deze gebruiker toebehoren, moeten van elkaar verschillen, evenals de namen van alle kolommen in deze tabel. Afzonderlijke tabellen kunnen dezelfde kolomnamen gebruiken, zelfs als ze eigendom zijn van dezelfde gebruiker. Een voorbeeld hiervan is de stadskolom in de tabel Klanten en in de tabel Verkopers. Gebruikers van tabellen die geen eigenaar zijn, kunnen naar deze tabellen verwijzen met de naam van de eigenaar van die tabellen, gevolgd door een punt; de tabel Werknemers die door Smith is gemaakt, krijgt bijvoorbeeld de naam Smith.Employees wanneer ernaar wordt verwezen door een andere gebruiker (we begrijpen dat Smith de Permission Id (ID) is). (ID) gerapporteerd door de gebruiker (uw toegestane ID is de uwe in SQL. Deze output is besproken in hoofdstuk 2 en wordt vervolgd in hoofdstuk 22).

Met deze opdracht wordt de tabel Verkopers gemaakt: CREATE TABLE Saleepeople (snum integer, sname char (10), city char (10), comm declmal); De volgorde van de kolommen in een tabel wordt bepaald door de volgorde waarin ze worden vermeld. Ze mogen de kolom niet scheiden bij regeleinden (dit is voor de leesbaarheid), maar worden gescheiden door komma's.

INDICES

Een index is een geordende (alfabetische of numerieke) lijst van kolommen of groepen kolommen in een tabel. Tabellen kunnen een groot aantal rijen hebben, en aangezien de rijen niet in een bepaalde volgorde staan, kan het zoeken naar deze op de opgegeven waarde enige tijd duren. Het indexadres is zowel een punt van zorg en biedt tegelijkertijd een manier om alle waarden te groeperen in groepen van een of meer reeksen die van elkaar verschillen. In hoofdstuk 18 beschrijven we een meer directe manier om uw waarden uniek te maken. Maar deze methode bestond niet in eerdere versies van SQL. Omdat uniciteit vaak noodzakelijk is, zijn hiervoor indexen gebruikt.

Indexen zijn een SQL-tool die door de markt zelf is ontstaan, niet door ANSI. Daarom ondersteunt de ANSI-standaard zelf momenteel geen indexen, hoewel ze erg nuttig zijn en veel worden gebruikt.

Wanneer u een index op een veld maakt, onthoudt uw database de juiste volgorde van alle waarden voor dat veld in het geheugen. Stel dat onze tabel Klanten duizenden vermeldingen heeft en u wilt een klant vinden met nummer = 2999. Aangezien de rijen niet geordend zijn, scant uw programma de hele tabel, rij voor rij, en controleert elke keer dat de waarde van veld cnum gelijk is aan de waarde van 2999. Als er echter een index in het veld cnum was, dan zal het programma kan nummer 2999 rechtstreeks via de index bereiken en informatie geven over hoe u de juiste rij in de tabel kunt vinden.

Hoewel een index de queryprestaties aanzienlijk verbetert, vertraagt ​​het gebruik van een index de bewerkingen voor het wijzigen van DML (zoals INSERT en DELETE) enigszins, en neemt de index zelf geheugen in beslag. Daarom moet u elke keer dat u een tabel maakt, beslissen of u deze wilt indexeren of niet. Indexen kunnen uit meerdere velden bestaan. Als er meer dan één veld is opgegeven voor één index, wordt het tweede binnen het eerste gerangschikt, het derde binnen het tweede, enzovoort. Als u de eerste en de laatste in twee verschillende velden van de tabel had, zou u een index kunnen maken die het vorige veld in het volgende zou rangschikken. Dit kan ongeacht de volgorde van de kolommen in de tabel.

De syntaxis voor het maken van een index is meestal de volgende (onthoud dat dit geen ANSI-standaard is): CREATE INDEX AAN

( [,] ...); De tabel moet natuurlijk al zijn gemaakt en moet er een kolom voor bevatten. Ik ben een index die voor niets anders in de database kan worden gebruikt (door een gebruiker). Eenmaal gemaakt, is de index onzichtbaar voor de gebruiker. SQL beslist wanneer het nodig is om ernaar te verwijzen en doet dit automatisch. Als bijvoorbeeld de tabel Klanten het vaakst zou worden verwezen in verkoopvragen aan hun eigen klanten, zou het correct zijn om een ​​dergelijke index te creëren in het veld snum van de tabel Klanten. MAAK INDEX Klantengroep ON Klanten (snum); Nu zal die verkoper die met deze tafel omgaat, heel snel zijn eigen klantenkring kunnen vinden.

UNIEKHEID VAN DE INDEX

De index in het vorige voorbeeld is gelukkig niet verplicht uniek te zijn, ondanks onze opmerking dat dit een van de doelen van de index is. Een bepaalde verkoper kan een willekeurig aantal klanten hebben. Dit gebeurt echter niet als we het trefwoord UNIQUE vóór het trefwoord INDEX gebruiken. Het cnum-veld als primaire sleutel is de eerste kandidaat voor een unieke index: CREATE UNIEKE INDEX Custid ON Customers (cnum); OPMERKING: Deze opdracht wordt afgewezen als er al identieke waarden in het cnum-veld staan. De beste manier om met indexen om te gaan, is door ze direct aan te maken nadat de tabel is gemaakt en voordat er waarden worden ingevoerd. Merk ook op dat, voor een unieke index van meer dan één geslacht, dit een combinatie van waarden is, die niet allemaal uniek hoeven te zijn.

Het vorige voorbeeld is een indirecte manier om het veld cnum te laten fungeren als de primaire sleutel van de tabel Klanten. Databases werken directer op primaire en andere sleutels. We zullen deze conclusie verder bespreken in de hoofdstukken 18 en.

INDEXEN VERWIJDEREN

Het belangrijkste kenmerk van een index is zijn it - dus het kan worden verwijderd. Meestal zijn gebruikers niet op de hoogte van het bestaan ​​van de index. SQL detecteert automatisch of de gebruiker de index mag gebruiken, en zo ja, staat toe dat deze wordt gebruikt. Als u de index echter wilt laten vallen, moet u deze ermee kennen. Deze syntaxis wordt gebruikt om een ​​index te verwijderen: DROP INDEX; Het verwijderen van een index heeft geen invloed op de inhoud van de velden.

WIJZIGING VAN DE TAFEL NADAT DEZE IS GEMAAKT

ALTER TABLE maakt geen deel uit van de ANSI-standaard; maar het is algemeen verkrijgbaar en heeft een behoorlijk betekenisvolle vorm, hoewel de mogelijkheden ervan enigszins beperkt zijn. Het wordt gebruikt om de definitie van een bestaande tabel te wijzigen. Meestal voegt het kolommen toe aan de tabel. Het kan soms kolommen verwijderen of de grootte ervan wijzigen, en in sommige programma's worden beperkingen toegevoegd of verwijderd (besproken in hoofdstuk 18). Typische syntaxis om een ​​kolom aan een tabel toe te voegen is: ALTER TABLE
TOEVOEGEN ; De kolom wordt toegevoegd met een NULL-waarde voor alle rijen in de tabel. De nieuwe kolom wordt de laatste kolom in de tabel. In feite kunt u meerdere nieuwe kolommen tegelijk toevoegen, gescheiden door komma's, in één opdracht. Het is mogelijk om kolommen te verwijderen of te wijzigen. Meestal kan het wijzigen van een kolom eenvoudigweg de grootte vergroten of een beperking toevoegen (verwijderen). Uw systeem moet ervoor zorgen dat eventuele wijzigingen niet in strijd zijn met bestaande gegevens - als u bijvoorbeeld een beperking probeert toe te voegen aan een kolom die al een waarde had, en als deze wordt geschonden, wordt de beperking afgewezen. Je kunt dit het beste dubbel controleren. Kijk op zijn minst naar de documentatie van uw systeem om te zien of het garandeert dat dit de oorzaak was. Vanwege het niet-standaard karakter van de ALTER TABLE-opdracht, moet u voor speciale gevallen nog steeds naar dat gedeelte van uw systeemdocumentatie kijken.

ALTER TABLE heeft geen effect wanneer de tabel moet worden overschreven, maar u moet uw database zo veel mogelijk ontwerpen om er niet te veel op te vertrouwen. Het veranderen van de structuur van een tafel wanneer deze al in gebruik is, is gevaarlijk! Kijk goed naar tabellen die, omdat het secundaire tabellen zijn met gegevens die uit een andere tabel zijn gehaald (zie hoofdstuk 20), niet lang correct werken, en programma's die geneste SQL gebruiken (hoofdstuk 25) niet correct of altijd niet correct werken. Bovendien kan de wijziging alle gebruikers wissen die toegang hebben tot de tabel. Om deze redenen moet u uw tabellen zo ontwerpen dat ALTER TABLE alleen als laatste redmiddel wordt gebruikt.

Als uw systeem ALTER TABLE niet ondersteunt, of als u het gebruik ervan wilt vermijden, kunt u eenvoudig een nieuwe tabel maken, met de nodige wijzigingen bij het maken, en de opdracht INSERT gebruiken met een SELECT * -query om gegevens uit de oude tabel te overschrijven erin. Gebruikers die toegang hebben gekregen tot de oude tabel (zie hoofdstuk 22) moeten toegang krijgen tot de nieuwe tabel.

EEN TABEL VERWIJDEREN

U moet de eigenaar (d.w.z. de maker) van de tabel zijn om deze te kunnen verwijderen. Maak je dus geen zorgen over het per ongeluk vernietigen van je gegevens, SQL vereist dat je eerst de tabel leegmaakt voordat je deze uit de database verwijdert. De tabel met de rijen erin kan niet worden verwijderd. Zie hoofdstuk 15 voor details over het verwijderen van rijen uit een tabel. De syntaxis voor het verwijderen van uw tabel, ervan uitgaande dat deze leeg is, is: DROP TABLE< table name >; Wanneer u deze opdracht geeft, wordt de tabel niet langer door hen herkend en is er geen dergelijke opdracht die aan dit object kan worden gegeven. U moet ervoor zorgen dat deze tabel niet door een refererende sleutel naar een andere tabel wordt verwezen (vreemde sleutels worden besproken in hoofdstuk 19) en dat deze niet wordt gebruikt in de definitie van een weergave (hoofdstuk 20).

Deze opdracht maakt eigenlijk geen deel uit van de ANSI-standaard, maar wordt over het algemeen ondersteund en is nuttig. Gelukkig is het eenvoudiger en daarom consistenter dan ALTER TABLE. ANSI heeft eenvoudigweg geen manier om beschadigde of ongeldige tabellen te identificeren.

SAMENVATTING

U beheerst nu de basisprincipes van gegevensdefinities. U kunt tabellen maken, wijzigen en neerzetten. Hoewel alleen de eerste van deze functies deel uitmaakt van de officiële SQL-standaard, zullen andere van tijd tot tijd veranderen, vooral ALTER TABLE. Met DROP TABLE kunt u tabellen verwijderen die niet nuttig zijn. Het vernietigt alleen lege tabellen en vernietigt daarom geen gegevens.

U weet nu over indexen en hoe u ze kunt maken en verwijderen. SQL geeft je er niet veel controle over, omdat de implementatie die je gebruikt redelijk goed kan bepalen hoe snel verschillende commando's worden uitgevoerd. Indexen zijn een van de tools waarmee u de prestaties van uw SQL-opdrachten direct kunt beïnvloeden. We hebben hier indexen behandeld om ze te onderscheiden van beperkingen, waarmee ze niet moeten worden verward. Beperkingen zijn het onderwerp van Hoofdstuk 18 en Hoofdstuk 19.

WERKEN MET SQL

1. Schrijf een CREATE TABLE-clausule die onze klantentabel zou opleveren.

2. Schrijf een commando waarmee de gebruiker snel de bestellingen kan ophalen, gegroepeerd op datum, uit de tabel Bestellingen.

3. Als de tabel Orders al is gemaakt, hoe kunt u het onum-veld dan uniek maken (ervan uitgaande dat alle huidige waarden uniek zijn)?

4. Maak een index waarmee elke verkoper snel zijn bestellingen kan vinden, gegroepeerd op datum.

5. Ervan uitgaande dat elke verkoper slechts één klant heeft met een bepaalde beoordeling, voert u een opdracht in om deze op te halen.

Voordat u begint met het maken van de SQL-tabel, moet u uw databasemodel definiëren. Ontwerp een ER-diagram om entiteiten, attributen en relaties te definiëren.

Basisconcepten

Entiteiten zijn objecten of feiten waarover informatie moet worden opgeslagen. Bijvoorbeeld een medewerker van een bedrijf of projecten uitgevoerd door een onderneming. Attributen zijn een component die een entiteit beschrijft of kwalificeert. Het kenmerk van de entiteit 'werknemer' is bijvoorbeeld het salaris en het kenmerk van de entiteit 'project' is de geschatte kosten. Links zijn associaties tussen twee elementen. Het kan bidirectioneel zijn. Er is ook een recursieve relatie, dat wil zeggen, de relatie tussen een entiteit en zichzelf.

Het is ook noodzakelijk om de sleutels en voorwaarden te definiëren waaronder de integriteit van de database behouden blijft. Wat betekent het? Met andere woorden, beperkingen die ervoor zorgen dat databases schoon en consistent blijven.

Overstappen van ER-diagram naar tabelmodel

Regels voor het overstappen naar een tabelmodel:

  1. Converteer alle entiteiten naar tabellen.
  2. Converteer alle kenmerken naar kolommen, dat wil zeggen dat elk entiteitskenmerk moet worden toegewezen aan de naam van de tabelkolom.
  3. Converteer unieke identifiers naar primaire sleutels.
  4. Converteer alle relaties naar externe sleutels.
  5. Maak een SQL-tabel.

Basis creatie

Eerst moet u de MySQL-server starten. Om het te starten, gaat u naar het menu "Start", vervolgens naar "Programma's", vervolgens naar MySQL en MySQL Server, selecteert u MySQL-Command-Line-Client.

De opdracht Database maken wordt gebruikt om een ​​database te maken. Deze functie heeft het volgende formaat:

MAAK DATABASE database naam.

De beperkingen op de naam van de basis zijn als volgt:

  • de lengte is maximaal 64 tekens en kan letters, cijfers, symbolen "" en "" bevatten;
  • de naam kan beginnen met een cijfer, maar moet letters bevatten.

Het is ook noodzakelijk om de algemene regel te onthouden: elk verzoek of commando eindigt met een scheidingsteken. Het is gebruikelijk in SQL om een ​​puntkomma als scheidingsteken te gebruiken.

De server moet aangeven met welke database hij moet werken. Dit is waar de USE-operator voor is. Deze verklaring heeft een eenvoudige syntaxis: USE n database naam.

Een SQL-tabel maken

Dus het model is ontworpen, de database is gemaakt en de server wordt precies verteld hoe ermee te werken. Nu kunt u beginnen met het maken van SQL-tabellen. Er is een Data Definition Language (DDL). Het wordt gebruikt om een ​​MS SQL-tabel te maken, maar ook om objecten te definiëren en met hun structuur te werken. DDL bevat een reeks opdrachten.

SQL Server-tabel maken

Met slechts één DDL-opdracht kunt u verschillende database-objecten maken door de parameters ervan te variëren. Om de opdracht Tabel maken te gebruiken. Het tt-formaat ziet er als volgt uit:

MAAK TADLE tafel naam,(kolomnaam1 titel _kolom2 gegevenstype [column_constraint], [table_constraint]).

De syntaxis van deze opdracht moet in meer detail worden beschreven:

  • De tabelnaam mag maximaal 30 tekens lang zijn en beginnen met een letter. Alleen alfabetische tekens, letters en symbolen "_", "$" en "#" zijn toegestaan. Het gebruik van het Cyrillische alfabet is toegestaan. Het is belangrijk op te merken dat tabelnamen niet hetzelfde mogen zijn als andere objectnamen of door de databaseserver gereserveerde woorden zoals Kolom, Tabel, Index, enz.
  • Zorg ervoor dat u voor elke kolom het gegevenstype opgeeft. Er is een standaardset die door de meesten wordt gebruikt. Bijvoorbeeld Char, Varchar, Number, Date, Null type, etc.

  • De parameter Standaard kan worden gebruikt om de standaardwaarde in te stellen. Dit zorgt ervoor dat er geen null-waarden in de tabel staan. Wat betekent het? De standaardwaarde kan een symbool, uitdrukking of functie zijn. Het is belangrijk om te onthouden dat dit standaardgegevenstype hetzelfde moet zijn als het invoergegevenstype voor de kolom.
  • Beperkingen op elke kolom worden gebruikt om integriteitsvoorwaarden af ​​te dwingen voor gegevens op tabelniveau. Er zijn ook nuances. Het is verboden een tafel te laten vallen als er andere tafels van afhankelijk zijn.

Hoe te werken met de basis

Grote projecten vereisen vaak het maken van meerdere databases, en elk vereist veel tabellen. Het is natuurlijk onmogelijk voor gebruikers om alle informatie in hun hoofd te houden. Hiervoor is het mogelijk om naar de structuur van databases en tabellen daarin te kijken. Er zijn verschillende commando's, namelijk:

  • SHOW DATABASES - toont op het scherm alle aangemaakte SQL-databases;
  • TOON TABELLEN - Toont alle tabellen voor: huidige basis gegevens geselecteerd door het USE-commando;
  • BESCHRIJVEN tafel naam- toont een beschrijving van alle kolommen in de tabel.
  • ALTER TABLE - hiermee kunt u de structuur van de tabel wijzigen.

Met het laatste commando kunt u:

  • voeg een kolom of beperking toe aan de tabel;
  • een bestaande kolom wijzigen;
  • een kolom of kolommen verwijderen;
  • integriteitsbeperkingen te verwijderen.

De syntaxis voor deze opdracht ziet er als volgt uit: ALTER TABLE tafel naam(| | | | [(ENABLE | DISABLE) CONSTANT constraint_name ] | }.

Er zijn ook andere commando's:

  • RENAME - hernoem een ​​tabel.
  • TRUNCATE TABLE - verwijdert alle rijen uit de tabel. Deze functie kan nodig zijn wanneer het nodig is om de tabel opnieuw te vullen, maar het is niet nodig om de vorige gegevens op te slaan.

Er zijn ook situaties waarin de structuur van de database is gewijzigd en de tabel moet worden verwijderd. Hiervoor is er het DROP-commando. Natuurlijk moet u eerst de database selecteren waaruit u de tabel wilt verwijderen, als deze afwijkt van de huidige.

De syntaxis van de opdracht is vrij eenvoudig: DROP TABLE titel_tafels.

In SQL Access worden tabellen gemaakt en gewijzigd met dezelfde opdrachten als hierboven vermeld.

Met CREATE TABLE kunt u een lege tabel maken en deze vervolgens vullen met gegevens. Maar dat is niet alles. Je kunt ook meteen een tafel maken van een andere tafel. Zoals dit? Dat wil zeggen, het is mogelijk om een ​​tabel te definiëren en deze te vullen met gegevens uit een andere tabel. Hier is een speciaal trefwoord AS voor.

De syntaxis is heel eenvoudig:

  • MAAK TAFEL titel_tafels[(column_definition)] AS-subquery;
  • column_definition - kolomnamen, integriteitsregels voor kolommen van de nieuw gemaakte tabel en standaardwaarden;
  • subquery - retourneert de rijen die aan de nieuwe tabel moeten worden toegevoegd.

Zo'n opdracht maakt dus een tabel met specifieke kolommen, voegt de rijen die in de query worden geretourneerd erin in.

Tijdelijke tabellen

Tijdelijke tabellen zijn tabellen waarvan de gegevens aan het einde van elke sessie of eerder worden gewist. Ze worden gebruikt om tussenwaarden of resultaten vast te leggen. Ze kunnen worden gebruikt als werkbladen. U kunt tijdelijke in elke sessie definiëren en u kunt hun gegevens alleen in de huidige sessie gebruiken. Tijdelijke SQL-tabellen worden op dezelfde manier gemaakt als gewoonlijk, met behulp van de opdracht CREATE TABLE. Om het systeem te laten zien dat de tabel tijdelijk is, moet u de parameter GLOBAL TEMPORARY gebruiken.

De ON COMMIT-clausule stelt de levensduur van gegevens in een dergelijke tabel in en kan het volgende doen:

  • RIJEN VERWIJDEREN - Wis de tijdelijke tabel (verwijder alle sessiegegevens) na het voltooien van elke transactie. Dit is meestal de standaardinstelling.
  • BEHOUD RIJEN - laat gegevens achter voor gebruik in de volgende transactie. Bovendien kunt u de tafel pas afruimen nadat de sessie is afgelopen. Maar er zijn enkele eigenaardigheden. Als een transactie wordt teruggedraaid (ROLLBACK), wordt de tabel teruggedraaid naar de status aan het einde van de vorige transactie.

De syntaxis voor het maken van een tijdelijke tabel kan als volgt worden weergegeven: CREATE TABLE titel_tafels,(titel_kolom1 gegevenstype [column_constraint], titel _kolom2 gegevenstype [column_constraint], [table_constraint]).

Lezing

Een database maken met SQL.

Gegevensmanipulatie in SQL

De SQL-taal bevat een taal voor gegevensbeschrijving waarmee u tabellen kunt beheren en een taal voor gegevensmanipulatie die dient om gegevens te beheren ( schuif 2 ).

17.1. Databases bouwen met SQL

17.1.1. Het commando om een ​​tabel te maken is - CREËRENTAFEL

De tabel wordt gemaakt met de opdracht CREATE TABLE. De gegeneraliseerde opdrachtsyntaxis is als volgt (schuif 3).

Die. na het specificeren van de tabelnaam, gescheiden door komma's tussen haakjes, moeten alle zinnen die individuele tabelelementen definiëren - kolommen of integriteitsbeperkingen worden vermeld:

table_name is de identifier van de tabel die wordt gemaakt, die over het algemeen is opgebouwd uit de databasenaam, de naam van de eigenaar van de tabel en de naam van de tabel zelf. De combinatie van de tabelnaam en de eigenaar ervan moet uniek zijn binnen de databank. Als de tabel niet in de huidige database is gemaakt, moet de databasenaam worden opgenomen in de ID.

column_definition - specificeert de naam, het gegevenstype en de parameters van een afzonderlijke tabelkolom. Kolomnamen moeten voldoen aan de regels voor identifiers en uniek zijn binnen de tabel.

table_constraint_define - Specificeer een integriteitsbeperking op tabelniveau.

Kolombeschrijving

Zoals je kunt zien aan de syntaxis van het CREATE TABLE-commando, is er een clausule gespecificeerd voor elke kolom<определение_столбца>, met behulp waarvan de eigenschappen van de kolom worden ingesteld. De zin heeft de volgende syntaxis:( schuif 3) :

Laten we eens kijken naar het doel en het gebruik van parameters.

Column_name is een id die de naam van een tabelkolom specificeert.

datatype - Specificeert het datatype van de kolom. Als bij het definiëren van een kolom niet expliciet een beperking op de opslag van NULL-waarden wordt opgegeven, worden de eigenschappen van het gegevenstype gebruikt, d.w.z. als het geselecteerde gegevenstype het opslaan van NULL-waarden toestaat, dan kan de kolom ook NULL-waarden opslaan. Als bij het definiëren van een kolom in de opdracht CREATE TABLE de opslag van NULL-waarden expliciet wordt toegestaan ​​of geweigerd, worden de eigenschappen van het gegevenstype overschreven door de beperking die op kolomniveau is ingesteld. Als u met het gegevenstype bijvoorbeeld NULL-waarden kunt opslaan en de kolom is uitgeschakeld op kolomniveau, mislukt een poging om een ​​NULL-waarde in de kolom in te voegen.

column_constraint - Deze clausule specificeert de beperkingen die voor de kolom worden gedefinieerd. De syntaxis van de clausule is als volgt ( glijbaan 4 ):

Laten we eens kijken naar het doel van de parameters.

CONSTRAINT is een optioneel trefwoord gevolgd door de naam van de beperking op de kolomwaarden (constraint_name). Namen van beperkingen moeten uniek zijn binnen de database.

DEFAULT - Stelt de standaardwaarde voor de kolom in. Deze waarde wordt gebruikt bij het invoegen van een rij als er geen expliciete waarde is opgegeven voor de kolom.

NULL | NOT NULL - trefwoorden die het (NULL) of niet toestaan ​​(NIET NULL) opslaan van NULL-waarden in de kolom toestaan. Als er geen standaardwaarde is opgegeven voor een kolom, zal het invoegen van een rij met een onbekende waarde voor de kolom proberen een NULL-waarde in de kolom in te voegen. Als de beperking NOT NULL is opgegeven voor de kolom, wordt de poging om de rij in te voegen afgewezen en ontvangt de gebruiker een bijbehorend foutbericht.

PRIMAIRE SLEUTEL - definitie van de primaire sleutel op het niveau van één kolom (d.w.z. de primaire sleutel zal alleen uit de waarden van één kolom bestaan). Als het nodig is om een ​​primaire sleutel te vormen op basis van twee of meer kolommen, dan moet een dergelijke integriteitsbeperking op tabelniveau worden gespecificeerd. Houd er echter rekening mee dat er voor elke tabel slechts één primaire sleutel kan worden gemaakt.

UNIEK - een indicatie om een ​​UNIEKE integriteitsbeperking voor een kolom te creëren, die de uniciteit van elke individuele waarde in een kolom binnen die kolom garandeert. Er kunnen verschillende UNIEKE integriteitsbeperkingen voor een tabel worden gemaakt.

FOREIGN KEY ... REFERENTIES - een indicatie dat de kolom zal dienen als een externe sleutel voor de tabel waarvan de naam is opgegeven met behulp van de parameter<имя_главной_таблицы>.

(column_name [, ..., n]) - een kolom of een door komma's gescheiden lijst van kolommen van de hoofdtabel die zijn opgenomen in de FOREIGN KEY-beperking. In dit geval kunnen de kolommen in de refererende sleutel alleen verwijzen naar de kolommen van de primaire sleutel of kolommen met de UNIQUE-beperking van de tabel.

BIJ VERWIJDEREN (CASCADE | GEEN ACTIE) - Deze sleutelwoorden bepalen de actie die moet worden ondernomen wanneer een rij uit de hoofdtabel wordt verwijderd. Als het trefwoord CASCADE is opgegeven, wordt de rij in de afhankelijke tabel ook verwijderd wanneer een rij wordt verwijderd uit de hoofdtabel (bovenliggende tabel). Als u in een dergelijk geval het trefwoord GEEN ACTIE opgeeft, wordt een fout gegenereerd. De standaardinstelling is GEEN ACTIE.

BIJ UPDATE (CASCADE | GEEN ACTIE) - Deze trefwoorden bepalen de actie die moet worden ondernomen wanneer een rij in de hoofdtabel wordt gewijzigd. Als het CASCADE-sleutelwoord is opgegeven, wordt de rij in de afhankelijke tabel ook gewijzigd wanneer een rij uit de hoofdtabel (bovenliggende) wordt gewijzigd. Als u in zo'n geval het sleutelwoord NO ACTION gebruikt, wordt er een fout gegenereerd. De standaardinstelling is GEEN ACTIE.

CHECK is een integriteitsbeperking die de controle initieert van waarden die in een kolom (of kolommen) zijn ingevoerd.

boolean_expression is een booleaanse uitdrukking die wordt gebruikt voor de beperking CHECK.

Beperkingen op tabelniveau

De syntaxis voor de opdracht CREATE TABLE is het gebruik van de clausule<ограничение_таблицы>die integriteitsbeperkingen op tabelniveau definieert. De syntaxis van de clausule is als volgt (schuif 5) .

Het doel van de parameters is hetzelfde als het doel van de vergelijkbare parameters van het aanbod.<ограничение_столбца > ... Echter, in de zin<ограничение_таблицы>er zijn enkele nieuwe opties:

kolomnaam is de kolom (of lijst met kolommen) waaraan u integriteitsbeperkingen wilt opleggen.

- wijze van bestellen van gegevens in de index. De index wordt gemaakt wanneer u de trefwoorden PRIMARY KEY, UNIQUE opgeeft. Als ASC is opgegeven, worden de gegevens in de index in oplopende volgorde gesorteerd, als DESC is opgegeven in aflopende volgorde. De standaardwaarde is ASC.

Voorbeelden van het maken van tabellen

Bekijk als voorbeeld de instructies voor het maken van de sessiedatabasetabellen:

De tabel "Studenten" bestaat uit de volgende kolommen:

ID_Student - INTEGER gegevenstype, unieke sleutel;

Groepsnummer - gegevenstype CHAR, lengte 6;

schuif 6).

Adres en Telefoon, opgelegde beperkingen NIET NUL

Om de tabel "Disciplines" te maken, werd de opdracht gebruikt (schuif 7).

De tabel bevat 2 kolommen (ID kaart_Discipline, Naam).

Per kolommen ID kaart_Discipline, Naam opgelegde beperkingen NIET NUL die de invoer van een rij verbieden wanneer de kolomwaarde niet gedefinieerd is.

Kolom ID kaart_Disciplinegedeclareerd als de primaire sleutel, en op de waarden die in de kolom zijn ingevoerd Naam, de uniciteitsvoorwaarde wordt opgelegd.

De tabel "Study_plan" bevat de volgende kolommen:

ID_Discipline - gegevenstype INTEGER;

Semester - INTEGER gegevenstype;

Aantal_uren - gegevenstype INTEGER;

De tabel is gemaakt met de volgende opdracht (schuif 8).

Voor kolomwaarden Semester er is een logische uitdrukking geformuleerd waarmee alleen waarden van 1 t/m 10 mogen worden ingevoerd.

De tabel Pivot_Note bestaat uit de volgende kolommen:

ID_Student - INTEGER gegevenstype, unieke sleutelkolom;

ID_Plan - INTEGER gegevenstype, unieke sleutelkolom;

Evaluatie - gegevenstype INTEGER;

Date_Date - gegevenstype DATETIME;

ID_Teacher is het gegevenstype INTEGER.

De tabel is gemaakt met de volgende opdracht (schuif 9).

Er worden beperkingen opgelegd aan alle kolommen van de tabel NIET NUL die de invoer van een rij verbieden wanneer de kolomwaarde niet gedefinieerd is.

Voor kolomwaarden Cijfer er is een logische uitdrukking geformuleerd die alleen waarden van 0 tot 5 toelaat: 0 - mislukt, 1 - geslaagd, 2 - onvoldoende, 3 - voldoende, 4 - goed, 5 - uitstekend.

En laten we tot slot de kolommen "Personnel_Composition" opsommen:

ID_Teacher - INTEGER gegevenstype, unieke sleutel;

Achternaam - gegevenstype CHAR, lengte 30;

Naam - gegevenstype CHAR, lengte 15;

Patroniem - gegevenstype CHAR, lengte 20;

Positie - gegevenstype CHAR, lengte 20;

Stoel - gegevenstype CHAR, lengte 3;

Adres - gegevenstype CHAR, lengte 30;

Telefoon - gegevenstype CHAR, lengte 8.

De tabel is gemaakt met de volgende opdracht (schuif 10).

Voor alle kolommen van de tabel, behalve kolommen Adres en Telefoon, opgelegde beperkingen NIET NUL die de invoer van een rij verbieden wanneer de kolomwaarde niet gedefinieerd is.

Voor de tabellen "Study_plan" en "Pivot_sheet" moeten externe sleutels worden gebouwd die de tabellen van de "Session"-database koppelen:

FK_discipline is een externe sleutel die de tabellen "Curriculum_plan" en "Disciplines" verbindt door de discipline ID_ kolom;

FK_Human_Composition - een externe sleutel die de tabellen "Curriculum_plan" en "Personnel_staff" verbindt door de kolom ID_Teacher;

FK_Student - een externe sleutel die de tabellen Pivot_notification en Students verbindt door de ID_Student-kolom;

FK_Plan is een externe sleutel die de tabellen Pivot_notification en Training_plan per kolom verbindt ID _plan.

We zullen later overwegen externe sleutels aan tabellen toe te voegen wanneer we de mogelijkheden van het commando bespreken WIJZIG TABEL.

17.1.2. Tabelstructuur wijzigen - commando WIJZIGENTAFEL

Hoe zorgvuldig u de structuur van een tabel ook plant, soms moet u er enkele wijzigingen in aanbrengen. Stel dat u uw thuistelefoonnummer en thuisadres moet toevoegen aan de reeds gegenereerde Lerarentabel. Deze bewerking kan op verschillende manieren worden uitgevoerd. U kunt bijvoorbeeld een tabel met de oude structuur neerzetten en in plaats daarvan een nieuwe tabel maken met de gewenste structuur. Het nadeel van deze methode is dat het nodig zal zijn om de gegevens in de tabel ergens te kopiëren en deze na het maken ervan in een nieuwe tabel te herschrijven.

Speciaal team WIJZIG TABEL is bedoeld om de structuur van de tabel te wijzigen. Het kan worden gebruikt om de eigenschappen van bestaande kolommen te wijzigen, kolommen te verwijderen of toe te voegen aan de tabel, en integriteitsbeperkingen te beheren zowel op kolomniveau als op tabelniveau, d.w.z. voer de volgende functies uit:

Voeg een nieuwe kolomdefinitie toe aan de tabel;

Een kolom uit een tabel verwijderen;

Wijzig de standaardwaarde voor elke kolom;

De primaire sleutel van een tabel toevoegen of verwijderen;

Een externe sleutel aan een tabel toevoegen of verwijderen;

Een uniciteitsvoorwaarde toevoegen of verwijderen;

Een voorwaarde voor een waarde toevoegen of verwijderen.

Gegeneraliseerde opdrachtsyntaxis WIJZIG TABEL gepresenteerd op de dia (glijbaan 11).

ALTER TABLE commando zorgt voor alle acties voor het kopiëren van gegevens naar een tijdelijke tabel, het verwijderen van de oude tabel, het creëren van een nieuwe tabel met de gewenste structuur en het herschrijven van de gegevens erin.

Veel opdrachtparameters en trefwoorden toewijzen WIJZIG TABEL vergelijkbaar met de toewijzing van de bijbehorende opdrachtparameters en trefwoorden MAAK TAFEL (bijvoorbeeld de syntaxis van de constructie<определение_столбца>komt overeen met de syntaxis van een vergelijkbare opdrachtconstructie MAAK TABEL).

De belangrijkste modi voor het gebruik van de opdracht ALTER TABLE zijn als volgt:

Een kolom toevoegen;

Een kolom verwijderen;

Kolom modificatie;

Beperkingen wijzigen, toevoegen en verwijderen (primaire en externe sleutels, standaardwaarden).

Een kolom toevoegen

Gebruik het trefwoord . om een ​​nieuwe kolom toe te voegen TOEVOEGEN gevolgd door de kolomdefinitie.

Laten we bijvoorbeeld aan de tabel "Studenten" de kolom "Year_of_Admission" (schuif 12). Na het uitvoeren van deze opdracht wordt een andere kolom toegevoegd aan de tabelstructuur "Student" met een standaardwaarde die gelijk is aan het huidige jaar (de standaardwaarde wordt berekend met behulp van twee ingebouwde functies - JAAR () en GETDATUM ()).

Kolom wijziging

Gebruik het trefwoord . om een ​​bestaande kolom in een tabel te wijzigen WIJZIG KOLOM ... Kolomeigenschappen kunnen niet worden gewijzigd als:

de kolom deelneemt aan een PRIMARY KEY of FOREIGN KEY beperking;

de kolom heeft integriteitsbeperkingen CHECK of UNIQUE (de uitzondering zijn kolommen met gegevenstypen met variabele lengte, dat wil zeggen gegevenstypen die beginnen met var);

als er een standaardwaarde aan de kolom is gekoppeld (in dit geval kunt u de lengte, het totale aantal cijfers of het aantal cijfers achter de komma wijzigen met hetzelfde gegevenstype).

Houd er bij het definiëren van een nieuw gegevenstype voor een kolom rekening mee dat het oude gegevenstype moet worden geconverteerd naar het nieuwe.

Een voorbeeld van het wijzigen van de kolom "Groepsnummer" van de tabel "Studenten" (gegevenstype INTEGER wordt vervangen door CHAR) ( schuif 12).

Een kolom verwijderen

Gebruik de clausule . om een ​​kolom uit een tabel te verwijderen DROP KOLOM <имя_столбца>... Houd er bij het verwijderen van kolommen rekening mee dat u geen kolommen met integriteitsbeperkingen kunt verwijderen CHEQUE, BUITENLANDSE SLEUTEL, UNIEKE of PRIMAIRE SLEUTEL en ook kolommen waarvoor standaardwaarden zijn gedefinieerd (in de vorm van een integriteitsbeperking op kolomniveau of op tabelniveau).

Denk bijvoorbeeld aan het commando om uit de tabel "Student" de kolom "Year_of_Admission" (schuif 12).

Deze opdracht wordt niet uitgevoerd. er is een standaard gedefinieerd bij het toevoegen van een kolom.

Beperkingen op tabelniveau toevoegen

Gebruik de clausule . om beperkingen op tabelniveau toe te voegen BEPERKING TOEVOEGEN <имя_ограничения>.

Overweeg als voorbeeld de opdrachten voor het toevoegen van externe sleutels aan de tabellen van de sessiedatabase (dia 13):

· externe sleutels toevoegen aan de tabel "Study_plan" (een link maken met de naam FK _Discipline en verbinding met de naam FK _ Personeel_Compositie);

· buitenlandse sleutels toevoegen aan de Pivot_Note-tabel (een link maken met de naam FK _Leerling- en naamlinks FK_plan).

door constructie BEPERKING TOEVOEGEN er wordt een benoemde beperking gemaakt. Opgemerkt moet worden dat het verwijderen van een beperking op tabelniveau alleen gebeurt met de naam, dus de beperking moet een naam krijgen (zodat deze kan worden verwijderd).

Beperkingen verwijderen

Gebruik de clausule . om een ​​integriteitsbeperking uit een tabel te verwijderen DROP-BEPERKING <имя_ограничения>.

Het verwijderen van een integriteitsbeperking is alleen mogelijk als deze een naam heeft (d.w.z. de<определение_ограничения>bevat naamgevingsbeperkingen DWANG).

Opdracht geconstrueerde externe sleutel verwijderen FK _Discipline uit de tabel "Curriculum_plan" ziet er als volgt uit (schuif 14).

Op de glijbaan ( schuif 14) toont de verwijdering van de eerder gebouwde beperking op de standaardwaarde DEF _Groep_Nummer.

17.1.3. Tabellen laten vallen - commando LATEN VALLENTAFEL

Het neerzetten van een tabel wordt uitgevoerd met het commando DROP TABEL ( schuif 14).

Het enige argument van de opdracht specificeert de naam van de tabel die moet worden verwijderd.

De bediening van het laten vallen van een tafel vraagt ​​in sommige gevallen enige aandacht. Kan een tabel niet laten vallen als er een integriteitsbeperking op wordt gebruikt VREEMDE SLEUTEL een andere tabel verwijst: een poging om de tabel "Disciplines" te verwijderen zal een foutmelding veroorzaken, omdat naar de disciplinetabel wordt verwezen door de tabel "Curriculum_plan".

17.2. Gegevensbeheer

Het uiteindelijke doel van elk databasebeheersysteem is het invoeren, wijzigen, verwijderen en ophalen van gegevens. Laten we eens kijken naar methoden voor gegevensbeheer met behulp van de SQL-taal.

17.2.1. Gegevens ophalen - Opdracht KIES

Het belangrijkste hulpmiddel voor het ophalen van gegevens in de SQL-taal is het commando KIES ... Met deze opdracht hebt u toegang tot gegevens die worden gepresenteerd als een verzameling tabellen van bijna elke complexiteit.

De meest gebruikte is een vereenvoudigde versie van de opdracht KIES met de volgende syntaxis (schuif 15).

SELECT-instructie is verdeeld in afzonderlijke secties, die elk hun eigen doel hebben. Uit de bovenstaande syntactische beschrijving blijkt dat alleen de secties vereist zijn. KIES en VAN en de rest van de secties kunnen worden weggelaten. Een volledige lijst met secties wordt weergegeven op de dia (schuif 15).

SELECT sectie

Het hoofddoel van de sectie: KIES (een van de twee verplichte secties die in elke query moeten worden opgegeven) - specificeert de set kolommen die wordt geretourneerd nadat de query is uitgevoerd, d.w.z. het uiterlijk van het resultaat. In het eenvoudigste geval wordt een kolom uit een van de tabellen die deelnemen aan de query geretourneerd. In complexere situaties wordt een reeks waarden in een kolom gegenereerd als resultaat van het evalueren van een uitdrukking. Deze kolommen worden berekende kolommen genoemd en hebben standaard geen naam.

Indien nodig kan de gebruiker een willekeurige naam opgeven voor de kolom die wordt geretourneerd na het uitvoeren van de query. Zo'n naam wordt een alias genoemd ( alias ). Normaal gesproken is het toewijzen van een alias optioneel, maar in sommige gevallen is expliciet specificeren vereist. Dit is meestal vereist bij het werken met een sectie. NAAR BINNEN waarin elk van de geretourneerde kolommen een naam moet hebben, en deze naam moet uniek zijn.

In aanvulling op wat er is gezegd, met behulp van de sectie KIES u kunt het aantal rijen dat in het selectieresultaat wordt opgenomen, beperken. Sectie syntaxis KIES volgende ( schuif 16).

Laten we eens kijken naar het doel van de parameters.

Trefwoorden ALLES | VERSCHILLEND. Bij het specificeren van een trefwoord ALLE de queryresultaten worden uitgevoerd alle rijen die voldoen aan de geformuleerde voorwaarden, waardoor identieke rijen in het resultaat kunnen worden opgenomen (de gelijkenis van rijen wordt bepaald op het niveau van het selectieresultaat, en niet op het niveau van de brongegevens). Parameter ALLE standaard gebruikt.

Als in een SELECT-query het trefwoord is opgegeven VERSCHILLEND , dan worden er niet meer dan één dubbele rij in het selectieresultaat opgenomen. Op deze manier is elke geretourneerde rij uniek. In dit geval wordt de uniciteit van een rij bepaald op het niveau van de rijen van het selectieresultaat, en niet op het niveau van de brongegevens. Als er twee kolommen in het selectieresultaat worden opgenomen, wordt de uniciteit bepaald door de waarden van beide kolommen. Afzonderlijk kunnen de waarden in de eerste en tweede kolom worden herhaald, maar de combinatie van waarden in beide kolommen moet uniek zijn. Soortgelijke regels gelden voor meer kolommen.

Overweeg het resultaat van het gebruik van zoekwoorden ALLES en VERSCHILLEN aan de hand van het voorbeeld van het selecteren van de kolommen Semester en Rapportage uit de tabel "Study_plan" van de database "Session" ( glijbaan 17 ). Laten we eerst een zoekopdracht uitvoeren waarin het trefwoord wordt gespecificeerd ALLE ... Op de dia wordt een fragment van het resultaat getoond. Laten we nu het trefwoord vervangen ALLES op DISTINCT ... In dit geval is het queryresultaat dat op de dia wordt weergegeven, rijen met dezelfde waarden in de kolommen die slechts één keer zijn opgenomen. Dit resultaat zou alleen de aanwezigheid van verschillende vormen van rapportage in semesters moeten aangeven.

ToetswoordTOP zn. Door het trefwoord TOP n te gebruiken, waarbij n een numerieke waarde is, kunt u niet alle regels in het resultaat selecteren, maar alleen de eerste n. In dit geval worden de eerste rijen van het selectieresultaat geselecteerd en niet de originele gegevens. Daarom kan de reeks rijen als resultaat van de selectie bij het specificeren van het TOP-trefwoord veranderen, afhankelijk van de sorteervolgorde. Als het verzoek de sectie gebruikt: WAAR , dan werkt het TOP-sleutelwoord op de reeks rijen die wordt geretourneerd na het toepassen van de booleaanse voorwaarde die is gedefinieerd in de sectie WAAR.

Laten we het gebruik van het TOP-zoekwoord (dia18 )

In dit voorbeeld, uit de tabel studenten van de sessiedatabase werden de eerste 5 rijen geselecteerd.

U kunt ook niet een vast aantal rijen selecteren, maar een bepaald percentage van alle rijen die aan de voorwaarde voldoen. Om dit te doen, moet u een trefwoord toevoegen PROCENT.

In totaal had de tafel 115 regels, dus 10% zal 11,5 regels zijn. Als resultaat worden 12 regels weergegeven.

Als het opgegeven aantal procent van rijen een niet-geheel getal is, rondt de server altijd naar boven af.

We bieden ook een voorbeeld dat het effect van sorteervolgorde op de geretourneerde rijenset laat zien (dia19 ).

Indien gespecificeerd samen met een zin BESTEL DOOR trefwoord MET STROPDAS het resultaat bevat ook rijen die overeenkomen met de waarde van de sorteerkolom met de laatst weergegeven queryrijen SELECTEER BOVEN n [PERCENT].

Gebruik van trefwoorden MET STROPDAS in het vorige voorbeeld zal het informatie verstrekken als antwoord op een verzoek om informatie over alle studenten in de eerste groep om (dia20 ).

Aanbod<Список_выбора>. Zin syntaxis<Список_выбора>De volgende (schuif 21).

Het "*"-symbool betekent dat het resultaat alle kolommen in de lijst met sectietabellen bevat VAN.

Als het resultaat niet alle kolommen hoeft te bevatten van alles tabellen, kunt u expliciet de naam opgeven van het object waaruit u alle kolommen moet selecteren (<Имя_таблицы>.* of<Tabel_alias>. *).

Een aparte tabelkolom wordt opgenomen in het selectieresultaat door expliciet de kolomnaam op te geven (parameter<Имя_столбца>). De kolom moet behoren tot een van de tabellen die zijn opgegeven in de FROM-clausule. Als een kolom met de opgegeven naam voorkomt in meer dan één gegevensbron die wordt vermeld in de FROM-clausule, moet u expliciet de naam opgeven van de gegevensbron waartoe de kolom behoort in de indeling<Имя_таблицы>.<Имя_столбца>Anders wordt er een foutmelding weergegeven.

Laten we bijvoorbeeld proberen gegevens te selecteren uit de kolom discipline-ID, die beschikbaar is in de tabellen Discipline en Academic_plan:

Er wordt een foutmelding geretourneerd die aangeeft dat de naam 'ID_Discipline' onjuist is gebruikt.

Dat wil zeggen, in dit geval moet u expliciet de naam opgeven van de gegevensbron waartoe de kolom behoort, bijvoorbeeld:

Kolommen die worden geretourneerd als resultaat van het uitvoeren van een query, kunnen een alias zijn. Met aliassen kunt u de naam van de bronkolom wijzigen of de kolom een ​​naam geven waarvan de inhoud wordt opgehaald als resultaat van het evalueren van een expressie. De aliasnaam wordt gespecificeerd met behulp van de parameter<Псевдоним_столбца>... Het AS-sleutelwoord is optioneel bij het opgeven van een alias. Over het algemeen vereist de server geen unieke kolomnamen in het ophaalresultaat, dus verschillende kolommen kunnen dezelfde namen of aliassen hebben.

Kolommen als resultaat van een selectie kunnen niet alleen een kopie zijn van een kolom van een van de originele tabellen, maar ook gevormd worden op basis van de berekening van een uitdrukking. Zo'n kolom in de keuzelijst wordt gespecificeerd met de constructie<Выражение> [ <Псевдоним_столбца>]. In dit geval kan de expressie constanten, kolomnamen, functies en hun combinaties bevatten. Bovendien kan een alias worden toegewezen aan een kolom die is gegenereerd door een uitdrukking te evalueren door deze op te geven met behulp van de parameter<Псевдоним_столбца>... Standaard heeft een berekende kolom geen naam.

Een andere manier om een ​​berekende kolom te vormen, is door de constructie met het gelijkteken te gebruiken:<Псевдоним_столбца> = <Выражение>... Het enige verschil tussen deze methode en de vorige is dat er een alias moet worden opgegeven. In het eenvoudigste geval is een expressie een kolomnaam, constante, variabele of functie. Als de kolomnaam als expressie wordt gebruikt, krijgen we een andere manier om een ​​alias voor de kolom op te geven.

Beschouw het volgende voorbeeld. Stel dat het voor de tabel "Studenten" nodig is om een ​​query op te bouwen die de achternaam, voornaam en patroniem in één kolom presenteert. Met behulp van de bewerking van aaneenschakeling (toevoeging) van tekenreeksen en de waarde van de volledige naam als de kolomalias, construeren we de query ( dia 22 ).

VAN clausule

De sectie gebruiken VAN de gegevensbronnen waarmee de query zal werken worden bepaald.

Sectie syntaxis VAN volgende ( dia23 )

Op het eerste gezicht ziet de structuur van de sectie er eenvoudig uit. Bij nader inzien blijkt het echter nogal ingewikkeld te zijn. In principe werken met een sectie VAN het is een door komma's gescheiden lijst van de gegevensbronnen waarmee de query zou moeten werken. De feitelijke gegevensbron wordt aangegeven met een zin<Источник_данных>, waarvan de syntaxis op de dia wordt weergegeven.

De parameter gebruiken:<имя_таблицы>de naam van een gewone tafel wordt aangegeven. Parameter<псевдоним_таблицы>wordt gebruikt om een ​​alias aan de tabel toe te wijzen, waaronder er in de query naar moet worden verwezen. Vaak worden tabelaliassen gebruikt om de verwijzing naar de gewenste tabel handiger en korter te maken. Als uw zoekopdracht bijvoorbeeld vaak de tabelnaam "Lesson_plan" vermeldt, kunt u een alias gebruiken, zoals tpl ... Een trefwoord opgeven ALS is optioneel.

WHERE-clausule

WHERE-clausule is bedoeld om verticale filters op te leggen aan de gegevens die door het verzoek worden verwerkt. Met andere woorden, met behulp van de sectie WAAR u kunt de reeks rijen in het selectieresultaat verfijnen. Hiervoor wordt een logische voorwaarde opgegeven, die bepaalt of de rij al dan niet op aanvraag in de selectie wordt opgenomen. De tekenreeks wordt alleen in het selectieresultaat opgenomen als de booleaanse expressie een waarde retourneert WAAR.

Over het algemeen bevat een Booleaanse expressie de namen van de kolommen in de tabellen waarop de query werkt. Voor elke rij die door de query wordt geretourneerd, wordt een Booleaanse expressie geëvalueerd door de kolomnamen te vervangen door de specifieke waarden van de overeenkomstige rij. Als het evalueren van de expressie een waarde retourneert WAAR , dat wil zeggen, de expressie is waar, dan wordt de tekenreeks opgenomen in het uiteindelijke resultaat. Anders wordt de tekenreeks niet opgenomen in het resultaat. Indien nodig kan meer dan één booleaanse expressie worden gespecificeerd door ze samen te voegen met booleaanse operatoren OF en EN.

Overweeg de syntaxis van de sectie WAAR ( schuif 24).

In aanbouw<условие_отбора>u kunt elke booleaanse voorwaarde definiëren, waarna de rij in het resultaat wordt opgenomen.

Het voorbeeld op de dia demonstreert de logica van de sectie. WAAR ... Hiermee wordt een lijst geretourneerd van alle studenten die vóór 2000 bij de faculteit zijn binnengekomen.

Naast vergelijkingsbewerkingen (=,>,<, >=, <=) и логических операторов OF, EN, NIET bij het vormen van een selectievoorwaarde kunnen aanvullende logische operators worden gebruikt om de mogelijkheden voor databeheer uit te breiden. Laten we eens kijken naar enkele van deze operators.

OperatorTUSSEN. Deze operator kan worden gebruikt om te bepalen of de waarde van een opgegeven waarde binnen een bepaald bereik ligt. De syntaxis voor het gebruik van de operator is als volgt ( schuif 25 ).

<Выражение>specificeert de waarde die moet worden gecontroleerd, en de argumenten<начало_диапазона>en<конец_диапазона>de mogelijke grenzen van zijn verandering bepalen. Gebruik door operator NIET samen met de operator TUSSEN stelt u in staat het bereik in te stellen waarbuiten de aangevinkte waarde kan veranderen.

Wanneer uitgevoerd, de operator TUSSEN wordt omgezet in een constructie met twee vergelijkingen.

Laten we een voorbeeld bekijken van het gebruik van de operator TUSSEN ( schuif 25). Als gevolg van het volgen van de instructies ontvangen we een lijst met curriculumdisciplines met het aantal uren van 50 tot 100.

OperatorIN. Met de operator kunt u een reeks mogelijke waarden opgeven voor de aangevinkte waarde in de selectievoorwaarde. De syntaxis voor het gebruik van de operator is als volgt (glijbaan 26).

<Выражение>specificeert de waarde die moet worden gecontroleerd, en de argumenten<выражение1>,…, <выражение N > specificeer een door komma's gescheiden lijst met waarden die de aangevinkte waarde kan aannemen. trefwoord NIET voert logische ontkenning uit.

Overweeg een voorbeeld van het gebruik van de operator IN ( glijbaan 26). Als resultaat van het volgen van de instructies, krijgen we de lijnen van het curriculum voor de disciplines "Engels" en "Fysieke cultuur".

OperatorLEUK VINDEN. De operator gebruiken LEUK VINDEN u kunt een uitdrukking van een tekentype vergelijken met een gespecificeerd patroon. De syntaxis van de operator is als volgt (schuif 27).

<Образец>specificeert een tekenpatroon ter vergelijking en staat tussen aanhalingstekens. De sjabloon kan scheidingstekens bevatten. De volgende scheidingstekens zijn toegestaan ​​(schuif 27):

% - kan in een symbolische uitdrukking worden vervangen door een willekeurig aantal willekeurige tekens;

_ - kan in een symbolische uitdrukking worden vervangen door elk, maar slechts één symbool;

[ abc0-9] - kan in een symbolische uitdrukking worden vervangen door slechts één teken uit de reeks tussen vierkante haken (een koppelteken wordt gebruikt om een ​​bereik aan te geven);

[^ abc0-9] - kan worden vervangen in een symbolische uitdrukking met slechts één teken, behalve die tussen vierkante haken (een koppelteken wordt gebruikt om een ​​bereik aan te geven).

Laten we een voorbeeld bekijken van het gebruik van de operator (schuif 27). Door een voorbeeld te gebruiken voor de waarde van de kolom Positie konden we in dit geval rijen selecteren met de waarden "St.prep." en "Prof"

HoofdstukVOLGORDEDOOR

BESTELLEN DOOR sectie is voor het ordenen van de dataset die wordt geretourneerd nadat een query is uitgevoerd. Volledige sectiesyntaxis BESTEL DOOR volgende ( schuif 28).

Parameter<условие_сортировки>vereist het specificeren van een expressie op basis waarvan het sorteren van strings zal worden uitgevoerd. In het eenvoudigste geval is deze expressie de kolomnaam van een van de querygegevensbronnen.

Opgemerkt moet worden dat de uitdrukking op basis waarvan de rijen worden gesorteerd, ook kolommen kan gebruiken die niet zijn opgegeven in de sectie SELECT, dat wil zeggen dat ze niet worden opgenomen in het selectieresultaat.

BESTELLEN DOOR sectie staat het gebruik van de ASC- en DESC-sleutelwoorden toe, die kunnen worden gebruikt om expliciet aan te geven hoe strings moeten worden geordend. Als u het ASC-trefwoord opgeeft, worden de gegevens in oplopende volgorde gesorteerd. Als u de gegevens in aflopende volgorde wilt sorteren, geeft u het trefwoord DESC op. Oplopend sorteren wordt standaard gebruikt.

Gegevens kunnen worden gesorteerd op meerdere kolommen. Om dit te doen, moet u de kolomnamen in de sorteervolgorde gescheiden door komma's invoeren. De gegevens worden eerst gesorteerd op de kolom die als eerste in de sectie wordt genoemd BESTEL DOOR ... Als er vervolgens veel rijen met dezelfde waarde in de eerste kolom staan, wordt er een extra sortering op die rijen uitgevoerd door de tweede kolom (binnen een groep met dezelfde waarde in de eerste kolom), enzovoort.

Laten we een voorbeeld geven van sorteren op twee kolommen (schuif 28).

UNION-sectie

UNION-sectie dient om selectieresultaten te combineren die worden geretourneerd door twee of meer zoekopdrachten.

Overweeg de syntaxis van de sectie UNIE ( glijbaan 29).

Als u een samenvoegbewerking wilt toepassen op queryresultaten, moeten ze aan de volgende vereisten voldoen:

query's moeten dezelfde reeks kolommen retourneren (en het is noodzakelijk om dezelfde volgorde van kolommen in elk van de query's te garanderen);

de gegevenstypen van de overeenkomstige kolommen van de tweede en volgende zoekopdrachten moeten impliciete conversie ondersteunen of overeenkomen met het gegevenstype van de kolommen van de eerste zoekopdracht;

geen van de resultaten kan worden gesorteerd met behulp van de ORDER BY-component (het algemene resultaat kan echter worden gesorteerd zoals hieronder weergegeven)

Een trefwoord opgeven ALLE instrueert om dubbele regels in het resultaat op te nemen. Dubbele regels worden standaard niet in het resultaat opgenomen.

Laten we de toepassing van de sectie demonstreren UNIE ... Beschouw de tabellen "Personeel_Compositie" en "Studenten" en probeer bijvoorbeeld een algemene lijst op te bouwen van zowel studenten als docenten, wiens telefoonnummer begint met 120. Laten we de resulterende lijst alfabetisch sorteren door een zin toe te voegen BESTEL DOOR ( glijbaan 29).

Wanneer u tabellen samenvoegt, krijgen de kolommen in de resulterende gegevensset altijd dezelfde naam als in de eerste query die moet worden samengevoegd.

1 stem

Welkom op mijn blogsite. Vandaag zullen we het hebben over sql-query's voor beginners. Sommige webmasters hebben misschien een vraag. Waarom SQL leren? Kun je het niet?

Het blijkt dat dit niet genoeg zal zijn om een ​​professioneel internetproject te creëren. Sql wordt gebruikt om met databases te werken en applicaties voor WordPress te maken. Laten we eens nader bekijken hoe u query's kunt gebruiken.

Wat het is

SQL is een gestructureerde zoektaal. Ontworpen om het type gegevens te definiëren, er toegang toe te verlenen en informatie in korte tijd te verwerken. Het beschrijft de componenten of een soort van resultaten die u op het internetproject wilt zien.

In eenvoudige bewoordingen stelt deze programmeertaal u in staat informatie in de database toe te voegen, te wijzigen, te zoeken en weer te geven. De populariteit van mysql is te danken aan het feit dat het wordt gebruikt om dynamische internetprojecten te maken op basis van een database. Daarom moet je deze taal leren om een ​​functionele blog te ontwikkelen.

Wat kan doen?

Sql-taal maakt het volgende mogelijk:

  • tabellen maken;
  • wijzigen ontvangen en opslaan van verschillende gegevens;
  • informatie combineren in blokken;
  • gegevens beschermen;
  • verzoeken in toegang maken.

Belangrijk! Nadat u sql hebt behandeld, kunt u toepassingen voor WordPress van elke complexiteit schrijven.

Welke structuur?

De database bestaat uit tabellen die kunnen worden weergegeven als een Excel-bestand.

Ze heeft een naam, kolommen en een rij met wat informatie. U kunt dergelijke tabellen maken met behulp van sql-query's.

Wat je moet weten


Hoogtepunten bij het leren van Sql

Zoals hierboven vermeld, worden query's gebruikt om nieuwe informatie te verwerken en in te voeren in een database die uit tabellen bestaat. Elk van zijn regels is een afzonderlijk item. Laten we dus een database maken. Schrijf hiervoor het commando:

Database 'bazaname' maken

Schrijf tussen aanhalingstekens de naam van de database in het Latijn. Probeer een betekenisvolle naam voor haar te bedenken. Maak geen basis zoals "111", "www" en dergelijke.

Installeer na het maken van de database:

STEL NAMEN IN 'utf-8'

Dit is nodig om de inhoud op de site correct weer te geven.

Nu maken we een tabel:

MAAK TABEL 'bazaname'. 'Tafel' (

id INT (8) NIET NULL AUTO_INCREMENT PRIMAIRE SLEUTEL,

log VARCHAR (10),

pas VARCHAR (10),

datum DATUM

Op de tweede regel hebben we drie attributen geschreven. Laten we eens kijken wat ze betekenen:

  • Het NOT NULL attribuut betekent dat de cel niet leeg zal zijn (dit veld is verplicht);
  • AUTO_INCREMENT waarde - automatisch aanvullen;
  • PRIMAIRE SLEUTEL is de primaire sleutel.

Informatie toevoegen

Gebruik de INSERT-instructie om de velden van de gemaakte tabel met waarden te vullen. We schrijven de volgende regels code:

INVOEREN IN 'tabel'

(login, pas, datum) WAARDEN

(‘Vasa’, ’87654321 ’,‘ 2017-06-21 18:38:44 ’);

Tussen haakjes geven we de namen van de kolommen aan en in de volgende - de waarden.

Belangrijk! Let op de volgorde van kolomnamen en betekenissen.

Informatie bijwerken

Gebruik hiervoor de opdracht UPDATE. Laten we eens kijken hoe we het wachtwoord voor een specifieke gebruiker kunnen wijzigen. We schrijven de volgende regels code:

UPDATE 'tabel' SET pass = '12345678' WHERE id = '1'

Wijzig nu het wachtwoord '12345678'. Wijzigingen worden aangebracht op de regel met "id" = 1. Als u het WHERE-commando niet schrijft, veranderen alle regels, niet een specifieke.

Ik raad je aan het boek te kopen " SQL voor Dummies ". Met zijn hulp kunt u stap voor stap professioneel met de database werken. Alle informatie is gestructureerd van eenvoudig tot complex en wordt goed ontvangen.

Hoe een invoer te verwijderen

Als je iets verkeerd hebt geschreven, corrigeer het dan met het DELETE-commando. Werkt hetzelfde als UPDATE. We schrijven de volgende code:

VERWIJDER UIT 'tabel' WHERE id = '1'

Informatie ophalen

Gebruik het SELECT-commando om waarden uit de database op te halen. We schrijven de volgende code:

SELECTEER * VAN 'tabel' WHERE id = '1'

In dit voorbeeld selecteren we alle beschikbare velden in de tabel. Dit gebeurt als u een asterisk "*" in de opdracht schrijft. Als u een voorbeeldwaarde moet selecteren, schrijven we als volgt:

SELECT log, pass FROM tabel WHERE id = '1'

Opgemerkt moet worden dat het vermogen om met databases te werken niet voldoende zal zijn. Om een ​​professioneel internetproject te maken, moet u leren hoe u gegevens uit de database aan de pagina's kunt toevoegen. Om dit te doen, moet u vertrouwd raken met de php-webprogrammeertaal. Dit zal je helpen klassikale cursus door Mikhail Rusakov .


Een tafel laten vallen

Komt voor bij een DROP-verzoek. Schrijf hiervoor de volgende regels:

DROP TABLE tafel;

Een record uit een tabel uitvoeren volgens een specifieke voorwaarde

Overweeg een code als deze:

SELECT id, land, stad FROM tabel WAAR mensen> 150000000

Het zal de records weergeven van landen met meer dan honderdvijftig miljoen inwoners.

Unie

Het is mogelijk om meerdere tabellen aan elkaar te koppelen met Join. Hoe het werkt, bekijk deze video in meer detail:

PHP en MySQL

Ik wil nogmaals benadrukken dat het heel gewoon is om navraag te doen bij het maken van een internetproject. Volg deze procedure om ze in php-documenten te gebruiken:

  • We maken verbinding met de database met behulp van de opdracht mysql_connect ();
  • Gebruik mysql_select_db () om de vereiste database te selecteren;
  • We verwerken het verzoek met behulp van mysql_fetch_array ();
  • We sluiten de verbinding met het commando mysql_close ().

Belangrijk! Werken met een database is niet moeilijk. Het belangrijkste is om het verzoek correct te schrijven.

Beginnende webmasters zullen nadenken. Wat te lezen over dit onderwerp? Ik zou het boek van Martin Graber willen aanbevelen” SQL voor gewone stervelingen ". Het is zo geschreven dat alles voor beginners duidelijk zal zijn. Gebruik het als naslagwerk.

Maar dit is theorie. Hoe is de situatie in de praktijk? In werkelijkheid moet een internetproject niet alleen worden gemaakt, maar ook naar de TOP van Google en Yandex worden gebracht. De videocursus “ Website creatie en promotie ».


Video-instructie

Heeft u nog vragen? Bekijk de online video in meer detail.

Uitgang:

Dus het schrijven van SQL-query's is niet zo moeilijk als het lijkt, maar elke webmaster moet het doen. Dit zal de hierboven beschreven videocursussen helpen. Abboneer op mijn VKontakte-groep als eerste op de hoogte zijn van de opkomst van nieuwe interessante informatie.