Računala Windows Internet

4 koje se funkcije koriste u sql jeziku. Funkcije SQL niza - Primjeri upotrebe. SELECT sintaksa izraza i redoslijed obrade

U ovom članku možete pogledati vrste funkcija u jeziku SQL. Funkcije mogu biti agregatne ili skalarne. Počnimo...

RAČUNATI()

RAČUNATI()- funkcija koja vraća broj zapisa (redova) tablice. Pisanje funkcije koja navodi stupac vratit će broj zapisa u tom određenom stupcu, isključujući NULL zapise. Sintaksa funkcije:

COUNT(naziv_stupca);

Snimanje funkcije s maskom "*" vratit će se broj svih zapisa u tablici. Sintaksa:

RAČUNATI(*);

Razmotrite primjere. Imamo sljedeću tablicu Sveučilišta:

iskaznica Naziv Sveučilišta Studenti fakulteti profesori mjesto mjesto
1 Državno nacionalno istraživačko sveučilište Perm 12400 12 1229 Perm psu.ru
2 Državno sveučilište u Sankt Peterburgu 21300 24 13126 Sankt Peterburg spbu.ru
3 Novosibirsko državno sveučilište 7200 13 1527 Novosibirsk nsu.ru
4 Moskovsko državno sveučilište 35100 39 14358 Moskva msu.ru
5 Viša ekonomska škola 20335 12 1615 Moskva hse.ru
6 Uralsko federalno sveučilište 57000 19 5640 Jekaterinburg urfu.ru
7 Nacionalno istraživačko nuklearno sveučilište 8600 10 936 Moskva mephi.ru

Primjer 1. Prikažite broj zapisa u tablici pomoću funkcije COUNT:

ODABIR COUNT(*)
SA sveučilišta; // izlazi 7

Primjer 2. Pronađite broj sveučilišta u Moskvi pomoću funkcije COUNT:

SELECT COUNT(*) FROM Universities WHERE Lokacija = "Moskva"; // izlazi 3

AVG()

AVG()- funkcija koja vraća prosječnu vrijednost stupca. Ova funkcija je primjenjiva samo za numeričke stupce. Sintaksa:

AVG(naziv_stupca);

Razmotrimo primjer. Uzmimo našu tablicu Sveučilišta. Primjer. Korištenje funkcije AVG za pronalaženje prosječnog broja studenata (studenta) svih sveučilišta:

ODABIR AVG (studente) SA sveučilišta; // izlazi 23133

MIN()

MIN()- funkcija koja vraća minimalnu vrijednost stupca. Funkcija ima sljedeću sintaksu:

MIN(naziv_stupca);

Razmotrimo primjer. Uzmimo našu tablicu Sveučilišta. Primjer. Pomoću funkcije MIN pronađite minimalnu vrijednost stupca Professores:

ODABIR MIN (profesore) SA sveučilišta; // izlaz 936

MAX()

MAX()- funkcija koja vraća maksimalnu vrijednost stupca tablice. Funkcija ima sljedeću sintaksu:

MAX(naziv_stupca);

Razmotrimo primjer. Uzmimo našu tablicu Sveučilišta. Primjer. Pomoću funkcije MAX pronaći maksimalnu vrijednost stupca učenika:

ODABIR MAX (Studenata) SA sveučilišta; // ispisuje 57000

IZNOS()

IZNOS()- funkcija koja vraća zbroj vrijednosti stupca tablice. Koristi se samo za numeričke stupce. Sintaksa funkcije:

SUM(izraz);

Parametar SVI- je zadana postavka. Razmatra se zbroj svih linija. Prilikom određivanja parametra RAZLIČIT- Računaju se samo jedinstvene vrijednosti.

Razmotrite primjere. Uzmimo našu tablicu Sveučilišta. Primjer 1. Pomoću funkcije SUM pronađite broj studenata (studenta) svih sveučilišta u tablici:

ODABIR SUM(studente) SA sveučilišta; // izlazi 161935

Primjer 2. Koristeći funkciju SUM, izbrojite jedinstvene vrijednosti stupca Fakulteti:

ODABIR ZBIR (RAZLIČITIH fakulteta) od sveučilišta; // prikazuje 117 (postoje 2 identična unosa u stupcu Fakulteti, pod ID 1 i 5. Vrijednost stupca pod ID 5 se ne zbraja.)

KRUG()

KRUG()- funkcija za zaokruživanje decimalnih brojeva. Radi samo s brojčanim stupcima ili proizvoljnim realnim brojevima. Sintaksa funkcije:

ROUND(izraz, duljina);

