Sql basis tutorials. Relationele database theorie. Zoekresultaten toevoegen

Een selectie van boeken, videocursussen en online bronnen voor het bestuderen van databases, de basis van relationele theorie en de SQL-taal.

Boeken

Alan Bewley "Leer SQL" (2007)

Dit boek is een uitstekende keuze voor diegenen die aan het begin staan ​​van een netelig pad. SQL leren... Het stelt u niet alleen in staat om de benodigde basis te verwerven, eerste kennis, maar vertelt ook over de meest populaire subtiliteiten en krachtige kenmerken van de taal die wordt gebruikt door ervaren programmeurs.
Veel tutorials over databases, relationele theorie en SQL zitten boordevol saaie teksten. theoretische grondslagen... Dit boek is een welkome uitzondering vanwege zijn lichte, levendige stijl. De auteur geeft de lezer vakkundig informatie over SQL-expressies en -blokken, soorten voorwaarden, joins, subquery's en nog veel meer.
Om de opgedane kennis in de praktijk te consolideren, creëert de auteur een educatieve MySQL-database en leidt velen praktische voorbeelden vragen over al het gepresenteerde theoretische materiaal.

Chris Fiiley "SQL" (2013)


In het boek in kwestie ANSI SQL-92 (SQL2) taalversie. De details over het gebruik van de querytaal om de overeenkomstige taakklassen op te lossen voor het ophalen en wijzigen van gegevens en voor het werken met objecten van de databasestructuur worden in detail beschreven. Alle voorbeelden worden uitgebreid toegelicht.
Bijzondere aandacht in deze editie wordt besteed aan de verschillen in SQL-dialecten bij de implementatie van de meest voorkomende DBMS: MySQL, Oracle, MS SQL-server en PostgreSQL.
Het boek is bedoeld voor iedereen die zelfstandig de SQL-taal wil bestuderen of zijn kennis over dit onderwerp wil verbeteren.

Anthony Molinaro “SQL. Verzameling recepten "(2009)


Deze editie is bedoeld voor diegenen die al enige kennis van SQL hebben en hun vaardigheden op dit gebied willen verbeteren. Het zal ook zeer nuttig zijn voor experts op het gebied van databases, aangezien de auteur voorbeelden geeft van het oplossen van problemen in verschillende DBMS: DB2, Oracle, PostgreSQL, MySQL en SQL Server.
Het boek leert u hoe u SQL kunt gebruiken om een ​​breder scala aan problemen op te lossen: van bewerkingen binnen een database tot het ophalen van gegevens en het overbrengen ervan via het netwerk naar toepassingen.
U leert hoe u vensterfuncties en speciale operatoren kunt gebruiken, evenals geavanceerde methoden voor het werken met datawarehouses: histogrammen maken, gegevens samenvatten in blokken, aggregatie van glijdend bereik uitvoeren en lopende sommen en subtotalen genereren. U kunt rijen uitbreiden naar kolommen en vice versa, berekeningen binnen een rij vereenvoudigen en dubbele uitbreiding van de resultatenset uitvoeren, rij-traversal uitvoeren, waarmee u SQL kunt gebruiken voor ontleden tekenreeksen naar tekens, woorden of gescheiden tekenreekselementen. De door de auteur voorgestelde technieken stellen u in staat de code van uw toepassingen te optimaliseren en nieuwe mogelijkheden van de SQL-taal voor u te openen.

Alex Krigel et al. “SQL. Gebruikersbijbel", 2e editie (2010)


Het boek is uniek omdat elk hoofdstuk een vergelijking biedt van de implementaties van bepaalde queries in de dialecten van de drie toonaangevende DBMS'en. Dit maakt het een uitgebreide en praktische referentie naar de SQL-taal voor ontwikkelaars van beginners tot goeroes, een soort desktop-tutorial.
Het behandelt onderwerpen van de basis tot transacties en vergrendelingen, databasefuncties en beveiliging.
Aan het einde worden enkele aanvullende onderwerpen gepresenteerd: SQL naar XML-integratie, OLAP Business Intelligence en meer.

Eric Redmond, Jim R. Wilson “Zeven databases in zeven weken. Inleiding tot moderne databases en de NoSQL-ideologie "(2015)

Het boek beschrijft de meeste moderne bases gegevens met open broncode: Redis, Neo4J, CouchDB, MongoDB, HBase, PostgreSQL en Riak. Voor elke database worden voorbeelden gegeven van het werken met echte gegevens, die de belangrijkste ideeën en sterke punten demonstreren.
Dit boek zal licht werpen op de sterke en zwakke punten elk van de zeven databases en leert u de database te kiezen die het beste bij uw vereisten past.

