Korekcija naočara prezbiopije. Izbor kancelarijskih naočara

I preko tabličnih podataka.

Poziva se SQL jezik ugrađen, jer sadrži funkcije punopravnog razvojnog jezika i fokusira se na pristup podacima, zbog čega je uključen u alate za razvoj aplikacija. Standardi SQL jezika podržavaju Pascal, Fortran, COBOL, C i druge programske jezike.

Postoji 2 metode za korištenje ugrađenog SQL-a:

  • statički upotreba jezika ( statički SQL) - tekst programa sadrži pozive SQL funkcijama koje su uključene u izvršni modul nakon kompilacije.
  • dinamičan upotreba jezika ( dinamički SQL) – dinamička konstrukcija poziva SQL funkcija i njihova interpretacija. Na primjer, možete pristupiti podacima udaljene baze podataka tokom izvršavanja programa.

SQL jezik (kao i drugi jezici baza podataka) je dizajniran za pripremu i izvršavanje upita. Kao rezultat izvršavanja upita podataka iz jedne ili više tabela, dobija se skup zapisa koji se naziva performanse.

Definicija 1

Performanse je tabela koja se formira kao rezultat izvršenja upita.

Osnovni SQL operatori jezika upita

SQL izrazi se uslovno dijele na 2 podjezika:

  1. Jezik definicije podataka DDL;
  2. Jezik za manipulaciju podacima DML.

U tabeli je označen simbol * specifični operateri jezik.

Pogledajmo najvažnije SQL izraze.

    Izjava o kreiranju tabele:

    Ime tabele koja se kreira i ime najmanje jedne kolone (polja) su obavezni operandi. Za ime kolone morate navesti tip podataka koji će biti pohranjen u njemu.

    Za pojedinačna polja možete odrediti dodatna pravila za kontrolu vrijednosti koje se u njih unose. Na primjer, NOT NULL označava da polje ne može biti prazno i ​​da se u njega mora unijeti vrijednost.

    Primjer 1

    Za kreiranje tabele knjige imenik knjiga, koji sadrži polja:

    tip- vrsta knjige

    ime- naslov knjige,

    Cijena– cijena knjige

    operator bi mogao izgledati ovako:

    Operator promjene strukture tabele:

    Prilikom promjene strukture tabele, možete dodati ( DODATI), promijeniti ( MODIFY) ili izbrisati ( DROP) jedna ili više kolona tabele. Pravila za pisanje ovog operatora su ista kao i za operator CREATE TABLE. Ne morate specificirati za brisanje stupca.

    Primjer 2

    Za dodavanje u tabelu knjige polja broj, koji će pohraniti broj knjiga, možete napisati operatorom:

    Izjava o ispuštanju tabele:

    Primjer 3

    Na primjer, da ispustite postojeću tablicu pod nazivom knjige samo koristite operatera:

    Izjava o kreiranju indeksa:

    Naredba kreira indeks na jednoj ili više kolona date tabele, što ubrzava operacije upita i traženja. Na istoj tabeli može se kreirati više indeksa.

    Opciona opcija UNIQUE odgovoran je za osiguranje jedinstvenosti vrijednosti u svim stupcima koji su navedeni u izjavi.

    ASC postavlja automatsko sortiranje vrijednosti u kolonama uzlaznim redoslijedom (podrazumevano), i DESC- u opadajućem redosledu.

    Operator ispuštanja indeksa:

    Prikaži operator kreiranja:

    Kada kreirate pogled, možete izostaviti nazive kolona. Tada će se koristiti nazivi kolona iz upita, što opisuje odgovarajući operator SELECT.

    Prikaži operatora za brisanje:

    Operator odabira zapisa:

    Operater SELECT bira i vrši proračune na podacima iz jedne ili više tabela. Rezultat izvršenja izraza je tabela odgovora koja sadrži ( SVE) ili ne sadrži ( DISTINCT) redovi koji se ponavljaju.

    Operand OD sadrži listu tabela iz kojih se uzimaju zapisi za odabir podataka.

    Operator izmjene zapisa:

    Nove vrijednosti polja u zapisima ne smiju sadržavati vrijednosti ( NULL) ili izračunati prema aritmetičkom izrazu.

    Operater za ubacivanje novih zapisa:

    U prvom zapisu operatera INSERT unose se novi zapisi sa datim vrijednostima u kolonama.

    U drugom zapisu operatera INSERT unose se novi redovi, biraju se iz druge tabele kroz rečenicu SELECT.

    Operator za brisanje zapisa:

    Kao rezultat izvršenja operatora, redovi koji zadovoljavaju uvjet specificiran opcijskim operandom se brišu iz navedene tablice GDJE. Ako je operand GDJE nije navedeno, svi zapisi u tabeli se brišu.

