Een SELECT-query gebruiken om de gewenste gegevens te selecteren. Doel van de SQL-taal

SQL is een gestructureerde querytaal. SQL bestaat niet zonder databases - je kunt er geen programma's in schrijven, en in die zin is het geen programmeertaal zoals PHP, maar als je met een specifiek DBMS te maken hebt, kun je niet meer zonder kennis van SQL. U kunt er eenvoudige queries op schrijven, of u kunt grote transacties uitvoeren die uit meerdere complexe queries bestaan. Een SQL-query is een soort opdracht voor een database. Een dergelijk commando kan verzoeken om de teruggave van informatie die aan specifieke criteria voldoet, of instructies geven om records te verwijderen, enz. Het SQL-commando is eenvoudig touwtje, Bijvoorbeeld:

SELECTEER * VAN Personeel WAAR afdeling

SQL-query's komen meestal dicht in de buurt van een eenvoudige uitdrukking in het Engels. Het bovenstaande commando kan als volgt in het Russisch worden vertaald

SELECTEER ALLES VAN Personeel WAAR clwjiertme"

Het is een volkomen begrijpelijk commando, het is alleen jammer dat het uitsluitend in het Engels is geschreven. Als gevolg van het uitvoeren van een dergelijke query retourneert het DBMS alle records uit de tabel Staff waarin het veld depart* Mit_id gelijk is aan drie. In ons voorbeeld selecteert deze zoekopdracht eigenlijk alleen programmeurs uit het gehele werknemersbestand.

Als u nog niet eerder met een DBMS heeft gewerkt, heeft u wellicht een redelijke vraag: waar en hoe kunt u presteren dit verzoek? Er zijn drie manieren om SQL-query's uit te voeren.