izraz- naziv stupca ili stupaca, kao i stvarni broj. duljina- Određuje preciznost zaokruživanja broja.

Razmotrimo primjer. Uzmimo tablicu planeta:

iskaznica PlanetName Radius Sunčana sezona Godina otvaranja Imati prstenje otvarač
1 Mars 3396 687.58 1659 Ne Christiaan Huygens
2 Saturn 60268 10759.22 - Da -
3 Neptun 24764 60190.91 1846 Da John Couch Adams
4 Merkur 2439 115.88 1631 Ne Nikola Kopernik
5 Venera 6051 243.56 1610 Ne Galileo Galilei

Primjer. Koristite funkciju ROUND da biste zaokružili stupac SunSeason na jednu decimalu:

ODABIR KRUG (Sunčana sezona, 1) IZ Planeta;

UCASE()

UCASE()- funkcija koja vraća vrijednosti stupca ili stupaca velikim slovima. U MS DBMS-u SQL Server analog UCASE() je UPPER funkcija s istom sintaksom:

UCASE(naziv_stupca)

Razmotrimo primjer. Uzmimo našu tablicu Planeta. Primjer. Ispišite imena planeta velikim slovima koji nemaju prstenove pomoću funkcije UCASE:

SELECT UCASE(PlanetName) FROM Planets WHERE HavingRings = "Ne";

LCASE()

LCASE() je funkcija koja vraća vrijednosti stupca ili stupaca malim slovima. U MS SQL Server DBMS, analog SQL LCASE() operatora je funkcija LOWER s istom sintaksom:

LCASE(naziv_stupca);

Razmotrimo primjer. Uzmimo našu tablicu Planeta. Primjer. Pomoću funkcije LCASE ispišite imena planeta koji imaju prstenove malim slovima:

SELECT LCASE(PlanetName) FROM Planets WHERE HavingRings = "Da";

LEN()

LEN()- funkcija koja vraća duljinu vrijednosti u polju zapisa. Funkcija isključuje razmake na kraju iz brojanja. Sintaksa:

LEN(naziv_stupca);

Razmotrimo primjer. Uzmimo našu tablicu Planeta. Primjer. Ispišite otkrića planeta (Otvarač) i duljinu imena planeta koji je on otkrio, koristeći LEN funkciju:

SELECT Opener, LEN(PlanetName) FROM Planets;

SREDINA()

SREDINA()- funkcija koja prikazuje određeni broj znakova u tekstualnom polju tablice. Sintaksa funkcije:

MID(naziv_stupca,početak[,dužina]);

Parametar početak specificira poziciju početnog znaka. Parametar duljina postavlja broj znakova za izlaz počevši od pozicije navedene u početnom parametru.

Razmotrimo primjer. Uzmimo naš stari sveučilišni stol. Primjer. Ispišite prva 3 znaka naziva grada (Lokacija) pomoću funkcije MID:

ODABIR SREDINA (Lokacija, 1, 3) SA sveučilišta;

SADA()

SADA()- funkcija koja vraća vrijeme i datum sustava. Sintaksa funkcije:

Razmotrimo primjer. Uzmimo naš stari sveučilišni stol. Primjer. Navedite koliko studenata trenutno studira na svakom sveučilištu. pomoću funkcije SADA:

SELECT UniversityName, Students, NOW() AS CurDate FROM Universities;

Da biste konsolidirali materijal, izvedite primjer svake funkcije neovisno. Ako imate bilo kakvih pitanja, pišite u komentarima i sigurno ću vam odgovoriti.

Osnovne SQL naredbe koje bi svaki programer trebao znati

SQL ili Structured Query Language (strukturirani jezik upita) dizajniran je za upravljanje podacima u sustavu relacijske baze podataka (RDBMS). Ovaj članak će pokriti najčešće korištene SQL naredbe s kojima bi svaki programer trebao biti upoznat. Ovaj materijal je idealan za one koji žele nadopuniti svoje znanje o SQL-u prije razgovora za posao. Da biste to učinili, analizirajte primjere navedene u članku i zapamtite da ste prošli kroz baze podataka u parovima.

Imajte na umu da neki sustavi baza podataka zahtijevaju točku i zarez na kraju svake izjave. Točka-zarez je standardni pokazivač na kraj svake izjave u SQL-u. Primjeri koriste MySQL, tako da je točka-zarez obavezna.

Primjer postavljanja baze podataka

