Un scurt ghid pentru limba sql

Un scurt ghid pentru limba SQL

Acordul privind limbajul SQL și conceptul inițial.

ID-uri INFORMIX.

ID-ul (nume de obiect) - un cuvânt format din litere, numere, și subliniere (_), începând cu o literă sau cunoștințe ka (_). buk- mici și mari nu diferă în INFORMIX-4GL. Prin urmare, i_Un1023Tt și I_UN1023TT - același nume. Numele bazei de date nu este mai mare de 10 nume ale altor obiecte SQL - tabele, coloane, vedere (pseudo). Sinonime - nu mai mult de 18 ani.

    * SQL * declarații lingvistice ale grupului.

Operatorii SQL cuprinde 4 grupe: - date care descriu Operatori: CREA, DROP, ALTER, etc - declarații de manipulare a datelor :. INSERT, DELETE, SELECT, UPDATE, etc. - Operatorii definesc drepturile de acces la baza de date :. GRANT / REVOKE. Blocare / deblocare. SET LOCK MODE - protecția operatorului, recuperare de date, precum și alți operatori. Revizuirea lor, ne întoarcem acum, în ordine.

    1. Operator Descriere * DATE.

Operatorii de descriere a datelor sunt pentru a descrie (Crearea Nia), modificați descrierea și distrugerea obiectelor bazei de date. În SQL, următoarele tipuri de obiecte: o bază de date (baze de date); un tabel (tabel); coloană (coloană); Index (indicele); imagine (vizualizare); sinonim (sinonim). Fiecare obiect are propriul nume - identificatorul. Fiecare obiect are un proprietar - adică utilizatorul care a creat-o. Numele obiect poate fi rafinat cu ajutorul numelui său vladel- tsa (proprietar-name) în această formă: moshkow.table1 Următoarele sunt exemple de utilizare a operatorilor de descriere a datelor. Sintaxa completă poate fi găsită în „Ghidul de referință rapidă pentru 4GL“ (a se vedea. Anexa) sau în „Ghid de referință Informix-4GL“. Crearea unei baze de date. -------------------------------------------------- ------------- CREATE DATABASE zawod ---------------------------------- ----------------------------- în orice moment puteți avea acces la aceleași obiecte accepte că - curent (curent) - bază date. DATABASE face ca noul curent de bază, închizând accesul la obiectele precedente baza de date curentă. DATABASE CLOSE zakry- doar baza de date curentă Vaeth. -------------------------------------------------- ------------- BAZA DE DATE zawod. # Este baza de curent zawod stanciq BAZA DE DATE. # Este actuală stanciq bază de date nu BAZA DE DATE ÎNCHIS # curent --------------------------------------- ------------------------ tabele Kadry sunt create și CEH, care conțin diferite tipuri de coloane. -------------------------------------------------- ------------- CREATE TABLE Kadry (INT nomerceh, SERIAL tabnom. FIO CHAR (20) UNIC DE BANI, zarplata (16,2), DATE datarovd, pribytie an DATETIME LA minut) CREATE TABLE CEH (int nomerceh, nameceh char (20)) ---------------------------------------- ----------------------- În tabelul deja existent, putem schimba tipul de coloană doba- construi unul nou, distruge pe cel vechi. -------------------------------------------------- ------------- ALTER TABLE Kadry ADD (dolvnostx char (20) ÎNAINTE DE zarplata), DROP (pribytie), ADD CONSTRAINT UNICĂ (tabnom, fio) CONSTRAINT tabnomfio ALTER elemente TABLE MODIFY (manu_code char ( 4)) ----------------------------------------------- ---------------- rezultate schimbă structura tabel într-o transformare fizică a datelor INJ în acesta. Dacă schimbați tipul coloanei, datele din ea sunt convertite în noul tip, iar dacă acest lucru nu este posibil, atunci operatorul ALTER „cade“ cu codul de eroare și tabelul rămâne aceeași stare. View - tabel „pseudo“, pe baza tabelelor existente. -------------------------------------------------- ------------- CREATE VIEW slabă AS SELECT tabnom, FIO, datarovd DE LA Kadry UNDE zarplata = expresie2, etc. precum și comparații elementare ale unui tip special: (. [.] vyrazh1) coloana nume-IS [NOT] NULL expr [NU] ÎNTRE vyrazh1 ȘI vyrazh2 expr [NOT] IN Puteți afla dacă șirul de caractere se potrivește cu modelul specific sau nu. Pentru această comparație, cele două operații sunt folosite de șablonul - ca și MECIURILE. Char-exprimare MATCHES „șablon“ Char-expresie LIKE „model“ element similar un șablon simplu. Se folosește numai două wildcard (%) reprezintă orice număr de caractere (_) reprezintă exact un caracter. Toate celelalte personaje din modelul reprezintă pentru ei înșiși. Dacă dorim să includem în sablon% sau _ abolirea semnificatiile speciale, acesta trebuie să fie pus în fața lor caracter ESC- (implicit este (\)). Să presupunem că avem nevoie pentru a alege din tab8 tabel toate rândurile koto- ryh coloana de caractere șir1 conține un simbol „+“ și litera penultima în ea - „Y“. Declarație de probă ar arata astfel: -------------------------------------------- ------------------- SELECT * FROM tab8 UNDE sTRING1 cum ar fi "% +% Y_" ------------------ --------------------------------------------- MECIURILE utilizează caractere speciale pentru astfel de șablon : *? , [,], ^, -. * Înlocuiește orice număr de caractere. înlocuiește un singur caracter [. ] Înlocuiește un simbol enumerate în paranteze poate specifica și de la (-) și (^) [ABH] - oricare dintre simbolurile a, b, H [^ dz] - orice caracter exclusiv d, e, f, g . y, z \ anulează spetssmysl caractere speciale *. [] Dacă doriți să utilizați caractere speciale ca normală, folosiți-char scape. În cazul în care de evacuare-char = "", atunci \? Acesta reprezintă doar un simbol. \ * Denotă un simbol *, \\ reprezintă un \ caracter. Dar ghilimelele ( „) în interiorul șablonul trebuie să desemneze cele două ghilimele (“ „). Selectează toate datele de client în numele companiei pe care a doua literă nu se află în intervalul de la G la L, iar a treia literă c. (Apropo, codurile literelor românești BIS du-te direct, dar, în contrast cu literele latine, română nu sunt ordonate alfabetic.) --------------------------------- ------------------------------ SELECT * de la client UNDE MATCES companii "? [^ GL] c *" ---- -------------------------------------------------- --------- Selectează toate datele de client în numele căruia există un semn de întrebare. ---------------------------- ----------------------------------- SELECT * De la un client care companie MATCHES "* I? *" ESCAPE "I" ---------------------------------- ----------------------------- acest exemplu utilizează ESC-simbolul „I“ pentru a anula simbolul gândirii spetss- „?“ Dacă doriți. Compara expresie cu rezultatul unei alte instrucțiuni SELECT exp? ref (SELECT-declarație). pentru a determina dacă exprimarea rezultatelor înca un SELECT aparține. exp? [NU] IN (SELECT-declarație)?. Pentru a afla dacă să aleagă orice altă instrucțiune SELECT. ? [NU] EXISTS (SELECT-declarație)? condițiile de utilizare cu o subinterogare.

    * TERMENI subinterogare *

