You are on page 1of 15

12.1.

PRACTICE
ex1:
1. user
2. transaction
3. explicit
4. insert
ex2:
1. ???
2. create table copy_d_cds
as (select * from d_cds);
describe copy_d_cds;
select *from copy_d_cds;
insert into copy_d_cds
(cd_number,title,producer,year)
values
(97,'Celebrate the Day','R&B Inc.','2003');
insert into copy_d_cds
(cd_number,title,producer,year)
values
(98,'Holiday Tunes for All Ages','Tunes are Us','2004');
insert into copy_d_cds
(cd_number,title,producer,year)
values
(99,'Party Music','Old Town Records','2004');
insert into copy_d_cds
(cd_number,title,producer,year)
values
(100,'Best of Rock and Roll','Old Town Records','2004');
3. create table copy_d_songs
as( select* from d_songs);
insert into copy_d_songs
values(52,'Surfing Summer',NULL,NULL,12);
insert into copy_d_songs
values(53,'Victory Victory','5 min',NULL,12);
select * from copy_d_songs ;
4. create table copy_d_clients
as(select * from d_clients);
describe copy_d_clients ;
insert into copy_d_clients(client_number,first_name,last_name,phone,email)
values (6655,'Ayako','Dahish',3608859030,'dahisha@harbor.net');
insert INTO copy_d_clients(client_number,first_name,last_name,phone,email)
values(6689,'Nick','Neuville',3608859030,'nnicky@charter.net');
5.create table copy_d_events
as ( select * from d_events);
describe copy_d_events ;
select * from copy_d_events ;
INSERT INTO copy_d_events

