sql - basicsup3f/cs4750/slides/4750lec09-sql-basic.pdf · 1234 database systems 2345 database...

35
Spring 2020 – University of Virginia 1 © Praphamontripong © Praphamontripong SQL - Basics CS 4750 Database Systems [A. Silberschatz, H. F. Korth, S. Sudarshan, Database System Concepts, Ch.3]

Upload: others

Post on 25-Jun-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 1© Praphamontripong© Praphamontripong

SQL - Basics

CS 4750Database Systems

[A. Silberschatz, H. F. Korth, S. Sudarshan, Database System Concepts, Ch.3]

Page 2: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 2© Praphamontripong

QUERY LANGUAGES• Parts of a query language (such as Relational Algebra and SQL) are divided into two main categories:

Data Definition Language (DDL)

• Effects schema

• CREATE TABLE

• ALTER TABLE

• DROP TABLE

Data Manipulation Language (DML)

• Effects instance

• SELECT

• INSERT

• UPDATE

• DELETE

Page 3: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 3© Praphamontripong

Structured Query Language (SQL)• Standard language for relational database managements

• Domain-specific language• SQL only works on relational databases

• Not for general purpose programming (e.g., Java, C/C++, Python)

• Include the ability to process sets of data • Querying data

• Controlling access to the database and its objects

• Guaranteeing database consistency

• Updating rows in a table

• Creating, replacing, altering, and dropping objects

Make it possible to work with data at the logical level

Page 4: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 4© Praphamontripong

SQL (cont.)• Provides standard type; for example,

• Numbers: INT, FLOAT, DECIMAL(p, s)

• Strings: • CHAR(n) – fixed length n

• VARCHAR(n) – variable length, max length n

• TEXT – for large value; not support DEFAULT values, NOT NULL

• BOOLEAN

• DATE, TIME, TIMESTAMP

• DATE – year, month, and day values

• TIME – hour, minute, and second values

• TIMESTAMP – year, month, day, hour, minute, and second values

• BLOB (Binary Large Object) – varying-length binary string; for file, image, video, large object

Page 5: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 5© Praphamontripong

SQL StatementsCREATE TABLE ...

DROP TABLE ...

ALTER TABLE ... ADD / REMOVE ...

INSERT INTO ... VALUES

DELETE FROM ... WHERE ...

UPDATE ... SET ... WHERE ...

SELECT ... FROM ...

... UNION ...

... INTERSECT ...

[ More constraints and referential constraint maintenance later ]

Page 6: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 6© Praphamontripong

person

id nameaddress

CREATE TABLE (Entity Set)

CREATE TABLE person (id INT,name VARCHAR(40),address VARCHAR(255),PRIMARY KEY (id) );

person

id name middle

last

first

CREATE TABLE person (id INT,first_name VARCHAR(20),middle_name VARCHAR(3),last_name VARCHAR(20),PRIMARY KEY (id) );

Page 7: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 7© Praphamontripong

CREATE TABLE (Entity Set)

CREATE TABLE person (id INT,name VARCHAR(40),address VARCHAR(255),PRIMARY KEY (id) );

CREATE TABLE person_phone (id INT REFERENCES person(id),phone VARCHAR(10),PRIMARY KEY (id, phone) );

person

id name

phoneaddress

Page 8: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 8© Praphamontripong

product companymakes

CREATE TABLE (One-to-One)

CREATE TABLE product(pid VARCHAR(10), ...,PRIMARY KEY (pid) );

CREATE TABLE company(cname VARCHAR(100), ...,PRIMARY KEY (cname) );

CREATE TABLE makes(cname VARCHAR(100) UNIQUE REFERENCES company(cname),pid VARCHAR(100) UNIQUE REFERENCES product(pid), ... );

Option 1: create tables for entity sets and a relationship set

PRIMARY KEY (cname, pid)

Do we need all these tables?

Page 9: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 9© Praphamontripong

CREATE TABLE (One-to-One)

product companymakes

CREATE TABLE product(pid VARCHAR(10), ...,PRIMARY KEY (pid) );