Stvorite bazu podataka kako biste pokazali kako naredbe rade. Da biste radili, morat ćete preuzeti dvije datoteke: DLL.sql i InsertStatements.sql . Nakon toga otvorite terminal i prijavite se na MySQL konzolu sljedećom naredbom (članak pretpostavlja da je MySQL već instaliran na sustavu):

MySQL -u korijen -p

Zatim unesite lozinku.

Pokrenite sljedeću naredbu. Nazovimo bazu podataka "sveučilište":

KREIRATI BAZU PODATAKA sveučilište; američko sveučilište; IZVOR ; IZVOR

Naredbe baze podataka

1. Pregledajte dostupne baze podataka

PRIKAŽI BAZE PODATAKA;

2. Napravite novu bazu podataka

KREIRATI BAZU PODATAKA;

3. Odabir baze podataka za korištenje

KORISTITI ;

4. Uvezite SQL naredbe iz .sql datoteke

IZVOR ;

5. Brisanje baze podataka

ISPUSTI BAZU PODATAKA ;

Rad sa tablicama

6. Pregledajte tablice dostupne u bazi podataka

PRIKAŽI TABLE;

7. Napravite novu tablicu

STVORI TABLU ( , , GLAVNI KLJUČ ( ), STRANI KLJUC ( ) REFERENCE ());

Ograničenja integriteta pri korištenju CREATE TABLE

Možda ćete morati stvoriti ograničenja za određene stupce u tablici. Prilikom izrade tablice možete postaviti sljedeća ograničenja:

  • ćelija tablice ne može biti NULL;
  • primarni ključ - PRIMARY KEY (naziv_stupca1, naziv_stupca2, ...) ;
  • strani ključ - STRANI KLJUČ (naziv_stupca1, …, naziv_stupcaxn) REFERENCE ime_tablice(naziv_stupca1, …, ime_stupcaxn) .

Možete navesti više od jednog primarnog ključa. U ovom slučaju dobivate složeni primarni ključ.

Primjer

Napravite tablicu "instruktora":

CREATE TABLE instruktor (ID CHAR(5), ime VARCHAR(20) NOT NULL, dept_name VARCHAR(20), plaća NUMERIC(8,2), PRIMARNI KLJUČ (ID), STRANI KLJUČ (dept_name) REFERENCE odjel(dept_name));

8. Podaci o tablici

Možete vidjeti različite informacije (vrstu vrijednosti, ključ ili ne) o stupcima tablice sljedećom naredbom:

OPISATI ;

9. Dodavanje podataka u tablicu

UMETNUTI U (, , , …) VRIJEDNOSTI ( , , , …);

Kada dodajete podatke u svaki stupac tablice, ne morate navoditi nazive stupaca.

UMETNUTI U VRIJEDNOSTI ( , , , …);

10. Ažurirajte podatke tablice

AŽURIRAJ SET = , = , ... GDJE ;

11. Brisanje svih podataka iz tablice

IZBRIŠI IZ ;

12. Brisanje tablice

ISPUSTI STOL ;

Naredbe za kreiranje upita

13. ODABIR

SELECT se koristi za dobivanje podataka iz određene tablice:

IZABERI , , … OD ;

Sljedeća naredba može prikazati sve podatke iz tablice:

ODABIR * IZ ;

14. ODABIR DISTINCT

Stupci tablice mogu sadržavati duplicirane podatke. Upotrijebite SELECT DISTINCT da biste dobili samo neduplicirane podatke.

ODABIR DISTINCT , , … OD ;

15. GDJE

Može se koristiti ključna riječ WHERE u SELECT za određivanje uvjeta u upitu:

IZABERI , , … OD GDJE ;

U zahtjevu možete navesti sljedeće uvjete:

  • usporedba teksta;
  • usporedba brojčanih vrijednosti;
  • logičke operacije I (i), ILI (ili) i NOT (negacija).

Primjer

Isprobajte sljedeće naredbe. Obratite pažnju na uvjete navedene u GDJE:

SELECT * FROM course WHERE dept_name='Comp. Sci.'; ODABIR * IZ kolegija WHERE bodova>3; SELECT * FROM course WHERE dept_name="Comp. Sci." I bodova>3;

16. GRUPA PO

Operator GROUP BY često se koristi sa agregatnim funkcijama kao što su COUNT , MAX , MIN , SUM i AVG za grupiranje izlaznih vrijednosti.

IZABERI , , … OD GRUPA PO ;

Primjer

Prikažimo broj kolegija za svaki fakultet:

SELECT COUNT(course_id), dept_name FROM kolegija GROUP BY dept_name;

17. IMATI

Ključna riječ HAVING dodana je u SQL jer se WHERE ne može koristiti sa agregatnim funkcijama.