Ik presenteer onder uw aandacht een gratis vertaling van het artikel SQL voor beginners

Steeds meer moderne webapplicaties werken samen met databases, meestal met behulp van de taal SQL... Gelukkig voor ons is deze taal vrij eenvoudig te leren. In dit artikel beginnen we met het leren van de basisprincipes van SQL-query's en hoe deze omgaan met de database. MySQL.

Wat je nodig hebt

Sql ( gestructureerde taal queries) - een taal die is ontworpen om te communiceren met relationele systemen databasebeheer (DBMS), zoals: MySQL, Oracle, Sqlite en anderen. Om de SQL-query's uit dit artikel uit te voeren, neem ik aan dat je hebt geïnstalleerd MySQL... Ik raad ook aan om te gebruiken phpMijnAdmin als een visuele weergavetool voor MySQL.

De volgende toepassingen maken het installeren gemakkelijk: MySQL en phpMijnAdmin naar jouw computer:

  • WAMP voor Windows
  • MAMP voor Mac

Laten we beginnen met het uitvoeren van query's in opdrachtregel. WAMP bevat het al in de console MySQL... Voor MAMP, moet u dit misschien lezen.

DATABASE MAKEN: Database maken

Ons allereerste verzoek. We zullen een database maken om mee te werken.

Open eerst de console MySQL en inloggen. Voor WAMP, wordt standaard gebruikt leeg wachtwoord... Voor MAMP het wachtwoord moet "root" zijn.

Typ na het inloggen dit verzoek en klik op Binnenkomen:

MAAK DATABASE my_first_db;

Merk op dat een puntkomma (;) aan het einde van de query wordt toegevoegd, net als aan het einde van een regel in uw code.

Ook trefwoorden DATABASE MAKEN niet hoofdlettergevoelig zoals alle zoekwoorden in SQL... Maar we zullen ze in hoofdletters schrijven voor een betere leesbaarheid.

Opmerking: tekenset en sortering

Als u de standaardtekenset en sorteervolgorde wilt instellen, gebruikt u een vergelijkbare query:

MAAK DATABASE my_first_db STANDAARD KARAKTER SET utf8 SAMENSTELLEN utf8_general_ci;

U vindt een lijst met ondersteunde tekensets en sorteringen op MySQL.

TOON DATABASES: Lijst van alle databases

Deze query wordt gebruikt om alle databases weer te geven.

DROP DATABASE: Verwijdert een database

Met deze vraag kunt u verwijderen bestaande basis gegevens.

Wees voorzichtig met deze zoekopdracht, want er worden geen waarschuwingen weergegeven. Zodra u tabellen en gegevens in uw database heeft, verwijdert de query ze allemaal in een oogwenk.

Technisch gezien is dit geen verzoek. Het is een "operator" en vereist geen puntkomma aan het einde.

Hij informeert MySQL dat u de standaarddatabase moet selecteren en ermee moet werken tot het einde van de sessie. We zijn nu klaar om tabellen en de rest in deze database te maken.

Wat is een databasetabel?

U kunt een tabel in een database zien als een gewone tabel of als een csv-bestand met gestructureerde gegevens.

Net als in dit voorbeeld heeft de tabel rijnamen en gegevenskolommen. Met behulp van SQL-query's kunnen we deze tabel maken. Ook kunnen wij gegevens toevoegen, lezen, wijzigen en verwijderen.

TABEL MAKEN: Tabel maken

Met deze query kunnen we een tabel in de database maken. Sorry, de documentatie voor MySQL niet erg vriendelijk voor nieuwe gebruikers. De structuur van dit verzoek kan erg complex zijn, maar we beginnen met een eenvoudig verzoek.

De volgende query maakt een tabel met twee kolommen.

CREATE TABLE gebruikers (gebruikersnaam VARCHAR (20), create_date DATE);

Houd er rekening mee dat we een query op meerdere regels kunnen schrijven en gebruiken Tab voor inspringen.

De eerste regel is eenvoudig. We maken een tabel met de naam gebruikers... Verder worden tussen haakjes de kolommen van de tabel weergegeven, gescheiden door komma's. Elke kolomnaam wordt bijvoorbeeld gevolgd door een gegevenstype VARCHAR of DATUM.

VARCHAR (20) betekent kolom tekenreekstype: en mag niet meer dan 20 tekens lang zijn. DATUM- gegevenstype bedoeld voor het opslaan van datums in het formaat: "JJJJ-MM-DD".

Hoofdsleutel

Voordat we deze query uitvoeren, moeten we een kolom invoegen gebruikersnaam, wat de PRIMAIRE SLEUTEL zal zijn. Zonder in details te treden, kunt u een primaire sleutel zien als een manier om elke rij gegevens in een tabel te herkennen.

