DAY 2
Instructor: Sanda Popescu
Sectiunea 10
Intelege constrangerile care pot
rezulta din nevoia de a pastra
datele si timpul .
Ex : Considera o scoala care are
cateva chioscuri(cabine) cu
trasaturi particulare.Managerul
scolii angajeaza voluntari sa
lucreze in diferite schimburi la
diferite chioscuri. Un chiosc este
pazit de un singur voluntar la un
moment dat. Anumiti voluntari pot
lucra mai multe ore, altii pot lucra
putine ore, depinde de timpul lor
liber.Managerul trebuie sa stie in
avans care timp nu este acoperit
de voluntari
MODELAREA SCHIMBĂRILOR – TIMPUL
Evident: (valoarea)
schimbul “end date”
trebuie sa fie mai
tarziu decat “start
date”
Schimburile nu se
suprapun in timp,
“start time” pentru
un schimb la un
voluntar nu poate fi
intre orice “start
time” si “end time”
al altui voluntar in
aceeasi chiosc
(cabina?) Aceeasi
remarca si pentru
“end time”
“start time” pentru un schimb poate fi
modificat mai devreme, mai putin
cand schimbul a inceput deja
Acesta este un exemplu de
nontransferabilitate conditionala
Modelând acest tip de relaţii de multe ori sunt
implicate unele constrângeri care pot fi greu de
implementat. De exemplu, un assigment(datorie)
start date country poate fi după start date
country şi înainte de end date country. Aceasta
poate fi modelată în baza de date prin
contrângeri de tip CHECK.
Exemple unde se recomanda sa fie
modelate prin constrangeri de tip
CHECK
Exercitiul1. Modelarea timpului
Importanta schimbarii pretului
Schimbarea pretului este considerata
de asemenea necesara in modelarea
afacerii
Ex: Modificarea preturilor intrun
magazin sunt afisate pe o tabla,
atentionandu-te cand sa cumperi si
cand sa vinzi.
Ce factori vei lua in considerare?
Un produs poate avea mai multe preţuri,
depinde la ce moment a fost examinat. Relaţia
barată îmi arată că #start date nu este
suficientă pentru a identifica în mod unic un
preţ, este nevoie şi de #id_product.
ISTORICUL PRETURILOR
Productie - Pret
Deseori afacerile au nevoie
sa pastreze inregistrarile a
schimbarii preturilor .In acest
model, vei intelege ca
fiecare Cumparare(achizitie)
este dintro singura productie.
Pretul care a fost platit
poate fi cautat din
corespondenta datei primei
cumparari si data ultimei
cumparari
Cand un sistem permite utilizatorului sa modifice sau sa
stearga o informatie particulara, te va intreba daca ai
nevoie sa pastrezi valorile vechi (inregistrarile). Acest
lucru se numeste “logging” sau “journaling” (arhiva)
In mod uzual o arhiva consta in informatii privind inceputul si
sfarsitul modificarii valorilor. Bineinteles aceste informatii pot fi
expandate daca tu doresti.
Modificarea brusca sau uzuala a pretului sau inaintea
unei crize anuntate de Rezerva Federala, sunt cateva
lucruri pe care trebuie sa le iei in considerare cand decizi
sa cumperi sau sa vinzi.
Daca pretul combustibilului are un trend ascendent, tu
poti sa iei o decizie in ceea ce priveste tipul de masina
achizitionat avand oportunitatea de a vedea modificarile
anterioare , tu vei sti ce sa faci
Un antreprenor care are un contract de 5 ani
ptr.construirea unui pod, foloseste f.multe
materiale de constructie(ciment,…).Ce se intimpla
daca antreprenorul nu ia in calcul evolutia
preturilor la materiale?
Exercitiul 2.Modelarea pretului
SUD - EST
NORD- VEST
1. Se preiau toate coloanele, se pastreaza
optionalitatea pentru supertype
2. coloanele subtipurilor optionalitate
3. Se adauga o coloana epe_type,pentru a
sti ptr.care subtip introducem date
4. Se transforma relatiile in FK
5. Se adauga o constrangere de tip CECK
ptr. a specifica faptul ca sunt mandatorii
coloanele salary/ hourly_rate
O baza de date relationala permite
tabelelor sa fie relationate dupa un camp
comun.Cel putin 2 tabele pot fi considerate
o baza de date relationala daca impart un
camp comun. In realitate bazele de date
folosite in afaceri au multe tabele, fiecare
tabela impartind un camp comun cu o alta
tabela.
INTRODUCERE IN SQL
Pentru a accesa date din baza
de date, nu ai nevoie sa stii
unde este localizata acea data
localizata fizic, ci trebuie sa
specifici drumul de acces la
tabela
RDBMS - relational
database
management system
SGBD – sistem de
gestiune a bazelor de
date
Declaratiile SQL sunt grupate in cateva
categorii care depind de functiile pe care
le indeplinesc.Pe parcursul acestui curs
vei invata cum sa folosesti limbajul SQL
ca sa folosesti aceste declaratii.
Regasirea datelor dintro baza de date se
face utilizand cuvantul cheie SELECT
Taietura verticala
Taietura orizontala (where)
Obs.: tabelele vor avea o coloana cu acelasi tip
de date( relationare dupa un camp comun)
SECTIUNE 16
Clauza=? Este o parte a unei
declaratii SQL, un cuvant cheie
Ex:- SELECT, FROM,…
Declaratie=? Cel putin 2 clauze
Separator “;” intre clauze, dar
nu este obligatorie folosirea lui
-Prioritatea operatorilor
Pentru a intelege valoarea NULL , trebuie
sa stii ce e si ce nu e NULL.
NULL e o valoare care e inaccesibila,
necunoscuta , neatribuita sau inaplicabila
Uneori tu nu stii valoarea pentru o coloana
Bazele de date relationale folosesc un loc
(placeholder) in care se pastreaza
necunoscutele (NULL)
ATENTIE! Orice expresie aritmetica ,
care are cel putin un operand = NULL
va returna NULL
-Redenumeste coloana
-Este utilizat cu calcule
-Urmeaza imediat dupa numele coloanei
-Poate avea optional cuvantul cheie AS intre
numele coloanei si alias
-Necesita “ “ daca numele alias-ului contine
spatii sau caracetere speciale sau sunt case-
senzitive
-Obs. : implicit numele coloanei va fi afisat in
UPPER CASE si centrat
SECTIUNEA 17
Concatenarea inseamna a conecta
impreuna, in serie.
In SQL, aceasta operatie poate sa
faca legatura dintre coloane,
expresii aritmetice, constante
pentru a crea o expresie
caracteristica
Concatenarea este folosita entru a
putea crea un text (un string)
Aliasul coloanei este util cand
folosim operatorul de concatenare
astfel incat coloanele ascunse nu
apar nu apar implicit in linia
SELECT
Calificatorul DISTINCT afecteaza toate coloanele
listate si va returna toate combinatiile distincte
a coloanelor din lista SELECT
Obs. : nu se foloseste alias in WHERE
[x,y]BETWEEN X AND Y
Echivalent cu
Obs. Atunci cand caracterele
wildcard %, _ fac parte din sirul
cautat se folosesc secventele
ESCAPE (\ , ?, & )
Caracterul utilizat in ESCAPE
reprezinta delimitatorul ce va fi
plasat in fata unui wildcard pentru a
specifica faptul ca acesta nu mai are
rol de caracter special ci de caracter
obisnuit
SECTIUNE 18
Observatii ORDER BY:
-este intotdeauna ultima
- implicit face sortare crescatoare
- este de asemenea posibil ca in clauza
ORDER BY sa fie folosita o coloana care
nu este listata in clauza SELECT
-Se poate folosi aliasul unei coloane
- se poate utiliza si ORDER BY n
(dupa a n a coloana) din lista SELECT
Ex: Order By 2
Ordinea
de
executie
- specifica coloanele
Opereaza pe o singura
linie si returneaza un
singur rezultat
Opereaza pe grupuri de
linii si returneaza un
rezultat pentru fiecare grup
1. What clause restricts rows used by a SQL query?
R. the WHERE clause
2. What is a condition?
R: a proposition on which another proposition depends; is composed
of column names, expressions, constants, and a comparison operator
3. All character strings and date values are enclosed in _______? Give an
example.
R : Single-quotes ‘the cat’ ‘29-SEP-63’
4. On what clause can an alias not be used?
R: an alias cannot be used in the WHERE clause
5. List and describe the two wildcard symbols used with the ESCAPE Option.
R : percentage sign (%) – display all characters after this symbol
underscore(_) – display each individual characters
6. Where in a SELECT statement does the ORDER BY clause go? Give an
example.
R: Last line of a SELECT statement
SELECT *
FROM employees
ORDER BY 1;
EXERCITII RECAPITULATIVE
7. If the ORDER BY clause is not used how is the data displayed?
R: the sort order is undefined
8. What three ways can the sort condition of the ORDER BY clause be written? Give an example of each?
R: an expression, an alias, column position
SELECT employee_id, last_name, salary ‘SAL’
FROM employees
ORDER BY employee_id, ‘SAL’, 2;
9. Create a query to display the last name, salary, and commission for all employees who earn a
commission. Place the results in descending order by salary. Label the column headings.
R :SELECT last_name, salary, commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;
10. Create a query to display the employees’ last name, job id, start date of employees hired between
February 11, 1997 and May 5, 1998. Place the results in order by start date. Label the column headings.
R :SELECT last_name “Last Name”, job_id “Job Title”, hire_date “Start Date”
FROM employees
WHERE hire_date BETWEEN ’11-FEB-97’ AND ’05-MAY-98’
ORDER BY hire_date;
11. Create a query to display all the information about employee King.
SELECT *
FROM employees
WHERE last_name LIKE ‘King’;
12. Create a query to display the last names of all employees where the third letter of the last name is ‘k’
and who have an ‘a’ in their last name.
SELECT last_name
FROM employees
WHERE last_name LIKE ‘_ _k%’
AND last_name LIKE ‘%a%’;
13. Which statement(s) below would likely fail?
SelectT * FROM employees; (two T’s in the select word)
SELECT * FROM “employees” (unless employees created with double quotes)
SELECT * FROM employ-
ees; ( numele tabelei pe 2 randuri)
Select * FROM employees
14. Literal values for text or dates must be enclosed within _single quotes___________.
15. A column may be sorted in an ORDER BY clause by: (circle all true answers)
a column name or expression in the select list.
a column alias in the select list.
a number representing the column position in the select list.
a column found in the data source but not in the select list.
16. (Projection / Selection) is done by listing column names in a select list of a query
17. For a column alias to contain a space or retain case, it must (choose the best answer):
Be enclosed within the ampersand symbol.
Be enclosed with single quotes.
Be enclosed within parenthesis
Be enclosed with double quotes
18. A SQL condition “Where manager id IN (100, 101, 201)” would be equivalent to three compound
conditions using the ( OR / AND ) operator
19. In the LIKE operator, which symbol is used to represent a single text character or numeric digit?("_ “,"/"
"&“, "%" )
20. By default in an ORDER BY clause, where would rows with a null value appear? (beginning of
result set, end of result set, not listed in result set)
21. The following query will return what values?
SELECT employee_id "number", salary "pay"
FROM employees
WHERE employee_id = 103 OR salary = 4000;
All employees plus those with employee id's of 103 whose salary is 4000.
Only employees with employee id's of 103 whose salary is 4000.
Any employee with an employee_id of 103 and also any employee whose salary is 4000.
Employees with an employee_id equal to " number" whose salary values are also equal to "pay".
22. In the following query, what will be evaluated first?
SELECT job_id, salary, hire_date
FROM employees
WHERE salary = 4000 OR job_id = 'AD_PRES' AND hire_date LIKE '03-JUN-04';
job_id = 'AD_PRES' AND hire_date LIKE '03-JUN-04';
salary = 4000 OR job_id = 'AD_PRES
salary = 4000
LIKE '03-JUN-04‘
23. What value(s) could be displayed?
SELECT prefix
FROM phone
WHERE prefix BETWEEN 360 AND 425
OR prefix IN(515, 206, 253)
AND BETWEEN 555 AND 904);
625
902
410
499
24. Which query will display of all employees whose last names start with "S" and have an 'ae'
anywhere in their last name?
a) SELECT last_name
FROM employees
WHERE last_name LIKE '_S%ae%';
b) SELECT last_name
FROM employees
WHERE last_name LIKE 'S_ae%';
c) SELECT last_name
FROM employees
WHERE last_name LIKE 'S&ae&';
d) SELECT last_name
FROM employees
WHERE last_name LIKE 'S%ae%';
?