download

COMP 130
Fines and Databases
Topic #9: SQL
1
Part A: Data Definition Language
(DDL)
2
1
Schema and Catalog
• [Database] schema:
– A collection of relations (tables)
– Identified by a schema name
– Includes tables, constraints, views, domains, etc
CREATE SCHEMA COMPANY AUTHORIZATION Bob;
• Catalog
– Is a collection of schemas – a basic unit for
unique, accessible terminology [namespaces]
– Security/authorization information
– Can also be stored (and operated on) as relations
3
CREATE TABLE
• Define: a new relation
– Specify name and attributes
– Specify constraints:
• Attribute constraints
• Relation constraints:
– Primary key
– Other keys
– Referential integrity constraints
4
2
CREATE TABLE EMPLOYEE
( FNAME VARCHAR(15) NOT NULL,
LNAME VARCHAR(15) NOT NULL,
SSN CHAR(9) NOT NULL,
…,
SUPERSSN CHAR(9),
DNO INT NOT NULL,
PRIMARY KEY (SSN),
FOREIGN KEY (SUPERSSN) REFERENCE EMPLOYEE(SSN),
FOREIGN KEY (DNO) REFERENCE DEPARTMENT (DNUMBER));
CREATE TABLE DEPARTMENT
( DNAME VARCHAR(15) NOT NULL,
DNUMBER INT NOT NULL,
MGRSSN CHAR(9) NOT NULL,
MGRSTARTDATE DATE,
PRIMARY KEY(DNUMBER),
UNIQUE (DNAME),
FOREIGN KEY (MGRSSN) REFERENCES EMPLOYEE(SSN));
5
Referential Triggered Actions
• Two events
– ON DELETE
– ON UPDATE
• Three options
– SET NULL
– SET DEFAULT
– CASCADE
CREATE TABLE DEPARTMENT
( DNAME VARCHAR(15) NOT NULL,
DNUMBER INT NOT NULL,
MGRSSN CHAR(9) NOT NULL,
MGRSTARTDATE DATE,
PRIMARY KEY(DNUMBER),
UNIQUE (DNAME),
FOREIGN KEY (MGRSSN) REFERENCES EMPLOYEE(SSN)
ON DELETE SET DEFAULT ON UPDATE CASCADE);
6
3
DROP
• DROP SCHEMA
– DROP SCHEMA COMPANY CASCADE
• DROP TABLE
– DROP TABLE DEPENDENT RESTRICT
• ALTER TABLE
– Alter attributes
• ALTER TABLE COMPANY.EMPLOYEE ADD JOB
VARCHAR(12)
– Alter constraints
• ALTER TABLE COMPANY.EMPLOYEE DROP CONSTRAINT
… CASCADE
7
Part B: Data Manipulation Language
(DML)
8
4
DML
• Our focus is on how to formulate
queries
• Others:
– INSERT
– DELETE
– UPDATE
9
SELECT
• Not σ (the select operator in relational
algebra)
n
Basic format:
SELECT column1 , …, columnn
FROM table1 , …, tablem
WHERE condition
u
the WHERE condition can be a boolean
combination of other conditions involving the
tables in the FROM clause
10
5
Employee
SSN
Lname
Fname
Salary
111-22-3333 Smith
John
30000
121-23-3333 Wong
Frank
45000
153-32-1342 Wallace
Jennifer
43000
154-33-3333 Borg
James
56000
555-44-5555 English
Joyce
53000
List the names of all employees whose salary > 50K
SELECT Lname, Fname
FROM Employee
WHERE Salary > 50000;
Relational Algebra:
Select + Project
11
Employee
Dependent
Fname
Lnane
SSN
Fname
Lnane
ESSN
Alice
Black
999-88-7777
Eric
Black
999-88-7777
Jennifer
Wallace
111-22-3333
Alex
Black
999-88-7777
Joyce
White
222-33-4444
List the names of all dependents of Alice Black
SELECT Dependent.Fname, Dependent.Lname
FROM Employee, Dependent
WHERE Employee.Fname = ‘Alice’ AND
Employee.Lname = ‘Black’ AND
Employee.SSN = Dependent.ESSN;
Relational Algebra:
Select + Project + Join
12
6
Exercise 1
• Find names of employees in the
research department
Employee(Fname, Lname, SSN, Bdate, Address, Sex, Salary,
SuperSSN, Dno)
Department(Dname, Dnumber, MgrSSN, MgrStartDate)
SELECT _____________, _____________
FROM _________, _________
WHERE ___________________ AND
___________________;
13
Exercise 2
• For every project in Raleigh, list the controlling dept
number and the dept manager's last name
Employee(Fname, Lname, SSN, Bdate, Address, Sex, Salary,
SuperSSN, Dno)
Department(Dname, Dnumber, MgrSSN, MgrStartDate)
Project(Pname, Pnumber, Plocation, Dnum)
SELECT __________, ____________
FROM ________, ________, ________
WHERE ___________________ AND
___________________ AND _____________________;
14
7
Selecting All Columns
Employee
SSN
Lname
Fname
Salary
111-22-3333 Smith
John
30000
121-23-3333 Wong
Frank
45000
153-32-1342 Wallace
Jennifer
43000
154-33-3333 Borg
James
56000
555-44-5555 English
Joyce
53000
SELECT *
FROM Employee
WHERE Salary > 50000;
15
ALL and DISTINCT
Employee
SSN
Fname
Salary
111-22-3333 Smith
John
30000
121-23-3333 Wong
Frank
30000
153-32-1342 Wallace
Jennifer
43000
154-33-3333 Borg
James
53000
555-44-5555 English
Joyce
53000
SELECT ALL Salary
FROM Employee;
Lname
SELECT DISTINCT Salary
FROM Employee;
16
8
Renaming
Employee(Fname, Lname, SSN, Bdate, Address, Sex, Salary,
SuperSSN, Dno)
Retrieve names of employees and of their immediate
supervisors
SELECT E.Fname, E.Lname, S.Fname, S.Lname
FROM Employee AS E, Employee AS S
WHERE E.SuperSSN = S.SSN;
17
IS [NOT] NULL
Employee
SSN
Fname
Salary
111-22-3333 Smith
John
30000
121-23-3333 Wong
Frank
30000
153-32-1342 Wallace
Jennifer
43000
154-33-3333 Borg
James
NULL
555-44-5555 English
Joyce
53000
SELECT Lname, Fname
FROM Employee
WHERE Salary IS NULL;
Lname
SELECT Lname, Fname
FROM Employee
WHERE Salary IS NOT NULL;
18
9
ORDER BY
Employee
SSN
Lname
Fname
Salary
111-22-3333 Smith
John
30000
121-23-3333 Wong
Frank
30000
153-32-1342 Wallace
Jennifer
43000
154-33-3333 Borg
James
NULL
555-44-5555 English
Joyce
53000
SELECT Lname, Fname
FROM Employee
WHERE Salary IS NOT NULL
ORDER BY Salary DESC;
19
SET OPERATIONS
• UNION
• INTERSECTION
• EXCEPT
(SELECT DISTINCT Pnumber
FROM Project, Department, Employee
WHERE Dnum=Dnumber AND MgrSSN=SSN AND Lname=‘Smith’)
UNION
(SELECT DISTINCT Pnumber
FROM Project, Works_on, Employee
WHERE Pnumber=Pno AND ESSN=SSN AND Lname =‘Smith’)
20
10