Het verzoek wordt als volgt:

CREATE TABLE gebruikers (user_id INT AUTO_INCREMENT PRIMARY KEY, gebruikersnaam VARCHAR (20), create_date DATE);

INT- 32x bit integer type(numeriek). AUTO_INCREMENT maakt automatisch nieuw nummer id elke keer dat een rij met gegevens wordt toegevoegd. Het is niet nodig, maar het is er wel handiger mee.

Deze kolom mag geen geheel getal zijn, hoewel dit het meest voorkomende gegevenstype is. De primaire sleutelkolom is optioneel, maar het wordt aanbevolen deze te gebruiken om de databaseprestaties en architectuur te verbeteren.

Laten we de query uitvoeren:

TOON TABELLEN: Lijst van alle tabellen

Met de query kunt u een lijst krijgen van alle tabellen in huidige basis gegevens.

UITLEG: Toon tabelstructuur

Gebruik deze query om de structuur van een bestaande tabel te bekijken.

Het resultaat toont de velden (kolommen) en hun eigenschappen.

DROP TABLE: Laat een tafel vallen

Net zoals DROP DATABANKEN, verwijdert deze query de tabel en de inhoud ervan zonder enige waarschuwing.

WIJZIG TABEL: Een tabel wijzigen

Zo'n query kan complex zijn omdat er meerdere wijzigingen in een tabel kunnen worden aangebracht. Laten we eens kijken naar enkele eenvoudige voorbeelden.

Dankzij de leesbaarheid SQL, dit verzoek spreekt voor zich.

Verwijderen is net zo eenvoudig. Gebruik de zoekopdracht met de nodige voorzichtigheid, gegevens worden zonder waarschuwing verwijderd.

Laten we het veld opnieuw toevoegen e-mail, later zal het nog nodig zijn:

ALTER TABLE gebruikers VOEG e-mail toe VARCHAR (100) NA gebruikersnaam;

Soms moet u de eigenschappen van een kolom wijzigen, u hoeft deze niet te verwijderen en opnieuw te maken.

Dit verzoek hernoemt het veld gebruikersnaam in gebruikersnaam en verandert het type van VARCHAR (20) op de VARCHAR (30)... Dergelijke wijzigingen hebben geen invloed op de gegevens in de tabel.

INSERT: Gegevens toevoegen aan een tabel

Laten we records aan de tabel toevoegen met behulp van query's.

Zoals je kunt zien, WAARDEN () bevat een door komma's gescheiden lijst met waarden. Stringwaarden staan ​​tussen enkele aanhalingstekens. De waarden moeten in de volgorde staan ​​die is opgegeven toen de tabel werd gemaakt.

Merk op dat de eerste waarde is NUL voor hoofdsleutel, waarvan we het veld hebben genoemd gebruikersnaam... Allemaal omdat het veld is gemarkeerd als AUTO_INCREMENT en id wordt automatisch gegenereerd. De eerste rij met gegevens heeft een id van 1. De volgende rij die moet worden toegevoegd, is 2, enzovoort.

Alternatieve syntaxis

Hier is nog een syntaxis voor het invoegen van rijen.

Deze keer gebruikten we trefwoord SET in plaats van WAARDEN... Laten we een paar dingen opmerken:

  • De kolom kan worden weggelaten. We hebben bijvoorbeeld geen waarde aan het veld toegewezen gebruikersnaam omdat het is gemarkeerd als AUTO_INCREMENT... Als u geen waarde toewijst aan een veld met het type VARCHAR, dan zal het standaard de waarde van een lege tekenreeks aannemen (tenzij een andere standaardwaarde is opgegeven bij het maken van de tabel).
  • Naar elke kolom kan op naam worden verwezen. Daarom kunnen de velden in elke volgorde staan, in tegenstelling tot de vorige syntaxis.

Alternatieve syntaxisnummer 2

Hier is nog een voorbeeld.

Zoals eerder kunt u de velden bij naam noemen, ze kunnen in willekeurige volgorde staan.

Gebruik deze query om de id van de laatst ingevoegde rij op te halen.

NU ()

Het is tijd om u te laten zien hoe u functies gebruikt MySQL bij verzoeken.

Functie NU () geeft terug huidige datum... Gebruik het voor automatisch toevoegen de huidige datum in een veld van type DATUM.

Houd er rekening mee dat we een waarschuwing hebben ontvangen van: MySQL maar dit is niet zo belangrijk. De reden is dat de functie NU () geeft daadwerkelijk tijdinformatie terug.

