SQL naredbe varalica

SQL naredbe varalica

SQL je strukturirani jezik upita. Stvorena je posebno za upravljanje i pristup podacima koji se nalaze u relacijskim bazama podataka. Prvi komercijalni pothvat koji je koristio SQL bio je Oracle koji i dalje ima svoj jezik upita SQL * Plus kao osnova cijelog svog sustava upravljanja relacijskim bazama podataka (RDMS).

Danas MySQL, SQL Server, SAP i Sybase svi koriste SQL za pristup bazi podataka. U ovom ćemo vam vodiču dati standardnu ​​verziju SQL naredbi, obraćajući posebnu pozornost na Oracle implementaciju u SQL * Plus.

IZBOR UREDNIKA: Preporučujemo alate za upravljanje infrastrukturom SolarWinds za nadzor svih vaših Microsoftovih alata, uključujući SQL Server. Potreban vam je paket alata za nadzor koji mogu komunicirati kako biste obuhvatili sve sadržaje koji podržavaju vašu relacijsku bazu podataka.

Relacijske baze podataka

SQL upravlja relacijske baze podataka. Relacijska baza podataka sadrži tablice koje su odvojene kako bi se smanjilo ponavljanje podataka. Proces odlučivanja o pravilnom grupiranju kategorija podataka naziva se “normalizacija.“U nekim slučajevima, zahtjevi za performansama mogu nalagati da tablice rade bolje ako nisu u potpunosti normalizirane. Ovaj se proces naziva “denormalizacija” i rijetka je pojava.

Svaka tablica treba stupac koji jedinstveno identificira svaki redak. To se naziva “Osnovni ključ.”Ostale tablice koje se mogu pridružiti tom entitetu moraju sadržavati referencu na primarni ključ u svakom zapisu. Ta se referenca naziva “strani kljuc.”Vi pridružiti tablice zajedno podudaranjem stranog ključa u jednoj tablici s primarnim ključem u drugoj. Ova radnja se izvodi sa SQL-om. Dijagram odnosa odnosa između entiteta korisna je referenca kada odlučujete o strukturiranju SQL izraza.

Da biste ubrzali pristup, normalno je staviti an indeks na svaki primarni ključ u bazi podataka. Moguće je i pohranjivanje često korištenih pridruživanja za stvaranje virtualnih tablica koje se nazivaju “pregleda.”

Još jedan objekt baze podataka je a okidač. Ovo je dio SQL-a koji se pokreće kad god se vrijednost doda u stupac ili promijeni. Okidač će ažurirati vrijednosti u stupcu u drugoj tablici ili drugim stupcima u istoj tablici. To se događa ako se u stupcu na koji je postavljen okidač dodana ili promijenjena vrijednost. Također može ograničiti vrijednosti koje se mogu unijeti u stupac.

DQL, DDL, DCL i DML

SQL uključuje četiri podskupine naredbi. Ovi su Jezik upita podataka (DQL), Jezik opisa podataka (DDL), Jezik kontrole podataka (DCL), i Jezik manipulacije podacima (DML).

Na većini projekata Administrator baze podataka (DBA) je jedini član tima koji ima povlastice DDL. Ova naredbena skupina stvara, mijenja i ispušta tablice, indekse, okidače i prikaze.

DML koristi se za dodavanje, promjenu ili uklanjanje zapisa iz tablica u bazi podataka. Pristup ovim SQL funkcijama obično je ograničen na pomoćno osoblje ili starije, odgovorne članove korisničke zajednice.

DQL koristi se za generiranje izvješća iz baze podataka. Ovaj podskup naredbi koriste programeri i mogu biti dostupni krajnjim korisnicima kako bi mogli izvršavati vlastite upite.

Upravljanje korisničkim povlasticama pohranjuje se u istoj bazi podataka kao i podaci. Međutim, pristup ovim tablicama obično je ograničen na DBA. Upravljanje pristupom korisniku sve se provodi kroz DCL.

Postoji jedna korisna SQL naredba koja ne spada u klasifikacije DQL, DDL, DCL ili DML. Ovo je “opisati“Koja se obično provodi kao DESC. To pokazuje strukturu objekta u bazi podataka. U slučaju tablice prikazat će popis stupaca te vrstu i veličinu podataka. Pokazat će SQL koji je stvorio prikaz ili okidač i stupce koji su uključeni u određeni indeks.

Relacijski operatori