CREATE TABLE company(cname VARCHAR(100), ...,pid VARCHAR(10),PRIMARY KEY (cname),FOREIGN KEY (pid) REFERENCES product(pid) );

Option 2: create tables for entity sets, store a primary key of one entity in another entity, no table for relationship set

Page 10: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 10© Praphamontripong

CREATE TABLE (Many-to-Many)

product companymakes

CREATE TABLE product(pid VARCHAR(10), ...,PRIMARY KEY (pid) );

CREATE TABLE company(cname VARCHAR(100), ...,PRIMARY KEY (cname) );

CREATE TABLE makes(cname VARCHAR(100) REFERENCES company(cname),pid VARCHAR(100) REFERENCES product(pid), ...,PRIMARY KEY (cname, pid) );

Page 11: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 11© Praphamontripong

product companymakes

CREATE TABLE (One-to-Many / Many-to-One)

CREATE TABLE product(pid VARCHAR(10), ...,PRIMARY KEY (pid) );

CREATE TABLE company(cname VARCHAR(100), ...,PRIMARY KEY (cname) );

CREATE TABLE makes(cname VARCHAR(100) REFERENCES company(cname),pid VARCHAR(100) REFERENCES product(pid), ...,PRIMARY KEY (pid) );

Option 1: create tables for entity sets and a relationship set

FOREIGN KEY (cname) REFERENCES company(cname)

Do we need all these tables?

Page 12: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 12© Praphamontripong

product companymakes

CREATE TABLE (One-to-Many / Many-to-One)

CREATE TABLE product(pid VARCHAR(10), ...,cname VARCHAR(100),PRIMARY KEY (pid),FOREIGN KEY (cname) REFERENCES company(cname) );

CREATE TABLE company(cname VARCHAR(100), ...,PRIMARY KEY (cname) );

Option 2: create tables for entity sets, store a primary key of the “one” side in the “many” side, no table for relationship set

Page 13: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 13© Praphamontripong

CREATE TABLE (Total Participation)

product companymakes

pidname cname

descriptionaddress

quantity

CREATE TABLE product(pid VARCHAR(10), ...,quantity INT,cname VARCHAR(100)PRIMARY KEY (pid),FOREIGN KEY (cname) REFERENCES company(cname) );

CREATE TABLE company(cname VARCHAR(100), ...,PRIMARY KEY (cname) );

Option 1: use a FOREIGN KEY constraint

Page 14: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 14© Praphamontripong

CREATE TABLE (Total Participation)

product companymakes

pidname cname

descriptionaddress

quantity

CREATE TABLE product(pid VARCHAR(10), ...,quantity INT,PRIMARY KEY (pid),cname VARCHAR(100) NOT NULL REFERENCES company(cname));

CREATE TABLE company(cname VARCHAR(100), ...,PRIMARY KEY (cname));

Option 2: use a NOT NULL constraint

Page 15: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 15© Praphamontripong

CREATE TABLE (Multi-Way Relations)

CREATE TABLE product(pid VARCHAR(10), ...,PRIMARY KEY (pid) );

CREATE TABLE company(cname VARCHAR(100), ...,PRIMARY KEY (cname) );

CREATE TABLE person VARCHAR(10), ...,PRIMARY KEY (personid) );

CREATE TABLE makes(cname VARCHAR(100) REFERENCES company(cname),pid VARCHAR(100) REFERENCES product(pid), personID VARCHAR(10) REFERENCE person(personID), ...,PRIMARY KEY (cname, pid, personID,) );

person product

company

price

personID pidbuys

cname

Page 16: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 16© Praphamontripong

CREATE TABLE (Weak Entity Set)

CREATE TABLE course(c_number VARCHAR(10), ...,PRIMARY KEY (c_number) );

CREATE TABLE homework(hw_number VARCHAR(10), ...,c_number VARCHAR(10) REFERENCES course(c_number),PRIMARY KEY (c_number, hw_number) );

homework coursehave

c_number

title

hw_number

total_scores

due_date

Page 17: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 17© Praphamontripong

DROP TABLE

DROP TABLE table_name;

DROP TABLE homework;