We hebben een veld gemaakt create_date die alleen een datum kan bevatten en geen tijd, dus de gegevens zijn afgekapt. In plaats van NU () we zouden kunnen gebruiken CURDAAT () die alleen de huidige datum retourneert, maar het eindresultaat zou hetzelfde zijn.

SELECT: Gegevens ophalen uit een tabel

Het is duidelijk dat de gegevens die we hebben geschreven nutteloos zijn totdat we ze kunnen lezen. Een verzoek komt te hulp KIES.

Het eenvoudigste voorbeeld van het gebruik van een verzoek KIES om gegevens uit een tabel te lezen:

De asterisk (*) betekent dat we alle kolommen in de tabel willen hebben. Als je alleen bepaalde kolommen nodig hebt, gebruik dan zoiets als dit:

Vaker wel dan niet, willen we alleen bepaalde rijen krijgen, niet allemaal. Laten we bijvoorbeeld E-mailadres gebruiker nettuts.

Het is vergelijkbaar met een IF-conditie. WHERE stelt u in staat een voorwaarde in een query in te stellen en het gewenste resultaat te krijgen.

Voor de gelijkheidsvoorwaarde wordt het enkele teken (=) gebruikt, niet het dubbele (==), dat u mogelijk gebruikt bij het programmeren.

U kunt ook andere voorwaarden gebruiken:

EN en OF worden gebruikt om voorwaarden te combineren:

Opmerking, numerieke waarden hoeven niet geciteerd te worden.

IN ()

Wordt gebruikt om te vergelijken met meerdere waarden.

LEUK VINDEN

Hiermee kunt u een sjabloon voor de zoekopdracht instellen.

Het procentteken (%) wordt gebruikt om het patroon te specificeren.

ORDER BY-clausule

Gebruik deze voorwaarde als u wilt dat het resultaat gesorteerd wordt geretourneerd:

De standaardvolgorde is: ASC(Oplopend). Toevoegen DESC om in omgekeerde volgorde te sorteren.

LIMIET ... OFFSET ...

U kunt het aantal geretourneerde rijen beperken.

LIMIET 2 neemt de eerste twee regels. LIMIET 1 OFFSET 2 neemt één regel na de eerste twee. LIMIET 2, 1 betekent hetzelfde, alleen het eerste getal is de offset en het tweede beperkt het aantal regels.

UPDATE: gegevens in een tabel bijwerken

Deze query wordt gebruikt om gegevens in een tabel bij te werken.

In de meeste gevallen gebruikt in combinatie met WAAR om specifieke regels bij te werken. Als de voorwaarde WAAR niet opgegeven, worden de wijzigingen toegepast op alle rijen.

Om veranderlijke strings te beperken, kunt u gebruik maken van BEGRENZING.

VERWIJDEREN: gegevens uit een tabel verwijderen

Net zoals , deze zoekopdracht wordt vaak gebruikt in combinatie met de voorwaarde WAAR.

TRUNCATE TAFEL

Gebruik een query als deze om inhoud uit een tabel te verwijderen:

VERWIJDEREN VAN gebruikers;

Gebruik . om de prestaties te verbeteren .

Reset ook de veldteller AUTO_INCREMENT, dus nieuw toegevoegde rijen hebben een id gelijk aan 1. Bij gebruik van dit zal niet gebeuren en de teller zal blijven groeien.

Ontsnappende tekenreekswaarden en speciale woorden

Tekenreekswaarden

Sommige karakters moeten worden ontsnapt of er kunnen problemen zijn.

De backslash (\) wordt gebruikt om te ontsnappen.

Dit is erg belangrijk om veiligheidsredenen. Alle gebruikersgegevens moeten worden geëscaped voordat ze naar de database worden geschreven. IN PHP gebruik de functie mysql_real_escape_string () of voorbereide instructies.

Speciale woorden