Teorija iza relacijskih baza podataka definirana je s E. F. Codd 1970. U Coddovoj definiciji leži zahtjev alata za ispitivanje koji mora implementirati osam bitnih relacijskih operacija. Ovi su:

  1. ODABERI
  2. PROJEKT
  3. PRIDRUŽITI
  4. PROIZVOD
  5. UNIJA
  6. presjeći
  7. RAZLIKA
  8. PODIJELITI
  9 najboljih alata za nadgledanje spremnika kontejnera

Morate savladati svaku od tih operacija kako biste učinkovito pristupili podacima iz relacijske baze podataka. To su objašnjena u nastavku.

ODABERI

SELECT se izvorno zvao OGRANIČITI. To je mogućnost izdvajanja jednog zapisa ili grupe odgovarajućih zapisa iz tablice u bazi podataka. Kao i teorijska operacija, ODABERI je ime glavne naredbe u bilo kojoj SQL implementaciji. Zapravo, sve pronalaženje podataka vrši se SELECT. Naredba je toliko moćna da se može mijenjati na mnogo, mnogo načina. Većina SQL-a koje ćete morati naučiti jesu “klauzule” na SELECT izjavi.

PROJEKT

PROJEKT je sposobnost izoliranja stupca (ili “atributa”) u tablici. Uvijek se provodi s stavkom SELECT.

PRIDRUŽITI

PRIDRUŽITE se povezuje tablice na zajednički atribut. Strani ključ u jednoj tablici koristite za podudaranje s vrijednostima primarnog ključa u drugoj tablici. Akt učinkovito objedinjuje dvije tablice. To se implementira kao klauzula u izrazu SELECT. Spajanje između dvije tablice automatski će izostaviti sve zapise koji se ne pojavljuju u obje potporne tablice. A “vanjski spoj“Prikazat će zapise koji nemaju podudaranje u drugoj tablici, a polja koja bi trebala imati druga tablica ostavljaju prazna.

PROIZVOD

PROIZVOD je također poznat i kao “puta.”Ovo se implementira kao SELECT izjava koja crpi podatke iz dvije tablice, ali ne određuje spajanje između njih. U stvarnom životu postoji vrlo malo praktičnih razloga zašto bi itko ikad izveo dva stola. Obično je znak upozorenja da ste loše napisali klauzulu JOIN. Rezultat PROIZVODA je da se svaki kvalificirani zapis u jednoj tablici podudara sa svakim kvalificiranim zapisom u drugoj tablici. Dakle, ako stvorite SELECT izjavu iz dvije tablice, od kojih svaka ima deset zapisa, rezultati će biti ukupno 100 zapisa.

UNIJA

UNION je čest operator u teoriji skupova. Ako imate dva seta, sindikat kombinira sve članove oba skupa. Umnožavanje uklanja se iz rezultata. U SQL-u to implementira ILI Boolov operator.

presjeći

INTERSECT je drugi glavni operator teorije skupova. Ako imate dva skupa, sjecište opisuje one predmete koji su članovi oba skupa. Bilo koji predmet koji je član samo jednog od dva skupa isključen je iz rezultata. U SQL-u to implementira I Boolov operator.

RAZLIKA

RAZLIKA je poznata i kao “minus“, A u notaciji je predstavljen znakom minus (” – “). Nekoliko je načina provedbe RAZLIKE. Može se stvoriti uključivanjem boola NE u kriterijima za odabir te ga također može provesti a MINUS operatera nakon čega slijedi podupitnik.

PODIJELITI

DIVIDE je neobična operacija koja, poput PRODUCT-a, ima vrlo malo praktične primjene. Codd je DIVIDE smatrao kiselinskim testom bilo kojeg relacijskog sustava i njegovog alata za upite, tako da svaka SQL implementacija uključuje tu mogućnost samo da bi se kvalificirala za naslov “relacijska”. U stvarnosti, nikad je nećete koristiti. Provedba DIVIDE zahtijeva niz podupitava koji se unose u MINUS u Oracle SQL * Plus i an OSIM operatora u nekim drugim implementacijama SQL-a, kao što su SQL Server i PostgreSQL.

Bulovi operateri

