Kako podesiti pametne telefone i računare. Informativni portal

Sql odabir iz upita. Korištenje dužine žice

Svaki web programer treba da poznaje SQL kako bi mogao pisati upite za bazu podataka. Iako phpMyAdmin nije otkazan, često je potrebno uprljati ruke za pisanje niskog nivoa SQL-a.

Zato smo pripremili kratak obilazak osnova SQL-a. Počnimo!

1. Kreiranje tabele

Naredba CREATE TABLE se koristi za kreiranje tablica. Argumenti moraju biti nazivi kolona, ​​kao i njihovi tipovi podataka.

Kreirajmo jednostavnu tabelu pod nazivom mjesec... Sastoji se od 3 kolone:

  • id- Broj mjeseca u kalendarskoj godini (cijeli broj).
  • ime- Naziv mjeseca (string, maksimalno 10 znakova).
  • dana- Broj dana u ovom mjesecu (cijeli broj).

Ovako će izgledati odgovarajući SQL upit:

CREATE TABLE mjeseci (id int, naziv varchar (10), dani int);

Takođe, prilikom kreiranja tabela, preporučljivo je dodati primarni ključ za jednu od kolona. Ovo će zadržati jedinstvenost zapisa i ubrzati zahtjeve za preuzimanje. Neka naziv mjeseca bude jedinstven u našem slučaju (kolona ime)

CREATE TABLE mjeseci (id int, naziv varchar (10), dani int, PRIMARY KEY (ime));

datum i vrijeme
Tip podatakaOpis
DATUMVrijednosti datuma
DATETIMEVrijednosti datuma i vremena s minimalnom preciznošću
VRIJEMEVremenske vrijednosti

2. Umetanje redova

Sada popunimo našu tabelu mjeseci korisne informacije. Dodavanje zapisa u tabelu se vrši preko INSERT naredbe. Postoje dva načina za pisanje ove instrukcije.

Prvi način nije da navedete imena kolona u koje će podaci biti umetnuti, već da navedete samo vrijednosti.

Ova metoda pisanja je jednostavna, ali nesigurna, jer ne postoji garancija da će, kako širite projekat i uređujete tabelu, kolone biti istim redoslijedom kao i prije. Sigurniji (i u isto vrijeme glomazniji) način pisanja INSERT naredbe zahtijeva navođenje vrijednosti i redoslijeda stupaca:

Evo prve vrijednosti na listi VRIJEDNOSTI odgovara prvom specificiranom imenu kolone i tako dalje.

3. Dohvaćanje podataka iz tabela

Naredba SELECT je naš najbolji prijatelj kada želimo dohvatiti podatke iz baze podataka. Često se koristi, stoga pažljivo pročitajte ovaj odjeljak.

Najjednostavnija upotreba naredbe SELECT je upit koji vraća sve stupce i redove iz tablice (na primjer, tablice po imenu karaktera):

ODABIR * IZ "karaktera"

Zvjezdica (*) znači da želimo dobiti podatke iz svih kolona. Budući da se SQL baze podataka obično sastoje od više od jedne tablice, tada se ključna riječ FROM mora navesti, nakon čega slijedi naziv tablice, odvojen razmakom.

Ponekad ne želimo da dobijemo podatke iz ne svih kolona u tabeli. Da bismo to učinili, umjesto zvjezdice (*), moramo napisati nazive željenih kolona odvojenih zarezima.

SELECT id, naziv IZ mjeseca

Takođe, u mnogim slučajevima želimo da se rezultati sortiraju određenim redosledom. U SQL-u to radimo sa ORDER BY. Može uzeti opcionalni modifikator - ASC (podrazumevano) sortiranje uzlaznim redoslijedom ili DESC sortiranje u opadajućem redoslijedu:

SELECT id, naziv IZ mjeseca ORDER BY name DESC

Kada koristite ORDER BY, uvjerite se da će to biti posljednji u SELECT izrazu. U suprotnom će se prikazati poruka o grešci.

4. Filtriranje podataka

Naučili ste kako odabrati striktno određene stupce iz baze podataka koristeći SQL upit, ali što ako također trebamo dohvatiti određene redove? Ovdje u pomoć dolazi klauzula WHERE, koja nam omogućava da filtriramo podatke ovisno o stanju.

U ovom upitu biramo samo te mjesece iz tabele mjesec, u kojem više od 30 dana korištenje operatora više (>).

SELECT id, ime FROM mjeseca WHERE dana> 30

5. Napredno filtriranje podataka. AND i OR operatori

Ranije smo koristili filtriranje podataka koristeći jedan kriterij. Za sofisticiranije filtriranje podataka, možete koristiti AND i OR operatore i operatore poređenja (=,<,>,<=,>=,<>).

Ovdje imamo tabelu koja sadrži četiri najprodavanija albuma svih vremena. Hajde da izaberemo one koji se klasifikuju kao rok i imaju manje od 50 miliona prodatih primeraka. Ovo se lako može uraditi postavljanjem operatora AND između dva uslova.


SELECT * FROM albuma WHERE žanr = "rock" I prodaja_u_milionima<= 50 ORDER BY released

