Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

Sql


Index » educatie » » informatica » Sql
» CERERI MONOTABEL


CERERI MONOTABEL


CERERI MONOTABEL

  • Ce este SQL?

SQL (Structured Query Language) este un limbaj neprocedural pentru interogarea si prelucrarea informatiilor din baza de date. Compilatorul limbajului SQL genereaza automat o procedura care acceseaza baza de date si executa comanda dorita. SQL permite atat definirea, prelucrarea si interogarea datelor, cat si controlul accesului la acestea. Comenzile SQL pot fi integrate in programe scrise in alte limbaje, de exemplu Cobol, C, C++, Java etc.

Ce este SQL*Plus? Comenzile SQL*Plus acceseaza baza de date ?



SQL*Plus este un utilitar Oracle, avand comenzi proprii specifice; este o interfata specifica sistemului Oracle pentru executia instructiunilor SQL.

Nu permite prelucrarea informatiilor din baza de date.

Comenzile SQL*Plus accepta abrevieri? Este necesar vreun caracter de incheiere a comenzii?

Comenzile pot fi abreviate.

Nu sunt necesare caractere pentru a specifica incheierea comenzii.

Accepta "- drept caracter de continuare pentru comenzile scrise pe mai multe linii.

Care sunt limbajele SQL?

In functie de tipul actiunii pe care o realizeaza, instructiunile SQL se impart in mai multe categorii.

limbajul de definire a datelor (LDD) - comenzile CREATE, ALTER, DROP;

limbajul de prelucrare a datelor (LMD) - comenzile INSERT, UPDATE, DELETE, SELECT;

limbajul de control al datelor (LCD) - comenzile COMMIT, ROLLBACK.

Analizati sintaxa simplificata a comenzii SELECT. Care dintre clauze sunt obligatorii?

SELECT | ALL] lista_campuri | *}
FROM [nume_schema.]nume_obiect ]
, [nume_schema.]nume_obiect
[WHERE conditie_clauza_where]
[START WITH conditie_clauza_start_with
CONNECT BY conditie_clauza_connect_by]
[GROUP BY expresie [, expresie . ]
[HAVING conditie_clauza_having] ]
[ORDER BY [ .
[FOR UPDATE
[OF [ [nume_schema.]nume_obiect.]nume_coloana
, [ [nume_schema.]nume_obiect.]nume_coloana] .
[NOWAIT | WAIT numar_intreg] ];

Comenzile SQL accepta abrevieri, e nevoie de caracter de terminare?

Comenzile SQL nu accepta abrevieri, iar caracterul de terminare al unei comenzi SQL este ;".

Gasiti erorile din instructiunea urmatoare.

SELECT employee_id, last_name

salary x 12 salariu anual

FROM employees;

Varianta 1:

SELECT employee_id, last_name, salary * 12 AS salariu_anual

FROM employees;

Varianta 2:

SELECT employee_id, last_name, salary * 12 ' Salariu Anual

FROM employees;

Obs.: Numai aliasul specificat intre ghilimele pastreaza formatul exact (litere mari si mici), celelalte sunt transformate implicit in majuscule.

Cuvantul cheie care specifica un alias este AS. Acesta este facultativ.

a) Consultati diagrama exemplu HR (Human Resources) pentru lucrul in cadrul laboratoarelor SQL.

b) Identificati cheile primare si cele externe ale tabelelor existente in schema, precum si tipul relatiilor dintre aceste tabele.

Sa se initieze o sesiune SQL*Plus folosind user ID-ul si parola indicate.

Sa se listeze structura tabelelor din schema HR (EMPLOYEES, DEPARTMENTS, JOBS, JOB_HISTORY, LOCATIONS, COUNTRIES, REGIONS), observand tipurile de date ale coloanelor.

Obs: Se va utiliza comanda SQL*Plus DESC[RIBE] nume_tabel.

Sa se listeze continutul tabelelor din schema considerata, afisand valorile tuturor campurilor.

Obs: Se va utiliza comanda SQL

SELECT * FROM nume_tabel;

Sa se obtina inca o data rezultatul cererii precedente, fara a rescrie cererea.

Obs: Ultima cerere SQL lansata de catre client este pastrata in buffer-ul SQL.

Pentru rularea buffer-ului, se utilizeaza /" sau RUN