Disciplina: Baze podataka

Jezički operatoriSQL

SQL jezik uključuje operatore različitih kategorija. Svaki SQL izraz sastoji se od rezerviranih riječi i riječi koje definira korisnik u skladu s utvrđenim sintaksičkim pravilima. Kao i kod mnogih programskih jezika, većina komponenti izraza jezika ne razlikuje velika i mala slova. Izuzetak od ovog pravila su, kao i obično, znakovni podaci, koji moraju biti svjesni velikih i malih slova i koristiti onaj koji je potreban za predstavljanje podataka.

Za pisanje naredbi na jeziku usvojen je slobodan format, koji omogućava da se SQL program učini čitljivijim kroz uvlačenje i poravnanje.

    svaka fraza u izjavi mora početi u novom redu;

    početak svake fraze mora biti usklađen s početkom ostalih fraza izjave;

    svaki dio fraze treba početi u novom redu s nekim uvlačenjem u odnosu na početak cijele fraze, što će vam omogućiti da istaknete podređene dijelove;

    Neke konvencije se primjenjuju na pisanje operatora:

    velika slova se koriste za pisanje rezerviranih riječi;

    mala slova se koriste za pisanje korisnički definiranih riječi;

    okomita traka "|"" označava potrebu za odabirom jedne od nekoliko vrijednosti;

    vitičaste zagrade definiraju traženi element;

    uglaste zagrade definiraju neobavezni element;

    elipsa "..." se koristi za označavanje opcione mogućnosti ponavljanja konstrukcije, od nule do nekoliko puta.

Operatori definicije podataka (Tablica 1) se koriste za opisivanje korištenih struktura podataka. Ova kategorija uključuje sljedeće naredbe: kreiraj tablicu, ispusti tablicu, mijenjaj tablicu, kreiraj pogled, ALTER VIEW, DROP VIEW.

Tabela 1 . Operatori definicije podataka

Operater Objašnjenje

kreirati tabelu

DROP table

alter table

CREATE VIEW Kreirajte pogled

alter view

drop view

Operatori za manipulaciju podacima, koji čine sljedeću kategoriju operatora, dizajnirani su za popunjavanje tablica podacima i ažuriranje informacija učitanih u njih. Ova kategorija uključuje sljedeće operatore: delete, insert, update (Tabela 2).

tabela 2 . Operateri manipulacije podacima

OperaterObjašnjenje

Izbriši Briše jedan ili više redova koji odgovaraju uslovima

filtriranje, iz osnovne tabele

INSERT Umeće jedan red u osnovnu tabelu

ažuriranje Ažurira vrijednosti jedne ili više kolona u jednom ili više

više linija koje odgovaraju uslovima filtera

Za odabir informacija iz baze podataka namijenjen je jezik upita, koji je u SQL jeziku predstavljen jednom naredbom za odabir (Tablica 3).

Tabela 3 Jezik upita

Operater Objašnjenje

izaberite Odabire redove; operator koji vam omogućava da formirate rezultat

tabela koja odgovara upitu

Pored navedenih kategorija operatera, čiju namjenu nije teško zamisliti nakon čitanja objašnjenja u tabelama, potrebno je izdvojiti još dvije: operatore za upravljanje transakcijama (tabela 4) i alate za administraciju podataka (tabela 5). .