This cannot be undone !!

Page 18: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 18© Praphamontripong

ALTER TABLE … ADD/REMOVE

company

cname address

ALTER TABLE companyADD ceo VARCHAR(40);

company

cname address

ceo

Page 19: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 19© Praphamontripong

INSERT INTO … VALUE

INSERT INTO Student_lectureVALUES (“9999”, “85 Engineer’s Way”,

“Database Systems”, “Humpty”);

Student_lecture

S_id Address Course Teaching_assistant1234 57 Hockanum Blvd Database Systems Minnie2345 1400 E. Bellows Database Systems Humpty3456 900 S. Detroit Cloud Computing Dumpty1234 57 Hockanum Blvd Web Programming Lang. Mickey5678 2131 Forest Lake Ln. Software Analysis Minnie9999 85 Engineer’s Way Database Systems Humpty

Student_lecture

S_id Address Course Teaching_assistant1234 57 Hockanum Blvd Database Systems Minnie2345 1400 E. Bellows Database Systems Humpty3456 900 S. Detroit Cloud Computing Dumpty1234 57 Hockanum Blvd Web Programming Lang. Mickey5678 2131 Forest Lake Ln. Software Analysis Minnie

Page 20: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 20© Praphamontripong

DELETE FROM … WHERE

DELETE FROM Student_lectureWHERE Teaching_assistant = ”Humpty”;

Student_lecture

S_id Address Course Teaching_assistant1234 57 Hockanum Blvd Database Systems Minnie3456 900 S. Detroit Cloud Computing Dumpty1234 57 Hockanum Blvd Web Programming Lang. Mickey5678 2131 Forest Lake Ln. Software Analysis Minnie

Student_lecture

S_id Address Course Teaching_assistant1234 57 Hockanum Blvd Database Systems Minnie2345 1400 E. Bellows Database Systems Humpty3456 900 S. Detroit Cloud Computing Dumpty1234 57 Hockanum Blvd Web Programming Lang. Mickey5678 2131 Forest Lake Ln. Software Analysis Minnie

Page 21: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 21© Praphamontripong

UPDATE … SET ... WHERE

UPDATE Student_lectureSET Teaching_assistant = “Humpty” WHERE S_id = “5678”;

Student_lecture

S_id Address Course Teaching_assistant1234 57 Hockanum Blvd Database Systems Minnie2345 1400 E. Bellows Database Systems Humpty3456 900 S. Detroit Cloud Computing Dumpty1234 57 Hockanum Blvd Web Programming Lang. Mickey5678 2131 Forest Lake Ln. Software Analysis Humpty

Student_lecture

S_id Address Course Teaching_assistant1234 57 Hockanum Blvd Database Systems Minnie2345 1400 E. Bellows Database Systems Humpty3456 900 S. Detroit Cloud Computing Dumpty1234 57 Hockanum Blvd Web Programming Lang. Mickey5678 2131 Forest Lake Ln. Software Analysis Minnie

Page 22: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 22© Praphamontripong

SELECT * FROM ...

SELECT * FROM Student_lecture;

Student_lecture

S_id Address Course Teaching_assistant1234 57 Hockanum Blvd Database Systems Minnie2345 1400 E. Bellows Database Systems Humpty3456 900 S. Detroit Cloud Computing Dumpty1234 57 Hockanum Blvd Web Programming Lang. Mickey5678 2131 Forest Lake Ln. Software Analysis Minnie

S_id Address Course Teaching_assistant1234 57 Hockanum Blvd Database Systems Minnie2345 1400 E. Bellows Database Systems Humpty3456 900 S. Detroit Cloud Computing Dumpty1234 57 Hockanum Blvd Web Programming Lang. Mickey5678 2131 Forest Lake Ln. Software Analysis Minnie

Page 23: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 23© Praphamontripong

SELECT Specific Attribute

SELECT S_id, Course FROM Student_lecture;

Student_lecture

S_id Course1234 Database Systems2345 Database Systems3456 Cloud Computing1234 Web Programming Lang.5678 Software Analysis