IZABERI , , ... OD GRUPA PO IMATI

Primjer

Prikažimo popis fakulteta koji imaju više od jednog kolegija:

SELECT COUNT(course_id), dept_name FROM course GROUP BY dept_name HAVING COUNT(course_id)>1;

18. NARUČITE PO

ORDER BY se koristi za sortiranje rezultata upita uzlaznim ili silaznim redoslijedom. ORDER BY sortira uzlaznim redoslijedom osim ako nisu navedeni ASC ili DESC.

IZABERI , , … OD NARUDŽITE PO , , …ASC|DESC;

Primjer

Prikažimo popis kolegija uzlaznim i silaznim redoslijedom prema broju bodova:

ODABIR * IZ tečaja REDUS PO bodovima; ODABIR * IZ tečaja RED BY bodovima DESC;

19. IZMEĐU

BETWEEN se koristi za odabir vrijednosti podataka iz određenog raspona. Mogu se koristiti numeričke i tekstualne vrijednosti, kao i datumi.

IZABERI , , … OD GDJE IZMEĐU I ;

Primjer

Prikažimo popis instruktora čija je plaća veća od 50.000, ali manja od 100.000:

ODABIR * OD instruktora GDJE plaća IZMEĐU 50000 I 100000;

20.LIKE

Operator LIKE koristi se u WHERE za određivanje uzorka za traženje slične vrijednosti.

Postoje dva besplatna operatora koja se koriste u LIKE:

  • % (ni jedan, jedan ili više znakova);
  • _ (jedan znak).
IZABERI , , … OD GDJE KAO ;

Primjer

Prikažimo popis kolegija čiji nazivi sadrže "do" i popis kolegija čiji nazivi počinju s "CS-":

SELECT * FROM kolegija WHERE naslov LIKE '%to%'; SELECT * FROM course WHERE course_id LIKE "CS-___";

21. IN

Pomoću IN možete odrediti više vrijednosti za klauzulu WHERE:

IZABERI , , … OD GDJE IN ( , , …);

Primjer

Prikažimo popis učenika iz smjera Comp. prirodoslovlja, fizike i elek. Engleski:

SELECT * FROM student WHERE dept_name IN('Comp. Sci.', 'Physics', 'Elec. Eng.');

22. PRIDRUŽITE SE

JOIN se koristi za povezivanje dvije ili više tablica koristeći zajedničke atribute unutar njih. Slika ispod pokazuje razne načine spaja u SQL-u. Obratite pažnju na razliku između lijevog vanjskog spoja i desnog vanjskog spoja:

IZABERI , , … OD PRIDRUŽITI NA = ;

Primjer 1

Ovdje je popis svih tečajeva i odgovarajućih informacija o odjelima:

SELECT * IZ tečaja PRIDRUŽITE se odjelu NA course.dept_name=department.dept_name;

Primjer 2

Ovdje je popis svih potrebnih tečajeva i pojedinosti o njima:

SELECT prereq.course_id, title, dept_name, credits, prereq_id FROM prereq LEFT OUTER JOIN course ON prereq.course_id=course.course_id;

Primjer 3

Prikažimo popis svih tečajeva, bez obzira na to jesu li obavezni ili ne:

SELECT course.course_id, title, dept_name, credits, prereq_id FROM prereq DESNO VANJSKO PRIDRUŽENJE kolegiju NA prereq.course_id=course.course_id;

23 Pogled

Pogled je virtualna SQL tablica stvorena kao rezultat izvršavanja izraza. Sadrži retke i stupce i vrlo je sličan normalnoj SQL tablici. Prikaz uvijek prikazuje najnovije informacije iz baze podataka.

Stvaranje

STVORI POGLED KAO SELECT , , … OD GDJE ;

Uklanjanje

ISPUSTI POGLED ;

Primjer

Kreirajmo pogled koji se sastoji od tečajeva s 3 boda:

24. Funkcije agregata

Ove funkcije se koriste za dobivanje zbirnog rezultata koji se odnosi na dotične podatke. Sljedeće su najčešće korištene agregatne funkcije:

  • COUNT (naziv_stupca) - vraća broj redaka;
  • SUM (naziv_stupca) - vraća zbroj vrijednosti u danom stupcu;
  • AVG (col_name) - vraća prosječnu vrijednost zadanog stupca;
  • MIN (naziv_stupca) - vraća najmanju vrijednost zadanog stupca;
  • MAX(naziv_stupca) - vraća najviša vrijednost ovu kolumnu.

25. Ugniježđeni podupiti