--------------------------------------------------------------- SELECT fio FROM WHERE Kadry zarplata = (SELECT MAX (zarplata) DIN Kadry) ---------------------------------- ----------------------------- Aici subinterogare returnează o singură valoare - valoarea maximă a salariilor. Instrucțiunea SELECT exterior găsește numele titularilor acestora. -------------------------------------------------- ------------- SELECT fio, shifr, organizaciq dIN zaqwki UNDE denxgi_rek nu este NULL și gorod în (SELECT gorod FROM WHERE regiony regiune = "Ural") --------- -------------------------------------------------- ---- Aici interogare afișează date despre liderii care au primit activitate de finanțare și să lucreze în Urali. -------------------------------------------------- ------------- SELECT order_num, stock_num, manu_code, TOTAL_PRICE din elementele x UNDE TOTAL_PRICE> (SELECT 2 * MIN (TOTAL_PRICE) FROM articole WHERE order_num = x.order_num) ------ -------------------------------------------------- ------- această cerere (folosind o subinterogare corelată) listează toate produsele al căror preț total nu este mai mică decât de două ori prețul produselor sunt minime enumerate în aceeași ordine. Puteți conecta orice număr de condițiile de mai sus, împreună cu ajutorul operatorilor logici NU, AND, OR.

    declaraţie SARCINĂ

Declarație SARCINĂ resetează datele dintr-un tabel într-un fișier în ecranul de imprimare. Fiecare rând este convertit într-un cont separat, valoarea coloanelor sunt separate prin „|“. După executarea declarației ----------------------------------------------- ---------------- SARCINĂ LA "kadry19.unl" SELECT * DIN Kadry ----------------------- ---------------------------------------- kadry19.unl în fișierul poate fi detectat după cum urmează: -------------------------------------------------- ------------- 5 | 5 | Tuev | îngrijitor | 100.0 | 31.12.1946 | 4 | 6 | Petunin | storekeeper | 80,0 ||. -------------------------------------------------- -------------

    de ÎNCĂRCARE

Operatorul LOAD efectuează operațiunea inversă - citește linii dintr-un fișier și o inserează în tabel. Firește, tipurile și numărul de valori în liniile fișierului trebuie să se potrivească coloanele din tabel. -------------------------------------------------- ------------- SARCINA DE LA "kadry20.unl" INSERT INTO Kadry --------------------------- ------------------------------------

    * 5. Operatorul * BACK SELECT.

    Oferte IN, ÎN TEMP, DIN.