George Boole bio je britanski matematičar koji je umro 1864. Izumio je Booleovu algebru koja nije imala praktičnu primjenu sve dok se polja informatike i relacijske baze podataka nisu pojavila u kasnom 20. stoljeću. Booleova algebra središnja je rad u SQL-u – mogli ste pisati najosnovnije SQL upite bez korištenja logike logike. Boolova logika također podupire sve tražilice. Ključni Booleovi operateri u SQL-u su:

  • I
  • ILI
  • NE

Još jedan čudan viktorijanski Britanac o kojem morate znati je Augustus de Morgan. Iznio je promatranje transformacije u Booleovoj teoriji skupova, čega svaki SQL programer mora biti svjestan. Ovo je što NE može promijeniti način rada AND i OR. Kratka verzija je da morate biti oprezni kako koristite zagrade u svojim izjavama kako biste izbjegli nenamjerne posljedice. Dakle, i i i ili se također trebaju smatrati važnim logičnim operatorima u SQL-u.

I

I provodi presjeći u teoriji skupova. Ako želite izvući zapise iz baze podataka koji se podudaraju samo s dva zahtjeva, a ne samo jednim od tih složenih kriterija, trebate upotrijebiti AND. Na primjer, možete pokrenuti sjemensku tvrtku, a vaša baza podataka sadrži tablicu koja pohranjuje sva vaša sjemena s njihovim atributima. Kupac se javi i želi samo žute begonije. Dakle, ti bi pretraživao svoju bazu podataka vrsta = “begonija” I boja = “žuta” dobiti pravi katalog sjemena.

  Objašnjeni sustavi za otkrivanje provale: 12 pregledanih najboljih IDS alata

ILI

ILI vam daje sve članove dva skupa – to je UNIJA u teoriji skupova. Dakle, u svojoj sjemenskoj bazi podataka ako ste pokrenuli upit: vrsta = “begonija” ILI boja = “žuta”, dobili biste rezultate koji uključuju žute ruže, žutu begoniju, ružičaste begonije i žute narcis. U ovom primjeru, žute se begonije kvalificiraju dva puta. U relacijskoj teoriji treba vratiti samo jedan zapis. Srećom, SQL uključuje kvalifikator jASne, pa ulaskom ODABIR DISTINCT * OD cvijeća GDJE vrsta = “begonija” ILI boja = “žuta”, taj bi se zapis o žutoj begoniji pojavio samo jednom.

NE

Nije lako razumjeti. Isključuje rezultate koje bi proizvela sljedeća izjava: I NE, ILI NE. U praksi gotovo nikad nećete koristiti upitnik “ILI NE”. Ako je vaš kupac za sjeme želio bilo koju drugu boju begonije, osim žute, upotrijebili biste je vrsta = „begonija“, a NE boja = „žuta“ za odabir proizvoda za ponuditi.

Zagrade

Prema De Morganovom zakonu:

„Negacija disjunkcije spoj je negacija; a negacija konjukcije je disjunkcija negacija. “.

Na običnom engleskom jeziku koristite zagrade pažljivo u SQL izjavi kada uključuju i NOT kako biste spriječili da se vaši AND-ovi transformiraju u OR-ove i obrnuto. Uvjeti zagrade zajedno mogu također skratiti kriterije odabira. Na primjer, NE (vrste = „begonija“ I boja = „žuta“) isto je kao NIJE vrsta = „begonija“ ILI NIJE boja = „žuta“.

Vađenje zapisa

Različite SQL implementacije koriste različite sintakse, ali u ovom ćemo vodiču slijediti Oracleov SQL * Plus. Osnovna struktura izbora SQL podataka je:

ODABERI
IZ

GDJE

Tako ćete dobiti popis vrijednosti iz jednog stupca u jednoj tablici. Ovo je PROJEKT relacijski rad definiran Coddom.

Stupcevima možete dodati SELECT ili upotrijebiti nadređeni operator (“*“) Da biste dobili sve stupce u tablici:

ODABERI *
IZ

GDJE

Ovo je Codd’s ODABERI relacijski rad. Bez toga GDJE klauzulu, dobili biste svaki zapis u tablici.

Više stupaca odvojeno je zarezima (“,„):

ODABIR stupac1, stupac2, stupac7
IZ

GDJE

GDJE klauzula odabire određene zapise. Ovo je najvažnija svrha logičkih operatera:

ODABERITE seed_num, seed_desc
OD sjemenki
GDJE vrsta = “begonija” I boja = “žuta”