S_id Address Course Teaching_assistant1234 57 Hockanum Blvd Database Systems Minnie2345 1400 E. Bellows Database Systems Humpty3456 900 S. Detroit Cloud Computing Dumpty1234 57 Hockanum Blvd Web Programming Lang. Mickey5678 2131 Forest Lake Ln. Software Analysis Minnie

“Projection”

Page 24: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 24© Praphamontripong

SELECT * FROM Student_lectureWHERE Teaching_assistant = “Minnie” ;

Student_lecture

S_id Address Course Teaching_assistant1234 57 Hockanum Blvd Database Systems Minnie5678 2131 Forest Lake Ln. Software Analysis Minnie

S_id Address Course Teaching_assistant1234 57 Hockanum Blvd Database Systems Minnie2345 1400 E. Bellows Database Systems Humpty3456 900 S. Detroit Cloud Computing Dumpty1234 57 Hockanum Blvd Web Programming Lang. Mickey5678 2131 Forest Lake Ln. Software Analysis Minnie

SELECT with WHERE Clause (1)

Page 25: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 25© Praphamontripong

SELECT with WHERE Clause (2)

SELECT S_id, Course FROM Student_lectureWHERE Teaching_assistant = “Minnie” ;

Student_lecture

S_id Course1234 Database Systems5678 Software Analysis

S_id Address Course Teaching_assistant1234 57 Hockanum Blvd Database Systems Minnie2345 1400 E. Bellows Database Systems Humpty3456 900 S. Detroit Cloud Computing Dumpty1234 57 Hockanum Blvd Web Programming Lang. Mickey5678 2131 Forest Lake Ln. Software Analysis Minnie

Page 26: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 26© Praphamontripong

SELECT with WHERE Clause (3)

SELECT S_id, Course FROM Student_lectureWHERE Teaching_assistant = “Minnie” OR

Teaching_assistant = “Mickey” ;

Student_lecture

S_id Course1234 Database Systems1234 Web Programming Lang.5678 Software Analysis

S_id Address Course Teaching_assistant1234 57 Hockanum Blvd Database Systems Minnie2345 1400 E. Bellows Database Systems Humpty3456 900 S. Detroit Cloud Computing Dumpty1234 57 Hockanum Blvd Web Programming Lang. Mickey5678 2131 Forest Lake Ln. Software Analysis Minnie

Page 27: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 27© Praphamontripong

SELECT DISTINCT

SELECT DISTINCT Teaching_assistantFROM Student_lecture ;

Student_lectureS_id Address Course Teaching_assistant

1234 57 Hockanum Blvd Database Systems Minnie2345 1400 E. Bellows Database Systems Humpty3456 900 S. Detroit Cloud Computing Dumpty1234 57 Hockanum Blvd Web Programming Lang. Mickey5678 2131 Forest Lake Ln. Software Analysis Minnie

Teaching_assistantMinnieHumptyDumptyMickey

Page 28: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 28© Praphamontripong

SELECT with Pattern Matching

SELECT Teaching_assistant FROM Student_lectureWHERE Course LIKE ‘Data%’;

Student_lectureS_id Address Course Teaching_assistant

1234 57 Hockanum Blvd Database Systems Minnie2345 1400 E. Bellows Database Systems Humpty3456 900 S. Detroit Cloud Computing Dumpty1234 57 Hockanum Blvd Web Programming Lang. Mickey5678 2131 Forest Lake Ln. Software Analysis Minnie

Teaching_assistantMinnieHumpty

Page 29: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 29© Praphamontripong

ORDER BY (Ascending)

SELECT S_id, Course FROM Student_lectureWHERE Teaching_assistant != “Dumpty” ORDER BY S_id;

Student_lectureS_id Address Course Teaching_assistant

1234 57 Hockanum Blvd Database Systems Minnie2345 1400 E. Bellows Database Systems Humpty3456 900 S. Detroit Cloud Computing Dumpty1234 57 Hockanum Blvd Web Programming Lang. Mickey5678 2131 Forest Lake Ln. Software Analysis Minnie