Selectați toate rândurile (nicio ofertă unde) din tabelul Kadry, ia-le toate coloanele (în loc de listare a coloanelor permanente *), lăsând numai diferitele linii (cuvânt cheie un unic) și locuri brilor rezultatul într-o tabelă temporară (INTO TEMP) x, care va fi astfel create cu aceleași coloane care au Kadry. -------------------------------------------------- ------------- SELECT EXCLUSIV * DIN Kadry ÎN TEMP x ----------------------------- ---------------------------------- puteţi alege din mai multe tabele. În acest caz, vom lua toate combinațiile posibile ale rândurilor din primul tabel cu al doilea. Presupunem că Tab1 de masă și în 6 rânduri Fila2 - 7 linii. Rezultat exemplu zheprivedennogo Ni - un tabel care conține trei coloane și 7 * 6 = 42 rânduri. -------------------------------------------------- ------------- SELECT tab1.a-tab2.b, tab1.a, tab2.b DIN Fila1, Fila2 ----------------- ---------------------------------------------- Noi nu vom pentru a specifica exact unde tabela rezultat este plasat. Dar poate fi folosit în diferite moduri: poate fi regnat PE- (ÎN TEMP), într-un tabel temporar, acesta poate fi administrat la prelucrarea unui alt agent (în cazul în care prelevarea de probe efectuate podzap- a crescut), este posibil să se creeze un cursor ( „tampon“, cu un pointer la TE string kuschuyu), și poate fi pus (INTO) la variabila simplu programată (dacă este selectată nu mai mult de un rând). Liniile selectate pot fi comandate în valori crescătoare (descendente) în coloana (coloanele) ----------------------------------- SELECT a ----------------------------, b, c, d + e FROM ORDER BY tabl b, c SELECT a, b, c, d + e FROM COMANDA tabl BY 2,3 -------------------------------------- ------------------------- în clauza ORDER în loc de numele coloanei BY, puteți specifica numărul de serie din lista de culori (selectați-list). Operatorii Nye Vyshepriveden- sunt echivalente. Puneți valorile coloanelor din variabilele: (Deoarece lname este folosit ca nume de variabilă, și ca un nume de coloană, numele coloanei este precedat de semnul (@) --------------------- ------------------------------------------ customer_num SELECT, @ lname, orașul într- cnum, lname, oraș de la client ------------------------------------------- --------------------

    Funcții agregate.

La un rând selectat poate aplica funcții agregate COUNT (*) - numărul, MAX (coloana) și MIN (coloana) - valoarea maximă și minimă în coloana, USM (coloana) - suma tuturor valorilor dintr-o coloană, AVG (coloana) - media valoare în coloana. Pune într-un număr variabil de num rânduri în tabel comenzi în care coloana este customer_num 101: --------------------------------- ------------------------------ SELECT COUNT (*) INTO num FROM ordinele WHERE customer_num = 101 ------- -------------------------------------------------- EXEMPLU ------ folosind compus tabele. Valoarea medie a salariului situat peste 300 km (zarplata coloana aparținând INH una dintre mese), cu condiția coincidență dolvnost coloane din cele două tabele. -------------------------------------------------- ------------- SELECT AVG (zarplata) DIN tabel1, Table2 UNDE table1.dolvnost = table2.dolvnost și zarplata> 300 ---------------- -----------------------------------------------

    GROUP prin gruparea.

Gruparea utilizată pentru grupurile „aplatizare“ (linii) într-una singură. Rezultatul interogării conține un rând pentru fiecare dintr-o multitudine de linii care satisfac propunerea WHERE și care conțin aceeași valoare în coloana specificată. -------------------------------------------------- ------------- SELECT dolvnostx, COUNT (*), AVG (zarplata) DIN Kadry GROUP BY dolvnostx -------------------- ------------------------------------------- obține numărul de angajați și salariul mediu pentru fiecare poziție de personal. -------------------------------------------------- ------------- SELECT dolvnostx, COUNT (*), AVG (zarplata) DIN Kadry GRUP DE 1 -------------------- ------------------------------------------- record echivalent. HAVING impune condiții suplimentare pentru grup. -------------------------------------------------- ------------- SELECT order_num, AVG (total_priece) de la elemente GROUP BY order_num AVÂND COUNT (*)> 2 ------------------ --------------------------------------------- Această interogare returnează numărul de comenzi iar valoarea medie a TOTAL_PRICE în aplicații pentru toate comenzile cu cel puțin două aplicații.

    tabele de conectare extern.

Rândurile din tabelul anexat la exterior (cu puncte de conexiune externe la cuvântul cheie de exterior) vor fi selectate, indiferent de faptul în care îndeplinesc condițiile de clauza WHERE sau nu. În unele cazuri, acest lucru este util atunci când aveți un tabel de master este un auxiliar, iar datele din tabelul primar aveți nevoie pentru a obține oricum. EXEMPLU conexiune externă: ---------------------------------------------- ----------------- firma SELECT, order_num de la client c, comenzi EXTERIOARE o Unde c.customer_num = o.customer_num -------------- ------------------------------------------------- cerere găsește compania și numărul de ordine, care au trimis. În cazul în care societatea nu a trimis comenzi, numele ei va fi în continuare selectat, iar numărul de ordine în această linie va fi venele AP NULL. (Și dacă vom rula interogarea fără a utiliza Outer, numele acestor societăți nu ar exista în eșantion.)

    6. exemple complicate * manipulare a datelor.