(id,name,event_date,description,cost,venue_id,package_code,theme_code,client_number
)
VALUES
(110,'Ayako Anniversary',TO_DATE('07-Jul-2004','dd-Mon-yyyy'),'Party for 50,
sixties dress, decorations',0,245,79,240,6655);
INSERT INTO
copy_d_events(id,name,event_date,description,cost,venue_id,package_code,theme_code,
client_number)
VALUES
(115,'Neuville Sports Banquet',TO_DATE('09-Sep-2004','dd-Mon-yyyy'),'Barbecue
at residence, college alumni, 100 people',0,315,87,340,6689);
6. ??????
insert into rep_email(id, first_name, last_name, email_address)
select employee_id, first_name, last_name, email
from employees
where job_id LIKE '%REP%';

12.2.PRACTICE
ex1:
1. update
2. correlated subquery update
3. integrity constraints
4. correlated subquery delete
5. delete
ex2:
1. create table copy_f_food_items
as(select * FROM f_food_items);
describe f_food_items;
describe copy_f_food_items;
select * FROM f_food_items;
select* FROM copy_f_food_items;
update copy_f_food_items set price = 3.75
where lower(description) = 'strawberry shake';
update copy_f_food_items SET price = 1.20
where lower(description) = 'fries';
select* from copy_f_food_items;
2. create table copy_f_staffs
as( select * fromf_staffs);
describe f_staffs;
describe copy_f_staffs;
select * from f_staffs;
select * from copy_f_staffs;
update copy_f_staffs SET overtime_rate = nvl(overtime_rate, 0) + 0.75
where lower(first_name || ' ' || last_name) = 'bob miller';
update copy_f_staffs SET overtime_rate = NVL(overtime_rate, 0) + 0.85
where lower(first_name || ' ' || last_name) = 'sue doe';
select * from copy_f_staffs;
3. CREATE TABLE copy_f_orders
AS ( SELECT * FROM f_orders);
DESCRIBE f_orders;
DESCRIBE copy_f_orders;
SELECT * FROM f_orders;
SELECT * FROM copy_f_orders;
INSERT INTO
copy_f_orders(order_number,order_date,order_total,cust_id,staff_id)
VALUES(5680,TO_DATE('June 12, 2004','fmMonth dd, yyyy'),159.78,145,9);
INSERT INTO
copy_f_orders(order_number,order_date,order_total,cust_id,staff_id)
VALUES(5691,TO_DATE('09-23-2004','mm-dd-yyyy'),145.98,225,12);
INSERT INTO
copy_f_orders(order_number,order_date,order_total,cust_id,staff_id)
VALUES(5701,TO_DATE('July 4, 2004','fmMonth dd, yyyy'),229.31,230,12);
SELECT * FROM copy_f_orders;
4. CREATE TABLE copy_f_customers
AS ( SELECT * FROM f_customers);
DESCRIBE f_customers;
DESCRIBE copy_f_customers;
SELECT * FROM f_customers;
SELECT * FROM copy_f_customers;
INSERT INTO
copy_f_customers(id,first_name,last_name,address,city,state,zip,phone_number)
VALUES(145,'Katie','Hernandez','92 Chico Way','Los
Angeles','CA',98008,'8586667641');
INSERT INTO
copy_f_customers(id,first_name,last_name,address,city,state,zip,phone_number)
VALUES(225,'Daniel','Spode','1923
Silverado','Denver','CO',80219,'7193343523');
INSERT INTO
copy_f_customers(id,first_name,last_name,address,city,state,zip,phone_number)
VALUES(230,'Adam','Zurn','5 Admiral Way','Seattle','WA',NULL,'4258879009');
SELECT * FROM copy_f_customers;
5.UPDATE copy_f_staffs SET salary = (SELECT salary FROM copy_f_staffs WHERE
LOWER(first_name || ' ' || last_name) = 'bob miller')
WHERE LOWER(first_name || ' ' || last_name) = 'sue doe';
SELECT * from copy_f_staffs;
6. INSERT INTO
copy_f_staffs(id,first_name,last_name,birthdate,salary,overtime_rate,training,staff
_type,manager_id,manager_budget,manager_target)
VALUES(25,'Kai','Kim',TO_DATE('03-Nov-1988','fmdd-Mon-
yyyy'),6.75,NULL,NULL,'Order Taker',NULL,NULL,NULL);
7. UPDATE copy_f_staffs SET manager_id = (SELECT manager_id FROM
copy_f_staffs WHERE LOWER(first_name || ' ' || last_name) = 'sue doe')
WHERE LOWER(first_name || ' ' || last_name) = 'kai kim';
SELECT * FROM copy_f_staffs;
8. ORA-02292: integrity constraint (RO_A412_SQL_S48.EMP_DEPT_FK) violated -
child record found
9. SELECT * FROM copy_f_staffs;
DELETE FROM copy_f_staffs
WHERE LOWER(first_name || ' ' || last_name) = 'kai kim';
SELECT * FROM copy_f_staffs;
10. CREATE TABLE lesson7_emp
AS ( SELECT * FROM employees);
DESCRIBE employees;
DESCRIBE lesson7_emp;
SELECT * FROM employees;
SELECT * FROM lesson7_emp;
SELECT DISTINCT employee_id FROM job_history;
7 rows returned in 0.00 seconds
DELETE FROM lesson7_emp
WHERE employee_id IN ( SELECT DISTINCT employee_id FROM job_history) ;
5 row(s) deleted.

12.3. PRACTICE
ex1:
1. Folosim default cand vrem sa setam o valoare implicita unei coloane pentru
a evita generarea unei valori random????
2. INSERT INTO
copy_f_promotional_menus(code,name,start_date,end_date,give_away)
VALUES('120','New Customer',DEFAULT,TO_DATE('01-Jun-2005','dd-Mon-yyyy'),'
10% discount coupon');

3. CREATE TABLE manager_copy_d_cds


AS ( SELECT * FROM d_cds);
INSERT INTO manager_copy_d_cds
VALUES(20, 'Hello World Here I Am', 'Middle Earth Records', '1998');
MERGE INTO manager_copy_d_cds cpy USING d_cds src
ON (src.cd_number =cpy.cd_number)
WHEN MATCHED THEN UPDATE
SET cpy.title = src.title, cpy.producer =src.producer, cpy.year =src.year
WHEN NOT MATCHED THEN INSERT
VALUES (src.cd_number, src.title,src.producer, src.year);

4. INSERT ALL
WHEN salary > 20000 THEN
INTO special_sal
VALUES(employee_id, salary)
ELSE
INTO sal_history
VALUES(employee_id, hire_date, salary)
INTO mgr_history
VALUES(employee_id, manager_id, salary)
SELECT employee_id, salary, hire_date, manager_id
FROM employees;

13.1. PRACTICE
ex1:
1.Data dictionary
2.Schema
3.Default
4.Table
5.Create table
ex2:
1.
Column n. student_id last_n first_n
credits graduation_date

Key Type Primary key -


- foreign key -

nulls/unique no/yes no/no no/no no/no


yes/no

FK Column
credits

lenghts 6
20 20 6

2.
CREATE TABLE graduate_candidates
( student_id NUMBER(6,0),
last_name VARCHAR2(75) NOT NULL ,
first_name VARCHAR2(75) NOT NULL,
credits NUMBER(5,2) NOT NULL ,
graduation_date DATE,
CONSTRAINT td_id_pk PRIMARY KEY (student_id),
CONSTRAINT eq_fk FOREIGN KEY(credits)
REFERENCES requirements(credits)
);
3.DESCRIBE graduate_candidates;
4.CREATE TABLE mads_table
AS ( SELECT * FROM graduate_candidates);
5.INSERT INTO mads_table (student_id, last_name, first_name, credits,
graduation_date)
Values(10,'Madalina','Stroe',10,NULL);
6. USER_TABLES: descrie tabelele relationale ale userului
SELECT * FROM user_tables
USER_CATALOG : indexii, tabelele, views, synonyms, secventele ( aceleasi
coloane a in " all_catalog')
SELECT * FROM user_catalog
USER_OBJECTS: descrie toate obiectele
SELECT * FROM user_objects;
13.2. PRACTICE
ex1:
1.INTERVAL YEAR(X) TO MONTH
2.TIMESTAMP WITH LOCAL TIME ZONE
3.BLOB
4.TIMESTAMP WITH TIME ZONE
5.INTERVAL DAY(X) TO SECOND
6.CLOB
7.TIMESTAMP
ex2:

1.timestamp with local time zone


select bdtimezone from dual;

CREATE TABLE time (column TIMESTAMP WITH LOCAL TIME ZONE);


INSERT INTO time_zone (time_column)
VALUES
(TO_TIMESTAMP_TZ('2019-11-0110:49:08.236+05:30','YYYY-MM-
DDHH24:MI:SS.FFTZH:TZM'));

interval year to month


CREATE TABLE time_ex (duration INTERVAL YEAR(3) TO MONTH);
INSERT INTO time_ex (duration )
VALUES( INTERVAL '120-6' YEAR TO MONTH);

INTERVAL DAY TO SECOND

CREATE TABLE time_ex3


(day_duration INTERVAL DAY(3) TO SECOND);
INSERT INTO time_ex3 ( day_duration )
VALUES( INTERVAL '4 10:30:10' DAY TO SECOND);

3.????

13.3. PRACTICE
1.Este necesara modificarea tabelelor atunci cand se fac greseli sau
modificari.
2.CREATE TABLE artists(
artist_id NUMBER(5,0) NOT NULL,
first_name VARCHAR2(20) NOT NULL,
last_name VARCHAR2(20) NOT NULL,
band_name VARCHAR2(30) NOT NULL,
email VARCHAR2(20) CONSTRAINT ait_email_nn NOT NULL,
hourly_rate NUMBER(8,2) CONSTRAINT art_hourly_rate_nn NOT NULL,
song_id NUMBER(5,0) CONSTRAINT art_song_id_nn NOT NULL references
d_songs(id),
constraint "ARTISTS_PK" primary key (artist_id)
);
b.
insert into artist(artist_id, first_name, last_name, band_name, email, hourly_rate,
song_id)
select 1 as artist_id,
SUBSTR(artist, 1, INSTR(artist,' ') -1) AS first_name,
SUBSTR(artist, INSTR(artist,' '), LENGTH(artist)) AS last_name,
artist as band_name,
null as email,
null as hourly_rate,
id as song_id
from d_songs
where rownum = 1;

c.ALTER TABLE artists


DROP CONSTRAINT ait_song_id_nn;
INSERT INTO artists (artist_id, first_name, last_name, band_name, email, hr_rate,
song_id)
VALUES(2,'Aurora','','Aurora','aurora.email@somedomain.com','999999.99',NULL);

d.1.ALTER TABLE artists


ADD (gen varchar2(20));
ALTER TABLE artists
MODIFY (last_name varchar2(40));
ALTER TABLE artists
DROP COLUMN gen
2.alter table artist
drop column email;
3.
RENAME artista to artista_new
4. TRUNCATE artists_new;
5. COMMENT
COMMENT ON TABLE artists_new IS 'comentariu'
3.ALTER TABLE o_employees
ADD ("Termination" VARCHAR2(100) DEFAULT TO_CHAR(SYSDATE,'Month ddth,
YYYY') );
4.ALTER TABLE o_employees
ADD ( start_date TIMESTAMP WITH LOCAL TIME ZONE);
5.TRUNCATE TABLE o_jobs;
coloanele au ramas, no data found
6. drop sterge toata tabela din baza de date , delete sterge una, doua , sau
mai multe randuri din tabela
truncate sterge toata randurile din tabela
In drop si truncate nu se poate folosi where, in delete da
La truncate nu se poate folosi rollback sau commit
7.se pot modifica tipurile de date , dar doar ceea ce priveste precizia
se poate redenumi
se pot adauga coloane,
se poate sterge ( drop )
8.COMMENT ON TABLE o_jobs IS 'New job description added';
SELECT table_name, comments
FROM user_tab_comments WHERE LOWER(table_name) = 'o_jobs'

9.RENAME o_jobs TO o_job_description


10.CREATE TABLE copy_f_staffs
AS ( SELECT * FROM f_staffs);

DESC copy_f_staffs;

DROP TABLE copy_f_staffs;

SELECT * FROM copy_f_staffs;


DESCRIBE user_recyclebin ;
Please note droptime is varchar2 here.
SELECT * FROM
(SELECT * FROM user_recyclebin ORDER BY droptime DESC)
WHERE ROWNUM <= 100;
SELECT object_name,droptime FROM user_recyclebin WHERE LOWER(original_name) =
'copy_f_staffs';
SELECT * FROM "BIN$QF30ctmEV7jgU81jFJDpGA==$0";
FLASHBACK TABLE copy_f_staffs TO BEFORE DROP;
DESCRIBE copy_f_staffs;
11.
SELECT * FROM copy_f_staffs;
UPDATE copy_f_staffs
SET salary = 12
WHERE first_name = 'Sue' AND last_name = 'Doe';
SELECT * FROM copy_f_staffs;
UPDATE copy_f_staffs
SET salary = 2
WHERE first_name = 'Sue' AND last_name = 'Doe';
SELECT * FROM copy_f_staffs;

F.SELECT versions_operation, versions_starttime, versions_endtime, id,


first_name, last_name, birthdate,
salary,overtime_rate,training,staff_type,manager_id, manager_budget,manager_target
FROM copy_f_staffs
VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE
WHERE id = 12;

G.UPDATE copy_f_staffs
SET salary = (SELECT salary
FROM copy_f_staffs
VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE
WHERE first_name = 'Sue' AND last_name = 'Doe' AND versions_operation IS NULL
AND versions_starttime IS NULL)
WHERE first_name = 'Sue' AND last_name = 'Doe';

14.1. PRACTICE
ex1:
1.Unique constraint
2.not null
3. primary key
4.check constraint
5. references
6. unique constraint
7. foreign key
8.table level constraint
9.constraint
10. column level constraint

ex2:

1.impun anumite reguli

PRIMARY KEY Constraint


UNIQUE Constraint
FOREIGN KEY Constraint
CHECK Constraint with condition applied on the column/columns (they work
at row level)
NOT NULL Constraint (implemented at row level using special CHECK
Constraint having condition IS NOT NULL for single column)
2.not null
pt table level constraint trebuie specificat si un nume

3.este mai usor sa renunti la anumite constraints sau sa numesti. Erorile se


pot identifica mai usor

4. id pk number 8 0 - no
name - varchar2 20 - - -
date_opened - date - - - no
address - varchar2 40 - - no
city - varchar2 20 - - no
zip_postal_code - varchar2 10 - - -

5. no , yes, no, no , no , yes, yes, yes, yes, yes

6.CREATE TABLE f_global_locations


( id NUMBER(8,0) CONSTRAINT f_gln_id_pk PRIMARY KEY ,
name VARCHAR2(20),
date_opened DATE CONSTRAINT f_gln_dt_opened_nn NOT NULL ENABLE,
address VARCHAR2(40) CONSTRAINT f_gln_add_nn NOT NULL ENABLE,
city VARCHAR2(20) CONSTRAINT f_gln_city_nn NOT NULL ENABLE,
zip_postal_code VARCHAR2(10),
phone VARCHAR2(20),
email VARCHAR2(75) CONSTRAINT f_gln_email_uk UNIQUE,
manager_id NUMBER(6,0),
emergency_contact VARCHAR2(20)
);

7.????
8.DESCRIBE f_global_locations;

9.CREATE TABLE f_global_locations


( id NUMBER(8,0) CONSTRAINT f_gln_id_pk PRIMARY KEY ,
name VARCHAR2(20),
date_opened DATE CONSTRAINT f_gln_dt_opened_nn NOT NULL ENABLE,
address VARCHAR2(40) CONSTRAINT f_gln_add_nn NOT NULL ENABLE,
city VARCHAR2(20) CONSTRAINT f_gln_city_nn NOT NULL ENABLE,
zip_postal_code VARCHAR2(10),
phone VARCHAR2(20),
email VARCHAR2(75)
manager_id NUMBER(6,0),
emergency_contact VARCHAR2(20),
CONSTRAINT f_gln_email_uk UNIQUE(email)
);

14.2. PRACTICE

1. on delete cascade
2. check constraint
3.primary key
4. not null
5.on delete set null
6. foreign key constraint

ex2:

1. a. identifica fiecare rand in tabela ( in mod unic)


b. refera la o cheie primara
c.defineste constrangerea prin conditii pe fiecare rand. conditia trebuie sa
fie adevarata sau necunoscuta

2.animal_id NUMBER(6) - PRIMARY KEY


name VARCHAR2(25)
license_tag_number NUMBER(10)- UNIQUE
admit_date DATE- NOT NULL
adoption_id NUMBER(5),
vaccination_date DATE- NOT NULL

3.CREATE TABLE animals


( animal_id NUMBER(6,0) CONSTRAINT anl_anl_id_pk PRIMARY KEY ,
name VARCHAR2(25),
license_tag_number NUMBER(10,0) CONSTRAINT anl_l_tag_num_uk UNIQUE,
admit_date DATE CONSTRAINT anl_adt_dat_nn NOT NULL ENABLE,
adoption_id NUMBER(5,0),
vaccination_date DATE CONSTRAINT anl_vcc_dat_nn NOT NULL ENABLE

);

4.INSERT INTO animals (animal_id, name, license_tag_number, admit_date,


adoption_id, vaccination_date)
VALUES( 101, 'Spot', 35540, TO_DATE('10-Oct-2004', 'DD-Mon-YYYY'), 205,
TO_DATE('12-Oct-2004', 'DD-Mon-YYYY'));
SELECT * FROM animals;

5.ALTER TABLE animals


MODIFY ( adoption_id NUMBER(5,0) CONSTRAINT anl_adopt_id_fk REFERENCES
adoptions(id) ENABLE );

6.a.

ALTER TABLE animals


ADD CONSTRAINT anl_adopt_id_fk FOREIGN KEY (adoption_id)
REFERENCES adoptions(id) ON DELETE CASCADE ENABLE ;

SELECT delete_rule
FROM user_constraints
WHERE LOWER(table_name) = 'animals' AND constraint_type = 'R';

tabela fiu a pierdut referinta catre tablea parinte

b.ALTER TABLE animals


DROP CONSTRAINT anl_adopt_id_fk ;
ALTER TABLE animals
ADD CONSTRAINT anl_adopt_id_fk FOREIGN KEY (adoption_id)
REFERENCES adoptions(id) ON DELETE SET NULL ENABLE ;

SELECT delete_rule
FROM user_constraints
WHERE LOWER(table_name) = 'animals' AND constraint_type = 'R'; ( set null)

7.Tabel- poate limita o valoare in anumite coloane bazandu-se pe valori din


alte coloane in randul respectiv
- nu se pot folosi subqueries expressions
- poate referi la orice coloana in alt tabel
- nu poate contine: tabele imbricate, pseudocoloane, constante care nu sunt
in totalitate specificate

14.3 PRACTICE

Vocabulary
1.DISABLE CONSTRAINT
2.CASCADE clause
3.ALTER TABLE
4.ENABLE CONSTRAINT
5.DROP CONSTRAINT
6.-DROP COLUMN
` 7. CASCADE CONSTRAINTS

ex2:

1.ADD (uses modify clause to add not null on a column though)


DROP
ENABLE/DISABLE

2.ALTER TABLE copy_d_clients


ADD CONSTRAINT copy_d_clt_client_number_pk PRIMARY KEY (client_number);

3.ALTER TABLE copy_d_events


ADD CONSTRAINT copy_d_eve_client_number_fk FOREIGN KEY (client_number)
REFERENCES copy_d_clients (client_number) ENABLE;

4.SELECT constraint_name, constraint_type, table_name


FROM user_constraints
WHERE table_name = UPPER('copy_d_events') ;

a.COPY_D_CLT_CLIENT_NUMBER_PK (constraint_name)
b.COPY_D_EVE_CLIENT_NUMBER_FK

5.ALTER TABLE copy_d_clients


DROP CONSTRAINT COPY_D_CLT_CLIENT_NUMBER_PK ;

ORA-02273: this unique/primary key is referenced by some foreign keys

ALTER TABLE copy_d_clients


DROP CONSTRAINT COPY_D_CLT_CLIENT_NUMBER_PK CASCADE;

6.INSERT INTO
copy_d_events(client_number,id,name,event_date,description,cost,venue_id,package_co
de,theme_code)
VALUES(7125,140,'Cline Bas Mitzvah',TO_DATE('15-Jul-2004','dd-Mon-
yyyy'),'Church and Private Home formal',4500,105,87,77);

ORA-02291: integrity constraint (HKUMAR.COPY_D_EVE_CLIENT_NUMBER_FK) violated


- parent key not found

no data found

7.ALTER TABLE copy_d_clients


DISABLE CONSTRAINT COPY_D_CLT_CLIENT_NUMBER_PK CASCADE;

8.INSERT INTO
copy_d_events(client_number,id,name,event_date,description,cost,venue_id,package_co
de,theme_code)
VALUES(7125,140,'Cline Bas Mitzvah',TO_DATE('15-Jul-2004','dd-Mon-
yyyy'),'Church and Private Home formal',4500,105,87,77);
- 1 row inserted ( am facut disable contraint)

9.
ALTER TABLE copy_d_clients
ENABLE CONSTRAINT COPY_D_CLT_CLIENT_NUMBER_PK ; ( nu e cascade la enable)

10. DELETE FROM copy_d_events WHERE


client_number NOT IN ( SELECT client_number FROM copy_d_clients);

ALTER TABLE copy_d_events


ENABLE CONSTRAINT COPY_D_EVE_CLIENT_NUMBER_FK;

11.pt eficienta
12.C-Check constraint
P - primary key
R - Referential integrity (fk)
U - unique key

15.1. PRACTICE
ex1:
1.view
2.view_name
3.force
4.simple view
5.noforce
6.create view statemaent
7.Alias
8.subquery
9.Complex View
10. Replace

ex2:
1.Restrict access and display selective columns
Reduce complexity of queries from other internal systems. So, providing a
way to view same data in a different manner.
Let the app code rely on views and allow the internal implementation of
tables to be modified later.

2.CREATE OR REPLACE VIEW view_d_songs AS


SELECT d_songs.id, d_songs.title "Song Title", d_songs.artist
from d_songs INNER JOIN d_types ON d_songs.type_code = d_types.code
where d_types.description = 'New Age';

3. id, song title , artist

4.CREATE OR REPLACE VIEW view_d_songs AS


SELECT d_songs.id, d_songs.title "Song Title", d_songs.artist,
d_songs.type_code
from d_songs INNER JOIN d_types ON d_songs.type_code = d_types.code
where d_types.description = 'New Age';

5.CREATE OR REPLACE VIEW view_d_events_pkgs AS


SELECT evt.name "Name of Event", TO_CHAR(evt.event_date, 'dd-Month-yyyy')
"Event date", thm.description "Theme description"
FROM d_events evt INNER JOIN d_themes thm ON evt.theme_code = thm.code
WHERE evt.event_date <= ADD_MONTHS(SYSDATE,1);
SELECT * FROM view_d_events_pkgs ;

6.CREATE OR REPLACE VIEW view_min_max_avg_dpt_salary ("Department Id",


"Department Name", "Max Salary", "Min Salary", "Average Salary") AS
SELECT dpt.department_id, dpt.department_name, MAX(NVL(emp.salary,0)),
MIN(NVL(emp.salary,0)), ROUND(AVG(NVL(emp.salary,0)),2)
FROM departments dpt LEFT OUTER JOIN employees emp ON dpt.department_id =
emp.department_id
GROUP BY (dpt.department_id, dpt.department_name);

15.2. PRACTICE

ex1:
1.ROWNUM
2.WITH CHECK OPTION
3.WITH READ ONLY

ex2:

1.SELECT owner, table_name, column_name, updatable,insertable, deletable


FROM user_updatable_columns WHERE LOWER(table_name) = 'copy_d_songs';

SELECT owner, table_name, column_name, updatable,insertable, deletable


FROM user_updatable_columns WHERE LOWER(table_name) = 'copy_d_events';

SELECT owner, table_name, column_name, updatable,insertable, deletable


FROM user_updatable_columns WHERE LOWER(table_name) = 'copy_d_cds';

SELECT owner, table_name, column_name, updatable,insertable, deletable


FROM user_updatable_columns WHERE LOWER(table_name) = 'copy_d_clients';

2.CREATE OR REPLACE VIEW view_copy_d_songs AS


SELECT *
FROM copy_d_songs;

SELECT * FROM view_copy_d_songs;

3.INSERT INTO view_copy_d_songs(id,title,duration,artist,type_code)


VALUES(88,'Mello Jello','2 min','The What',4);

4.CREATE OR REPLACE VIEW read_copy_d_cds AS


SELECT *
FROM copy_d_cds
WHERE year = '2000'
WITH READ ONLY ;

SELECT * FROM read_copy_d_cds;

5.ORA-42399: cannot perform a DML operation on a read-only view

6.CREATE OR REPLACE VIEW read_copy_d_cds AS


SELECT *
FROM copy_d_cds
WHERE year = '2000'
WITH CHECK OPTION CONSTRAINT ck_read_copy_d_cds;

7.DELETE FROM read_copy_d_cds


WHERE year = '2000';

8.DELETE FROM read_copy_d_cds


WHERE cd_number = 90;

9.DELETE FROM read_copy_d_cds


WHERE year = '2001';

10.Fara cele din 8 si 9

11.Delete restricted if it contains:


Group functions
GROUP BY CLAUSE
DISTINCT
pseudocolumn ROWNUM Keyword

Modify restricted if it contains:


Group functions
GROUP BY CLAUSE
DISTINCT
pseudocolumn ROWNUM Keyword
Column defined by expressions

INSERT restricted if it contains:


Group functions
GROUP BY CLAUSE
DISTINCT
pseudocolumn ROWNUM Keyword
Column defined by expressions

` 12. - Conform legii lui Moore, se estimează că în aproximativ 20-30 de ani


computerele vor depăși puterea de calcul a creierului uman, care este de ordinul a
1014 operații pe secundă.
13. -Termenul a fost împrumutat din fizică (unde singularitate este de
exemplu o gaură neagră, oamenii neputând să afle ce este în interiorul ei, neputând
pătrunde dincolo de raza Schwarzschild, legile fizicii nemaiavând valabilitate
aici.

15.3. PRACTICE
ex1:

1.Top-N Analysis
2.Drop
3.Inline View

ex2:
1.CREATE OR REPLACE VIEW view_copy_d_songs AS
SELECT title, artist
FROM copy_d_songs;

SELECT * FROM view_copy_d_songs;

2.DROP VIEW view_copy_d_songs;


SELECT * FROM view_copy_d_songs;
ORA-00942: table or view does not exist
3.SELECT * FROM
(SELECT last_name, salary FROM employees ORDER BY salary DESC)
WHERE ROWNUM <= 3;

4.SELECT empm.last_name, empm.salary, dptmx.department_id


FROM
(SELECT dpt.department_id, MAX(NVL(emp.salary,0)) max_dpt_sal
FROM departments dpt LEFT OUTER JOIN employees emp ON dpt.department_id =
emp.department_id
GROUP BY dpt.department_id) dptmx LEFT OUTER JOIN employees empm ON
dptmx.department_id = empm.department_id
WHERE NVL(empm.salary,0) = dptmx.max_dpt_sal;

5.SELECT ROWNUM,last_name, salary


FROM
(SELECT * FROM f_staffs ORDER BY SALARY);

Extra

1.CREATE TABLE my_departments


AS ( SELECT * FROM departments);
DESCRIBE my_departments;
DESCRIBE departments;
SELECT * FROM departments;
SELECT * FROM my_departments;

2.ALTER TABLE my_departments


DROP CONSTRAINT SYS_C00868380;

3.CREATE OR REPLACE VIEW view_my_departments AS


SELECT department_id , department_name
FROM my_departments;

4.INSERT INTO view_my_departments ( department_id, department_name)


VALUES(105, 'Advertising');
INSERT INTO view_my_departments ( department_id, department_name)
VALUES(120, 'Custodial');
INSERT INTO view_my_departments ( department_id, department_name)
VALUES(130, 'Planning');

5.ALTER TABLE my_departments


ADD CONSTRAINT my_departments_id_pk PRIMARY KEY (department_id);
DESCRIBE my_departments;

6.NSERT INTO view_my_departments ( department_id, department_name)


VALUES(NULL, 'Human Resources');
ORA-01400: cannot insert NULL into
("HKUMAR"."MY_DEPARTMENTS"."DEPARTMENT_ID")
INSERT INTO view_my_departments ( department_id, department_name)
VALUES(105, 'Human Resources');
ORA-00001: unique constraint (HKUMAR.MY_DEPARTMENTS_ID_PK) violated

7.INSERT INTO view_my_departments ( department_id, department_name)


VALUES(220, 'Human Resources');

9.CREATE OR REPLACE VIEW view_my_departments AS


SELECT department_id , department_name, location_id
FROM my_departments;

SELECT * FROM view_my_departments ;


SELECT department_id , department_name, location_id
FROM my_departments;
SELECT * FROM user_constraints WHERE table_name =
UPPER('view_my_departments');
SELECT * FROM user_constraints WHERE table_name = UPPER('my_departments');

10.ALTER TABLE my_departments


MODIFY ( location_id NUMBER(4,0) CONSTRAINT my_departments_loc_id_nn NOT
NULL);

11.CREATE OR REPLACE VIEW view_dpt_loc AS


SELECT dpt.department_name, loc.street_address, loc.city, loc.state_province
FROM
departments dpt
LEFT OUTER JOIN locations loc ON dpt.location_id = loc.location_id
left OUTER JOIN countries con ON loc.country_id = con.country_id
WHERE con.country_name = 'United States of America';

You might also like