6. U / Između / Sviđa mi se

WHERE također podržava nekoliko posebnih naredbi, što vam omogućava da brzo provjerite svoje najčešće korištene upite. Evo ih:

  • IN - služi za označavanje niza uslova, od kojih se bilo koji može ispuniti
  • IZMEĐU - Provjerava da li je vrijednost unutar navedenog raspona
  • LIKE - traži određene uzorke

Na primjer, ako želimo odabrati albume sa pop i soul muziku, možemo koristiti IN ("value1", "value2").

SELECT * IZ albuma WHERE žanr IN ("pop", "soul");

Ako želimo da dobijemo sve albume objavljene između 1975. i 1985. godine, moramo snimiti:

SELECT * IZ albuma GDJE su izdani IZMEĐU 1975. I 1985.;

7. Funkcije

SQL je prepun funkcija koje rade korisne stvari. Neki od najčešće korištenih su:

  • COUNT () - Vraća broj redova
  • SUM () - Vraća ukupan zbroj numeričke kolone
  • AVG () - Vraća prosjek skupa vrijednosti
  • MIN () / MAX () - dobija minimalnu / maksimalnu vrijednost iz stupca

Da bismo dobili najnoviju godinu u našoj tabeli, moramo napisati sljedeći SQL upit:

SELECT MAX (objavljeno) IZ albuma;

8. Potupiti

U prethodnom paragrafu naučili smo kako da radimo jednostavne proračune sa podacima. Ako želimo koristiti rezultat ovih proračuna, ne možemo bez ugniježđenih upita. Recimo da želimo izlaz umjetnik, album i godina izdanja za najstariji album na tabeli.

Znamo kako doći do ovih specifičnih stupaca:

ODABIR IZVOĐAČA, album, objavljen IZ albuma;

Znamo i kako da dobijemo najraniju godinu:

SELECT MIN (objavljeno) IZ albuma;

Sve što sada trebate je da kombinujete dva upita koristeći WHERE:

SELECT izvođača, album, objavljen FROM albuma GDJE objavljen = (IZABIR MIN (objavljen) IZ albuma);

9. Povezivanje tablica

U složenijim bazama podataka postoji nekoliko tabela koje su međusobno povezane. Na primjer, ispod su dvije tabele o video igrama ( video igrice) i programeri video igara ( game_developers).


U tabeli video igrice postoji kolona za programere ( developer_id), ali sadrži cijeli broj, a ne ime programera. Ovaj broj je identifikator ( id) odgovarajućeg programera iz tabele programera igara ( game_developers), logički povezujući dvije liste, što nam omogućava da istovremeno koristimo informacije pohranjene na obje liste.

Ako želimo da kreiramo upit koji vraća sve što se može znati o igrama, možemo koristiti INNER JOIN da povežemo kolone iz obe tabele.

SELECT video_games.name, video_games.genre, game_developers.name, game_developers.country FROM video_games INNER JOIN game_developers ON video_games.developer_id = game_developers.id;

Ovo je najjednostavniji i najčešći tip JOIN. Postoji nekoliko drugih opcija, ali one se odnose na manje uobičajene slučajeve.

10. Aliasi

Ako pogledate prethodni primjer, primijetit ćete da postoje dvije pozvane kolone ime... Ovo je zbunjujuće, pa hajde da postavimo pseudonim za jednu od kolona koja se ponavljaju, na primer ime sa stola game_developersće biti pozvan developer.

Upit također možemo skratiti navođenjem alijasa za nazive tablica: video igrice nazovimo igrice, game_developers - devs:

SELECT games.name, games.genre, devs.name AS developer, devs.country FROM video_games AS games INNER JOIN game_developers AS devs ON games.developer_id = devs.id;

11. Ažuriranje podataka

Često moramo promijeniti podatke u nekim redovima. U SQL-u se to radi pomoću izraza UPDATE. Izjava UPDATE se sastoji od:

  • Tabela koja sadrži zamjensku vrijednost;
  • Imena kolona i njihove nove vrijednosti;
  • WHERE odabrani redovi koje želimo ažurirati. Ako se to ne učini, svi redovi u tabeli će se promijeniti.

Ispod je tabela televizijske serije sa serijama sa svojim rejtingom. Međutim, mala greška se uvukla u tabelu: iako serija Igra prijestolja i opisan je kao komedija, on to zaista nije. Hajde da to popravimo!

Podaci tabele Tv_series UPDATE tv_series SET žanr = "drama" WHERE id = 2;

12. Brisanje podataka

Brisanje reda u tabeli pomoću SQL-a je vrlo jednostavan proces. Sve što trebate učiniti je odabrati tabelu i red za brisanje. Uklonimo zadnji red u tabeli iz prethodnog primjera. televizijske serije... Ovo se radi pomoću naredbe> DELETE

IZBRIŠI IZ tv_serije GDJE id = 4

Budite oprezni kada pišete naredbu DELETE i uvjerite se da je prisutna klauzula WHERE, inače će svi redovi u tabeli biti izbrisani!

