ANSWERS: (A) Create/Alter/Drop Table Commands

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 7

Answers to SQL Practice Questions

ANSWERS: (A) Create/Alter/Drop Table Commands:

CREATE TABLE EMP


(emp_num int ,
emp_fname char(20) WITH DEFAULT 'unknown' ,
emp_lname char(20) NOT NULL ,
job_class char(3) ,
hiredate date NOT NULL ,
CONSTRAINT emp_pk PRIMARY KEY (emp_num) ,
CONSTRAINT job_fk FOREIGN KEY (job_class) REFERENCES job (job_code)
CONSTRAINT emp_lname_uk UNIQUE ( emp_lname ) ,
CONSTRAINT hiredate_ck CHECK ( hiredate >= '1/1/1990' )
)

2. CREATE TABLE JOB (


job_code char( 3 ) ,
job_class char( 30 ) ,
chg_hour decimal (5,2) WITH DEFAULT 15 ,
CONSTRAINT job_pk PRIMARY KEY (job_code) ,
CONSTRAINT job_class_ck CHECK ( chg_hour >= 15 )
)

3. ALTER TABLE job


ADD COLUMN
overtimeCharge dec (6,2) NOT NULL

4. ALTER TABLE job


ADD CONSTRAINT
charge_ck CHECK( chg_hour >= 25 )

5. ALTER TABLE job


ALTER column
Job_Class set default 'NA'
6. ALTER TABLE job
ALTER column
Chg_Hour set NOT NULL

7. ALTER TABLE job


ALTER column
Chg_Hour set data type decimal (12,2)

8. ALTER TABLE job


DROP constraint charge_ck

9. ALTER TABLE job


DROP COLUMN overtimeCharge

10. ALTER TABLE job


DROP COLUMN chg_hour

11. DROP TABLE job

12. DROP TABLE emp


ANSWERS: (B) Data Manipulation Commands:

1. Insert the last 3 rows shown into the EMP table.

INSERT into emp ( emp_num, emp_fname, emp_lname, job_class, hiredate )


VALUES
( 106, 'William', 'Smithfield', 'PRG', '10/31/2002' ),

INSERT into emp ( emp_num, emp_fname, emp_lname )


VALUES
( 114, 'Annelise', 'Jones' )

INSERT into emp ( emp_num, emp_lname )


VALUES ( 118, 'Frommer' )

2. Update the employee fname to Jim instead of James for employee 118
(Note: if no WHERE clause is used, then all records are updated)

UPDATE emp
SET emp_fname = 'Jim'
WHERE emp_num = 118

3. Update the Database Designer chg_hour value by 10%

UPDATE job
SET chg_hour = chg_hour * 1.1
WHERE job_class = 'Database Designer'

4. Remove the row from the job table for job code PRG
( Note: if no WHERE clause is used, then all records are deleted )

DELETE
FROM job
WHERE job_code = 'PRG'
5. Remove the JOB table and all of it's data

DROP TABLE job

6. Remove the employees from the employee table WHERE the hiredate is before 1-Jan-90

DELETE
FROM emp
WHERE hiredate < '1-Jan-90'

7. Remove the emp table and all of it's data

DROP TABLE emp


ANSWER: (C) Select Commands:

1. Show the employee first and last names and their job class description and hourly charge.

SELECT emp.emp_fname ,
emp.emp_lname ,
job.job_class ,
job.chg_hour
FROM emp, job
WHERE emp.job_class = job.job_code

2. Same question as above, but only show the records WHERE the chg_hour is <100

SELECT emp.emp_fname ,
emp.emp_lname ,
job.job_class ,
job.chg_hour
FROM emp, job
WHERE emp.job_class = job.job_code
AND job.chg_hour = < 100

3. Select the hours worked and lastname and hiredate for all employees.

(Note: the default for all selects is to show all records that are joined. The above statement has no
further conditions for the WHERE clause)

SELECT emp.emp_lname ,
emp.hiredate ,
proj_emp.hour
FROM emp, proj_emp
WHERE emp.emp_num = proj_emp.emp_num
4. Create a view called: WORK_INFO which will select the hours worked and lastname and hiredate for
all employees hired before 1-jan-02.

(Note: the default for all selects is to show all records that are joined. The above statement has no
further conditions for the WHERE clause)

CREATE VIEW WORK_INFO as


SELECT emp.emp_lname ,
emp.hiredate ,
proj_emp.hour
FROM emp, proj_emp
WHERE emp.emp_num = proj_emp.emp_num
AND
emp.hiredate < '1-jan-02'

5. Select employee fname and lname and all projects that they are working on. Save this select statement
as a view called: EMP_PROJECTS

(Note: the default for all selects is to show all records that are joined. The above statement has no
further conditions for the WHERE clause)

CREATE VIEW EMP_PROJECTS as


SELECT emp.emp_fname ,
emp.emp_lname ,
project.proj_name
FROM emp, project , proj_emp
WHERE proj_emp.proj_num = project.proj_num
AND proj_emp.emp_num = emp.emp_num

6. Select employee fname and lname and all projects that they are working on for
project 18.

SELECT emp.emp_fname ,
emp.emp_lname ,
project.proj_name
FROM emp, project , proj_emp
WHERE proj_emp.proj_num = project.proj_num
AND proj_emp.emp_num = emp.emp_num
AND project.proj_num = 18
7. Select all project names and job class descriptions that the project requires.
Save this select statement as a view called: EMP_JOB_SKILLS

CREATE VIEW EMP_JOB_SKILLS as


SELECT project.proj_name , job.job_class
FROM project , job , emp, proj_emp
WHERE proj_emp.proj_num = project.proj_num
AND proj_emp.emp_num = emp.emp_num
AND emp.job_class = job.job_code

8. Select all project names and job class descriptions that the project requires for only the job code of
DBD. Save this statement as a view called: DATABASE_DESIGNERS

CREATE VIEW DATABASE_DESIGNERS as


SELECT project.proj_name ,
job.job_class
FROM project , job , emp, proj_emp
WHERE proj_emp.proj_num = project.proj_num
AND proj_emp.emp_num = emp.emp_num
AND emp.job_class = job.job_code
AND emp.job_class = 'DBD'

9. Select customer first and last name, credit limit, and salesrep first and last name WHERE the credit
limit is >= 1500.

SELECT customer.first_name, customer.last_name,


customer.credit_limit,
salesrep.last_name as salesLastName,
salesrep.first_name as salesFirstName
FROM premiere/customer, premiere/salesrep
WHERE customer.credit_limit >= 1500

You might also like