Ugniježđeni potupiti su SQL upiti koji uključuju izraze SELECT , FROM i WHERE ugniježđene unutar drugog upita.

Primjer

Pronađimo predmete koji su se predavali u jesen 2009. i u proljeće 2010.:

ODABIR DISTINCT course_id FROM section WHERE semester = 'Jesen' I year= 2009 AND course_id IN (ODABIR course_id FROM section WHERE semester = 'Proljeće' I year= 2010);

Funkcije su posebna vrsta naredbi u SQL skupu naredbi, a svaki dijalekt ima svoju implementaciju skupa naredbi. Kao rezultat, možemo reći da su funkcije naredbe koje se sastoje od jedne riječi i vraćaju jednu vrijednost. Vrijednost funkcije može ovisiti o ulaznim parametrima, kao što je u slučaju funkcije koja izračunava prosjek popisa vrijednosti u bazi podataka. Međutim, mnoge funkcije ne uzimaju nikakve ulazne parametre, na primjer, funkcija koja vraća trenutno vrijeme sustava je CURRENTJ1ME.

ANSI standard podržava nekoliko korisnih značajki. Ovo poglavlje daje opis ovih funkcija, kao i Detaljan opis i primjeri za svaku platformu. Osim toga, svaka platforma ima dugačak popis vlastitih, internih funkcija koje nadilaze SQL standard. Ovo poglavlje pruža parametre i opise svih internih funkcija svake od platformi.

Osim toga, većina platformi ima mogućnost stvaranja prilagođenih funkcija. Iza dodatne informacije za korisnički definirane funkcije, pogledajte "KREIRANJE/IZMJENA FUNKCIJA/POSTUPKA Izjave"

Vrste funkcija

postojati različiti putevi klasifikacije funkcija. Sljedeći pododjeljci opisuju važne razlike kako bi vam pomogli razumjeti kako značajke funkcioniraju.

Determinističke i nedeterminističke funkcije

Funkcije mogu biti determinističke i nedeterminističke. Deterministička funkcija uvijek vraća isti rezultat za isti skup ulaznih vrijednosti. Nedeterminističke funkcije mogu vratiti različite rezultate na različite pozive, čak i ako su im dane iste ulazne vrijednosti.

Zašto je toliko važno da s istim ulazni parametri dobili iste rezultate? Ovo je važno jer definira način na koji se funkcije koriste u pogledima, korisnički definiranim funkcijama i pohranjenim procedurama. Ograničenja se razlikuju na različitim platformama, ali ponekad se u tim objektima mogu koristiti samo determinističke funkcije. Na primjer, SQL Server može stvoriti indeks za izraz na stupcu, sve dok izraz ne sadrži nedeterminističke funkcije. Pravila i ograničenja razlikuju se od platforme do platforme, stoga molimo pogledajte dokumentaciju proizvođača kada koristite funkcije.

Agregatne i skalarne funkcije

Drugi način kategorizacije funkcija je njihova sposobnost da rade samo na jednom nizu, ili na zbirci vrijednosti, ili na skupovima nizova. Agregatne funkcije rade na zbirci vrijednosti i vraćaju jednu ukupnu vrijednost. Skalarne funkcije vraćaju jednu vrijednost, ovisno o skalarnim ulaznim argumentima. Neke skalarne funkcije, kao što je CURRENTJTIME, ne zahtijevaju argumente.

Funkcije prozora

Funkcije prozora mogu se smatrati sličnim funkcijama agregata po tome što mogu raditi na više redaka odjednom. Razlika je u tome kako su ti redovi specificirani. Agregatne funkcije rade na skupovima redaka navedenim u klauzuli GROUP BY. U slučaju prozorskih funkcija, skup redaka se specificira svaki put kada se funkcija pozove, i različite izazove funkcije unutar istog upita mogu raditi s različitim skupovima redaka.

Nastavljamo s proučavanjem jezika SQL upita, a danas ćemo govoriti o tome SQL nizove funkcije. Pogledat ćemo osnovne i najčešće korištene nizove funkcije kao što su: DONJI, LTRIM, ZAMJENA i drugi, sve ćemo razmotriti, naravno, s primjerima.

ODABIR naziv || prezime KAO FIO IZ stol

Ili za odvajanje razmakom unesite

SELECT ime || " " || prezime KAO FIO IZ stol

oni. dvije okomite trake spajaju dva stupca u jedan, a da ih razdvojim razmakom, stavio sam razmak između njih ( može se koristiti bilo koji znak, kao što je crtica ili dvotočka) u apostrofima i u kombinaciji s dvije okomite crte ( Transact-SQL koristi + umjesto dvije okomite trake).