13. Ispuštanje stola

Ako želimo da izbrišemo sve redove, ali napustimo samu tabelu, onda koristimo naredbu TRUNCATE:

TRUNCATE TABLE ime_tablice;

U slučaju kada zapravo želimo da izbrišemo i podatke i samu tabelu, onda nam dobro dođe naredba DROP:

DROP TABLE ime_tablice;

Budite veoma oprezni sa ovim komandama. Ne mogu se poništiti! / P>

Ovim je naš SQL tutorijal završen! Nismo pokrili puno toga, ali ono što već znate trebalo bi biti dovoljno da vam pruži neke praktične vještine u vašoj web karijeri.

Tipovi podatakaSQL(Kako ustrkao u standardu)

Vrste nizova

Numerički tipovi podataka

Monetarni, karakterni, binarni tipovi podataka

Boolean tip. Enumerations

Primjeri najjednostavnijih SQL upita

Osnovni SELECT upiti

SQL SELECT izraz je najvažniji i najčešće korišten izraz. Dizajniran je za dohvaćanje informacija iz tablica baze podataka. Pojednostavljena sintaksa za SELECT izraz je sljedeća.

SELECT [ALL | DISTINCT] select_item_commalist

FROM table_reference_commalist

[WHERE uslovni_izraz]

[GROUP BY column_name_commalist]

[IMATI uvjetni_izraz]

[ORDER BY order_item_commalist]

U zahtjevu mogu nedostajati stavke u uglastim zagradama.

Ključna riječ SELECT govori bazi podataka da je klauzula zahtjev za povlačenjem.

Nakon riječi SELECT navode se nazivi polja (lista atributa) čiji se sadržaj traži, odvojeni zarezima.

Potrebna ključna riječ u klauzuli SELECT je riječ FROM (od). Nakon ključne riječi FROM slijedi lista imena tablica odvojenih zarezima iz kojih se preuzimaju informacije.

Na primjer, odaberite naslov, opis iz filma

Svaki SQL upit mora završiti sa ";" (tačka-zarez). Rezultat ovog upita bit će tabela ...

Redoslijed kolona u ovoj tabeli odgovara redoslijedu polja navedenih u upitu

Ako trebate prikazati vrijednosti svih stupaca tabele, možete koristiti simbol "*" (zvjezdica) umjesto da navodite njihova imena.

SELECT * FROM film;

U ovom slučaju, rezultat izvršavanja upita bit će cijela tabela filma.

Još jednom, obratimo pažnju na činjenicu da tablice dobivene kao rezultat SQL upita ne zadovoljavaju u potpunosti definiciju relacijskog odnosa. Konkretno, mogu sadržavati tuple (stringove) sa istim vrijednostima atributa.

Na primjer, upit "lista imena glumaca" može se napisati na sljedeći način.

odaberite ime od glumca;

Njegov rezultat će biti tabela, tabela sadrži iste redove. Da biste isključili duple zapise iz rezultata SELECT upita, koristite DISTINCT (različiti) ključnu riječ.

Ako upit SELECT dohvaća više polja, tada DISTINCT eliminira duple redove u kojima su vrijednosti svih odabranih polja identične.

Prethodni zahtjev se može napisati na sljedeći način.

odaberite različito ime od glumca;

Kao rezultat, dobijamo tabelu u kojoj su dupli redovi isključeni.

Ključna riječ ALL, za razliku od DISTINCT, ima suprotan učinak, to jest, kada se koristi, dupli redovi se uključuju u izlaz. Režim specificiran ključnom riječi ALL je po defaultu uključen, stoga se praktično ne koristi u tu svrhu u stvarnim upitima.

Korištenje klauzule definirane ključnom riječi WHERE (where) u SELECT izrazu omogućava vam da specificirate izraz uvjeta (predikat) koji uzima istinitu ili lažnu vrijednost za vrijednosti polja redova tablice na koje se odnosi SELECT izraz . Klauzula WHERE određuje koji redovi navedenih tablica trebaju biti odabrani. Tabela, koja je rezultat upita, uključuje samo one redove za koje uslov (predikat) naveden u klauzuli WHERE daje vrijednost istinitom.

Primjer: Napišite upit koji bira prezimena svih aktera po imenu PENELOPE

odaberite prezime od glumca

gdje first_name = "PENELOPE";

U uslovima navedenim u klauzuli WHERE, operacije poređenja definisane operatorima = (jednako),> (veće od),< (меньше), >= (veće ili jednako),<- (меньше или равно), <>(nije jednako), kao i logičke operatore AND, OR i NOT.

Na primjer, zahtjev za dobivanje naziva i opisa filmova - kratkih filmova (kraćih od 60 minuta), čiji najam košta manje od 3 dolara, izgledat će ovako:

odaberite naslov, opis iz filma

gde dužina< 60 and rental_rate < 3

Rezultat ovog upita je:

iznajmljivanje - iznajmljivanje

inventar - inventar, zalihe

prodavnica- zaliha, prodavnica