1. Interactieve omgeving voor interactie met het DBMS. Voor de meeste DBMS-servers zijn er clientprogramma's (ingebouwd of geleverd door derden), in de werkomgeving waarvan u SQL-query's kunt schrijven, uitvoeren en het resultaat kunt krijgen. Dergelijke tools worden doorgaans gebruikt door databasebeheerders en zijn niet direct gerelateerd aan PHP-programmering. Een voorbeeld van een clientprogramma om met MySQL te werken is het MySQL Administrator-programma (http: /www.mysgl.coin/product-s/administratoT/) of het zeer populaire PHP-systeem phpMyAdmin (http: / /www.phpmyadi'ln. r»et /itummjiage/index.php). Om te beginnen zal het voldoende zijn geïnstalleerde distributie, die een console-interface heeft. Op Linux is het nodig vanaf opdrachtregel typ de mysql-opdracht om een ​​venster te openen waarin u wordt gevraagd SQL-query's in te voeren, en in Windows om dezelfde interface te starten die u moet uitvoeren mysql-bestand. exe uit de bin-map.

2. Statische SQL-query's. Normaal gesproken worden dergelijke zoekopdrachten geschreven in opgeslagen procedures in de databases zelf of hardgecodeerd in de applicaties zelf. Een statische SQL-query is vooraf gedefinieerd en verandert alleen als het programma of de opgeslagen procedurecode handmatig wordt herschreven. Vanuit PHP wordt zo'n SQL-query uitgevoerd met behulp van speciale functies, die later zullen worden besproken.

3. Dynamische SQL-query's. NAAR deze soort Dit zijn onder meer query's die niet volledig kunnen worden gedefinieerd bij het schrijven van een applicatie. i" bijvoorbeeld, bij het schrijven van een programma om een ​​lijst van werknemers te verkrijgen" in verschillende divisies van de onderneming, weet de programmeur niet, ci "> over de divisies in het bedrijf en welke werknemers daarin zullen worden opgenomen i". Natuurlijk Deze gegevens kunnen strikt in het programma worden geschreven, maar bij de allereerste verandering in de structuur van het bedrijf kan het programma worden weggegooid of moet het worden herschreven. Met dynamische query's kunt u programma's maken die flexibel zijn bij veranderingen data. In PHP worden dergelijke queries uitgevoerd door bijna dezelfde functies als statische queries, alleen zijn ze anders. '^v'> Het is niet mogelijk om bepaalde parameters door te geven.

Als samenvatting van de drie hierboven beschreven punten kunnen we zeggen dat SQL-query's worden uitgevoerd vanuit speciale beheerprogramma's of op verschillende manieren vanuit PHP-scripts.

Omdat een DBMS veel problemen oplost, wordt SQL ook gedwongen een multifunctionele taal te zijn. Er zijn verschillende soorten bewerkingen mogelijk< \ ществлять с помощью SQL.

1. Definitie van de databasestructuur. Dit type omvat query's waarmee tabellen en indexen worden gemaakt en gewijzigd. Dit zijn meestal CRE-opdrachten; “E TA’ LE, ALI’R TA’ LE, ‘ ” ’.TE INDEX Enz.

2. Gegevensmanipulatie. Dit type omvat query's om gegevens in tabellen in te voegen (verplaatsen), verwijderen of wijzigen. Dit zijn de drie belangrijkste opdrachten: INSERT. VERWIJDEREN EN UPDATEN.

3. Gegevensselectie Dit omvat slechts één SELECT-commando. Het brengt geen wijzigingen aan in de gegevens zelf, maar stelt u in staat deze uit de database op te halen. Hoewel er slechts één commando wordt gebruikt om gegevens op te halen, is het zeer krachtig en wordt het vaak in toepassingen gebruikt.

4. DBMS-serverbeheer. Dit type omvat voornamelijk query's om gebruikers en hun toegangsrechten te beheren (bijvoorbeeld de opdracht GRANT).

Goede kennis van SQL vergemakkelijkt het werk van een programmeur bij het werken met een database enorm. Applicaties kunnen klein zijn, maar hebben alleen een geweldige functionaliteit omdat SQL veel taken op zich neemt.

Zoals op elk ander IT-gebied zijn er standaarden in SQL - dit zijn ANSI SQL. De afkorting ANSI staat voor Amrican National Standards Institute. Maar niet in de laatste plaats vanwege de verschillen in de functionaliteit van de SQL DBMS'en zelf

DBMS'en verschillen nog steeds van elkaar. Op dit moment heeft vrijwel elk DBMS zijn eigen dialect, dat meestal niet veel afwijkt van de algemene standaard, maar zijn eigen kenmerken heeft. De PL/SQL-taal is bijvoorbeeld compatibel met Oracle en PostgreSQL, en T-SQL wordt gebruikt om met MS SQL Server te werken.

Voor het latere werk met databases raden wij u aan onmiddellijk de standaard te bestuderen waarmee u in de toekomst wilt gaan werken. Voor de meeste webontwikkelaars op dit moment is de functionaliteit van het MySQL DBMS voldoende (en het kan gratis worden gebruikt), dus in dit boek zullen alle voorbeelden met MySQL dienovereenkomstig worden gegeven in het dialect van dit DBMS. Documentatie over de querytaal voor MySQL kunt u vinden op www.mysql.com.

Klantprogramma's

TFTP-protocol

TFTP- Dezelfde FTP-protocol, maar bovenop het UDP-protocol (dat wil zeggen een protocol zonder gegarandeerde levering). Kan gebruikt worden lokaal netwerk, waarbij de transmissiesnelheid belangrijker is. In de praktijk wordt er zelden gebruik van gemaakt.

FTP- het programma wordt gestart vanaf de opdrachtregel.

Windows Commander- kan werken als een FTP-client. Hiermee kunt u op dezelfde manier met externe mappen werken als met lokale mappen.

NetVampire - Een gespecialiseerde FTP-client waarmee u kunt downloaden grote bestanden en downloaden via slechte kanalen.

SQL (Structured Query Language) is een gestructureerde querytaal voor relationele databases. In deze taal kunt u uitdrukkingen (query's) formuleren die de benodigde gegevens ophalen, wijzigen, tabellen maken en hun structuur wijzigen, toegangsrechten tot gegevens bepalen en nog veel meer.

Query's worden uitgevoerd door een databasebeheersysteem (DBMS). Bent u geen specialist in databaseontwikkeling en -beheer, dan bent u wellicht een databasegebruiker die gegevens in bestaande tabellen bekijkt en/of wijzigt. In veel gevallen worden deze en andere databasebewerkingen uitgevoerd met behulp van speciale toepassingen, ter beschikking van de gebruiker gebruiksvriendelijke interface. Meestal worden applicaties geschreven in speciale programmeertalen (C, Pascal, Visuele basis enz.) en worden meestal gemaakt met behulp van geïntegreerde ontwikkelomgevingen, bijvoorbeeld Delphi, C++ Builder, enz. Toegang tot de database kan echter ook zonder deze worden verkregen - met alleen SQL. Er moet ook worden opgemerkt dat gespecialiseerde toepassingen gewoonlijk SQL-codefragmenten gebruiken bij de toegang tot de database.

SQL wordt dus veel gebruikt standaard taal werken met relationele databases. De syntaxis van deze taal is eenvoudig genoeg zodat gewone gebruikers, en niet alleen programmeurs, deze kunnen gebruiken. Momenteel moet de gemiddelde computergebruiker beschikken over: ten minste, een teksteditor (bijvoorbeeld Microsoft Word) en spreadsheets (bijvoorbeeld MicrosoftExcel). Het is goed als hij ook weet hoe hij databases moet gebruiken. Er zijn veel verschillende DBMS'en, en universele remedie Er is maar één manier om met databases te werken: SQL. Kennis van SQL, althans de basis ervan, en het vermogen om het te gebruiken om gegevens te zoeken en te analyseren, is een fundamenteel onderdeel van computerkennis, zelfs voor gewone gebruikers.

De eerste ontwikkelingen van relationele databasebeheersystemen ( relationele DBMS) werden begin jaren zeventig bij IBM voltooid. Tegelijkertijd werd er een datataal gecreëerd om in deze systemen te werken. De experimentele versie van deze taal heette SEQUEL - uit het Engels. Gestructureerde Engelse QUErytaal (gestructureerde Engelse querytaal). Echter officiële versie heette kortweg SQL (Structured Query Language). Om precies te zijn, SQL is een data-subtaal, omdat het DBMS andere taalhulpmiddelen bevat.

In 1981 bracht IBM het relationele DBMS SQL/DS uit. Tegen die tijd, Relatie Software Inc. (tegenwoordig is het Oracle Corporation) heeft zijn relationele DBMS al uitgebracht. Deze producten werden meteen de standaard voor databasebeheersystemen. Deze producten omvatten ook SQL, dat de de facto standaard werd voor data-subtalen. Fabrikanten van andere DBMS'en hebben hun eigen versies van SQL uitgebracht. Ze omvatten meer dan alleen de kernmogelijkheden van IBM-producten. Om enig voordeel te behalen voor “hun” DBMS, introduceerden fabrikanten enkele SQL-extensies. Tegelijkertijd werd begonnen met het creëren van een algemeen aanvaarde SQL-standaard.

In 1986 bracht het American National Standards Institute (ANSI) de officiële standaard SQL-86 uit, die in 1989 werd bijgewerkt en omgedoopt tot SQL-89. In 1992 kreeg deze standaard de naam SQL-92 (ISO/IEC 9075:1992). De nieuwste versie van de SQL-standaard is SQL:2003 (ISO/IEC 9075X:2003).

Elke implementatie van SQL in een specifiek DBMS wijkt enigszins af van de standaard waaraan de fabrikant verklaart te voldoen. Veel DBMS’en (bijvoorbeeld Microsoft-toegang 2003, PostgreSQL 7.3) ondersteunen SQL-92 niet volledig, maar alleen met een bepaald niveau van compliance. Daarnaast ondersteunen ze ook elementen die niet in de standaard zijn opgenomen. DBMS-ontwikkelaars streven er echter naar om ervoor te zorgen dat nieuwe versies van hun producten zo goed mogelijk voldoen aan de SQL-standaard.

Aandacht. In deze zelfstudie worden SQL2003-elementen beschreven, die niet allemaal worden ondersteund door bestaande DBMS'en. Voordat u ze in de praktijk brengt, moet u ervoor zorgen dat ze in uw DBMS werken. U kunt hierover informatie krijgen van technische documentatie. De meeste van de beschreven elementen komen overeen of meer eerdere versies SQL, in het bijzonder het veelgebruikte SQL-92.

SQL is opgevat als een eenvoudige zoektaal voor een relationele database, die dicht bij de natuurlijke (meer precies, Engelse) taal ligt. Er werd aangenomen dat de vorm dichter bij de natuurlijke taal zou komen SQL-tool, beschikbaar voor wijdverbreid gebruik gewone gebruikers databases, en niet alleen programmeurs. Aanvankelijk bevatte SQL geen van de besturingsstructuren die in conventionele programmeertalen voorkomen. Verzoeken, waarvan de syntaxis vrij eenvoudig is, werden achtereenvolgens rechtstreeks vanaf de console ingevoerd en in dezelfde volgorde uitgevoerd. SQL is echter nooit een hulpmiddel geworden voor bankmedewerkers, verkopers van luchtvaartmaatschappijen, treinkaartjes, economen en andere werknemers van verschillende bedrijven die informatie gebruiken die is opgeslagen in databases. Voor hen eenvoudige SQL bleek te complex en onhandig, ondanks de nabijheid van de natuurlijke taal van vragen.

In de praktijk wordt er meestal met een database gewerkt via applicaties die door programmeurs zijn geschreven in proceduretalen, bijvoorbeeld C, Visual Basic, Pascal, Java, enz. Applicaties worden vaak gemaakt in speciale visuele ontwikkelomgevingen, zoals Delphi, Microsoft Access, Visual dBase, etc. n. Tegelijkertijd hoeft de applicatie-ontwikkelaar praktisch geen programmacodes te schrijven, omdat het ontwikkelsysteem dat voor hem doet. Hoe dan ook: meewerken programmacode blijkt minimaal te zijn. Deze toepassingen zijn handig GUI, waardoor de gebruiker niet wordt gedwongen om rechtstreeks query's in SQL in te voeren. De applicatie doet dit in plaats daarvan. De toepassing kan echter wel of niet SQL gebruiken om toegang te krijgen tot de database. SQL is niet de enige, hoewel het een zeer effectief middel is om gegevens op te halen, toe te voegen en te wijzigen, en als het mogelijk is om het in een applicatie te gebruiken, dan moet dat gedaan worden.

Relationele databases kunnen onafhankelijk bestaan ​​van de applicaties die de gebruikersinterface bieden. Als er om de een of andere reden zo'n interface niet bestaat, is de database toegankelijk via SQL, via de console of een applicatie waarmee u verbinding kunt maken met de database, een SQL-query kunt invoeren en verzenden (bijvoorbeeld Borland SQL Explorer ).

De SQL-taal wordt beschouwd als een declaratieve (beschrijvende) taal, in tegenstelling tot de talen waarin programma's worden geschreven. Dit betekent dat SQL-expressies beschrijven wat er moet gebeuren, en niet hoe.

Als u bijvoorbeeld informatie over de namen en functies van medewerkers van afdeling 102 uit de medewerkerstabel wilt selecteren, voert u gewoon de volgende query uit:

SELECT Achternaam, Functie FROM Werknemers WHERE Afdeling=102;

In het Russisch deze uitdrukking klinkt als volgt:

KIEZEN Achternaam, functie VAN Medewerkers MITS Afdeling = 102;

De waarde wijzigen " Ivanov "op" Petrov "kolom Achternaam , voer gewoon de volgende query uit:

UPDATE Medewerkers SET Achternaam = "Petrov" WHERE Achternaam = "Ivanov";

In het Russisch ziet deze uitdrukking er als volgt uit:

UPDATE Medewerkers GEÏNSTALLEERD Achternaam GELIJKWAARDIG " Petrov " WAAR Achternaam = "Ivanov" ;

U hoeft de acties die het DBMS moet uitvoeren om de in de query opgegeven gegevens uit de tabel te selecteren, niet in detail te beschrijven. Je beschrijft eenvoudig wat je wilt ontvangen. Als resultaat van het uitvoeren van de query retourneert het DBMS een tabel met de door u opgevraagde gegevens. Als er geen gegevens in de database zijn die overeenkomen met het verzoek, wordt er een lege tabel geretourneerd.

Recente versies van SQL ondersteunen echter computationele besturingsinstructies die eigen zijn aan procedurele besturingstalen (voorwaardelijke vertakkings- en lusinstructies). Daarom is SQL nu geen puur declaratieve taal.

Naast het selecteren, toevoegen, wijzigen en verwijderen van gegevens uit tabellen, kunt u met SQL alles doen noodzakelijke acties over het maken, wijzigen en beveiligen van databases. Al deze mogelijkheden zijn verdeeld over drie SQL-componenten:

· DML (Datamanipulatietaal - taal voor datamanipulatie ) is bedoeld ter ondersteuning van de database: selectie ( SELECTEER ), toevoegingen ( INVOEGEN ), wijzigingen ( UPDATE ) en verwijdering ( VERWIJDEREN ) gegevens uit tabellen. Deze operatoren (opdrachten) kunnen expressies bevatten, inclusief berekende, maar ook subquery's - query's die in een andere query zijn opgenomen. Over het algemeen kan een query-expressie zo complex zijn dat u niet meteen kunt zien wat deze doet. Een complexe vraag kan echter mentaal worden opgesplitst in delen die gemakkelijker te analyseren zijn. Op dezelfde manier worden complexe query's gemaakt op basis van relatief eenvoudig te begrijpen uitdrukkingen (subquery's).

· DDL (Datadefinitietaal - taal voor gegevensdefinitie ) is ontworpen om tabellen en de gehele database aan te maken, te wijzigen en te verwijderen. Voorbeelden van uitspraken in DDL zijn MAAK TABEL (Tabel maken)," CREËER UITZICHT (weergave maken), CREËER SHEMA (maak een diagram), WIJZIG TABEL (verander tabel), DRUPPEL (verwijderen), enz.

· DCL (Datacontroletaal - taal voor gegevensbeheer ) is ontworpen om de database te beschermen tegen verschillende soorten schade. Het DBMS biedt automatisch enige gegevensbescherming. In sommige gevallen moeten echter aanvullende maatregelen van de DCL worden overwogen.

Taal SQL

Dus we zijn binnen algemene schets kennis gemaakt met de basisconcepten van de databasetheorie, MySQL geïnstalleerd en geconfigureerd voor gebruik. Dit is het moment om te leren hoe u gegevens die in databases zijn opgeslagen, kunt manipuleren. Hiervoor hebben we nodig SQL – gestructureerde zoektaal. Deze taal maakt het mogelijk om informatie die is opgeslagen in databases aan te maken, te bewerken en te verwijderen, nieuwe databases te creëren en nog veel meer. SQL is een ANSI (American National Standards Institute) en ISO (International Organization for Standardization) standaard.

Een beetje geschiedenis

Eerste internationale taalstandaard SQL werd in 1989 aangenomen en wordt vaak genoemd SQL/89 . Een van de nadelen van deze standaard is het meest opvallende dat deze veel belangrijke eigenschappen specificeert als implementatiegedefinieerd. Daarom waren er veel verschillen in de implementaties van de taal door verschillende fabrikanten. Daarnaast zijn er klachten over het ontbreken van verwijzingen naar praktische aspecten

taal, zoals de integratie ervan in de programmeertaal C. SQL Volgende internationale taalstandaard SQL/92 werd eind 1992 aangenomen en werd bekend als SQL/89 . Het bleek veel nauwkeuriger en vollediger te zijn dan SQL , hoewel het niet zonder tekortkomingen was. Momenteel implementeren de meeste systemen deze standaard vrijwel volledig. Zoals u weet is de vooruitgang echter niet te stoppen en in 1999 verscheen er een nieuwe norm :1999, ook bekend als SQL3 SQL . SQL3 wordt gekarakteriseerd als "objectgeoriënteerd" SQL” en is de basis van verschillende object-relationele databasebeheersystemen (bijvoorbeeld Oracle's ORACLE8, Informix's Universal Server en IBM's DB2 Universal Database). Deze standaard is niet zomaar een fusie SQL -92 en objecttechnologie. Het bevat een aantal uitbreidingen op het traditionele, en het document zelf is zo ontworpen dat er meer wordt bereikt

efficiënt werk op het gebied van standaardisatie in de toekomst. Als we het over MySQL hebben, dan komt het overeen instapniveau SQL92 bevat verschillende uitbreidingen op deze standaard en streeft ernaar

volledige ondersteuning SQL ANSI SQL99-standaard, maar zonder concessies te doen aan de snelheid en kwaliteit van de code.

Vervolgens wordt gesproken over de basisprincipes van de taal SQL

, zullen we ons houden aan de implementatie ervan in het MySQL DBMS.

  1. Basistaaloperatoren
  2. De functies van elk DBMS omvatten:
  3. het aanmaken, verwijderen, wijzigen van een database (DB);
  4. toevoegen, wijzigen, verwijderen, gebruikersrechten toekennen;

het invoeren, verwijderen en wijzigen van gegevens in de database (tabellen en records);

gegevens ophalen uit de database. SQL Alleen DBMS-beheerders of bevoorrechte gebruikers hebben toegang tot de eerste twee functies. Laten we eens kijken hoe de laatste twee problemen worden opgelost (in feite zijn er zeven problemen)., Voordat u iets met de gegevens doet, moet u tabellen maken waarin deze gegevens worden opgeslagen, leren hoe u de structuur van deze tabellen kunt wijzigen en deze indien nodig verwijderen. Voor dit doel in taal er zijn exploitanten MAAK TABEL.

WIJZIG TABEL

En DRUPTAFEL

Met behulp van de MySql-specifieke SHOW-opdracht kunt u bekijken bestaande bases gegevens, tabellen in een database en velden in een tabel.

Toon alle databases:

mysql>TOON databases;

Maak de boekendatabase actueel en toon alle tabellen daarin:

mysql>gebruik boek; mysql>tabellen weergeven;

Toon alle kolommen in de tabel Personen:

mysql> toon kolommen van personen;

DROP TABLE-verklaring

Exploitant MAAK TABEL verwijdert een of meer tabellen. Alle tabelgegevens en definities worden verwijderd, dus wees voorzichtig bij het gebruik van deze opdracht.

Syntaxis:

DROP TABLE tabelnaam [, tabelnaam,...]

IN MySQL-versies 3.22 en hoger kunt u de sleutelwoorden IF EXISTS gebruiken om een ​​foutmelding te genereren als de opgegeven tabellen niet bestaan.

De opties RESTRICT en CASCADE maken het eenvoudiger om een ​​programma van andere DBMS'en over te dragen. Ze zijn momenteel niet in gebruik.

mysql> DROP TABLE INDIEN BESTAAT Personen, Artefacten, test; Voorbeeld 10.2. Met behulp van de DROP TABLE-instructie

ALTER TABLE-instructie

Exploitant Voordat u iets met de gegevens doet, moet u tabellen maken waarin deze gegevens worden opgeslagen, leren hoe u de structuur van deze tabellen kunt wijzigen en deze indien nodig verwijderen. Voor dit doel in taal biedt de mogelijkheid om de structuur van een bestaande tabel te wijzigen.

Syntaxis:

U kunt bijvoorbeeld kolommen toevoegen of verwijderen, indexen maken of vernietigen, of de naam van kolommen of de tabel zelf wijzigen.

U kunt ook de opmerking voor de tabel en het type ervan wijzigen.

  • ALTER TABLE tabelnaam alter_specificatie [, alter_specificatie ...]

    U kunt de volgende wijzigingen in de tabel aanbrengen (die allemaal zijn vastgelegd in alter_specification ):

    een veld toevoegen:

  • VOEG kolomdefinitie toe

    TOEVOEGEN (kolom_definitie, kolom_definitie,...) indexen toevoegen: TOEVOEGEN INDEX [indexnaam] (kolomnaam,...) TOEVOEGEN of TOEVOEGEN PRIMAIRE SLEUTEL (kolomnaam,...) UNIEK [indexnaam] (kolomnaam,...)

  • of

    FULLTEXT TOEVOEGEN [indexnaam] (kolomnaam,...) PRIMAIRE SLEUTEL (kolomnaam,...) veldwijziging: PRIMAIRE SLEUTEL (kolomnaam,...) ALTER kolomnaam (SET DEFAULT letterlijk | DROP DEFAULT)

  • WIJZIG oude_kolomnaam kolomdefinitie

    WIJZIG kolomdefinitie

  • een veld, index, sleutel verwijderen:

    DROP kolomnaam DROP PRIMARY SLEUTEL DROP INDEX indexnaam

  • tabel hernoemen:

    HERNAAM nieuwe_tabelnaam

    tabelvelden opnieuw ordenen:

BESTEL PER veld tabelopties Als de exploitant WIJZIG TABEL wordt gebruikt om de definitie van het kolomtype te wijzigen, maar BESCHRIJV tabelnaam laat zien dat de kolom niet is veranderd, dan negeert MySQL misschien deze wijziging om een ​​van de redenen beschreven in speciale sectie bevat andere kolommen met variabele lengte.

Exploitant tabelopties maakt tijdens het uitvoeren een tijdelijke kopie van de originele tabel. De vereiste wijziging wordt op de kopie uitgevoerd, vervolgens wordt de oorspronkelijke tabel verwijderd en wordt de nieuwe tabel hernoemd. Dit wordt gedaan zodat alle updates, behalve de mislukte, automatisch in de nieuwe tabel worden opgenomen. Tijdens looptijd Voordat u iets met de gegevens doet, moet u tabellen maken waarin deze gegevens worden opgeslagen, leren hoe u de structuur van deze tabellen kunt wijzigen en deze indien nodig verwijderen. Voor dit doel in taal de originele tabel is leesbaar voor andere clients. Bijwerk- en schrijfbewerkingen voor deze tabel worden opgeschort totdat de nieuwe tabel gereed is.

Opgemerkt moet worden dat bij gebruik van een andere optie voor ALTER TABLE dan RENAME, MySQL altijd een tijdelijke tabel zal maken, zelfs als de gegevens strikt genomen niet hoeven te worden gekopieerd (bijvoorbeeld wanneer een kolomnaam verandert). Voorbeeld 10.3

. Laten we een veld toevoegen aan de gemaakte tabel Personen om het geboortejaar van de persoon vast te leggen: mysql> ALTER TABLE Personen ADD bday INTEGER NA achternaam;

Voorbeeld 10.3. Een veld toevoegen aan de tabel Personen om het geboortejaar van een persoon vast te leggen

We hebben dus geleerd hoe we met tabellen moeten werken: ze maken, verwijderen en wijzigen. Laten we nu eens kijken hoe we hetzelfde kunnen doen met de gegevens die in deze tabellen zijn opgeslagen.

Exploitant SELECT-instructie SELECTEER

gebruikt om rijen op te halen die uit een of meer tabellen zijn geselecteerd. Dat wil zeggen dat we met zijn hulp de kolommen of uitdrukkingen specificeren die moeten worden opgehaald (select_expressions), de tabellen (table_references) waaruit de selectie moet worden gemaakt, en mogelijk de voorwaarde (where_definition), waarin de gegevens in deze kolommen moeten overeenkomen met en de volgorde waarin deze gegevens moeten worden uitgegeven. SELECT-instructie Daarnaast de exploitant

kan worden gebruikt om rijen op te halen die zijn berekend zonder verwijzing naar een tabel. Om bijvoorbeeld te berekenen waar 2*2 gelijk aan is, schrijft u eenvoudigweg

mysql> SELECTEER 2*2; SELECT-instructie Vereenvoudigde operatorstructuur

kan als volgt worden weergegeven: Vierkante haakjes betekenen dat de operator daarbinnen optioneel is; betekent opsomming

mogelijke opties

. Geef na het trefwoord ORDER BY de kolomnaam, het nummer (geheel getal zonder teken) of de formule en de volgordemethode (oplopend - ASC of aflopend - DESC) op. De standaardvolgorde is oplopend. Wanneer we “*” in de select_expression schrijven, betekent dit dat we alle kolommen selecteren. Naast “*” kunnen functies als max , min en avg worden gebruikt in select_expressions.

Selecteer de naam en beschrijving (titel, beschrijving) van artefact nummer 10:

INSERT-verklaring

Exploitant INVOEGEN voegt nieuwe rijen in een bestaande tabel in. De operator heeft verschillende formulieren. De parameter table_name specificeert in al deze formulieren de tabel waarin de rijen moeten worden geschreven. De kolommen waarvoor waarden worden ingesteld, worden gespecificeerd in de lijst met kolomnamen (column_name) of in het SET-gedeelte.

Syntaxis:

    INSERT tabelnaam [(kolomnaam,...)] VALUES (expressie,...),(...),...

    Dit opdrachtformulier INVOEGEN voegt rijen in volgens de exacte waarden die in de opdracht zijn opgegeven. De kolommen staan ​​tussen haakjes achter de tabelnaam en hun waarden worden vermeld na het trefwoord VALUES.

    Bijvoorbeeld:

    mysql> INSERT INTO Personen (achternaam, bday) VALUES ("Ivanov", "1934");

    zal een rij invoegen in de tabel Personen waarin de waarden van de achternaam (achternaam) en de geboortedatum (bday) respectievelijk worden ingesteld als “Ivanov” en “1934”.

    INSERT tabelnaam [(kolomnaam,...)] SELECT ...

    Dit opdrachtformulier INVOEGEN voegt rijen in die zijn geselecteerd uit een andere tabel of tabellen.

    Bijvoorbeeld:

    zal in de tabel Artefacten in het veld "auteur" de waarde invoegen van de identificatie die is geselecteerd uit de tabel Personen, op voorwaarde dat de achternaam van de persoon Ivanov is.

    INSERT tabelnaam SET kolom_naam=expressie, kolom_naam=expressie, ...

    Bijvoorbeeld:

    mysql> INSERT INTO Personen SET last_name="Petrov", first_name="Ivan";

    Met deze opdracht wordt de waarde “Petrov” ingevoegd in de tabel Personen in het veld achternaam, en de tekenreeks “Ivan” in het veld voornaam.

Formulier INSERT...WAARDEN met een lijst met meerdere waarden wordt ondersteund in MySQL 3.22.5 en hoger. Expressiesyntaxis kolom_naam=expressie

ondersteund in MySQL versie 3.22.10 en hoger.

  • De volgende afspraken zijn van toepassing. Als er geen lijst met kolommen is opgegeven PRIMAIRE SLEUTEL (kolomnaam,...) INSERT...WAARDEN INVOEGEN...SELECTEREN SELECT-instructie, dan moeten de waarden voor alle kolommen gedefinieerd worden in de VALUES() lijst of als resultaat van WIJZIG TABEL.
  • . Als de volgorde van de kolommen in de tabel onbekend is, kunt u gebruik maken van
  • Elke kolom waaraan niet expliciet een waarde is gegeven, wordt ingesteld op de standaardwaarde. Als een bepaalde kolommenlijst bijvoorbeeld niet alle kolommen in een bepaalde tabel specificeert, worden de niet-genoemde kolommen ingesteld op hun standaardwaarden.

    expressie kan verwijzen naar elke kolom die eerder in de zoeklijst was opgenomen. U kunt bijvoorbeeld het volgende opgeven:

    mysql> INSERT INTO tabelnaam (col1,col2) VALUES(15,col1*2);

    Maar u kunt niet specificeren:

We hebben nog niet drie optionele parameters besproken die aanwezig zijn in alle drie de vormen van de opdracht: LOW_PRIORITY, DELAYED en IGNORE.

De parameters LOW_PRIORITY en DELAYED worden gebruikt wanneer een groot aantal gebruikers met de tabel werkt. Ze vereisen dat een bepaalde handeling voorrang krijgt boven de handelingen van andere gebruikers. Indien aangegeven trefwoord INVOEGEN LOW_PRIORITY en vervolgens uitvoering van deze opdracht wordt uitgesteld totdat andere klanten deze tabel hebben gelezen. In dit geval moet de klant wachten tot deze opdracht het inzetstuk zal niet worden voltooid, wat een aanzienlijke hoeveelheid tijd kan duren als de tafel intensief wordt gebruikt. Het commando daarentegen INVOEGEN VERTRAAGD

Hiermee kan een bepaalde client een bewerking onmiddellijk voortzetten, ongeacht andere gebruikers. INVOEGEN Als je in het team zit Als het trefwoord IGNORE is opgegeven, worden alle rijen met dubbele sleutels weergegeven PRIMAIRE of UNIEK

in deze tabel worden genegeerd en niet in de tabel opgenomen. Als u IGNORE niet opgeeft, wordt de invoegbewerking afgebroken wanneer er een rij wordt aangetroffen die een dubbele waarde heeft voor een bestaande sleutel.

Syntaxis:

Exploitant UPDATE-verklaring UPDATE

Werkt de waarden van bestaande tabelkolommen bij volgens de ingevoerde waarden. De SET-instructie geeft aan welke kolommen moeten worden aangepast en welke waarden daarin moeten worden ingesteld. De WHERE-clausule, indien aanwezig, specificeert welke rijen worden bijgewerkt. Anders worden alle rijen bijgewerkt. Als een ORDER BY-expressie is opgegeven, worden de rijen bijgewerkt in de volgorde die daarin is opgegeven. UPDATE-verklaring Als het trefwoord LOW_PRIORITY is opgegeven, wordt deze opdracht uitgevoerd

wordt uitgesteld totdat andere klanten deze tabel hebben gelezen.

Als het sleutelwoord IGNORE is opgegeven, wordt de update-opdracht niet afgebroken, zelfs niet als er een dubbele sleutelfout optreedt. Rijen die conflicten veroorzaken, worden niet bijgewerkt. If in de expressie die het new kolom waarde UPDATE-verklaring, wordt de naam van dit veld gebruikt en vervolgens het commando

gebruikt de huidige waarde van deze kolom. Met de volgende opdracht wordt de kolom death_date bijvoorbeeld ingesteld op een waarde die één groter is dan de huidige waarde:

mysql> UPDATE Personen SET death_date=death_date+1;

In MySQL versie 3.23 kunt u de parameter LIMIT # gebruiken om ervoor te zorgen dat alleen het opgegeven aantal rijen is gewijzigd. Een dergelijke bewerking vervangt bijvoorbeeld de eerste rij van onze tabel met exposities naar de regel “Buiscomputer”:

mysql> UPDATE Artefacten SET title="Tube computer" Limit 1;!}

VERWIJDER verklaring

Exploitant VERWIJDEREN verwijdert rijen uit tabel tabelnaam die voldoen aan de voorwaarden die zijn opgegeven in where_definition en retourneert het aantal verwijderde records.

BESTEL PER veld VERWIJDEREN wordt uitgevoerd zonder een WHERE-definitie, worden alle rijen verwijderd.

Syntaxis:

Met de volgende opdracht wordt bijvoorbeeld de tabel Personen verwijderd

PHP en databases

De mogelijkheid om grote hoeveelheden informatie efficiënt op te slaan en op te halen, heeft een enorme bijdrage geleverd aan de succesvolle ontwikkeling van internet. Meestal worden databases gebruikt om informatie op te slaan. De werking van bekende sites als Yahoo, Amazon en Ebay hangt voor een groot deel af van de betrouwbaarheid van databases waarin enorme hoeveelheden informatie zijn opgeslagen. Natuurlijk is databaseondersteuning niet alleen gericht op de belangen van grote bedrijven; webprogrammeurs beschikken over verschillende krachtige database-implementaties, die tegen relatief lage kosten (of zelfs gratis) worden verspreid.

Een goede database-organisatie biedt snellere en flexibelere mogelijkheden voor het ophalen van gegevens. Het vereenvoudigt de implementatie van zoek- en sorteerhulpmiddelen aanzienlijk, en problemen met toegangsrechten tot informatie worden opgelost met behulp van privilegecontroles die in veel databasebeheersystemen (DBMS) voorkomen. Bovendien worden de processen van gegevensreplicatie en archivering vereenvoudigd.

Hoofdstuk begint met gedetailleerde beschrijving gegevens ophalen en bijwerken in MySQL - waarschijnlijk het meest populaire DBMS dat in PHP wordt gebruikt (http://www.mysql.com). Op MySQL-voorbeeld er wordt getoond hoe gegevens in de database worden geladen en bijgewerkt in PHP; We zullen kijken naar de basiszoek- en sorteerhulpmiddelen die in veel webapplicaties worden gebruikt. Vervolgens gaan we over tot de implementatie PHP-ondersteuning ODBC (Open Data Base Connectivity) is een generieke interface die gebruikt kan worden gelijktijdige verbinding met verschillende DBMS. ODBC-ondersteuning in PHP zal worden gedemonstreerd aan de hand van het voorbeeld van het verbinden en ophalen van gegevens uit een database Microsoft-gegevens Toegang. Het hoofdstuk wordt afgesloten met een project dat PHP en MySQL gebruikt om een ​​hiërarchische map te creëren met informatie over favoriete sites. Wanneer nieuwe sites in de catalogus worden opgenomen, wijst de gebruiker deze toe aan een van de standaardcategorieën die zijn gedefinieerd door de sitebeheerder.

Voordat ik MySQL bespreek, wil ik een paar woorden zeggen over SQL, de meest gebruikte taal voor het werken met databases. De SQL-taal is de basis van vrijwel alle bestaande DBMS'en. Om verder te gaan met het bekijken van voorbeelden van het werken met databases, moet u op zijn minst een algemeen begrip hebben van hoe SQL werkt.

SQL wordt over het algemeen beschreven als de standaardtaal die wordt gebruikt voor interactie met relationele databases (zie hieronder). SQL is echter geen programmeertaal zoals C, C++ of PHP. Het is eerder een front-end tool om te presteren diverse operaties met databases, ter beschikking van de gebruiker standaard ingesteld opdrachten De mogelijkheden van SQL zijn niet beperkt tot het ophalen van gegevens uit een database. SQL ondersteunt een verscheidenheid aan opties voor interactie met een database, waaronder:

  • definitie van de datastructuur-- definitie van structuren die worden gebruikt bij het opslaan van gegevens;
  • gegevensbemonstering-- het laden van gegevens uit de database en deze presenteren in een formaat dat geschikt is voor uitvoer;
  • gegevensverwerking-- informatie invoegen, bijwerken en verwijderen;
  • toegangscontrole-- de mogelijkheid om het verzamelen, invoegen, bijwerken en verwijderen van gegevens op het niveau van individuele gebruikers toe te staan/te verbieden;
  • controle van de gegevensintegriteit-- Behoud van de datastructuur bij problemen zoals parallelle updates of systeemstoringen.

Houd er rekening mee dat in de definitie van SQL staat dat deze taal bedoeld is om mee te werken relationeel databases. In relationele DBMS'en worden gegevens georganiseerd als een reeks onderling verbonden tabellen. Relaties tussen tabellen worden geïmplementeerd in de vorm van koppelingen naar gegevens uit andere tabellen. Tafel je kunt je voorstellen hoe tweedimensionale array, waarin de rangschikking van elk element wordt gekenmerkt door bepaalde rij- en kolomwaarden. Een voorbeeld van een relationele database wordt getoond in Fig. 11.1.

Rijst. 11.1.Relationeel databasevoorbeeld

Zoals blijkt uit Fig. 11.1 bestaat elke tabel uit rijen (records) en kolommen (velden). Aan elk veld wordt een unieke (binnen de tabel) naam toegewezen. Let op de relatie tussen de klant- en ordertabellen, aangegeven door een pijl. In de bestelinformatie is een korte klantidentificatie opgenomen, waardoor redundante opslag van de naam van de klant en andere details wordt vermeden. Er is nog een relatie in de weergegeven database: tussen de tabellen met bestellingen en producten. Deze verbinding wordt tot stand gebracht met behulp van het veld prod_id, waarin de identificatie van het door deze klant bestelde product wordt opgeslagen (gedefinieerd door het veld custjd). Met deze verbindingen kunt u eenvoudig naar volledige klant- en productgegevens verwijzen met behulp van eenvoudige identificatiegegevens. Een goed georganiseerde database wordt een krachtig hulpmiddel voor het organiseren en efficiënt opslaan van gegevens met minimale redundantie. Onthoud deze database, ik zal er in verdere voorbeelden vaak naar verwijzen.

Hoe worden relationele databasebewerkingen uitgevoerd? Om dit te doen heeft SQL een speciale set algemene opdrachten, zoals SELECT, INSERT, UPDATE en DELETE. Als u bijvoorbeeld het adres nodig heeft e-mail client met ID 2001cu (zie figuur 11.1), voert u gewoon de volgende SQL-opdracht uit:

SELECTEER cust_email VAN klanten WAAR custjd = "2001cu"

Alles is heel logisch, nietwaar? Samengevat ziet het commando er als volgt uit:

SELECT veldnaam FROM tabelnaam [ WHERE voorwaarde ]

Vierkante haakjes geven aan dat het laatste deel van de opdracht optioneel is. Als u bijvoorbeeld de e-mailadressen van alle klanten uit de klantentabel wilt ophalen, voert u gewoon de volgende query uit:

SELECT cust_email VAN klanten

Stel dat u producten in de tabel wilt opnemen nieuwe invoer. Het eenvoudigste invoegcommando ziet er als volgt uit:

INSERT in producten WAARDEN ("1009pr", "Rode Tomaten", "1,43");

Als u deze gegevens later wilt verwijderen, gebruikt u de volgende opdracht:

VERWIJDER UIT producten WAAR prod_id = 1009r";

Er zijn veel soorten SQL-opdrachten, en een volledige beschrijving ervan valt buiten het bestek van dit boek. Er zou gemakkelijk een apart boek over dit onderwerp geschreven kunnen worden! Ik probeerde dat zeker te stellen SQL-opdrachten, die in de voorbeelden werden gebruikt, waren relatief eenvoudig, maar behoorlijk realistisch. Er is veel SQL-trainingsinformatie en -bronnen op internet te vinden. Aan het einde van dit gedeelte vindt u enkele links.

Schrijf SQL-opdrachten met behulp van tekens hoofdletter optioneel. Ik geef echter de voorkeur aan deze notatie omdat deze helpt de componenten van het verzoek te onderscheiden.

Nu u dit boek leest, vraagt ​​u zich waarschijnlijk af hoe u met databases op internet kunt werken? In de regel eerst een paar gebruiken

of een interfacetaal (PHP, Java of Perl) wordt er een verbinding met de database tot stand gebracht, waarna het programma met queries de database benadert met behulp van een standaard set tools. Een interfacetaal kan worden gezien als een soort ‘lijm’ die de database aan het web bindt. Ik wend me tot mijn favoriete front-endtaal: PHP.

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 het 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, de basis SQL-gegevens Hiermee kunt u 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;
  • voorzien volledige bescherming 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 query's. 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 toegang te verlenen verschillende gebruikers op informatie in de database, maar ook op het gebruik van tabellen of views.
  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 deze ook zonder gebruikt zou kunnen worden bijzondere problemen zelfs leren gewone gebruikers Internet. 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. SQL-cursussen Met “voor dummies” kunt u veel meer over de dienst leren en deze binnen een paar weken volledig verkennen.