SQL is die Structured Query Language. Dit is spesifiek geskep om data wat in verhoudingsdatabasisse gehou word, te bestuur en te bekom. Die eerste kommersiële onderneming om SQL te gebruik, was Oracle, wat steeds sy SQL * Plus-navraagstaal het as die basis van al sy verhoudingsdatabasisbestuurstelsel (RDMS).
MySQL, SQL Server, SAP en Sybase gebruik vandag SQL vir toegang tot die databasis. In hierdie gids gee ons u die standaardweergawe van SQL-opdragte, met besondere aandag aan die Oracle-implementering in SQL * Plus.
KEUSE VAN REDAKTEUR: Ons beveel instrumente vir SolarWinds-infrastruktuurbestuur aan om al u Microsoft-instrumente, insluitend SQL Server, te monitor. U benodig 'n reeks moniteringshulpmiddels wat met mekaar kan saamwerk om al die fasiliteite wat u verhoudingsdatabasis ondersteun, te dek.
1 Relasionele databasisse
2 DQL, DDL, DCL en DML
5 Rekords onttrek
6 Verbind tafels
8 GROEPEER VOLGENS
9 BESTEL DEUR
10 SQL funksies
11 Die Comparitech SQL Cheat Sheet
SQL bestuur verhoudingsdatabasisse. 'N Relasionele databasis bevat tabelle wat geskei word om die herhaling van data te verminder. Die proses om oor die korrekte groepering van datakategorieë te besluit, word 'normalisering.'In sommige gevalle kan prestasievereistes bepaal dat tabelle beter werk as dit nie heeltemal genormaliseer word nie. Hierdie proses word "denormalisasie" genoem en kom baie voor.
Elke tabel het 'n kolom nodig wat elke ry uniek identifiseer. Dit word die 'primêre sleutel.'Die ander tabelle wat by daardie entiteit kan aansluit, moet 'n verwysing bevat na die primêre sleutel in elke opname. Die verwysing word 'onbekende sleutel.'Jy aansluit tabelle saam deur die vreemde sleutel in een tabel te pas met die primêre sleutel in 'n ander. Hierdie handeling word met SQL uitgevoer. Die diagram vir entiteitsverhoudinge is 'n nuttige verwysing wanneer u besluit hoe u SQL-stelling moet struktureer.
Om toegang te bespoedig, is dit normaal om 'n indeks op elke primêre sleutel in die databasis. Dit is ook moontlik om gereeld gebruikte joins te bêre om virtuele tabelle te skep, wat "uitsig."
'N Verdere databasisvoorwerp is 'n sneller. Dit is 'n stuk SQL wat begin wanneer 'n waarde in 'n kolom gevoeg word of verander word. 'N Sneller sal waardes in 'n kolom in 'n ander tabel of ander kolomme in dieselfde tabel opdateer. Dit gebeur as 'n waarde bygevoeg of verander word in die kolom waarop die sneller geplaas word. Dit kan ook die waardes wat in 'n kolom ingevoer kan word, beperk.
DQL, DDL, DCL en DML
SQL bevat vier opdrag-subsets. Hierdie is Datavraagtaal (DML), Data beskrywing taal (DDL), Databeheertaal (DCL), en Data-manipulasietaal (DML).
Op die meeste projekte is die Databasisadministrateur (DBA) is die enigste spanlid wat die voorregte het om te gebruik DDL. Hierdie opdraggroep skep tabelle, indekse, snellers en kyke, verander en laat val.
DML word gebruik om rekords uit tabelle in die databasis by te voeg, te verander of te verwyder. Toegang tot hierdie SQL-funksies is gewoonlik beperk tot ondersteuningspersoneel of senior, verantwoordelike lede van die gebruikersgemeenskap.
DML word gebruik om verslae uit die databasis te genereer. Hierdie opdrag-subset word deur programmeerders gebruik en kan ook aan eindgebruikers beskikbaar gestel word, sodat hulle hul eie navrae kan uitvoer.
Die bestuur van gebruikersvoorregte word in dieselfde databasis as die data gestoor. Toegang tot hierdie tabelle is egter gewoonlik beperk tot die DBA. Die bestuur van toegang tot gebruikers word almal geïmplementeer DCL.
Daar is een nuttige SQL-opdrag wat nie onder die klassifikasies van DQL, DDL, DCL of DML val nie. Dit is "beskryfWat gewoonlik geïmplementeer word as Latere. Dit toon die struktuur van 'n voorwerp in die databasis. In die geval van 'n tabel, sal dit 'n lys met kolomme en die datatipe en grootte van elk toon. Dit sal die SQL wys wat 'n siening of 'n sneller geskep het en die kolomme wat in 'n gegewe indeks betrokke is, vertoon.
Die teorie agter verhoudingsdatabasisse is gedefinieer deur E. F. Codd in 1970. Binne Codd se definisie lê 'n vereiste van 'n navraaginstrument wat agt noodsaaklike verhoudingsbewerkings moet implementeer. Hierdie is:
U moet elkeen van hierdie bewerkings bemeester om effektief toegang tot data uit 'n verhoudingsdatabasis te kry. Dit word hieronder uiteengesit.
SELECT is oorspronklik genoem BEPERKINCS. Dit is die vermoë om een ​​rekord of 'n groep passende rekords uit 'n tabel in die databasis te onttrek. Sowel as 'n teoretiese bewerking, SELECT is die naam van die hoofopdrag in enige SQL-implementering. In werklikheid word alle herwin van data uitgevoer met 'n SELECT. Die opdrag is so kragtig dat dit op baie maniere verander kan word. Die meeste SQL wat u moet leer, is die "klousules" op 'n SELECT-stelling.
PROJEK is die vermoë om 'n kolom (of 'kenmerk') in 'n tabel te isoleer. Dit word altyd geïmplementeer met 'n SELECT-stelling.
JOIN koppel tabelle op 'n gemeenskaplike kenmerk. U gebruik die vreemde sleutel in een tabel om aan te pas by die primêre sleutelwaardes in 'n ander tabel. Die wet verenig effektief twee tabelle tydelik. Dit word geïmplementeer as 'n klousule in 'n SELECT-verklaring. 'N Verbinding tussen twee tabelle sal outomaties die rekords wat nie in beide ondersteunende tabelle verskyn nie, uit die weg ruim. 'N "buitenste aansluiting'Sal rekords vertoon wat nie 'n wedstryd in die ander tabel het nie, en die velde wat deur die ander tafel moes voorsien is, leeg gelaat.
PRODUK staan ​​ook bekend as "keer.'Dit word geïmplementeer as 'n SELECT-stelling wat data uit twee tabelle haal, maar die verbinding tussen hulle nie spesifiseer nie. In die regte lewe is daar baie praktiese redes waarom iemand ooit 'n keer op twee tafels sou optree. Dit is gewoonlik 'n waarskuwingsteken dat u 'n JOIN-klousule sleg geskryf het. Die resultaat van 'n PRODUK is dat elke kwalifiserende rekord in een tabel ooreenstem met elke kwalifiserende rekord in die ander tabel. Dus, as u 'n SELECT-stelling uit twee tabelle skep wat elk tien rekords het, sal die resultate in totaal 100 rekords wees.
UNION is 'n algemene operateur in versamelingsteorie. As u twee stelle het, kombineer die vakbond al die lede van beide stelle. Duplikasie word van die resultate verwyder. In SQL word dit geïmplementeer deur die OF Boole-operateur.
INTERSECT is die ander hoofoperateur van versamelingsteorie. As u twee stelle het, beskryf die sny die onderwerpe wat deel is van albei stelle. Enige vak wat slegs een van die twee stelle is, word uitgesluit van die uitslae. In SQL word dit geïmplementeer deur die EN Boole-operateur.
VERSKIL staan ​​ook bekend as "minus"En word in notasie voorgestel deur die minusteken (" – "). Daar is verskillende maniere om 'n VERSKIL te implementeer. Dit kan geskep word deur 'n Boole in te sluit NIE in die keuringskriteria en dit kan ook geïmplementeer word deur a MINUS operateur gevolg deur 'n subnavraag.
DIVIDE is 'n ongewone operasie wat net soos PRODUCT baie min praktiese toepassings het. Codd beskou DIVIDE as die suurtoets van enige verhoudingsisteem en die navraaginstrument, dus elke SQL-implementering bevat hierdie vermoë om net in aanmerking te kom vir die titel "relasioneel". In werklikheid sal jy dit nooit gebruik nie. Die implementering van 'n DIVIDE vereis 'n reeks subvrae wat in a gevoer word MINUS in Oracle SQL * Plus en 'n behalwe operateur in sommige ander SQL-implementasies, soos SQL Server en PostgreSQL.
George Boole was 'n Britse wiskundige wat in 1864 oorlede is. Hy het die Boolse algebra uitgevind, wat eers prakties toegepas is totdat die velde van informatika en verhoudingsdatabasisse in die laat 20ste eeu na vore gekom het. Boole-algebra is sentraal tot die werking van SQL – u kon slegs die mees basiese SQL-navraag skryf sonder om Boole-logika te gebruik. Die Boole-logika ondersteun ook alle soekenjins. Die belangrikste Boole-operateurs in SQL is:
Augustus die Moritaanse Brit wat u moet weet, is Augustus de Morgan. Hy het met 'n waarneming oor transformasie in die Boolese setteorie vorendag gekom, waarvan elke SQL-programmeerder bewus moet wees. Dit is dat 'n NIE kan verander hoe 'n EN en 'n OF werk nie. Die kort weergawe is dat u moet oppas hoe u hakies in u stellings gebruik om onbedoelde gevolge te voorkom. Dus moet 'en' en 'of' ook as die Boole-operateurs in SQL beskou word.
EN implementeer die sny in versamelingsteorie. As u rekords uit 'n databasis wil trek wat slegs aan twee vereistes voldoen en nie net een van die saamgestelde kriteria nie, moet u 'n AND gebruik. U kan byvoorbeeld 'n saadonderneming bedryf, en u databasis bevat 'n tabel waarin u al u sade met hul eienskappe stoor. 'N Klant skakel in en wil net geel begonias hê. U sal dus in u databasis soek spesie = "begonia" EN kleur = "geel" om die regte saad katalogus te kry.
OF gee u al die lede van twee stelle – dit is die UNIE in stelteorie. Dus, in u saaddatabasis, as u 'n navraag het: spesie = "begonia" OF kleur = "geel", u sou resultate kry wat geel rose, geel begonia, pienk begonias en geel narcissen insluit. In hierdie voorbeeld kwalifiseer geel begonias twee keer. In die verhoudingsteorie moet slegs een rekord terugbesorg word. Gelukkig bevat SQL die kwalifiseerder DISTINCT, dus deur in te gaan SELECT DISTINCT * UIT blomme WAAR spesie = "begonia" OF kleur = "geel", dat die geel begonia-rekord slegs een keer sou verskyn.
NIE is maklik om te verstaan ​​nie. Dit sluit die resultate uit wat die volgende stelling sou lewer: EN NIE, OF NIE. In die praktyk sal u "OF NIE" amper nooit in 'n navraag gebruik nie. As u saadkliënt 'n ander kleur begonia as geel wil hê, sou u dit gebruik spesie = "begonia" EN NIE kleur = "geel" produkte te kies om aan te bied.
Volgens De Morgan's Law:
"Die ontkenning van 'n disjunksie is die samewerking van die negasies; en die ontkenning van 'n voegwoord is die verbinding van die negasies ".
Gebruik gewone hakies in u SQL-stelling, indien u 'n NIE insluit om te verhoed dat u AND's in OR's verander nie, en omgekeerd. As u toestande saamvoeg, kan u keuringskriteria ook verkort. Byvoorbeeld, NIE (spesie = "begonia" EN kleur = "geel") is dieselfde as NIE spesies = "begonia" OF NIE kleur = "geel".
Verskillende SQL-implementasies gebruik verskillende sintaksis, maar in hierdie gids volg ons Oracle se SQL * Plus. Die basiese struktuur van 'n SQL-dataseleksie is:
Dit gee u 'n lys met waardes uit een kolom in een tabel. Dit is die PROJEK verhoudingsbewerking gedefinieër deur Codd.
U kan kolomme by die SELECT voeg of die wildkaart-operateur gebruik ("*") Om alle kolomme in die tabel te kry:
Dit is Codd's SELECT verhoudingsbewerking. Sonder die WAAR klousule, sou u elke rekord in die tabel kry.
Meerdere kolomme word met kommas geskei (","):
KIES kolom1, kolom2, kolom7
Die WAAR klousule kies spesifieke rekords. Dit is die belangrikste doel van Boole-operateurs:
WAAR spesies = "begonia" EN kleur = "geel"
U sal in hierdie voorbeelde sien dat u nie aanhalings rondom kolomname plaas nie, maar dat u aanhalings in kolomwaardes plaas. As u vergeet om aanhalings rondom waardes te plaas, sal die DBMS verwag dat die woorde kolomname sal wees. Dus, in die bogenoemde vraag, sonder die aanhalingstekens, sou u 'n fout kry met die boodskap dat daar geen begonia en geel kolomme in die tabel is nie.
Die sleutelwerk in SQL-navrae lê daarin om tabelle saam te voeg. Daar is baie truuks wat u met subvrae kan uitvoer, maar as u die aansluiting verkeerd gebruik, sal u navraag altyd verkeerde resultate lewer.
Die beste gids vir u deelname is die Diens vir entiteitsverhoudinge. Al wat u nodig het om 'n aansluiting te skep, is meer as een tabel in die tabel VAN klousule van die SELECT en maak seker dat u die skakelkolomme in die WAAR klousule. Let daarop dat sommige tabelle dieselfde kolomname kan gebruik. Om verwarring te voorkom, is dit beter om elke tafel in 'n aansluiting te gee skuilnaam sodat u die bron van die kolomme waarna u verwys in die SELECT-stelling kan identifiseer:
UIT saad a, verskaffers b
WAAR a.species = "begonia" EN a.color = "geel"
EN b.supplier_ID = a.supplier_ID
In die voorbeeld hierbo, supplier_ID is die primêre sleutel in die verskaffertabel en 'n veld met dieselfde naam is die vreemde sleutel in die saadtabel wat skakel na die toepaslike rekord in die verskaffers-tabel.
Alhoewel dit tegnies moontlik is om 'n OF vir 'n las te gebruik, is dit gewoonlik 'n AND. Gebruik slegs OR's vir keuringskriteria en nie om 'n aansluiting te skep nie.
U kan 'n SELECT verklaring as bron van data vir die hoof SELECT en u kan ook by verskeie aansluit SELECT verklarings tesame met operateurs, soos MINUS. Hierdie gevalle van ekstra navrae wat 'n hoof-SELECT-stelling bedien, word 'subqueries.'As u 'n subnavraag skep, is die sleutelwoord IN kan baie nuttig wees.
As u byvoorbeeld slegs geel begonias by verskaffers in die EU wil kry, kan u 'n lys met waardes saamstel met IN soos:
EN b.supplier_country IN ("VK", "Frankryk", "Duitsland" …)
Daardie lys van alle lande in die EU sal tot 28 waardes strek en u moet hulle almal invul – die "…" in die voorbeeld is slegs vir kortstondige bepalings. In hierdie voorbeeld sal u al u navrae moet hersien en die lys waardes moet verander sodra 'n land by die EU aansluit of dit verlaat. Dit is doeltreffender om 'n tabel met die EU-lande te skep en daarna te verwys. Dan hoef u slegs rekords in een tabel by te voeg of uit te vee namate die samestelling van die EU verander.
In hierdie scenario sou u 'n tabel met die naam EU_countries met 'n land_ID-veld as die primêre sleutel en 'n landnaamkolom skep. Dan kan u 'n subnavraag skep om die EU-landlys te skep:
EN b.supplier_country IN (SELECT landnaam van EU_countries)
Dit is moontlik om 'n reeks geneste vrae te skep en sommige SQL-funksies benodig ten minste twee SELECT-stellings. As u byvoorbeeld nie saadverskaffers buite die EU wil kry nie, kan u 'n MINUS gebruik:
UIT saad c, verskaffers d, EU_countries e
WAAR d.supplier_country_ID = e.country_ID
In die bogenoemde voorbeeld sal die tweede navraag baie meer rekords as die eerste terugbring. Nie een van die resultate van daardie navraag sal in die uitset verskyn nie. Enige resultate in die hoofnavraag wat ooreenstem met die resultate van die tweede navraag, sal van die uittreelys verwyder word.
U kan SQL kry om data vir u saam te vat tydens die verwerking van 'n navraag. Die GROEPEER VOLGENS klousule stel u in staat om statistieke oor groepe rekords te bereken. Byvoorbeeld:
SELECT spesies blom, tel (1) gevalle
GROEP PER spesie
In hierdie voorbeeld kan u 'n funksie sien, COUNT. Dit vereis 'n kolom as 'n parameter, maar u kan dit net 'n teken gee, in hierdie geval, 1. Hierdie voorbeeld wys ook dat u kolomname aliasse kan gee. Daar is nie 'n koma tussen spesies en blom in die eerste reël van die SELECT. Die DBMS interpreteer hierdie tweede woord as die kolomnaam wat in die uitset vertoon moet word. In sommige SQL-implementasies moet die alias in aanhalings wees, en in ander moet dit met die sleutelwoord aangedui word AS:
Kies spesies AS 'blom', tel (1) AS 'gevalle'
Dit is veral belangrik om 'n betekenisvolle naam op 'n kolom te plaas as u funksies in u navraag gebruik.
Bogenoemde navraag gee u 'n duidelike lys spesiename vanaf die saadtabel en gee 'n telling van al die rekords in die tabel wat elke waarde het.
U kan die uitsetsekwensie van resultate met 'n BESTEL DEUR klousule. Dit sal standaard in waardes in stygende volgorde vertoon, maar u kan ook spesifiseer om rekords in dalende volgorde te vertoon.
SELECT DISTINCT spesies
BESTEL volgens spesie BESKIKBAAR
As u verskeie kolomme in u uitvoer het, kan u een van die nominasies benoem om die bestelveld te wees. In die meeste SQL-implementasies hoef u nie die kolomnaam in die ORDER BY-klousule in te voer nie, maar slegs die kolomposisie nommer, soos BESTEL DEUR 2 as u wil hê dat die tweede kolom in die uitvoer die vertoonorde moet dikteer.
In hierdie voorbeeld sien u die DISTINCT opsie op 'n SELECT, wat dieselfde effek het as 'n GROEPEER VOLGENS. As u egter samevoegingsfunksies by 'n SELECT voeg, moet u die GROEPEER VOLGENS in plaas van DISTINCT.
U het die COUNT-funksie al gesien. Daar is baie ander funksies beskikbaar in alle implementasies van SQL. Dit is nie streng gesproke SQL nie, maar ekstra hulpmiddels wat deur die skepper van die SQL-weergawe bygevoeg word. Statistiese funksies, soos gemiddeld, som, maksimum en min, is algemeen vir alle SQL-geure.
Vloei-beheermeganismes, wat as INDIENs en TERWYL lusse bestaan ​​nie in SQL nie. Voorwaardelike seleksie kan egter deur 'n verskeidenheid funksies geïmplementeer word.
Die Comparitech SQL Cheat Sheet
Daar is 'n lang lys opsies wat u op 'n SELECT-stelling kan plaas. Hierdie kort handleiding dek slegs die basiese struktuur van die SELECT-stelling, wat die belangrikste instrument van SQL's is Datavraagtaal. U kan 'n uitgebreide lys in die Comparitech MySQL Cheat Sheet (PDF) sien. Die blad bevat ook die standaardopdragte wat gebruik word vir SQL se gegewensbeskrywingstaal, databeheertaal en datahanteringstaal.
As dit kom by die bestuur van opdragte op Windows, het PowerShell ietwat van
Խաբեբայության թերթերում ներկայացված բոլոր սեղանները ներկայացված են նաև ներքևում գտնվող աղյուսակներում, որոնց միջոցով հեշտ