INITCAP funkcija

Slijedi vrlo korisna funkcija, INITCAP- koji vraća vrijednost u nizu u kojem svaka riječ počinje velikim slovom i nastavlja se malim slovima. To je potrebno ako se ne pridržavate pravila za popunjavanje jednog ili drugog stupca i kako biste prikazali cijelu stvar Lijep pogled možete koristiti ovu funkciju, na primjer, u vašoj tablici postoje unosi u stupcu imena sljedećeg oblika: IVAN Ivanov ili Peter Petrov, koristite ovu funkciju.

ODABIR INITCAP (ime) KAO FIO IZ tablice

I dobijete to ovako.

GORNJA funkcija

Slična je funkcija koja samo vraća sve velike znakove GORNJI.

ODABIR GORNJE (ime) KAO FIO IZ tablice

  • naziv – naziv stupca;
  • 20 - broj znakova ( dužina polja);
  • '-' je znak koji treba dopuniti potrebnim brojem znakova.

RPAD funkcija

Pogledajmo inverznu funkciju. RPAD- radnja i sintaksa su isti kao i za LPAD, samo se znakovi s desne strane nadopunjuju ( u LPAD-u s lijeve strane).

SELECT RPAD (ime, 20, "-") KAO naziv IZ tablice

Ivan—————-
Sergej-----

LTRIM funkcija

Sljedeća dolazi također u nekim slučajevima korisna funkcija, LTRIM- ova funkcija uklanja krajnje lijeve znakove koje odredite. Na primjer, imate stupac "grad" u vašoj bazi podataka, u kojem je grad označen kao "Moskva", a postoje i gradovi koji su naznačeni jednostavno kao "Moskva". Ali izvješće trebate prikazati samo u obliku "Moskva" bez "grada", ali kako to učiniti ako ima takvih i takvih? Vi samo navodite neku vrstu uzorka "g". a ako krajnji lijevi znakovi počinju s "r", onda ti znakovi jednostavno neće biti izlazni.

ODABIR LTRIM (grad) KAO gorod IZ tablice

Ova funkcija gleda znakove s lijeve strane, ako nema znakova prema obrascu na početku retka, onda vraća izvornu vrijednost ćelije, a ako ih ima, briše ih.

RTRIM funkcija

Također, pogledajmo odmah inverznu funkciju. RTRIM– isto kao i LTRIM samo se znakovi traže na desnoj strani.

Bilješka! U Transact-SQL-u, funkcije RTRIM i LTRIM uklanjaju razmake s desne i lijeve strane.

ZAMJENA funkcija

Sada razmotrite tako zanimljivu funkciju kao ZAMIJENITI- vraća niz u kojem su sva podudaranja znakova zamijenjena vašim znakovima koje navedete. Za što se može koristiti npr. imate stupce u bazi podataka u kojima ima nekih znakova za razdvajanje, recimo "/". Na primjer, Ivan / Ivanov, a želite prikazati Ivan-Ivanov, a zatim napišite

ODABIR ZAMJENA (naziv, "/", "-") IZ tablice

i imat ćete zamjenu karaktera.

Ova funkcija zamjenjuje samo potpuno podudaranje znakova, ako na primjer navedete "-", tj. tri crtice, tražit će samo tri crtice i neće zamijeniti svaku pojedinačnu crticu, za razliku od sljedeće funkcije.

Funkcija TRANSLATE

PREVEDI je funkcija niza koja zamjenjuje sve znakove u nizu znakovima koje navedete. Na temelju naziva funkcije možete pretpostaviti da se radi o feedu cijelog reda. Razlika između ove funkcije i REPLACE je u tome što zamjenjuje svaki znak koji navedete, tj. imate tri znaka, recimo abc i c koristeći TRANSLATE Možete ga zamijeniti s abc, tako da imate a=a, b=b, c=c, a po ovom principu će se zamijeniti sva podudaranja znakova. A ako ste zamijenili pomoću REPLACE, tada ste tražili samo potpuno podudaranje znakova abc koji se nalaze u nizu.

SUBSTR funkcija

SUBSTRzadanu funkciju, vraća samo raspon znakova koje navedete. Drugim riječima, recimo niz od 10 znakova, ali ne trebate svih deset, ali recimo da trebate samo 3-8 ( trećeg do osmog). S ovom funkcijom to možete jednostavno učiniti. Na primjer, imate neki identifikator fiksne duljine u bazi podataka (kao: AA-BB-55-66-CC) i svaka kombinacija znakova nešto znači. I u jednom lijepom trenutku vam je rečeno da prikažete samo 2 i 3 kombinacije znakova, za to napišete upit sljedećeg oblika.