Tabela 4. Upravljanje transakcijama

Objašnjenje operatera

commit Dovršite transakciju - dovršite obradu informacija,

kombinovano u transakciju

rollback Povratna transakcija - poništavanje promena napravljenih tokom izvršenja

stanje baze podataka, označite je kako biste joj se kasnije mogli vratiti

Tabela 5 . Administracija podataka

Objašnjenje operatera

ALTER DATABASE Promjena skupa osnovnih objekata u bazi podataka, ograničenja u vezi

cijelu bazu podataka

ALTER DBAREA Izmijenite prethodno kreirano područje skladištenja

ALTER PASSWORD Promijenite lozinku za cijelu bazu podataka

CREATE DATABASE Kreirajte novu bazu podataka

CREATE DBAREA Kreirajte novo skladište i učinite ga dostupnim za hosting

DROP DATABASE Ispustite postojeću bazu podataka

DROP DBAREA Izbrišite postojeću oblast za skladištenje (ako trenutno ne sadrži

aktivni podaci se nalaze)

GRANT Dodijelite prava pristupa brojnim akcijama na nekom objektu baze podataka

REVOKE Opoziv prava pristupa nekom objektu ili nekim akcijama na

objekt

U komercijalnom DBMS-u, skup osnovnih operatora je proširen. Većina DBMS-ova uključuje izraze za definiranje i brisanje indeksa pokretanja pohranjenih procedura i izraza za definiranje okidača.

Uobičajeno je upoznavanje sa ovim jezikom započeti razmatranjem mogućnosti jezika upita, koji je u SQL jeziku predstavljen jednom naredbom select, jer je ova moćna izjava, naravno, i najkompleksnija. Osim toga, zanimljivo je vidjeti kako se može koristiti u sprezi s operaterima za manipulaciju podacima u budućnosti.

    Odaberite izjavuSELECT . Formiranje upita bazi podataka

Svrha naredbe select je odabir i prikaz podataka iz jedne ili više tablica baze podataka. Ovaj izuzetno moćan, najčešće korišćeni operator implementira sve operacije relacione algebre. Isti zahtjev se može implementirati na više načina, koji se mogu značajno razlikovati u vremenu izvršenja.

Odaberite format izjave:

SELECT *|<список полей>OD<список таблиц>

Navedeni redosled fraza u naredbi select ne može se promeniti, ali nisu svi njeni delovi potrebni. Obavezne klauzule uključuju samo klauzule select i from. Svi ostali dijelovi operatora mogu se koristiti prema nahođenju programera. Objašnjenje:

□ Fraza izaberite:

Prisutnost ključne riječi sve(podrazumevano) znači da rezultirajuća tabela uključuje sve redove koji zadovoljavaju uslove upita, što može dovesti do pojave duplih redova u rezultujućoj tabeli;

Ključna riječ različita dizajniran da uskladi tabelu sa principima teorije relacija, koja pretpostavlja odsustvo duplih redova;

simbol " * " definira vrlo uobičajenu situaciju u kojoj skup rezultata uključuje sve stupce iz originalne tabele upita.

□ Jednom frazom od navedena je lista izvornih tabela upita.

□ Jednom frazom gdje definisani su uslovi za odabir redova rezultata ili uslovi za spajanje redova izvornih tabela, slično operaciji uslovnog spajanja u relacionoj algebri. Sljedeći predikati se mogu koristiti kao uvjeti odabira:

Poređenja "= ,<>, >, <, >=, <=" - для сравнения результатов вы­числения двух выражений; более сложные выражения строятся с по­мощью логических операторов AND, OR, NOT; значения выражений вычисляются в порядке, который определяется приоритетом исполь­зуемых операторов и наличием скобок в выражении;

izmeđuAiIN- predikat je istinit kada procijenjena vrijednost izraza padne unutar specificiranog raspona (predikat neizmeđuaiIN true kada vrednost koja se poredi ne spada u navedeni interval);