Ascending, by defaultS_id Course1234 Database Systems1234 Web Programming Lang.2345 Database Systems5678 Software Analysis

Page 30: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 30© Praphamontripong

ORDER BY (Descending)

SELECT S_id, Course FROM Student_lectureWHERE Teaching_assistant != “Dumpty” ORDER BY S_id DESC;

Student_lectureS_id Address Course Teaching_assistant

1234 57 Hockanum Blvd Database Systems Minnie2345 1400 E. Bellows Database Systems Humpty3456 900 S. Detroit Cloud Computing Dumpty1234 57 Hockanum Blvd Web Programming Lang. Mickey5678 2131 Forest Lake Ln. Software Analysis Minnie

S_id Course5678 Software Analysis2345 Database Systems1234 Web Programming Lang.1234 Database Systems

Page 31: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 31© Praphamontripong

SELECT with Aliases

SELECT S_id as ID, Course as [Course Name] FROM Student_lectureWHERE Teaching_assistant != “Dumpty” ;

Student_lectureS_id Address Course Teaching_assistant

1234 57 Hockanum Blvd Database Systems Minnie2345 1400 E. Bellows Database Systems Humpty3456 900 S. Detroit Cloud Computing Dumpty1234 57 Hockanum Blvd Web Programming Lang. Mickey5678 2131 Forest Lake Ln. Software Analysis Minnie

ID Course Name1234 Database Systems1234 Web Programming Lang.2345 Database Systems5678 Software Analysis

Page 32: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 32© Praphamontripong

UNION

(SELECT S_id, Course FROM Student_lecture1) UNION(SELECT S_id, Course FROM Student_lecture2)

• Combine two tables• Each tables must have the same number of columns• The columns must have similar / compatible data types • The columns in both tables must be in the same order• Tuples of the second table comes after the first

Student_lecture1S_id Address Course Teaching_assistant1234 57 Hockanum Blvd Database Systems Minnie2345 1400 E. Bellows Database Systems Humpty

S_id Address Course Teaching_assistant3456 900 S. Detroit Cloud Computing Dumpty

Student_lecture2

S_id Course1234 Database Systems2345 Database Systems3456 Cloud Computing

Page 33: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 33© Praphamontripong

INTERSECT

(SELECT S_id FROM Student_lecture1) INTERSECT(SELECT S_id FROM Student_lecture2)

• Combine two tables• Each table must have the same number of columns• The columns must have similar / compatible data types • The columns in both tables must be in the same order• Tuples of the second table comes after the first

Student_lecture1S_id Address Course Teaching_assistant1234 57 Hockanum Blvd Database Systems Minnie2345 1400 E. Bellows Database Systems Humpty

S_id Address Course Teaching_assistant3456 900 S. Detroit Cloud Computing Dumpty1234 57 Hockanum Blvd Web Programming Lang. Mickey

Student_lecture2

S_id1234

Page 34: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 34© Praphamontripong

Queries Involving Multiple Relations

SELECT computingID, name, TAHiring.year, hourly_rate, hours_worked,FROM TAHiring, PayrateWHERE TAHiring.year = Payrate.year

• Combine the tables based on common columns

computingID name year hours_workedht1y Humpty 4 20dt2y Dumpty 3 20md3y Mickey 4 15mn4e Minnie 4 16dh5h Duhhuh 3 10

year hourly_rate4 123 10

TAHiring

Payrate

“Natural join”

computingID name year hourly_rate hours_workedht1y Humpty 4 12 20dt2y Dumpty 3 10 20md3y Mickey 4 12 15mn4e Minnie 4 12 16dh5h Duhhuh 3 10 10

Page 35: SQL - Basicsup3f/cs4750/slides/4750Lec09-SQL-basic.pdf · 1234 Database Systems 2345 Database Systems 3456 Cloud Computing 1234 Web Programming Lang. 5678 SoftwareAnalysis S_id Address

Spring 2020 – University of Virginia 35© Praphamontripong

Wrap-Up• Keep the number of tables small – reduce the number of

tables when you can (in many-to-one and one-to-many)

• Simple, commonly used SQL syntax

What’s next?

• More SQL