Listati structura tabelului EMPLOYEES si apoi dati comanda RUN (sau /"). Ce observati? Comenzile SQL*Plus sunt pastrate in buffer?

DESC employees

RUN

Sa se afiseze codul angajatului, numele, codul job-ului, data angajarii. Salvati instructiunea SQL intr-un fisier p1_14.sql.

Obs: Se utilizeaza comanda SAVE pentru salvarea buffer-ului intr-un fisier. Precizarea extensiei .SQL a fisierului nu este obligatorie.

SELECT employee_id, last_name, job_id, hire_date

FROM employees;

SAVE h: . p1_14.sql

Executati cererea din fisierul p1_14.sql.

START h: . p1_14.sql

sau

h: . p1_14.sql

Editati fisierul p1_14.sql, astfel incat, la rulare, capetele coloanelor sa aiba numele cod, nume, cod job, data angajarii.

EDIT h: . p1_14.sql

Cererea se modifica astfel:

SELECT employee_id cod, last_name nume, job_id ' cod job ', hire_date ' data angajarii

FROM employees;

Sa se listeze, cu si fara duplicate, codurile job-urilor din tabelul EMPLOYEES.

SELECT job_id FROM employees;

SELECT DISTINCT job_id FROM employees;

Sa se afiseze numele concatenat cu job_id-ul, separate prin virgula si spatiu. Etichetati coloana Angajat si titlu".

Obs: Operatorul de concatenare este ||". Sirurile de caractere se specifica intre apostrofuri (NU intre ghilimele, caz in care ar fi interpretate ca alias-uri).

SELECT last_name|| ', ' || job_id 'Angajat si titlu'

FROM employees;

Sa se listeze numele si salariul angajatilor care castiga mai mult de 2850 $. Salvati instructiunea SQL intr-un fisier numit p1_19. Sa se ruleze acest fisier.

SELECT last_name, salary

FROM employees

WHERE salary > 2850;

SAVE h: . p1_19

h: . p1_19

Sa se modifice p1_19 pentru a afisa numele si salariul pentru toti angajatii al caror salariu nu se afla in domeniul 1500-2850$. Salvati din nou instructiunea intr-un fisier numit p1_21. Executati cererea.

Obs: Pentru testarea apartenentei la un domeniu de valori se poate utiliza operatorul

[NOT] BETWEEN valoare1 AND valoare2

EDIT h: . p1_19.sql

Cererea se modifica astfel:

SELECT last_name, salary

FROM employees

WHERE salary BETWEEN 1500 AND 2850;

h: . p1_19.sql

Sa se creeze o cerere pentru a afisa numele angajatului si numarul departamentului pentru angajatul nr. 104.

SELECT last_name, department_id

FROM employees

WHERE employee_id =104;

Sa se afiseze numele, job-ul si data la care au inceput lucrul salariatii angajati intre 20 Februarie 1987 si 1 Mai 1989. Rezultatul va fi ordonat crescator dupa data de inceput.

SELECT last_name, job_id, hire_date

FROM employees

WHERE hire_date BETWEEN '20-02-1987' AND '01-05-1989'

ORDER BY hire_date;

Sa se afiseze numele salariatilor si codul departamentelor pentru toti angajatii din departamentele 10 si 30 in ordine alfabetica a numelor.

Obs: Apartenenta la o multime finita de valori se poate testa prin intermediul operatorului IN, urmat de lista valorilor intre paranteze si separate prin virgule:

expresie IN (valoare_1, valoare_2, . , valoare_n)

SELECT last_name, department_id

FROM employees

WHERE department_id IN (10, 30)

ORDER BY last_name;

Sa listeze numele si salariile angajatilor care castiga mai mult de 1500 $ si lucreaza in departamentul 10 sau 30. Se vor eticheta coloanele drept Angajat si Salariu lunar.

SELECT last_name 'Angajat' , salary 'Salariu lunar'

FROM employees

WHERE salary>1500 AND department_id IN (10, 30);

Care este data curenta?

Obs: Pseudocoloana care returneaza data curenta este SYSDATE. Pentru completarea sintaxei obligatorii a comenzii SELECT, se utilizeaza tabelul DUAL:

SELECT SYSDATE

FROM DUAL;

Datele calendaristice pot fi formatate cu ajutorul functiei TO_CHAR(data, format), unde formatul poate fi alcatuit dintr-o combinatie a urmatoarelor elemente:

Element

Semnificatie

D

Numarul zilei din saptamana (duminica=1; luni=2; . sambata=6)

DD

Numarul zilei din luna.

DDD

Numarul zilei din an.

DY

Numele zilei din saptamana, printr-o abreviere de 3 litere (MON, THU etc.)

DAY

Numele zilei din saptamana, scris in intregime.

MM

Numarul lunii din an.

MON

Numele lunii din an, printr-o abreviere de 3 litere (JAN, FEB etc.)

MONTH

Numele lunii din an, scris in intregime.

Y

Ultima cifra din an

YY, YYY, YYYY

Ultimele 2, 3, respectiv 4 cifre din an.

YEAR

Anul, scris in litere (ex: two thousand four).

HH12, HH24

Orele din zi, intre 0-12, respectiv 0-24.

MI

Minutele din ora.

SS

Secundele din minut.

SSSSS

Secundele trecute de la miezul noptii.

Sa se afiseze numele si data angajarii pentru fiecare salariat care a fost angajat in 1987. Se cer 2 solutii: una in care se lucreaza cu formatul implicit al datei si alta prin care se formateaza data.

Varianta1:

SELECT first_name, last_name, hire_date

FROM employees

WHERE hire_date LIKE (

Varianta 2:

SELECT first_name, last_name, hire_date

FROM employees

WHERE TO_CHAR(hire_date, YYYY

Sunt obligatorii ghilimelele de la sirul ? Ce observati?

Sa se afiseze numele si job-ul pentru toti angajatii care nu au manager.

SELECT last_name, job_id

FROM employees

WHERE manager_id IS NULL;

Sa se afiseze numele, salariul si comisionul pentru toti salariatii care castiga comisioane. Sa se sorteze datele in ordine descrescatoare a salariilor, iar pentru angajatii cu acelasi salariu, in ordine crescatoare a comisioanelor.

SELECT last_name, salary, commission_pct

FROM employees

WHERE commission_pct IS NOT NULL

ORDER BY salary DESC, commission_pct ASC;

Eliminati clauza WHERE din cererea anterioara. Unde sunt plasate valorile NULL in ordinea crescatoare?

Sa se listeze numele tuturor angajatilor care au a treia litera din nume a

Obs: Pentru a forma mastile de caractere utilizate impreuna cu operatorul LIKE cu scopul de a compara sirurile de caractere, se utilizeaza caracterele:

% - reprezentand orice sir de caractere, inclusiv sirul vid;

_ (underscore) - reprezentand un singur caracter si numai unul.

SELECT DISTINCT last_name

FROM employees

WHERE last_name LIKE __a





Politica de confidentialitate





Copyright © 2024 - Toate drepturile rezervate