Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
FK1 FK2
PLACEMENT
/*SQL script to create the TEC database and associated tables and then load the data*/
USE TEC;
/*Create table COMPANY*/ CREATE TABLE COMPANY (co_id co_name co_division CHAR(3) PRIMARY KEY, VARCHAR(15), VARCHAR(15));
/*Create table QUALIFICATION*/ CREATE TABLE QUALIFICATION (qual_id qual_date qual_code VARCHAR(3) PRIMARY KEY, DATE, VARCHAR(3));
/*Create table OPENING*/ CREATE TABLE OPENING (opn_num CHAR(5) PRIMARY KEY, opn_desc VARCHAR(15), opn_startdate DATE NOT NULL, opn_enddate DATE NOT NULL,
co_id
qual_id VARCHAR(3), FOREIGN KEY (co_id) REFERENCES COMPANY(co_id), FOREIGN KEY (qual_id) REFERENCES QUALIFICATION(qual_id));
/*Create table CANDIDATE*/ CREATE TABLE CANDIDATE (cand_id CHAR(3) PRIMARY KEY,
/*Create table JOB HISTORY*/ CREATE TABLE JOB_HISTORY (job_id VARCHAR(3) PRIMARY KEY, DATE, DATE, CHAR(3),
plac_desc VARCHAR(15), plac_start_date DATE, plac_end_date DATE, job_id VARCHAR(3), opn_num CHAR(5), cand_id CHAR(3), PRIMARY KEY(plac_num, opn_num), FOREIGN KEY (cand_id) REFERENCES CANDIDATE(cand_id));
/*Create table EDUCATION*/ CREATE TABLE QUAL_EARNED (Edu_earned_num CHAR(5) PRIMARY KEY,
Edu_earned_desc VARCHAR(15), cand_id VARCHAR(3), qual_id CHAR(3), FOREIGN KEY (qual_id) REFERENCES Qualification(qual_id), FOREIGN KEY (cand_id) REFERENCES CANDIDATE(cand_id));
/*Create table COURSE*/ CREATE TABLE COURSE (cor_id VARCHAR(3) PRIMARY KEY,
/*Create table PREREQUISITE*/ CREATE TABLE PREREQUISITE (qual_id VARCHAR(3), cor_id VARCHAR(3), PRIMARY KEY (qual_id,cor_id), FOREIGN KEY (qual_id) REFERENCES QUALIFICATION(qual_id), FOREIGN KEY (cor_id) REFERENCES COURSE(cor_id));
/*Create table SESSION*/ CREATE TABLE SESSION (sess_num cor_id sess_date ses_time VARCHAR(3) PRIMARY KEY, VARCHAR(3), DATE, TIME,
Enroll_description VARCHAR(15), Enroll_date DATE, cor_id sess_num cand_id VARCHAR(3), VARCHAR(3), VARCHAR(3),
PRIMARY KEY(enroll_id, cor_id, Sess_num), FOREIGN KEY (cor_id) REFERENCES COURSE(cor_id), FOREIGN KEY (sess_num) REFERENCES SESSION(sess_num));
EMP_NU M
EMP_NA ME
PROF_RA NK
PROF_OFFI CE
DEPT_CO DE
DEPT_NA ME
ADVISE E
COMMITTEE_CO DE
OURNAL_CO DE
Transitive Dependency
C
TABLES IN 3NF WITH RENAMED ATTRIBUTE AND ADDITIONAL NEEDED ATTRIBUTES EMPLOYEE TABLE
EMP_NUM
EMP_FNAME
EMP_LNAME
EMP_DOB
EMP_HIRE_DATE
DEPT_CODE
PROF_CODE
ADVIS_CODE
PROFESSOR TABLE
PROF_CODE
PROF_RANK
PROF_OFFICE
PROF_ASSIGNED_DATE
DEPARTMENT TABLE
DEPT_CODE
DEPT_NAME
DEPT_HEAD
COMMITTEE TABLE
COMMIT_CODE
COMMIT_PERIOD
COMMIT_ASSIGNMENT
ADVISEE TABLE
ADVIS_CODE
ADVIS_TYPE
ADVIS_FNAME
ADVIS_MI
ADVIS_LNAME
ADVIS_DOB
JOURNAL TABLE
JOURN_CODE
JOURN_DESC
JOURN_ENTRY_DATE
/* Question 3 */ SELECT part_num, description FROM part WHERE class <> 'SG';
/* Question 4 */ SELECT part_num, description, ROUND(on_hand * price,2) AS 'ON_HAND_VALUE' FROM part WHERE class = 'AP';
/* Question 5 */ SELECT part_num, description FROM part WHERE class IN('AP', 'SG');
/* Question 8 */ SELECT part_num, description, p.on_hand FROM part p, (SELECT AVG(on_hand) AS avgon_hand FROM part)h WHERE p.on_hand > h.avgon_hand GROUP By part_num, description, on_hand ORDER BY Part_num;
FROM customer c, (SELECT rep_num, SUM(balance) AS 'SUM_balance' FROM customer GROUP BY rep_num)b WHERE c.rep_num = b.rep_num AND SUM_balance > '10000' GROUP BY rep_num;
/* Question 12 */ SELECT order_num, c.customer_num, customer_name FROM orders o, customer c WHERE c.customer_num = o.customer_num AND order_date = '2007-10-21';
/* Question 13 */ SELECT c.customer_num, customer_name FROM customer c, orders o WHERE c.customer_num = o.customer_num AND order_date IN('2007-10-21') ORDER BY c.customer_num;
/* Question 14 */ SELECT customer_num, customer_name FROM customer WHERE customer_num NOT IN(SELECT customer_num FROM orders WHERE order_date = '2007-1021') GROUP BY customer_num, customer_name ORDER BY customer_num;
/* Question 15 */ SELECT o.order_num, order_date, p.part_num, description, class FROM orders o, order_line l, part p WHERE o.order_num = l.order_num AND l.part_num = p.part_num ORDER BY class, o.order_num;
/* Question 16 */ SELECT rep_num, last_name, first_name FROM rep WHERE (rep_num, last_name, first_name) IN (SELECT r.rep_num AS REP_NUM, r.last_name AS LAST_NAME, r.first_name AS FIRST_NAME FROM rep r, customer c WHERE r.rep_num = c.rep_num AND c.credit_limit = '5000');
/* Question 17 This is the controversial question and 14 records was the accepted result everyone got. */ SELECT p2.part_num AS PART_NUM, p2.description AS DESCRIPTION, p1.part_num AS PART_NUM, p1.description AS DESCRIPTION, p2.class AS CLASS FROM part p1, part p2 WHERE p1.class = p2.class AND p1.part_num > p2.part_num GROUP BY p2.part_num, p2.description, p1.part_num, p1.description, p2.class ORDER BY p2.class, p2.part_num;
/* Question 18 */ SELECT ol.order_num AS ORDER_NUM, order_date AS ORDER_DATE FROM order_line ol, orders o, part p WHERE ol.order_num = o.order_num AND ol.part_num = p.part_num ORDER By p.part_num;
/* Question 19 - Johnson's Department Store is customer_num 608 and Gas Range is part_num DR93 */ SELECT o.order_num, order_date FROM orders o, customer c, order_line ol, part p
WHERE o.customer_num = c.customer_num AND o.order_num = ol.order_num AND ol.part_num = p.part_num AND (c.customer_num = '608' AND p.part_num = 'DR93');
/* Question 20 */ SELECT part_num, description, price, class FROM part WHERE price > ALL (SELECT price FROM part WHERE class = 'AP');
/* Question 21 */ SELECT p.part_num, description, on_hand, order_num, num_ordered FROM part p LEFT OUTER JOIN order_line ol ON p.part_num = ol.part_num ORDER BY p.part_num;
/* Question 22 - Create a NONAPPLIANCE table*/ CREATE TABLE NONAPPLIANCE ( part_num CHAR(4) PRIMARY KEY,
price );
DECIMAL(6,2)
/* Question 23 - Insert into NONAPPLIANCE table from PART table */ INSERT INTO NONAPPLIANCE (part_num, description, on_hand, class, price) SELECT part_num, description,on_hand, class, price FROM part WHERE class <> 'AP';
UPDATE nonappliance SET price = price + (price * 0.02) WHERE class = 'SG';
/* Question 25 - Delete all parts with a class = SG from nonappliance table */ DELETE FROM nonappliance WHERE class = 'SG';
/* Question 26 - Increase column length */ ALTER TABLE nonappliance MODIFY description VARCHAR(30);
/* Question 28 - Create View Part_Order */ CREATE VIEW PART_ORDER AS SELECT p.part_num, description, price, ol.order_num, order_date, num_ordered, quoted_price FROM part p, order_line ol, orders o WHERE p.part_num = ol.part_num AND ol.order_num = o.order_num;
/* Question 29 - Select from the PART_ORDER view */ SELECT PART_ORDER.part_num, PART_ORDER.description, PART_ORDER.order_num, PART_ORDER.quoted_price
/* Question 30 - Create Index PART_INDEX1 on PART table */ CREATE INDEX PART_INDEX1 ON part (class);