U tim ćete primjerima primijetiti da navodnike ne stavljate oko imena stupaca, nego navodite oko vrijednosti stupca. Ako zaboravite staviti navodnike oko vrijednosti, DBMS očekuje da će riječi biti nazivi stupaca. Dakle, u gornjem upitu, bez navodnika, dobili biste pogrešku koja vam govori da u tablici nema begonije i žutih stupaca.

Pridruživanje stolovima

Ključni posao u SQL upitima leži u spajanju tablica. Postoji mnogo trikova koje možete izvesti s podupitima, ali ako pogrešno pridružite, vaš će upit uvijek vratiti netočne rezultate..

Vaš najbolji vodič za pridruživanje je Dijagram odnosa između entiteta i odnosa. Sve što vam je potrebno za stvaranje pridruživanja uključuje više od jedne tablice u IZ odredbu SELECT i obavezno navedite povezujuće stupce u GDJE klauzula. Imajte na umu da neke tablice mogu koristiti iste nazive stupaca. Da biste izbjegli zabune, bolje je svakoj tablici pridružiti pridruženi a pseudonim tako da možete prepoznati izvor stupaca na koje upućujete u naredbi SELECT:

ODABIR a.seed_num, a.seed_desc, b.supplier_name
IZ sjemena a, dobavljači b
GDJE a.species = “begonija” I a.color = “žuto”
I b.supplier_ID = a.supplier_ID

U gornjem primjeru, supplier_ID je primarni ključ u tablici dobavljača, a polje s istim nazivom je inozemni ključ u tablici sjemena koji se povezuje na odgovarajući zapis u tablici dobavljača..

Iako je tehnički moguće koristiti ILI za spajanje, uobičajenije je koristiti AND. ILI koristite samo za kriterije odabira, a ne za stvaranje pridruživanja.

Podupiti

Možete koristiti a ODABERI izjava kao izvor podataka za glavni ODABERI a možete im se pridružiti i nekoliko ODABERI izjave zajedno s operaterima, kao što su MINUS. Ovi slučajevi dodatnih upita koji poslužuju glavni SELECT izraz nazivaju se “podupiti.”Prilikom izrade podupita, ključne riječi U može biti vrlo korisno.

Na primjer, ako želite samo dobiti žute begonije od dobavljača u EU, možete stvoriti popis vrijednosti sa U kao što su:

ODABIR a.seed_num, a.seed_desc, b.supplier_name
IZ sjemena a, dobavljači b
GDJE a.species = “begonija” I a.color = “žuto”
I b.supplier_ID = a.supplier_ID
I b.supplier_country IN („UK“, „France“, „Germany“…)

Taj bi se popis svih zemalja u EU-u protezao na 28 vrijednosti i u njima biste trebali upisati sve – primjer “…” je samo radi sažetke. U ovom primjeru morat ćete ponovo pregledati sve svoje upite i promijeniti taj popis vrijednosti kad god se neka država pridružila ili napustila EU. Učinkovitije je stvoriti tablicu zemalja EU i uputiti se na to. Tada samo morate dodati ili izbrisati zapise u jednoj tablici kako se sastav EU mijenja.

U ovom ćete slučaju stvoriti tablicu pod nazivom EU_countries s poljem country_ID kao primarnim ključem i stupcem imena države. Tada možete stvoriti podupit za izradu popisa zemalja EU:

ODABIR a.seed_num, a.seed_desc, b.supplier_name
IZ sjemena a, dobavljači b
GDJE a.species = “begonija” I a.color = “žuto”
I b.supplier_ID = a.supplier_ID
I b.supplier_country IN (SELECT naziv zemlje iz EU_countries)

Moguće je stvoriti niz ugniježđenih upita, a neke SQL funkcije trebaju najmanje dva SELECT izraza. Na primjer, ako želite dobiti dobavljače sjemena koji nisu iz EU-a, možete upotrijebiti MINUS:

ODABIR a.seed_num, a.seed_desc, b.supplier_name
IZ sjemena a, dobavljači b
GDJE a.species = “begonija” I a.color = “žuto”
I b.supplier_ID = a.supplier_ID
MINUS
IZBOR c.seed_num, c.seed_desc, d.supplier_name
OD sjemena c, dobavljača d, EU_država e
GDJE d.supplier_country_ID = e.country_ID
I b.supplier_ID = a.supplier_ID

U gornjem primjeru, drugi upit vratit će daleko više zapisa nego prvi. No, niti jedan rezultat tog upita neće se pojaviti u izlazu. Svi rezultati u glavnom upitu koji odgovaraju rezultatima drugog upita bit će uklonjeni s izlaznog popisa.

