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
© Copyright 2024 Paperzz