Kako postaviti pametne telefone i računala. Informativni portal

Sql odabir iz upita. Korištenje duljine niza

Svaki web developer mora poznavati SQL kako bi mogao pisati upite za bazu podataka. Iako phpMyAdmin nije otkazan, često je potrebno uprljati ruke za pisanje niskorazinskog SQL-a.

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

1. Izrada tablice

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

Napravimo jednostavnu tablicu s imenom mjesec... Sastoji se od 3 stupca:

  • iskaznica- Broj mjeseca u kalendarskoj godini (cijeli broj).
  • Ime- Naziv mjeseca (niz, 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đer, prilikom izrade tablica preporučljivo je dodati primarni ključ za jedan od stupaca. Time će zapisi ostati jedinstveni i ubrzati zahtjeve za dohvaćanje. Neka naziv mjeseca bude jedinstven u našem slučaju (stupac Ime)

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

Datum i vrijeme
Vrsta podatakaOpis
DATUMVrijednosti datuma
DATUM VRIJEMEVrijednosti datuma i vremena s minimalnom preciznošću
VRIJEMEVremenske vrijednosti

2. Umetanje redaka

Sada popunimo našu tablicu mjeseci korisna informacija. Dodavanje zapisa u tablicu vrši se putem INSERT izraza. Postoje dva načina za pisanje ove upute.

Prvi način nije da navedete nazive stupaca u koje će se podaci umetnuti, već navesti samo vrijednosti.

Ova metoda pisanja je jednostavna, ali nesigurna, jer nema jamstva da će kako se projekt širi i tablica uređuje, stupci će biti istim redoslijedom kao i prije. Sigurniji (i u isto vrijeme glomazniji) način pisanja INSERT izraza zahtijeva navođenje vrijednosti i redoslijeda stupaca:

Evo prve vrijednosti na popisu VRIJEDNOSTI odgovara prvom navedenom nazivu stupca i tako dalje.

3. Dohvaćanje podataka iz tablica

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

Najjednostavnija upotreba izraza SELECT je upit koji vraća sve stupce i retke iz tablice (na primjer, tablice po imenu likovima):

ODABIR * IZ "znakova"

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

Ponekad ne želimo dobiti podatke iz ne svih stupaca u tablici. Da bismo to učinili, umjesto zvjezdice (*), moramo napisati nazive željenih stupaca odvojene zarezima.

SELECT id, naziv IZ mjeseca

Također, u mnogim slučajevima želimo da rezultati budu razvrstani određenim redoslijedom. U SQL-u to radimo s ORDER BY. Može uzeti izborni modifikator - ASC (zadano) sortiranje uzlaznim redoslijedom ili DESC sortiranje silaznim redoslijedom:

SELECT id, naziv IZ mjeseca ORDER BY name DESC

Kada koristite ORDER BY, provjerite da li će to biti posljednja u naredbi SELECT. U suprotnom će se prikazati poruka o pogrešci.

4. Filtriranje podataka

Naučili ste kako odabrati strogo određene stupce iz baze podataka pomoću SQL upita, ali što ako također trebamo dohvatiti određene retke? Ovdje u pomoć dolazi klauzula WHERE koja nam omogućuje filtriranje podataka ovisno o stanju.

U ovom upitu odabiremo samo te mjesece iz tablice mjesec, u kojem više od 30 dana korištenjem operatora više (>).

SELECT id, naziv FROM mjeseca WHERE dana> 30

5. Napredno filtriranje podataka. AND i OR operatori

Prije smo koristili filtriranje podataka pomoću jednog kriterija. Za sofisticiranije filtriranje podataka možete koristiti operatore AND i OR i operatore usporedbe (=,<,>,<=,>=,<>).

Ovdje imamo tablicu koja sadrži četiri najprodavanija albuma svih vremena. Odaberimo one koji se klasificiraju kao rock i imaju manje od 50 milijuna prodanih primjeraka. To se lako može učiniti postavljanjem operatora AND između dva uvjeta.


ODABIR * IZ albuma WHERE žanr = "rock" I prodaja_u_milijunima<= 50 ORDER BY released

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

WHERE također podržava nekoliko posebnih naredbi, što vam omogućuje brzu provjeru najčešće korištenih upita. Evo ih:

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

Na primjer, ako želimo odabrati albume s pop i duša glazbu, možemo koristiti IN ("value1", "value2").

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

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

ODABIR * 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 redaka
  • SUM () - Vraća ukupan zbroj brojčanog stupca
  • AVG () - Vraća prosjek skupa vrijednosti
  • MIN () / MAX () - dobiva minimalnu / maksimalnu vrijednost iz stupca

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

SELECT MAX (objavljeno) IZ albuma;

8. Potupiti

U prethodnom odlomku naučili smo kako napraviti jednostavne izračune s podacima. Ako želimo upotrijebiti rezultat ovih izračuna, ne možemo bez ugniježđenih upita. Recimo da želimo proizvesti umjetnik, album i godina izdanja za najstariji album na tabeli.

Znamo kako dobiti ove specifične stupce:

ODABIR izvođača, album, objavljen IZ albuma;

Znamo i kako dobiti najraniju godinu:

SELECT MIN (objavljeno) IZ albuma;

Sve što sada trebate je kombinirati dva upita pomoću WHERE:

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

9. Povezivanje tablica

U složenijim bazama podataka postoji nekoliko međusobno povezanih tablica. Na primjer, ispod su dvije tablice o video igrama ( video igre) i programeri videoigara ( game_developers).


U stolu video igre postoji stupac za razvojne programere ( developer_id), ali sadrži cijeli broj, a ne ime programera. Ovaj broj je identifikator ( iskaznica) odgovarajućeg programera iz tablice programera igara ( game_developers), logično povezujući dva popisa, što nam omogućuje da istovremeno koristimo informacije pohranjene na oba popisa.

Ako želimo stvoriti upit koji vraća sve što se može znati o igrama, možemo koristiti INNER JOIN za povezivanje stupaca iz obje tablice.

ODABIR video_games.name, video_games.genre, game_developers.name, game_developers.country IZ 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 dva stupca zvana Ime... Ovo je zbunjujuće, pa postavimo, na primjer, alias za jedan od stupaca koji se ponavljaju Ime sa stola game_developersće biti pozvan programer.

Također možemo skratiti upit navođenjem aliasa za nazive tablica: video igre nazovimo igre, 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 mijenjati podatke u nekim redovima. U SQL-u se to radi pomoću naredbe UPDATE. Izjava UPDATE sastoji se od:

  • Tablica koja sadrži zamjensku vrijednost;
  • Nazivi stupaca i njihove nove vrijednosti;
  • WHERE odabrani su redovi koje želimo ažurirati. Ako se to ne učini, promijenit će se svi redovi u tablici.

Ispod je tablica TV serije sa serijama sa svojim ocjenama. Međutim, mala pogreška se uvukla u tablicu: iako je serija Igra prijestolja i opisan je kao komedija, on to zapravo nije. Popravimo to!

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

12. Brisanje podataka

Brisanje retka u tablici pomoću SQL-a vrlo je jednostavan proces. Sve što trebate učiniti je odabrati tablicu i redak za brisanje. Uklonimo zadnji red u tablici iz prethodnog primjera. TV serije... To se radi pomoću naredbe > DELETE

IZBRIŠI IZ tv_serije GDJE id = 4

Budite oprezni kada pišete naredbu DELETE i provjerite je li prisutna klauzula WHERE, inače će svi redci u tablici biti izbrisani!

13. Spuštanje stola

Ako želimo izbrisati sve retke, ali napustiti samu tablicu, onda upotrijebimo naredbu TRUNCATE:

TRUNCATE TABLE ime_tablice;

U slučaju kada zapravo želimo izbrisati i podatke i samu tablicu, dobro nam dolazi naredba DROP:

DROP TABLE ime_tablice;

Budite vrlo oprezni s ovim naredbama. Ne mogu se poništiti! / P>

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

Vrste podatakaSQL(Kako ustrkao u standardu)

Vrste nizova

Numerički tipovi podataka

Monetarni, karakterni, binarni tipovi podataka

Boolean tip. Nabrajanja

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.

ODABIR [SVE | DISTINCT] select_item_commalist

FROM table_reference_commalist

[WHERE uvjetni_izraz]

[GROUP BY column_name_commalist]

[IMATI uvjetni_izraz]

[ORDER BY order_item_commalist]

U zahtjevu možda nedostaju 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 (popis 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 popis imena tablica odvojenih zarezima iz kojih se dohvaćaju informacije.

Na primjer, odaberite naslov, opis iz filma

Svaki SQL upit mora završiti s ";" (točka i zarez). Rezultat ovog upita bit će tablica...

Redoslijed stupaca u ovoj tablici odgovara redoslijedu polja navedenih u upitu

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

ODABIR * IZ filma;

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

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 (nizove) s istim vrijednostima atributa.

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

odaberite ime od glumca;

Njegov rezultat bit će tablica, tablica sadrži iste retke. Da biste izuzeli duple zapise iz rezultata upita SELECT, koristite ključnu riječ DISTINCT (drugačije).

Ako upit SELECT dohvaća više polja, tada DISTINCT eliminira duplicirane retke 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, dobivamo tablicu u kojoj su dupli retki 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. Način naveden ključnom riječi ALL je uključen prema zadanim postavkama, stoga se praktički ne koristi u tu svrhu u stvarnim upitima.

Korištenje klauzule definirane ključnom riječi WHERE (where) u naredbi SELECT omogućuje vam da navedete izraz uvjeta (predikat) koji uzima istinitu ili lažnu vrijednost za vrijednosti polja redaka tablice na koje se izraz SELECT odnosi . Klauzula WHERE određuje koje retke navedenih tablica treba odabrati. Tablica, koja je rezultat upita, uključuje samo one retke za koje uvjet (predikat) naveden u klauzuli WHERE daje vrijednost istinitom.

Primjer: Napišite upit koji odabire prezimena svih glumaca po imenu PENELOPE

odaberite prezime od glumca

gdje je ime = "PENELOPA";

U uvjetima navedenim u klauzuli WHERE, operacije usporedbe definirane 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 USD, izgledat će ovako:

odaberite naslov, opis iz filma

gdje dužina< 60 and rental_rate < 3

Rezultat ovog upita je:

najam - iznajmljivanje

inventar - inventar, zalihe

dućan- zaliha, trgovina

Svatko od nas redovito nailazi i koristi razne baze podataka. Kada odaberemo adresu e-pošte, radimo s bazom podataka. Baze podataka koriste tražilice, banke za pohranu podataka o korisnicima itd.

No, unatoč stalnoj upotrebi baza podataka, čak i za mnoge programere softverskih sustava postoje mnoge "prazne točke" zbog različitih tumačenja istih pojmova. Dat ćemo kratku definiciju osnovnih pojmova baze podataka prije nego što pogledamo SQL jezik. Tako.

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

stol - Zamislite mapu koja pohranjuje dokumente grupirane prema određenom kriteriju, na primjer, popis narudžbi za prošli mjesec. Ovo je tablica u računalu Zasebna tablica ima svoj jedinstveni naziv.

Vrsta podataka - vrsta informacija koje je dopušteno pohraniti u zaseban stupac ili redak. To mogu biti brojevi ili tekst u određenom formatu.

Stupac i red- svi smo radili s proračunskim tablicama, koje također imaju retke i stupce. Svaka relacijska baza podataka radi s tablicama na sličan način. Linije se ponekad nazivaju zapisima.

Glavni ključ- svaki red tablice može imati jedan ili više stupaca za svoju jedinstvenu identifikaciju. Bez primarnog ključa vrlo je teško ažurirati, mijenjati i brisati potrebne retke.

Što je SQL?

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

Od 1992. godine postoji općeprihvaćeni standard nazvan ANSI SQL. Definira osnovnu sintaksu i funkcije operatora, a podržavaju ga svi lideri tržišta DBMS-a, kao što je ORACLE. Nemoguće je razmotriti sve značajke jezika u jednom malom članku, pa ćemo ukratko razmotriti samo osnovne SQL upite . Primjeri jasno pokazuju jednostavnost i mogućnosti jezika:

  • izrada baza podataka i tablica;
  • dohvaćanje podataka;
  • dodavanje zapisa;
  • izmjena 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 tablice i baze podataka

Postoje dva načina za stvaranje novih baza podataka, tablica 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 STVORI BAZU PODATAKA<наименование базы данных>; ... Kao što vidite, sintaksa je jednostavna i sažeta.

Izrađujemo tablice unutar baze podataka s naredbom CREATE TABLE sa sljedećim parametrima:

  • naziv tablice
  • nazive stupaca i tipove podataka

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

Izrađujemo tablicu:

STVORI STOL Roba

(commodity_id CHAR (15) NIJE NULL,

vendor_id CHAR (15) NIJE NULL,

commodity_name CHAR (254) NULL,

commodity_price DECIMAL (8,2) NULL,

commodity_desc VARCHAR (1000) NULL);

Tablica ima pet stupaca. Nakon imena slijedi tip podataka, stupci su odvojeni zarezima. Vrijednost stupca može biti null (NULL) ili mora biti popunjena (NOT NULL), a to se određuje kada se kreira tablica.

Dohvaćanje podataka iz tablice

Operator odabira podataka najčešće je korišten SQL upit. Za dobivanje informacija potrebno je naznačiti što želimo odabrati iz takve tablice. Počnimo s jednostavnim primjerom:

SELECT commodity_name FROM Roba

Nakon naredbe SELECT navodimo naziv stupca za dobivanje informacija, a FROM definira tablicu.

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

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

ODABIR commodity_id, commodity_name, commodity_price OD robe

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

ODABIR * IZ robe

  • Dodatno SELECT podržava:
  • Razvrstavanje podataka (operator ORDER BY)
  • Odabir prema uvjetima (GDJE)
  • Pojam grupiranja (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 novi cijeli redak;
  • dio niza;
  • rezultate upita.

Da biste dodali cijeli red, morate navesti naziv tablice i vrijednosti stupaca (polja) novog retka. Navedimo primjer:

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

Primjer dodaje novi proizvod u tablicu. Vrijednosti su navedene iza VALUES za svaki stupac. Ako ne postoji odgovarajuća vrijednost za stupac, tada se mora navesti NULL. Stupci se popunjavaju vrijednostima redoslijedom navedenim prilikom kreiranja tablice.

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

INSERT INTO Commodity (id_robe, 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 redaka, ali se također može koristiti 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 tablici su ažurirani.
  • Samo za određenu liniju.

UPDATE ima tri glavna elementa:

  • tablica u kojoj trebate unijeti promjene;
  • nazivi polja i njihove nove vrijednosti;
  • uvjeti za odabir redaka za promjenu.

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

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

Naznačili smo naziv tablice, u našem slučaju Commodity, gdje će se izvršiti ažuriranje, zatim nakon SET - novu vrijednost stupca i pronašli traženi zapis navodeći traženu vrijednost 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 struktura tablice to dopušta. Treba imati na umu da je NULL točno "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 redaka

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

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

Primjer brisanja jednog retka iz tablice:

IZBRIŠI IZ robe WHERE commodity_id = "106"

Nakon DELETE FROM navodimo naziv tablice u kojoj će se redovi brisati. Klauzula WHERE sadrži uvjet prema kojem će biti odabrani redovi za brisanje. U primjeru brišemo redak za proizvod s ID = 106. Vrlo je važno navesti GDJE. izostavljanje ove izjave izbrisat će sve retke u tablici. To se također odnosi i na promjenu vrijednosti polja.

Naredba DELETE ne uključuje nazive stupaca ili metaznakove. Potpuno briše retke, ali ne može izbrisati niti jedan stupac.

Korištenje SQL-a u Microsoft Accessu

Obično se interaktivno koristi za kreiranje tablica, baza podataka, za upravljanje, modificiranje, analizu podataka u bazi podataka i za ugradnju SQL Access upita putem prikladnog 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 poslužitelju u kojem se Access DBMS može koristiti kao generator SQL upita bilo kojem ODBC izvoru podataka. Ova mogućnost omogućuje Access aplikacijama interakciju s bilo kojim formatom.

SQL proširenja

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, to je podrška za pohranjene procedure i standardne operatore proceduralnih jezika.

Najčešći dijalekti jezika:

  • Oracle baza podataka - 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 s mogućnošću razvoja prilagođenih modula. Kao sastavni dio, uključen je u najpopularnije sklopove internetskih poslužitelja, kao što su XAMPP, WAMP i LAMP, te je najpopularniji 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: standard sintakse 2003, replikacija baze podataka i usluge u oblaku.

Bilješka:
Svi članci u trenutnoj kategoriji udžbenika za SQL koriste primjere i zadatke temeljene na uzorku baze podataka.

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

Za izvršavanje jednostavnog upita bazi podataka dovoljno je navesti samo 2 uvjeta (ponude):

  • Koje stupce treba rasteretiti;
  • Iz koje tablice istovariti stupce.

U SQL-u to izgleda ovako:

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

Nazivi stupaca navedeni su, odvojeni zarezima, odmah nakon ključne riječi SELECT. Nakon toga slijedi ključna riječ FROM iza koje slijede nazivi tablica. Ako postoji nekoliko tablica, onda su i one odvojene zarezima.

Bilješka:

Upiti prema više tablica se ne razmatraju u ovom materijalu, budući da se ova tema odnosi na spajanje tablica ili zahtijeva poznavanje klauzule WHERE.

Stupci i tablice mogu se navesti bilo kojim redoslijedom i ponavljati više puta.

Povezivanje baze podataka

Na poslužitelju je često prisutno više od jedne baze podataka. Stoga, prije izvršavanja zahtjeva, morat ćete se povezati s određenom bazom podataka. Naučimo kako to učiniti u SQL Server Management Studiju:

Sada će se svaki zahtjev izvršiti u svom kontekstu.

Izrada SQL upita

Izvršimo prvi zadatak:

Potrebno je pribaviti prezimena, imena i patronime svih zaposlenika.

Unesite sljedeći SQL u polje za upit:

ODABERITE Prezime, Ime, Patronim OD Zaposlenika

Prvi redak upita sadrži stupce koji se izbacuju, drugi redak specificira tablicu stupaca. Zapravo, kod podsjeća na uobičajenu rečenicu: "Odaberite stupce Prezime, Ime, Patronim iz tablice Zaposlenici."

Kliknite na gumb "Pokreni" na ploči uređivača 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 redaka. Ako sve napravite ispravno, status će pisati "Zahtjev je uspješno završen", a broj redaka će biti 39.

Objašnjenja sintakse

Nije važno u kojem slučaju su ključne riječi i nazivi napisani. Ova opcija je potpuno identična prethodnoj:

Odaberite prezime, ime, patronim od zaposlenika M

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 s bazom podataka. Ali u ovom konkretnom slučaju možete bez veze (u nekim programima to je obavezan uvjet). Dovoljno je dodatno navesti naziv baze podataka i naziv sheme u klauzuli FROM (dbo prema zadanim postavkama):

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

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

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

Dodatni nazivi zatrpaju kod zahtjeva, tako da možete koristiti USE izraz. Prebacit će kontekst na navedenu bazu podataka:

KORISTITE CallCenter ODABERITE Prezime, Ime, Patronime IZ Zaposlenika

Ovaj pristup će osigurati vezu s ispravnom bazom podataka.

Bilješka:

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

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 Sustavu za upravljanje bazom podataka (DBMS) za manipulaciju ili prikaz određenih informacija. Svi upiti o odabiru podataka u SQL-u konstruirani su pomoću SELECT izraza. Omogućuje prilično složenu provjeru valjanosti i obradu podataka.

Upit može prikazati podatke iz određenog stupca ili iz svih stupaca u tablici. Da biste stvorili najjednostavniji SELECT upit, morate navesti naziv stupca i naziv tablice.

SELECT Sintaksa iskaza

SELECT column_list FROM table_name

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

Popis_stupca Popis stupaca tablice koji su odabrani upitom. Stupci koji nisu navedeni u izjavi neće biti uključeni u rezultat. Ako želite prikazati podatke za sve stupce, možete koristiti skraćeni zapis. Zvjezdica (*) znači potpuni popis stupaca.

IZ ime_tablice Ključna riječ koja mora biti prisutna u svakom zahtjevu. Nakon njega, naziv tablice koja je izvor podataka označen je razmakom.

Kôd u zagradi nije obavezan u naredbi SELECT. Potrebno je točnije definirati zahtjev.

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 razlikovati 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 tablici Salesspeople iz klasičnog SQL vodiča Martina Grabera.
Evo MySQL koda za izradu testne tablice:

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_com DEFAULT K (DEFAULT NULL, DEFAULT) K `snum`)) ENGINE = InnoDB SET CHARACTER SET" cp1251 "COLLATE" cp1251_general_ci "COMMENT =" InnoDB besplatno: 5120 kB "; UMETNI U `prodajne osobe` (` 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); POČINITI;

Tablica izgleda ovako:

Primjer korištenja izraza SELECT

1. Potrebno je prikazati popis prodavača, te prikazati njihova imena (ime)

ODABERITE ime IZ prodavača

Proizlaziti:

Ovdje su nakon naredbe SELECT navedeni stupci koji će se prikazati. Nazivi stupaca su odvojeni zarezima.

3. Potrebno je prikazati cijelu tablicu

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

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

Ili možete postići isti rezultat koristeći stenografski zapis:

ODABIR * IZ rezultata prodavača:

snumimeGradkom
1001 GulitiLondon0,12
1002 SerresSan Jose0,13
1003 AxelrodNew Yorku0,1
1004 MotikaLondon0,11
1007 RifkinBarcelona0,15
Također želim dati mali savjet. Radi praktičnosti upita za otklanjanje pogrešaka, neki ljudi zapisuju popis stupaca za ispis u poseban redak. To 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 stupca, ali s takvim zapisom možete jednostavno komentirati nepotreban stupac. Na primjer ovako:

SELECT / * snum, * / ime, grad, comm OD prodavača

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

Korištenje izraza u izrazu SELECT

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 izvesti jednostavne matematičke operacije nad podacima kako biste ih učinili korisnijima ili umetnuti dodatni tekst u rezultat upita. SQL omogućuje postavljanje skalarnih izraza i konstanti među odabrane stupce, koji mogu dopuniti ili zamijeniti stupce u SELECT klauzulama. Pogledajmo primjer.

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

ODABIR Snum, prezime, grad, comm * 100 OD prodavača

Proizlaziti:

snumimeGradkom
1001 GulitiLondon12
1002 SerresSan Jose13
1003 AxelrodNew Yorku10
1004 MotikaLondon11
1007 RifkinBarcelona15
U zadnjem stupcu svi primljeni podaci se množe sa 100 i prikazuju u postocima.

Ovaj stupac nema naziv, jer ne sadrži promijenjene podatke i stoga je imenovan prema nahođenju DBMS-a (npr. MySQL stupcu imenuje comm * 100, u M.Grabberovim primjerima stupac ima naziv 4, tj. njegov broj).

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

ODABIR snum, sname, city, com * 100 KAO "postotak" IZ rezultata prodavača:

snumimeGradposto
1001 GulitiLondon12
1002 SerresSan Jose13
1003 AxelrodNew Yorku10
1004 MotikaLondon11
1007 RifkinBarcelona15

Kao rezultat upita, posljednji stupac je imenovan nizom "posto" radi lakšeg razumijevanja.

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

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

snumimeGradposto%
1001 GulitiLondon12 %
1002 SerresSan Jose13 %
1003 AxelrodNew Yorku10 %
1004 MotikaLondon11 %
1007 RifkinBarcelona15 %

Vidi se da se nakon izlaza retka iz baze pojavio novi stupac ispunjen znakom postotka (%).

Ako niste zadovoljni izlazom podataka i dopunskog teksta u različitim stupcima, tada možete koristiti posebne funkcije vašeg DBMS-a za kombiniranje u jedan stupac.

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

CONCAT (str1, str2, ...)
Vraća niz 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 niza.

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

snumimeGradustrajno
1001 GulitiLondon12.000%
1002 SerresSan Jose13.000%
1003 AxelrodNew Yorku10.000%
1004 MotikaLondon11.000%
1007 RifkinBarcelona15.000%

U ovom zahtjevu funkcija CONCAT uzima 2 argumenta, comm * 100 i znak postotka ("%"). Zatim koristimo AS za imenovanje stupca.

Važno je znati da će korištenje funkcija smanjiti performanse. Ovo nije jedini nedostatak, ali je vrlo 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 duplicirane vrijednosti iz rezultata upita. Za to se koristi ključna riječ DISTINCT. Suprotan učinak postiže se korištenjem riječi SVE, koja se koristi prema zadanim postavkama (odnosno, ne treba je specificirati).

5. Potrebno je prikazati gradove (grad) u kojima se nalaze prodavači

Zahtjev bez izuzetaka:

ODABERITE grad OD prodavača Rezultat:

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

Sortiranje rezultata po vrijednostima po stupcu

Naredba SELECT prikazuje podatke bilo kojim redoslijedom. Za sortiranje rezultata prema određenom stupcu, SQL koristi operator ORDER BY (tj. poredak po….). Ovaj operator vam omogućuje promjenu redoslijeda izlaza podataka. ORDER BY raspoređuje rezultat upita prema vrijednostima jednog ili više stupaca odabranih u klauzuli SELECT. U tom slučaju, za svaki stupac možete postaviti sortiranje u rastućem (ASC) (ovaj se parametar koristi prema zadanim postavkama) ili silazno (DESC).

Razvrstajmo rezultat prema stupcu imena. Nakon operatora ORDER BY označavamo po kojem stupcu treba sortirati, zatim morate odrediti način sortiranja

Primjer - sortiranje uzlaznim redoslijedom:

ODABIR * OD prodavača NARUČAJ PO imenu ASC

Proizlaziti:


Primjer - sortiranje po više stupaca:

ODABERITE ime, prezime, grad OD prodavača REDUS PO DISKU imena, DESC grada Rezultat:

snumimeGrad
1002 SerresSan Jose
1007 RifkinBarcelona
1001 GulitiLondon
1004 MotikaLondon
1003 AxelrodNew Yorku

Nekoliko važnih napomena:
- stupac po kojem se vrši sortiranje mora biti naveden u SELECT (možete koristiti *)
- Operater ORDER BY uvijek je napisan na kraju zahtjeva

Vrhunski povezani članci