in- predikat je istinit kada je upoređena vrijednost uključena u skup datih vrijednosti; u ovom slučaju, skup vrijednosti može biti specificiran jednostavnim nabrajanjem ili ugrađenim podupitom (predikat nije u stanju je istinit kada uspoređena vrijednost nije uključena u navedeni skup);

like I nelike- predikati, čije je značenje suprotno, zahtevaju specifikaciju šablona sa kojim se data vrednost upoređuje; slični predikat je istinit kada se vrijednost upoređuje s uzorkom, a netačan u suprotnom;

ISnull- predikat koji se koristi za otkrivanje jednakosti vrijednosti nekog atributa s nedefiniranom vrijednošću:

    <имя атрибута> ISnull- uzima vrijednost true ako navedeni atribut u ovom nizu ima nedefiniranu vrijednost i false, u suprotnom;

    <имя атрибута> ISNEnull- sve se dešava obrnuto.

postoje I nepostoje Koristi se u inline potupitima.

□ Jednom frazom grupaby postavljena je lista polja za grupisanje.

□ Jednom frazom vlasništvo postavljeni su predikati-uslovi nametnuti svakoj grupi.

□ Jednom frazom redby specificira se lista polja za redoslijed rezultata, odnosno lista polja koja određuje redoslijed sortiranja u rezultirajućoj tablici.

SQL standard definira koncept NULL vrijednosti, što je zahtijevalo upotrebu logike s tri vrijednosti, gdje se sve logičke operacije izvode u skladu s donjom tablicom istinitosti (Tablica 6).

Table 6 . tabela istine

A I B

TRUE

1.1. Simple Queries

Zahtjev 1

Prikaz informacija o odsjecima na univerzitetu.

Ovaj zadatak se svodi na odabir i prikaz informacija iz jedne tablice, a svi njeni redovi i svi stupci podliježu izlazu:

SELECT * IZ odjela

Rezultat takvog upita bit će tabela koja sadrži informacije o svim odjelima univerziteta:

kod kaf

Ime kaf

Nom_telef

Nom_Auditoria

Col_sotr

Ivanov T.M.

Opća matematika

Makhov K L.

Ross L.T.

Firsov S.S.

Primijenjena matematika

Lyakhova I.T.

Zahtjev 2

Prikažite brojeve telefona univerzitetskih odjela.

Rezultat takvog upita trebao bi sadržavati samo dvije kolone: Ime_ kaf I Nom_ telef, tako da bi sam upit trebao izgledati ovako:

SELECT Name_kaf, Nom_telef IZ kafedra

Tabela rezultata:

Imekaf Nomjelef

Fizika 23-34-24

Opšta matematika 23-65-43

Priče 23-78-72

Grafikoni 23-99-77

Primijenjena matematika 23-66-62

U upitima formiranim iznad, bilo je potrebno prikazati sve redove tablice navedene u klauzuli from. Ako izbor treba da ograniči broj izlaznih redova prema nekom uslovu, onda se to može postići korišćenjem klauzule gde u upitu. Možete uključiti jedan ili više uslova odabira reda u klauzulu where.

Zahtjev 3

Prikaz informacija o odsjeku za grafiku.

SELECT * FROM kafedra WHERE Name_kaf = "Grafikoni"

Odgovor na takav zahtjev će sadržavati samo jedan red:

Kod.kaf Name_kaf NomjelefNom_Auditoria Col_sotr Zav_kaf

004 Grafikoni 23-99-77 385 18 Firsov C.C.

Zahtjev 4

Prikažite informacije o fakultetskim odjelima koji se nalaze u prizemlju, uzimajući u obzir činjenicu da su sobe u prizemlju u rasponu od 1 do 99.

Zahtjev će izgledati ovako:

ODABIR * IZ kafedra GDJE Nom_Auditoria IZMEĐU 1 I 99

Rezultat upita:

KodjcafIme_kafNorn lelef Norn Auditoria Coi_sotr Zavkaf