sinds in MySQL Veel van Gereserveerde woorden, zoals KIES of Zet kolom- en tabelnamen tussen aanhalingstekens om verwarring te voorkomen. Bovendien moet u geen gewone aanhalingstekens gebruiken, maar backticks (`).

Laten we zeggen dat u om de een of andere reden een kolom met de naam . wilt toevoegen :

Gevolgtrekking

Bedankt voor het lezen van het artikel. Ik hoop dat ik je die taal heb kunnen laten zien SQL zeer functioneel en gemakkelijk te leren.

Martin Graber "SQL voor gewone stervelingen" Laurie, 2014, 382 pp. (11,2 MB. Pdf)

Het boek kan worden omschreven als een beginnershandleiding. Structured Query Language - SQL, een programmeertaal voor het maken en beheren van relationele databases (toegepast, logisch model het bouwen van een set (databases) van gegevens). Het boek is ontworpen voor het eenvoudigste (laagste) opleidingsniveau op IT-gebied, dat wil zeggen, er is voldoende kennis in het boek schoolcurriculum... Maar dit betekent niet dat het materiaal in de handleiding slechts een inleiding tot deze programmeertaal is - nee, SQL wordt vrij diepgaand beschreven (verklaring van de auteur).

Elk hoofdstuk voegt nieuwe gegevens toe die verwante concepten en definities beschrijven. Al het volgende materiaal is gebaseerd op het vorige - eerder overwogen, met een overweging aan het einde van het hoofdstuk praktische problemen voor een betere assimilatie van de opgedane kennis. De antwoorden vindt u in bijlage A.

Een inleiding tot SQL wordt gegeven in de eerste zeven hoofdstukken, die je moet lezen als je de handleiding gebruikt zoals SQL voor een beginner is. De volgende zeven (8 tot en met 14) hoofdstukken behandelen meer complexe voorbeelden: gecombineerde query's, query's naar meerdere tabellen tegelijk. Andere SQL-functies: tabellen maken en bewerken, waarden invoeren en instellen, toegang tot aangemaakte tabellen openen en sluiten - worden beschreven in de hoofdstukken 15 tot 23. Tot slot, over de structuur van databases en de mogelijkheid om SQL te gebruiken in programma's die in andere talen zijn ontwikkeld . De bijlagen bieden richtlijnen voor SQL-opdrachten en taakreacties. Het boek is ideaal voor beginners om SQL te leren.
ISBN: 978-5-85582-301-1

Hoofdstuk 1. Een inleiding tot relationele databases 1
Wat is een relationele database? 3
Databasevoorbeeld 5
Resultaat 7

Hoofdstuk 2. Inleiding tot SQL 9
Hoe werkt SQL? 10
Diverse datatypes 12
Resultaten 15

Hoofdstuk 3. SQL gebruiken voor het ophalen van gegevens uit tabellen 17
Een verzoek indienen 18
Voorbeelddefinitie - WHERE-clausule 24
Resultaten 26

Hoofdstuk 4. Relationele en booleaanse operatoren gebruiken om complexere predikaten te maken 29
Relationele operators 30
Booleaanse operatoren 32
Resultaten 37

Hoofdstuk 5. Gebruik speciale operatoren onder voorwaarden" 39
Bediening IN 40
Operator TUSSEN 41
LIKE-operator 44
IS NULL-operator 47
Resultaten 49

Hoofdstuk 6. Gegevens samenvatten met behulp van de aggregatiefunctie 51
Wat zijn aggregatiefuncties? 52
Resultaten 61

Hoofdstuk 7. Queryresultaten opmaken 63
Strings en uitdrukkingen 64
Uitvoervelden bestellen 67
Resultaten 71

Hoofdstuk 8. Meerdere tabellen in één query gebruiken 75
Tafels samenvoegen 76
Resultaten 81

Hoofdstuk 9. Join-bewerking waarvan de operanden worden weergegeven door één tabel 83
Hoe de bewerking van het samenvoegen van twee exemplaren van dezelfde tabel wordt uitgevoerd 84
Resultaten 90

Hoofdstuk 10. Zoekopdrachten nesten 93
Hoe worden subquery's uitgevoerd? 94
Resultaten 105

Hoofdstuk 11. Gerelateerde subquery's 107
Hoe gelinkte subquery's te bouwen 108
Resultaten 115

Hoofdstuk 12. De EXISTS-operator gebruiken 117
Hoe werkt de EXISTS-operator? 118
EXISTS gebruiken met gerelateerde subquery's 119
Resultaten 124

Hoofdstuk 13. De ANY, ALL en SOMMIGE operators gebruiken 127
Speciale operator ELKE of SOMMIGE 128
Speciaal ALL-operator 135
ELKE werking. ALLES en BESTAAT bij gegevensverlies of
met onbekende gegevens 139
Resultaten 143

Hoofdstuk 14. De UNION-clausule gebruiken 145
Meerdere zoekopdrachten combineren in één 146
UNION gebruiken met ORDER BY 151
Resultaten 157

Hoofdstuk 15. Nulwaarden invoeren, verwijderen en wijzigen 159
DML 160 update-opdrachten
Waarden invoeren 160
Exclusief rijen uit tabel 162
Veldwaarden wijzigen 163
Resultaten 165

Hoofdstuk 16. Subquery's gebruiken met updateopdrachten 167
Subquery's gebruiken in INSERT 168
Subquery's gebruiken met DELETE 170
Subquery's gebruiken met UPDATE 174
Resultaten 177

Hoofdstuk 17. Tabellen maken 178
CREATE TABLE Commando 179
Indexen 181
Een tabel wijzigen die al is gemaakt 182
Elimineer tabel 183
Resultaten 185

Hoofdstuk 18. Beperkingen instellen aanvaardbare waarden gegevens 186
Beperkingen in tabellen 195
Resultaten 197

Hoofdstuk 19. Ondersteuning voor gegevensintegriteit 198
Buitenlandse en bovenliggende sleutels 199
BUITENLANDSE BELANGRIJKE BEPERKINGEN 204
Wat gebeurt er als u Update Command 209 uitvoert?
Resultaten 211

Hoofdstuk 20. Inleiding tot weergaven 212
Wat zijn weergaven? 212
CREATE VIEW Commando 221
Resultaten 223

Hoofdstuk 21. Waarden wijzigen met behulp van weergaven 224
Weergaven bijwerken 228
Waarden selecteren die in weergaven zijn geplaatst 232
Resultaten 235

Hoofdstuk 22. Toegangsrechten voor gegevens definiëren 236
Gebruikers 237
Overdracht van privileges 241
Ontneming van privileges 245
Andere soorten privileges 247
Resultaten 249

Hoofdstuk 23. Globale aspecten van SQL 250
Tabellen hernoemen 252
Hoe wordt de database gehost voor de gebruiker? 253
Wanneer wordt verandering permanent? 255
Hoe SQL werkt met meerdere gebruikers tegelijk Samenvatting 259

Hoofdstuk 24. Hoe de volgorde in de database wordt gehandhaafd SQL-gegevens 261
Systeemcatalogus 262

Verzoeken worden geschreven zonder aanhalingstekens te vermijden, aangezien MySQL, MS SQL en PostGree ze zijn verschillend.

SQL-query: gespecificeerde (verplichte) velden uit een tabel halen

SELECT ID, country_title, count_people FROM table_name

We krijgen een lijst met records: ALLE landen en hun bevolking. De namen van de verplichte velden worden gescheiden door komma's.

SELECT * FROM tabelnaam

* geeft alle velden aan. Dat wil zeggen, er zullen impressies zijn ALLES data velden.

SQL-query: uitvoer records uit een tabel met uitzondering van duplicaten

SELECT DISTINCT country_title FROM table_name

We krijgen een lijst met records: de landen waar onze gebruikers zich bevinden. Er kunnen veel gebruikers uit één land zijn. In dit geval is dit uw verzoek.

SQL-query: records uit een tabel weergeven volgens een opgegeven voorwaarde

SELECT ID, country_title, city_title FROM table_name WHERE count_people> 100000000

We krijgen een lijst met records: landen waar het aantal mensen meer dan 100.000.000 is.

SQL-query: records uit een tabel weergeven met volgorde

SELECT ID, city_title FROM table_name ORDER BY city_title

We krijgen een lijst met records: steden in alfabetische volgorde... Aan het begin van A, aan het einde van I.

SELECT ID, city_title FROM table_name ORDER BY city_title DESC

We krijgen een lijst met records: steden in omgekeerde volgorde ( DESC) bestellen. Aan het begin I, aan het einde A.

SQL-query: het aantal records tellen

SELECTEER AANTAL (*) FROM tabelnaam

We krijgen het aantal (aantal) records in de tabel. IN deze zaak GEEN lijst met records.

SQL-query: voer het vereiste recordbereik uit

SELECT * FROM tabelnaam LIMIT 2, 3

We krijgen 2 (tweede) en 3 (derde) records uit de tabel. Het verzoek is handig bij het maken van navigatie op WEB-pagina's.

SQL-query's met voorwaarden

Uitvoer van records uit een tabel volgens een bepaalde voorwaarde met behulp van logische operatoren.

SQL-query: EN constructie

SELECT id, city_title FROM table_name WHERE land = "Rusland" EN olie = 1

We krijgen een lijst met records: steden uit Rusland EN toegang hebben tot olie. Wanneer de operator wordt gebruikt EN, dan moeten beide voorwaarden overeenkomen.

SQL-query: OF constructie

SELECT ID, city_title FROM table_name WHERE land = "Rusland" OF land = "VS"

We krijgen een lijst met records: alle steden van Rusland OF VS. Wanneer de operator wordt gebruikt OF, dan moet er ten minste één voorwaarde overeenkomen.

SQL-query: EN NIET constructie

SELECT id, user_login FROM table_name WHERE country = "Rusland" EN NIET count_comments<7

We krijgen een lijst met records: alle gebruikers uit Rusland EN wie maakte NIET MINDER 7 opmerkingen.

SQL-query: IN (B) constructie

SELECT id, user_login FROM tabelnaam WHERE land IN ("Rusland", "Bulgarije", "China")

We krijgen een lijst met records: alle gebruikers die in ( IN) (Rusland, of Bulgarije, of China)

SQL-query: NIET IN constructie

SELECT id, user_login FROM tabelnaam WHERE land NIET IN ("Rusland", "China")

We krijgen een lijst met records: alle gebruikers die niet in ( NIET IN) (Rusland of China).

SQL-query: IS NULL-constructie (lege of NIET lege waarden)

SELECT id, user_login FROM tabelnaam WHERE status IS NULL

We krijgen een lijst met records: alle gebruikers waarvan de status niet is gedefinieerd. NULL is een apart onderwerp en wordt daarom apart gecontroleerd.

SELECT ID, user_login FROM table_name WHERE state IS NOT NULL

We krijgen een lijst met vermeldingen: alle gebruikers waarbij de status is gedefinieerd (NIET NUL).

SQL-query: LIKE constructie

SELECT ID, user_login FROM table_name WHERE achternaam LIKE "Ivan%"

We krijgen een lijst met records: gebruikers wiens achternaam begint met de combinatie "Ivan". Het %-teken betekent ELK aantal ELK tekens. Om het%-teken te vinden, moet u de escape-toets "Ivan \%" gebruiken.

SQL-query: TUSSEN constructie

SELECT ID, user_login FROM table_name WHERE salaris TUSSEN 25000 EN 50000

We krijgen een lijst met records: gebruikers die een salaris ontvangen van 25.000 tot en met 50.000.

Er zijn VEEL logische operatoren, dus bestudeer de SQL-serverdocumentatie in detail.

Complexe SQL-query's

SQL-query: meerdere query's combineren

(SELECT id, user_login FROM table_name1) UNION (SELECT id, user_login FROM table_name2)

We krijgen een lijst met vermeldingen: gebruikers die in het systeem zijn geregistreerd, evenals gebruikers die afzonderlijk op het forum zijn geregistreerd. De UNION-operator kan meerdere zoekopdrachten combineren. UNION werkt als SELECT DISTINCT, dat wil zeggen, het negeert dubbele waarden. Om absoluut alle records te krijgen, moet u de UNION ALL-operator gebruiken.

SQL-query: veldwaarden tellen MAX, MIN, SUM, AVG, COUNT

Uitgang van één, de maximale waarde van de teller in de tabel:

SELECT MAX (teller) FROM tabelnaam

Uitgang van één, de minimale waarde van de teller in de tabel:

SELECT MIN (teller) FROM table_name

De som van alle tellerwaarden in de tabel weergeven:

SELECT SUM (teller) FROM table_name

De gemiddelde waarde van de teller in de tabel weergeven:

SELECT AVG (teller) FROM tabelnaam

Het aantal tellers in de tabel weergeven:

SELECT COUNT (teller) FROM table_name

Weergave van het aantal tellers in werkplaats nr. 1, in de tabel:

SELECT COUNT (teller) FROM table_name WHERE office = "Shop # 1"

Dit zijn de meest populaire commando's. Het wordt aanbevolen om, waar mogelijk, dit soort SQL-query's te gebruiken voor het tellen, omdat geen enkele programmeeromgeving qua gegevensverwerkingssnelheid kan vergelijken met de SQL-server zelf bij het verwerken van zijn eigen gegevens.

SQL-query: records groeperen

SELECT continent, SUM (country_area) FROM land GROUP BY continent

We krijgen een lijst met records: met de naam van het continent en met de som van de gebieden van al hun landen. Dat wil zeggen, als er een lijst met landen is waar elk land zijn gebied heeft geregistreerd, kunt u met behulp van de GROUP BY-clausule de grootte van elk continent achterhalen (op basis van de groepering per continent).

SQL-query: meerdere tabellen gebruiken via alias

SELECT o.order_no, o.amount_paid, c.company FROM orders AS o, customer AS with WHERE o.custno = c.custno AND c.city = "Tyumen"

We krijgen een lijst met records: bestellingen van klanten die alleen in Tyumen wonen.

In feite, met een goed ontworpen database van dit type, komt de query het meest voor, daarom is er een speciale operator geïntroduceerd in MySQL, die vele malen sneller werkt dan de hierboven geschreven code.

SELECT o.order_no, o.amount_paid, z.company FROM orders AS o LEFT JOIN customer AS z ON (z.custno = o.custno)

Geneste subquery's

SELECT * FROM table_name WHERE salaris = (SELECT MAX (salaris) FROM werknemer)

We krijgen één record: informatie over de gebruiker met het maximale salaris.

Aandacht! Geneste subquery's zijn een van de knelpunten in SQL-servers. Samen met hun flexibiliteit en kracht verhogen ze ook de belasting van de server aanzienlijk. Wat leidt tot een catastrofale vertraging in het werk van andere gebruikers. Gevallen van recursieve aanroepen met geneste zoekopdrachten komen veel voor. Daarom raad ik ten zeerste aan om GEEN geneste zoekopdrachten te gebruiken, maar ze op te splitsen in kleinere. Of gebruik de bovenstaande LEFT JOIN combinatie. Naast dit soort verzoeken zijn verzoeken een verhoogd broeinest van beveiligingsinbreuken. Als u besluit om geneste subquery's te gebruiken, moet u deze zeer zorgvuldig ontwerpen en de eerste runs uitvoeren op kopieën van databases (testdatabases).

SQL-query's die gegevens wijzigen

SQL-query: INSERT

instructies: INSERT kunt u records in een tabel invoegen. Maak in eenvoudige bewoordingen een regel met gegevens in de tabel.

Optie nummer 1. De instructie wordt vaak gebruikt:

INSERT INTO table_name (id, user_login) VALUES (1, "ivanov"), (2, "petrov")

In de tafel " tafel naam"Er worden 2 (twee) gebruikers tegelijk ingevoegd.

Optie nummer 2. Het is handiger om de stijl te gebruiken:

INSERT tabelnaam SET id = 1, user_login = "ivanov"; INSERT tabelnaam SET id = 2, user_login = "petrov";

Dit heeft zijn voor- en nadelen.

Belangrijkste nadelen:

  • Veel kleine SQL-query's worden iets langzamer uitgevoerd dan een enkele grote SQL-query, maar andere query's worden in de wachtrij geplaatst voor service. Dat wil zeggen, als een grote SQL-query gedurende 30 minuten wordt uitgevoerd, dan zullen de rest van de query's gedurende al die tijd bamboe roken en op hun beurt wachten.
  • Het verzoek blijkt omvangrijker dan de vorige versie.

Belangrijkste voordelen:

  • Tijdens kleine SQL-query's worden andere SQL-query's niet geblokkeerd.
  • Gemakkelijk te lezen.
  • Flexibiliteit. In deze optie kunt u de structuur niet volgen, maar alleen de benodigde gegevens toevoegen.
  • Wanneer u op deze manier archieven vormt, kunt u eenvoudig één regel kopiëren en deze via de opdrachtregel (console) uitvoeren, waardoor u niet het hele ARCHIEF herstelt.
  • De schrijfstijl is vergelijkbaar met de UPDATE-instructie, waardoor het gemakkelijker te onthouden is.

SQL-query: UPDATE

UPDATE table_name SET user_login = "ivanov", user_surname = "Ivanov" WAAR id = 1

In de tafel " tafel naam"In het record met id = 1 worden de waarden van de velden user_login en user_surname gewijzigd in de opgegeven waarden.

SQL-query: VERWIJDEREN

VERWIJDER UIT tabelnaam WHERE id = 3

Het record met id nummer 3 wordt verwijderd in de tabel table_name.

  1. Het wordt aanbevolen om alle veldnamen in kleine letters te schrijven en, indien nodig, te scheiden met een geforceerde spatie "_" voor compatibiliteit met verschillende programmeertalen zoals Delphi, Perl, Python en Ruby.
  2. Schrijf SQL-commando's in HOOFDLETTERS voor leesbaarheid. Onthoud altijd dat andere mensen de code na jou kunnen lezen, en hoogstwaarschijnlijk jijzelf na N tijd.
  3. Geef velden een naam vanaf het begin van het zelfstandig naamwoord en vervolgens de actie. Bijvoorbeeld: city_status, user_login, gebruikersnaam.
  4. Probeer fallback-woorden in verschillende talen te vermijden die problemen kunnen veroorzaken in SQL, PHP of Perl, zoals (naam, aantal, link). Bijvoorbeeld: link kan gebruikt worden in MS SQL, maar is gereserveerd in MySQL.

Dit materiaal is een korte referentie voor het dagelijkse werk en pretendeert niet een super mega gezaghebbende bron te zijn, wat de primaire bron is van SQL-query's voor een bepaalde database.

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 om 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 staat toe:

  • 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 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 database 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 ’,’ 21-06-2017 18:38:44 ’);

Tussen haakjes geven we de naam 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 u het wachtwoord voor een specifieke gebruiker kunt 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 WHERE people> 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 verzoeken bij het maken van een internetproject heel gewoon zijn. 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 feite 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.

Gevolgtrekking

Dus, deal met schrijven sql verzoeken zijn niet zo moeilijk als ze lijken, 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.