SELECT SUBSTR (ident, "4", "8") IZ tablice

oni. ispisujemo sve znakove od 4 do 8, a nakon ovog upita dobit ćete ovo:

Funkcija LENGTH - duljina niza

Sljedeća funkcija također može biti korisna, a to je DUŽINA- koji jednostavno broji broj znakova u nizu. Na primjer, trebate saznati koliko je znakova u svakoj ćeliji stupca "ime" dopušteno, tablica je sljedeća.

ODABIR DUŽINU (naziv) IZ tablice

nakon ovog zahtjeva dobit ćete ovo.

4
6
7

Ovdje smo s vama i ispitali smo glavne funkcije SQL nizova. U sljedećim člancima nastavit ćemo proučavanje SQL-a.

Naučimo sumirati. Ne, ovo nisu rezultati učenja SQL-a, već rezultati vrijednosti stupaca tablica baze podataka. SQL agregatne funkcije rade na vrijednostima stupca kako bi proizvele jednu vrijednost rezultata. Najčešće korištene SQL agregatne funkcije su SUM, MIN, MAX, AVG i COUNT. Postoje dva slučaja u kojima se trebaju koristiti agregatne funkcije. Prvo, agregatne funkcije koriste se same i vraćaju jednu vrijednost rezultata. Drugo, agregatne funkcije se koriste s klauzulom SQL GROUP BY, odnosno s grupiranjem po poljima (stupcima) za dobivanje rezultirajućih vrijednosti u svakoj grupi. Razmotrimo prvo slučajeve korištenja agregatnih funkcija bez grupiranja.

SQL funkcija SUM

SQL SUM funkcija vraća zbroj vrijednosti stupca u tablici baze podataka. Može se primijeniti samo na stupce čije su vrijednosti brojevi. SQL upiti da biste dobili rezultatski zbroj, počnite ovako:

ODABIR ZBOR (NAZIV STUPCA) ...

Nakon ovog izraza slijedi FROM (TABLE_NAME), a zatim se uvjet može specificirati pomoću klauzule WHERE. Osim toga, DISTINCT se može dodati nazivu stupca kako bi se naznačilo da će se uzeti u obzir samo jedinstvene vrijednosti. Prema zadanim postavkama, sve vrijednosti se uzimaju u obzir (za to možete posebno navesti ne DISTINCT, već SVE, ali riječ SVE nije obavezna).

Primjer 1 Postoji baza podataka tvrtke s podacima o njezinim odjelima i zaposlenicima. Tablica Osoblje također ima stupac s podacima o plaćama zaposlenika. Izbor iz tablice ima sljedeći oblik (za uvećanje slike kliknite na nju lijevom tipkom miša):

Da biste dobili zbroj svih plaća, koristite sljedeći upit:

ODABERITE ZUM (Plaća) IZ Osoblje

Ovaj će upit vratiti vrijednost 287664,63.

A sada . U vježbama već počinjemo komplicirati zadatke, približavajući ih onima koji se susreću u praksi.

SQL MIN funkcija

SQL MIN funkcija također radi na stupcima čije su vrijednosti brojevi i vraća minimum svih vrijednosti u stupcu. Ova funkcija ima sintaksu sličnu onoj kod funkcije SUM.

Primjer 3 Baza podataka i tablica su iste kao u primjeru 1.

Potrebno je saznati minimalnu plaću za zaposlenike odjela broj 42. Da biste to učinili, napišite sljedeći upit:

Upit će vratiti vrijednost 10505,90.

I opet vježba za samoopredjeljenje. U ovoj i nekim drugim vježbama trebat će vam ne samo tablica osoblja, već i tablica organizacije koja sadrži podatke o odjelima tvrtke:


Primjer 4 Tablica Org dodaje se tablici Osoblje, koja sadrži podatke o odjelima tvrtke. Ispišite minimalni broj godina koje je jedan zaposlenik radio u odjelu koji se nalazi u Bostonu.

SQL MAX funkcija

Funkcija SQL MAX radi slično i ima sličnu sintaksu, koja se koristi kada želite odrediti maksimalnu vrijednost među svim vrijednostima stupca.

Primjer 5

Potrebno je saznati maksimalnu plaću zaposlenika odjela broj 42. Da biste to učinili, napišite sljedeći upit:

Upit će vratiti vrijednost 18352,80

Vrijeme je da vježbe za samoopredjeljenje.