002 Opšta matematika 23-65-43 003 22 Makhov K.L.

matematike

Uopšteno govoreći, redovi u rezultujućoj tabeli se na neki način prikazuju u neuređenom stanju. Pregledanje i analiziranje takvog materijala nije uvijek zgodno. Klauzula Order by se koristi za sortiranje redova po bilo kojoj koloni. Sadrži listu naziva kolona razdvojenih zarezima po kojima želite da sortirate prikazane informacije. Ova fraza se uvijek mora postaviti na posljednje mjesto u naredbi za odabir i, ako je prisutna, postaje moguće sortirati redove po rastućim (asc) ili opadajućim (desc) vrijednostima navedenog stupca ili kombinacije navedenih stupaca, bez obzira na to da li su ti kolone su prisutne u rezultujućoj tabeli ili ne.

Zahtjev 5

Prikažite informacije o odsjecima na univerzitetu u formi sortiranoj po koloniIme_ kafu rastućem redosledu.

Zahtjev će izgledati ovako:

SELECT * FROM kafedra ORDER BY Name_caf ASC

Rezultat ovog zahtjeva:

Kod_kaf Name_kaf Nomjelef Nom_Auditoria Col_sotr Zav kaf

004 Grafikoni 23-E9-77 385 18 FirsovS.S.

003 Priče 23-78-72 465 16 Ross L.T.

002 General ma- 23-65-43 003 22 Makhov K.L.

teme

005 Primijenjeno 23-66-62 028 24 Lyakhova I.T.

matematike

001 Fizičari 23-34-24 132 25 Ivanov T.M.

Često je korisno sortirati prikazane informacije u nekoliko kolona kako bi se poboljšala vidljivost. Da biste to učinili, imena kolona sortiranja moraju biti navedena odvojena zarezima u klauzuli redoslijeda. U ovom slučaju, izlazna tabela će sadržavati redove poredane po prvoj koloni navedenoj u klauzuli order by, a redovi koji imaju jednake vrijednosti u ovoj koloni će biti poređani prema vrijednostima druge kolone, i tako dalje od lijevo na desno.

Kao što je već spomenuto, 1970-ih Edgar Codd je predložio korištenje relacionog modela. Pored samog modela, predložio je i jezik za rad sa podacima u okviru ovog modela, pod nazivom DSL/Alpha. Nakon toga, na bazi DSL/Alpha, pojavio se KVADRATNI jezik, a na njegovoj osnovi, pak, SEQUEL jezik, koji je (zbog neke zabune u zaštitnim znakovima) kasnije preimenovan u SQL.

Ovdje ograničenje_* može imati sljedeće vrijednosti (ili njihove kombinacije):

  • NOT NULL - ne može biti "prazan"
  • UNIQUE - vrijednost je jedinstvena
  • PRIMARNI KLJUČ - kombinacija prva dva
  • STRANI KLJUČ - specificiranje stranog ključa
  • PROVJERI - vrijednost mora zadovoljiti uslov
  • DEFAULT - zadana vrijednost

Postoje određena odstupanja u različitim implementacijama.

Ako se primarni ključ sastoji od nekoliko kolona, ​​potrebno ga je izvaditi nakon deklariranja kolona u obrascu

CONSTRAINT pk_table PRIMARNI KLJUČ (kol1, kolona2, .. .)

gdje je pk_table jedinstveno ime ograničenja.

U mnogim implementacijama, CONSTRAINT dio pk_table može biti izostavljen. U tom slučaju, ime će biti generirano automatski.

Strani ključ se u svakom slučaju deklarira nakon deklaracije stupaca.

sintaksa:

CONSTRAINT fk_table STRANI KLJUČ (kol1, .. .) REFERENCE tbl_name (ref_col1, .. .) NA AŽURIRANJE upd_action NA DELETE del_action;