Svako od nas redovno nailazi i koristi razne baze podataka. Kada odaberemo adresu e-pošte, radimo sa bazom podataka. Baze podataka koriste pretraživače, banke za skladištenje podataka o klijentima itd.

Ali, uprkos stalnoj upotrebi baza podataka, čak i za mnoge programere softverskih sistema postoje mnoge „prazne tačke“ zbog različitih tumačenja istih pojmova. Daćemo kratku definiciju osnovnih pojmova baze podataka pre nego što pogledamo SQL jezik. Dakle.

Baza podataka - datoteka ili skup datoteka za pohranjivanje uređenih struktura podataka i njihovih odnosa. Vrlo često se baza podataka naziva kontrolnim sistemom.Baza podataka je samo skladište informacija u određenom formatu i može raditi sa različitim DBMS-ima.

sto - Zamislite fasciklu u kojoj se čuvaju dokumenti grupirani po određenom kriterijumu, na primer, lista porudžbina za prošli mesec. Ovo je tabela u kompjuteru.Zasebna tabela ima svoje jedinstveno ime.

Tip podataka - vrsta informacija koje je dozvoljeno pohraniti u posebnu kolonu ili red. To mogu biti brojevi ili tekst u određenom formatu.

Kolona i red- svi smo radili sa tabelama, koje takođe imaju redove i kolone. Svaka relaciona baza podataka radi sa tabelama na sličan način. Linije se ponekad nazivaju zapisima.

Primarni ključ- svaki red tabele može imati jednu ili više kolona za svoju jedinstvenu identifikaciju. Bez primarnog ključa, vrlo je teško ažurirati, modificirati i izbrisati potrebne redove.

Šta je SQL?

SQL(engleski - strukturirani jezik upita) razvijen je samo za rad sa bazama podataka i trenutno je standard za sve popularne DBMS. Sintaksa jezika se sastoji od malog broja operatora i lako se uči. Ali, uprkos vanjskoj jednostavnosti, omogućava kreiranje sql upita za složene operacije s bazom podataka bilo koje veličine.

Od 1992. godine postoji općeprihvaćeni standard koji se zove ANSI SQL. Definira osnovnu sintaksu i funkcije operatora i podržavaju ga svi lideri na tržištu DBMS, kao što je ORACLE.Nemoguće je sagledati sve karakteristike jezika u jednom malom članku, pa ćemo ukratko razmotriti samo osnovni SQL upite. Primjeri jasno pokazuju jednostavnost i mogućnosti jezika:

  • kreiranje baza podataka i tabela;
  • dohvaćanje podataka;
  • dodavanje zapisa;
  • modifikacija i brisanje informacija.

SQL tipovi podataka

Svi stupci u tablici baze podataka pohranjuju isti tip podataka. Tipovi podataka u SQL-u su isti kao i u drugim programskim jezicima.

Kreirajte tabele i baze podataka

Postoje dva načina za kreiranje novih baza podataka, tabela i drugih upita u SQL-u:

  • SQL izrazi preko DBMS konzole
  • Korištenje alata za online administraciju uključenih u poslužitelj baze podataka.

Operater kreira novu bazu podataka CREATE DATABASE<наименование базы данных>; ... Kao što vidite, sintaksa je jednostavna i koncizna.

Kreiramo tabele unutar baze podataka sa naredbom CREATE TABLE sa sljedećim parametrima:

  • ime tabele
  • nazive kolona i tipove podataka

Kao primjer, napravimo tablicu robe sa sljedećim stupcima:

Kreiramo tabelu:

CREATE TABLE Roba

(commodity_id CHAR (15) NOT NULL,

vendor_id CHAR (15) NOT NULL,

commodity_name CHAR (254) NULL,

commodity_price DECIMAL (8,2) NULL,

commodity_desc VARCHAR (1000) NULL);

Tabela ima pet kolona. Nakon imena slijedi tip podataka, kolone su odvojene zarezima. Vrijednost stupca može biti null (NULL) ili mora biti popunjena (NOT NULL), a to se određuje kada se tabela kreira.

Preuzimanje podataka iz tabele

Operator odabira podataka je najčešće korišteni SQL upit. Za dobijanje informacija potrebno je naznačiti šta želimo da izaberemo iz takve tabele. Počnimo s jednostavnim primjerom:

SELECT commodity_name FROM Commodity

Nakon naredbe SELECT, specificiramo ime stupca za dobivanje informacija, a FROM definira tablicu.

Rezultat izvršavanja upita bit će svi redovi tabele sa vrijednostima Commodity_name onim redoslijedom kojim su uneseni u bazu podataka, tj. bez ikakvog sortiranja. Dodatna ORDER BY klauzula se koristi za naručivanje rezultata.

Za upit na nekoliko polja navodimo ih odvojene zarezima, kao u sljedećem primjeru:

ODABERITE commodity_id, commodity_name, commodity_price OD robe

Moguće je dobiti vrijednost svih stupaca u redu kao rezultat upita. Da biste to učinili, koristite znak "*":

ODABERITE * IZ robe

  • Dodatno SELECT podržava:
  • Sortiranje podataka (ORDER BY operator)
  • Odabir prema uslovima (GDJE)
  • Pojam grupisanja (GROUP BY)