Primjer 6 Opet radimo s dva stola - Staff i Org. Prikaz naziva odjela i maksimalnog iznosa provizija koje prima jedan zaposlenik u odjelu koji pripada grupi odjela (Odjel) Istočni. Koristiti JOIN (spajanje tablica) .

SQL AVG funkcija

Ono što je rečeno o sintaksi za prethodno opisane funkcije vrijedi i za SQL AVG funkciju. Ova funkcija vraća prosjek svih vrijednosti u stupcu.

Primjer 7 Baza podataka i tablica su iste kao u prethodnim primjerima.

Neka je potrebno saznati prosječni radni staž zaposlenika odjela broj 42. Da bismo to učinili, pišemo sljedeći upit:

Rezultat će biti 6,33

Primjer 8 Radimo s jednim stolom - Osoblje. Prikažite prosječnu plaću zaposlenika s iskustvom od 4 do 6 godina.

SQL COUNT funkcija

SQL COUNT funkcija vraća broj zapisa u tablici baze podataka. Ako u upitu navedete SELECT COUNT(COLUMNAME) ..., tada će rezultat biti broj zapisa bez uzimanja u obzir onih zapisa u kojima je vrijednost stupca NULL (nedefinirana). Ako koristite zvjezdicu kao argument i pokrenete upit SELECT COUNT(*) ..., rezultat će biti broj svih zapisa (redova) u tablici.

Primjer 9 Baza podataka i tablica su iste kao u prethodnim primjerima.

Želite znati broj svih zaposlenika koji primaju provizije. Broj zaposlenika čije vrijednosti stupca Comm nisu NULL vratit će sljedeći upit:

ODABERITE BROJ (Comm) IZ osoblja

Rezultat će biti vrijednost 11.

Primjer 10 Baza podataka i tablica su iste kao u prethodnim primjerima.

Ako želite znati ukupan broj zapisa u tablici, upotrijebite upit sa zvjezdicom kao argument funkciji COUNT:

ODABERITE BROJ (*) IZ osoblja

Rezultat će biti vrijednost 17.

Sljedeći vježba za samoopredjeljenje trebate koristiti podupit.

Primjer 11. Radimo s jednim stolom - Osoblje. Prikažite broj zaposlenih u odjelu Plains.

Agregatne funkcije sa SQL GROUP BY

Pogledajmo sada korištenje agregatnih funkcija zajedno sa klauzulom SQL GROUP BY. SQL GROUP BY klauzula se koristi za grupiranje rezultirajućih vrijednosti po stupcima u tablici baze podataka. Stranica ima lekcija posvećena ovom operateru zasebno .

Primjer 12. Postoji baza podataka portala oglasa. Ima tablicu Oglasi koja sadrži podatke o oglasima koji su poslani za tjedan. Stupac Kategorija sadrži podatke o velikim kategorijama oglasa (primjerice Nekretnine), a stupac Dijelovi sadrži podatke o manjim dijelovima koji su uključeni u kategorije (na primjer, dijelovi Apartmani i Vile su dijelovi kategorije Nekretnine). Stupac Jedinice sadrži podatke o broju poslanih oglasa, a stupac Novac iznos novca zarađen za slanje oglasa.

KategorijadioJediniceNovac
Prijevozmotorna vozila110 17600
VlasništvoApartmani89 18690
VlasništvoDachas57 11970
PrijevozMotocikli131 20960
Građevinski materijalPloče68 7140
Elektrotehnikatelevizori127 8255
ElektrotehnikaHladnjaci137 8905
Građevinski materijalRegips112 11760
Slobodno vrijemeknjige96 6240
VlasništvoKuće47 9870
Slobodno vrijemeglazba, muzika117 7605
Slobodno vrijemeIgre41 2665

Koristeći klauzulu SQL GROUP BY, pronađite iznos novca generiran slanjem oglasa u svakoj kategoriji. Pišemo sljedeći upit:

ODABERITE kategoriju, SUM (novac) KAO novac IZ oglasa GRUPA PO Kategoriji

Primjer 13 Baza podataka i tablica su iste kao u prethodnom primjeru.

Pomoću klauzule SQL GROUP BY saznajte koji dio svake kategorije ima najviše oglasa. Pišemo sljedeći upit:

ODABERITE kategoriju, dio, MAX (jedinice) KAO maksimum IZ oglasa GRUPE PO kategoriji

Rezultat će biti sljedeća tablica:

Ukupne i pojedinačne vrijednosti mogu se dobiti u jednoj tablici kombiniranje rezultata upita pomoću operatora UNION .

Relacijske baze podataka i SQL jezik