GRUPA PO

Možete dobiti SQL za objedinjavanje podataka za vas tijekom obrade upita. GRUPA PO klauzula omogućuje vam izračun statističkih podataka o skupinama zapisa. Na primjer:

ODABIR cvijeta vrsta, broj (1) primjeraka
OD sjemenki
GRUPA PO vrstama

U ovom primjeru možete vidjeti funkciju, RAČUNATI. Ovo zahtijeva stupac kao parametar, ali u tom slučaju možete mu dati samo token, 1.  Ovaj primjer također pokazuje da možete dati pseudonime imena stupaca. Ne postoji koma između vrsta i cvijeta u prvom redu ODABERI. DBMS će interpretirati ovu drugu riječ kao naziv stupca koji će se prikazati u izlazu. U nekim SQL implementacijama taj pseudonim treba biti u navodnicima, a u drugima bi trebao biti naveden ključnom riječi KAO:

ODABIR vrsta kao „cvijet“, broji (1) KAO „primjeri“
OD sjemenki
GRUPA PO vrstama

Stavljanje smislenog imena u stupac osobito je važno ako koristite funkcije u upitu.

Gornji upit dat će vam različit popis imena vrsta iz tablice sjemena i dati će broj svih zapisa u tablici koji imaju svaku vrijednost.

NARUČITE PO

Možete odrediti izlazni slijed rezultata s NARUČITE PO klauzula. To će po zadanome pokazati vrijednosti u uzlaznom redoslijedu, ali možete odrediti i prikazivanje zapisa u silaznom redoslijedu.

ODABIR DISTINCT vrsta
OD sjemenki
NARUČITE PO vrstama DESC

Ako u svom izlazu imate nekoliko stupaca, možete imenovati bilo koji od njih u polje za naručivanje. U većini SQL implementacija ne morate upisivati ​​naziv stupca u odredbu ORDER BY, već samo broj položaja stupca, kao što je NARUČITE DO 2 kada želite da drugi stupac na izlazu diktira redoslijed prikaza.

U ovom primjeru vidite jASne opcija na a ODABERI, koji ima isti učinak kao a GRUPA PO. Međutim, ako dodate funkcije objedinjavanja u SELECT, morat ćete koristiti GRUPA PO umjesto jASne.

SQL funkcije

Već ste vidjeli funkciju COUNT. Mnogo je drugih funkcija dostupnih u svim implementacijama SQL-a. To nisu, strogo govoreći, SQL, već su dodatni uslužni programi koje je stvorio SQL verzija. Statističke funkcije, kao što su prosjek, zbroj, max i min, zajedničke su svim SQL okusima.

Mehanizmi za kontrolu protoka, koji kao AKOs i DOK petlje ne postoje u SQL-u. Međutim, uvjetni odabir može se provesti kroz različite funkcije.

Comparitech SQL varalica

Dug je popis opcija koje možete staviti na stavku SELECT. Ovaj kratki vodič obuhvatio je samo osnovnu strukturu naredbe SELECT, koja je glavni alat SQL-a Jezik upita podataka. Opširni popis možete vidjeti u Comparitech MySQL Cheat Sheet (PDF). Taj list također sadrži standardne naredbe koje se koriste za SQL-ov jezik opisa podataka, jezik kontrole podataka i jezik upravljanja podacima.

About the author

Comments

  1. SQL es un lenguaje estructurado de consulta. Fue creado específicamente para la gestión y acceso a datos que se encuentran en bases de datos relacionales. El primer proyecto comercial que utilizó SQL fue Oracle, que todavía tiene su lenguaje de consulta SQL * Plus como base de todo su sistema de gestión de bases de datos relacionales (RDMS). Hoy en día, MySQL, SQL Server, SAP y Sybase todos utilizan SQL para acceder a bases de datos. En esta guía, le proporcionaremos la versión estándar de las instrucciones SQL, prestando especial atención a la implementación de Oracle en SQL * Plus. EDITORS CHOICE: Recomendamos las herramientas de gestión de infraestructura de SolarWinds para supervisar todas sus herramientas de Microsoft, incluido SQL Server. Necesita un paquete de herramientas de supervisión que puedan comunicarse entre sí para cubrir todo el contenido que respalda su base de datos relacional.

Comments are closed.