Dodajte liniju

Za dodavanje reda u tablicu koriste se SQL upiti s naredbom INSERT. Dodavanje se može izvršiti na tri načina:

  • dodajte novu cijelu liniju;
  • dio niza;
  • rezultati upita.

Da biste dodali cijeli red, morate navesti ime tablice i vrijednosti stupaca (polja) novog reda. Dajemo primjer:

UMETNI U VRIJEDNOSTI robe ("106", "50", "Coca-Cola", "1,68", "Bez alkohola,)"

Primjer dodaje novi proizvod u tablicu. Vrijednosti su navedene nakon VALUES za svaku kolonu. Ako ne postoji odgovarajuća vrijednost za stupac, tada se mora navesti NULL. Kolone se popunjavaju vrijednostima redoslijedom navedenim kada je tabela kreirana.

Ako dodate samo dio reda, morate eksplicitno navesti nazive stupaca, kao u primjeru:

INSERT INTO Commodity (commodity_id, vendor_id, commodity_name)

VRIJEDNOSTI ("106", '50 "," Coca-Cola ",)

Upisali smo samo identifikatore proizvoda, dobavljača i njegov naziv, a ostala polja ostavili prazna.

Dodavanje rezultata upita

INSERT se uglavnom koristi za dodavanje redova, ali se može koristiti i za dodavanje rezultata SELECT izraza.

Promjena podataka

Za promjenu informacija u poljima tablice baze podataka, morate koristiti izraz UPDATE. Operator se može koristiti na dva načina:

  • Svi redovi u tabeli su ažurirani.
  • Samo za određenu liniju.

UPDATE ima tri glavna elementa:

  • tabela u kojoj treba da izvršite promene;
  • imena polja i njihove nove vrijednosti;
  • uslovi za odabir redova za promjenu.

Pogledajmo primjer. Recimo da se promijenila cijena artikla sa ID = 106, pa je potrebno ažurirati ovu liniju. Pišemo sljedeći operator:

UPDATE Commodity SET commodity_price = "3.2" WHERE commodity_id = "106"

Naznačili smo naziv tabele, u našem slučaju Commodity, gde će se izvršiti ažuriranje, zatim nakon SET - novu vrednost kolone i pronašli traženi zapis navodeći traženu vrednost ID-a u WHERE.

Za izmjenu više stupaca, nakon naredbe SET navodi se više parova stupac-vrijednost, odvojeno zarezima. Pogledajmo primjer koji ažurira naziv i cijenu proizvoda:

UPDATE Commodity SET commodity_name = 'Fanta', commodity_price = "3.2" WHERE commodity_id = "106"

Da biste uklonili informacije u stupcu, možete ga postaviti na NULL ako to dozvoljava struktura tablice. Treba imati na umu da je NULL upravo "ne" vrijednost, a ne nula u obliku teksta ili brojeva. Izbrišemo opis proizvoda:

UPDATE Commodity SET commodity_desc = NULL WHERE commodity_id = "106"

Brisanje redova

SQL upiti za brisanje redova u tablici se izvode naredbom DELETE. Postoje dva slučaja upotrebe:

  • određeni redovi se brišu u tabeli;
  • svi redovi u tabeli se brišu.

Primjer brisanja jednog reda iz tabele:

IZBRIŠI IZ robe WHERE commodity_id = "106"

Nakon DELETE FROM navodimo ime tabele u kojoj će se redovi brisati. Klauzula WHERE sadrži uslov prema kojem će biti odabrani redovi za brisanje. U primjeru brišemo liniju za proizvod s ID = 106. Veoma je važno navesti GDJE. izostavljanje ove izjave će izbrisati sve redove u tabeli. Ovo se također odnosi na promjenu vrijednosti polja.

Naredba DELETE ne uključuje nazive stupaca ili metaznakove. Briše redove u potpunosti, ali ne može izbrisati niti jednu kolonu.

Korištenje SQL-a u Microsoft Accessu

Obično se koristi interaktivno za kreiranje tabela, baza podataka, za upravljanje, modifikaciju, analizu podataka u bazi podataka i za ugrađivanje SQL Access upita putem praktičnog interaktivnog dizajnera upita (Query Designer), pomoću kojeg možete izgraditi i odmah izvršiti SQL izraze bilo kojeg složenost...

Podržan je i način pristupa serveru, u kojem se Access DBMS može koristiti kao generator SQL upita za bilo koji ODBC izvor podataka. Ova mogućnost omogućava Access aplikacijama da komuniciraju sa bilo kojim formatom.

SQL ekstenzije

Budući da SQL upiti nemaju sve mogućnosti proceduralnih programskih jezika kao što su petlje, grane, itd., dobavljači baza podataka razvijaju vlastitu verziju SQL-a s naprednim mogućnostima. Prije svega, ovo je podrška za pohranjene procedure i standardne operatore proceduralnih jezika.

Najčešći dijalekti jezika:

  • Oracle Database - PL / SQL
  • Interbase, Firebird - PSQL
  • Microsoft SQL Server - Transact-SQL
  • PostgreSQL - PL / pgSQL.

SQL na Internetu

MySQL se distribuira pod GNU Općom javnom licencom. Postoji komercijalna licenca sa mogućnošću razvoja prilagođenih modula. Kao sastavni deo, uključen je u najpopularnije sklopove internet servera, kao što su XAMPP, WAMP i LAMP, i najpopularniji je DBMS za razvoj aplikacija na Internetu.

Razvio ga je Sun Microsystems, a trenutno ga podržava Oracle Corporation. Podržane su baze podataka do 64 terabajta, SQL: 2003 standard sintakse, replikacija baze podataka i usluge u oblaku.

Bilješka:
Svi članci u trenutnoj kategoriji SQL vodiča koriste primjere i zadatke zasnovane na uzorku baze podataka.

SELECT izraz je odgovoran za dohvaćanje podataka iz tablica baze podataka u SQL-u. Ovaj članak će pokriti njegovu najjednostavniju sintaksu i primjere.

Da biste izvršili jednostavan upit bazi podataka, dovoljno je navesti samo 2 uslova (ponude):

  • Koje kolone treba rasteretiti;
  • Iz koje tabele izbaciti kolone.

U SQL-u to izgleda ovako:

SELECT<Перечень столбцов>OD<Перечень таблиц>

Imena kolona su navedena, odvojena zarezima, odmah iza ključne riječi SELECT. Nakon toga slijedi ključna riječ FROM iza koje slijede nazivi tablica. Ako postoji nekoliko tabela, onda su i one odvojene zarezima.

Bilješka:

Upiti prema više tabela se ne razmatraju u ovom materijalu, jer se ova tema odnosi na spajanje tabela ili zahtijeva poznavanje klauzule WHERE.

Kolone i tabele se mogu navesti bilo kojim redosledom i ponavljati više puta.

Veza sa bazom podataka

Na serveru je često prisutno više od jedne baze podataka. Stoga, prije izvršavanja zahtjeva, morat ćete se povezati na određenu bazu podataka. Naučimo kako to učiniti u SQL Server Management Studiju:

Sada će svaki zahtjev biti izvršen u svom kontekstu.

Kreiranje SQL upita

Završimo prvi zadatak:

Potrebno je pribaviti prezimena, imena i patronime svih zaposlenih.

Unesite sljedeći SQL u polje za upit:

ODABERITE Prezime, Ime, Patronim OD Zaposlenih

Prvi red upita sadrži kolone koje treba izbaciti, drugi red specificira tabelu kolona. U stvari, kod liči na uobičajenu rečenicu: "Izaberite kolone Prezime, Ime, Patronim iz tabele Zaposleni."

Kliknite na dugme "Pokreni" na panelu za uređivanje SQL-a. Rezultat njegovog izvršenja trebao bi se pojaviti na dnu prozora upita. Ispod rezultata se prikazuje status i trajanje zahtjeva, kao i broj učitanih redova. Ako sve uradite kako treba, status će glasiti "Zahtjev je uspješno završen", a broj redova će biti 39.

Objašnjenja sintakse

Nije bitno u kom slučaju su ključne riječi i nazivi napisani. Ova opcija je potpuno identična prethodnoj:

Izaberite prezime, ime, patronim od zaposlenih

Također je moguće ne započeti svaki uvjet na novom redu.

Druge opcije zahtjeva

Prije pisanja koda rečeno je o potrebi povezivanja na bazu podataka. Ali u ovom konkretnom slučaju možete bez veze (u nekim programima to je obavezan zahtjev). Dovoljno je dodatno navesti ime baze podataka i ime šeme u klauzuli FROM (dbo po defaultu):

ODABERITE Prezime, Ime, Patronim IZ CallCenter.dbo.Employees

Sada opišimo sintaksu za jednostavnu SELECT naredbu (opcijski dijelovi upita su u uglastim zagradama):

SELECT [Table_name.] Column_name [, [table_name.] Column_name2 ...] FROM [[Database_name.] Schema_name.] Table_name

Dodatna imena zatrpaju kod zahtjeva, tako da možete koristiti USE naredbu. Prebacit će kontekst na navedenu bazu podataka:

KORISTITE CallCenter SELECT Prezime, Ime, Patronim OD Zaposlenih

Ovaj pristup će omogućiti vezu sa ispravnom bazom podataka.

Bilješka:

Opširni nazivi stupaca i tablica mogu sadržavati razmake između riječi. U takvim slučajevima, njihova imena se stavljaju u uglaste zagrade kako bi zahtjev ispravno funkcionirao. Na primjer, [ime kolone].

SQL - SELECT izjava

Naziv SQL (Structured Query Language) odražava činjenicu da su upiti najčešće korišteni element SQL-a. Zahtjev je operater koji šalje naredbu sistemu za upravljanje bazom podataka (DBMS) za manipulaciju ili prikaz određenih informacija. Svi upiti o odabiru podataka u SQL-u se konstruiraju korištenjem naredbe SELECT. Omogućava prilično složenu validaciju i obradu podataka.

Upit može prikazati podatke iz određene kolone ili iz svih kolona u tabeli. Da biste kreirali najjednostavniji SELECT upit, morate navesti naziv stupca i ime tablice.

SELECT Sintaksa iskaza

SELECT column_list FROM table_name

SELECT Ključna riječ koja govori bazi podataka da je operator upit. Svi upiti počinju ovom riječi, nakon koje slijedi razmak.

Column_list Lista kolona tabele koje su odabrane upitom. Kolone koje nisu navedene u iskazu neće biti uključene u rezultat. Ako želite da prikažete podatke za sve kolone, možete koristiti skraćenu notaciju. Zvjezdica (*) označava kompletnu listu kolona.

FROM ime_tablice Ključna riječ koja mora biti prisutna u svakom zahtjevu. Nakon toga, ime tabele koja je izvor podataka označeno je razmakom.

Kôd u zagradi nije obavezan u SELECT izrazu. Potreban je za preciznije definisanje zahtjeva.

Također treba reći da je SQL kod neosjetljiv na velika i mala slova. To znači da se SELECT zapis može napisati kao odabir. DBMS neće praviti razliku između ova dva zapisa, ali se savjetuje da svi SQL izrazi budu napisani velikim slovima kako bi se mogli lako razlikovati od drugog koda.

Pogledajmo primjere na tabeli Salesspeople iz klasičnog SQL tutorijala Martina Grabera.
Evo MySQL koda za kreiranje testne tabele:

CREATE TABLE `salespeople` (` snum` INTEGER (11) NOT NULL AUTO_INCREMENT, `ime` VARCHAR (20) COLLATE cp1251_general_ci DEFAULT NULL,` city` VARCHAR (20) COLLATE cp1251_general_ci DEFAULT NULL (20) COLLATE cp1251_general_ci `snum`)) ENGINE = InnoDB SET CHARACTER SET" cp1251 "COLLATE" cp1251_general_ci "COMMENT =" InnoDB besplatno: 5120 kB "; UMETNI U `prodavače` (` snum`, `ime`,` grad`, `comm`) VRIJEDNOSTI (1001," Peel "," London ", 0,120), (1002," Serres "," San Jose ", 0,130 ), (1003, "Axelrod", "New York", 0,100), (1004, "Motika", "London", 0,110), (1007, "Rifkin", "Barcelona", 0,150); COMMIT;

Tabela izgleda ovako:

Primjer korištenja naredbe SELECT

1. Potrebno je prikazati listu prodavaca, te prikazati njihova imena (ime)

ODABERITE ime od prodavača

rezultat:

Ovdje, nakon naredbe SELECT, prikazane su kolone koje treba prikazati. Nazivi kolona su odvojeni zarezima.

3. Potrebno je prikazati cijelu tabelu

Da biste to učinili, možete koristiti različitu sintaksu za pisanje upita. Navodimo svaku kolonu nakon naredbe SELECT:

ODABERITE snum, ime, grad, comm OD prodavača

Ili možete postići isti rezultat koristeći stenografsku notaciju:

ODABIR * IZ rezultata prodavača:

snumimegradcomm
1001 PeelLondon0,12
1002 SerresSan Jose0,13
1003 AxelrodNjujork0,1
1004 MotikaLondon0,11
1007 RifkinBarcelona0,15
Također želim dati mali savjet. Radi praktičnosti upita za otklanjanje grešaka, neki ljudi pišu listu kolona za štampanje u poseban red. Ovo olakšava komentiranje koda. Za komentiranje koda u SQL-u sintaksa je / * komentirani kod * / Primjer: SELECT snum, sname, city, comm OD prodavača

Ovo će prikazati 4 kolone, ali s takvim zapisom možete lako komentirati nepotrebnu kolonu. Na primjer ovako:

SELECT / * snum, * / ime, grad, comm FROM Salesspeople

Sada se kolona snum neće prikazati jer je komentarisana. Vrlo brzo i povoljno. Naravno, na vama je kako napisati SQL kod, ali ponekad je korisno znati takve stvari.

Korištenje izraza u SELECT izrazu

Mnogi DBMS-ovi pružaju posebne mogućnosti za obradu rezultata upita. Skup takvih alata razlikuje se od baze do baze podataka, ali postoje neke standardne mogućnosti kao što su izrazi. Na primjer, možda ćete htjeti izvršiti jednostavne matematičke operacije nad podacima kako biste ih učinili korisnijima ili umetnuti dodatni tekst u rezultat upita. SQL dozvoljava skalarnim izrazima i konstantama da se stave među odabrane stupce, koji mogu dopuniti ili zamijeniti stupce u SELECT klauzulama. Pogledajmo primjer.

4. Potrebno je prikazati proviziju (comm) prodavaca u obliku postotaka, a ne decimalnih brojeva

SELECT snum, sname, city, comm * 100 FROM Salesspeople

rezultat:

snumimegradcomm
1001 PeelLondon12
1002 SerresSan Jose13
1003 AxelrodNjujork10
1004 MotikaLondon11
1007 RifkinBarcelona15
U posljednjoj koloni svi primljeni podaci se množe sa 100 i prikazuju kao postotak.

Ova kolona nema ime, jer ne sadrži promijenjene podatke i stoga je imenovana po diskreciji DBMS-a (na primjer, MySQL kolonu imenuje comm * 100, u primjerima M.Grabbera kolona ima ime 4, tj. njegov broj).

U takvim slučajevima, pogodan je za upotrebu imenovanje stupaca... Na primjer, možete imenovati postotak posljednje kolone. Da biste to učinili, nakon naziva kolone morate navesti ključnu riječ AS, a zatim naziv kolone na rezultirajućoj stranici.

ODABIR snum, ime, grad, comm * 100 KAO "posto" OD Prodavača Rezultat:

snumimegradposto
1001 PeelLondon12
1002 SerresSan Jose13
1003 AxelrodNjujork10
1004 MotikaLondon11
1007 RifkinBarcelona15

Kao rezultat upita, posljednja kolona je imenovana nizom "percent" radi lakšeg razumijevanja.

Budući da se broj prikazuje u postocima, bilo bi lijepo to naznačiti u rezultatu. SQL funkcija dolazi u pomoć dodajte tekst u rezultat... izgleda ovako:

ODABIR Snum, ime, grad, comm * 100 AS posto, "%" IZ rezultata prodavača:

snumimegradposto%
1001 PeelLondon12 %
1002 SerresSan Jose13 %
1003 AxelrodNjujork10 %
1004 MotikaLondon11 %
1007 RifkinBarcelona15 %

Vidi se da se nakon izlaza reda iz baze pojavila nova kolona ispunjena predznakom procenta (%).

Ako niste zadovoljni izlazom podataka i dopunskog teksta u različitim stupcima, tada možete koristiti posebne funkcije vašeg DBMS-a da ih kombinujete u jednu kolonu.

MySQL koristi funkciju za ovo CONCAT ... Evo njegove definicije iz reference:

CONCAT (str1, str2, ...)
Vraća string koji je rezultat spajanja argumenata. Ako je barem jedan od argumenata NULL, vraća se NULL. Može potrajati više od 2 argumenta. Numerički argument se pretvara u njegov ekvivalentni oblik stringa.

Primjer: SELECT snum, sname, city, CONCAT (comm * 100, "%") KAO "persent" OD prodavača Rezultat:

snumimegradpersent
1001 PeelLondon12.000%
1002 SerresSan Jose13.000%
1003 AxelrodNjujork10.000%
1004 MotikaLondon11.000%
1007 RifkinBarcelona15.000%

U ovom zahtjevu, funkcija CONCAT uzima 2 argumenta, comm * 100 i znak postotka ("%"). Zatim koristimo AS da imenujemo kolonu.

Važno je znati da će korištenje funkcija smanjiti performanse. Ovo nije jedini nedostatak, ali je veoma važan. Stoga, ako se možete snaći sa standardnim SQL kodom, najbolje je ne koristiti funkcije. Treba ih se sjetiti samo u ekstremnim slučajevima.

Uklonite suvišne podatke

Često je potrebno isključiti duple vrijednosti iz rezultata upita. Za ovo se koristi ključna riječ DISTINCT. Suprotan efekat se dobija korišćenjem reči SVE, koja se podrazumevano koristi (odnosno, ne treba je specificirati).

5. Potrebno je prikazati gradove (grad) u kojima se nalaze prodavci

Zahtjev bez izuzetaka:

IZABERITE grad OD prodavača Rezultat:

Duplicirane vrijednosti Londona su isključene iz rezultata, prema potrebi.

Sortiranje rezultata po vrijednostima po koloni

Naredba SELECT prikazuje podatke bilo kojim redoslijedom. Za sortiranje rezultata po određenoj koloni, SQL koristi operator ORDER BY (tj. poredak po….). Ovaj operator vam omogućava da promijenite redoslijed izlaza podataka. ORDER BY naređuje rezultat upita prema vrijednostima jedne ili više kolona odabranih u klauzuli SELECT. U ovom slučaju, za svaku kolonu možete postaviti sortiranje u rastućem (ASC) (ovaj parametar se koristi po defaultu) ili opadajućem (DESC).

Hajde da sortiramo rezultat po koloni imena. Nakon operatora ORDER BY, označavamo po kojoj koloni treba sortirati, zatim morate navesti metodu sortiranja

Primjer - sortiranje uzlaznim redoslijedom:

ODABERITE * OD prodavača ORDER BY ime ASC

rezultat:


Primjer - sortiranje po više kolona:

ODABERITE ime, ime, grad OD prodavača REDAJTE PO imenu DESC, gradu DESC Rezultat:

snumimegrad
1002 SerresSan Jose
1007 RifkinBarcelona
1001 PeelLondon
1004 MotikaLondon
1003 AxelrodNjujork

Nekoliko važnih napomena:
- kolona po kojoj se vrši sortiranje mora biti navedena u SELECT (možete koristiti *)
- Operator ORDER BY je uvijek napisan na kraju zahtjeva

Top srodni članci