gdje je fk_table jedinstveno ime ograničenja, col1, ... su imena kolona ove tablice uključene u strani ključ, tbl_name je tablica za koju je specificirani strani ključ primarni, ref_col1, ... su imena odgovarajućih stupaca u tbl_name. upd_action i del_action određuju kako baza podataka reagira na promjene i brisanja zapisa iz tbl_name i može uzeti jednu od sljedećih vrijednosti:

  • SET NULL - upućivanje na stupce col1, ... je postavljeno na NULL
  • RESTRICT - ako postoje zapisi koji se odnose na vrijednost koja se ažurira/briše, ažuriranje/brisanje ne uspijeva
  • CASCADE - ažuriranje/uklanjanje svih referentnih unosa
  • BEZ AKCIJE - ne radite ništa

U mnogim implementacijama, CONSTRAINT dio fk_table može biti izostavljen. U tom slučaju, ime će biti generirano automatski.

Sintaksa naredbe SELECT je sljedeća:

SELECT<список атрибутов>/* IZ<список таблиц>

Elementi koji možda nedostaju u upitu navedeni su u uglastim zagradama.

Navedite sve učenike.

SELECT * FROM student

SELECT id_st, prezime FROM student

Imajte na umu da ako ovom upitu dodamo klauzulu ORDER BY prezimena, lista će biti poredana po prezimenu. Podrazumevano je sortiranje uzlaznim redoslijedom. Ako je potrebno opadajuće redoslijed, riječ DESC se dodaje iza imena atributa.

Vratite listu ocjena koje je dobio učenik sa šifrom "1"..

Izdati spisak šifara studenata koji su položili najmanje jednu dva ili tri ispita.

U klauzuli WHERE možete napisati izraz koristeći aritmetički operatori poređenja (<, >, itd.) i logičke operatore (AND, OR, NOT) kao u konvencionalnim programskim jezicima.

Uz operatore poređenja i logičke operatore za sastavljanje uslova u SQL-u (zbog specifičnosti područja primjene) postoji niz specijalnih operatora koji po pravilu nemaju analoga u drugim jezicima. Ovo su operateri:

  • IN - ulazak u određeni skup vrijednosti;
  • IZMEĐU - ulazak u određeni raspon vrijednosti;
  • LIKE - provjerite podudaranje sa uzorkom;
  • IS NULL - provjerite da li postoji nedefinirana vrijednost.

IN operator se koristi za testiranje skupa vrijednosti. Da, zahtjev

daje isti rezultat kao i gornji upit (prikazaće identifikatore svih kandidata koji su položili najmanje jedan dva ili tri ispita).

Isti rezultat se može postići korištenjem operatora BETWEEN:

Navedite sve učenike čija prezimena počinju na slovo A.

U ovom slučaju, zgodno je koristiti LIKE operator.

Operator LIKE primjenjuje se isključivo na polja znakova i omogućava vam da odredite da li vrijednost polja odgovara uzorku. Uzorak može sadržavati posebne znakove:

_ (podvlaka) - zamjenjuje bilo koji pojedinačni znak;

% (znak postotka) - Zamjenjuje niz bilo kojeg broja znakova.

Vrlo često postoji potreba da se izračunaju minimalne, maksimalne ili prosječne vrijednosti u kolonama. Tako, na primjer, možda želite izračunati prosječan rezultat. Za izvođenje takvih proračuna, SQL nudi posebne agregatne funkcije:

  • MIN je minimalna vrijednost u koloni;
  • MAX - maksimalna vrijednost u koloni;
  • SUM je zbir vrijednosti u koloni;
  • AVG je prosječna vrijednost u koloni;
  • COUNT - broj ne-NULL vrijednosti u koloni.

Sljedeći upit izračunava prosjek svih ocjena koje su studenti postigli na ispitima.

SELECT AVG(mark) FROM mark_st

Naravno, možete koristiti agregatne funkcije zajedno sa klauzulom WHERE:

Ovaj upit će izračunati GPA studenta sa šifrom 100 iz svih ispita koje je položio.

Ovaj upit će izračunati prosječan rezultat studenata na osnovu rezultata položenog ispita sa šifrom 10. Pored razmatranih mehanizama