Title: IT420: Database Management and Organization
1IT420 Database Management and Organization
- SQL Structured Query Language
- 25 January 2006
- Adina Crainiceanu
- www.cs.usna.edu/adina
2Goals
3Relational Query Languages
- A major strength of the relational model
- supports simple, powerful querying of data
- Queries can be written intuitively, and the DBMS
is responsible for efficient evaluation. - The key precise semantics for relational queries
- Allows the optimizer to extensively re-order
operations, and still ensure that the answer does
not change
4SQL The Structured Query Language
- Developed by IBM (system R) in the 1970s
- Need for a standard since it is used by many
vendors - Standards
- SQL-86
- SQL-89 (minor revision)
- SQL-92 (major revision)
- SQL-99 (major extensions, current standard)
5SQL as a Data Sublanguage
- SQL is not a full featured programming language
as are C, C, and Java - SQL is a data sublanguage
- Create and process database data
- SQL is ubiquitous in enterprise-class DBMS
products - SQL programming is a critical skill
6SQL DDL and DML
- SQL statements can be divided into two
categories - Data definition language (DDL) statements
- Used for creating and modifying tables, views,
and other structures - CREATE, DROP, ALTER
- Data manipulation language (DML) statements.
- Used for queries and data modification
- INSERT, DELETE, UPDATE, SELECT
7SQL DDL Statements
8CREATE TABLE
- CREATE TABLE statement is used for creating
relations - Each column is described with three parts
- column name
- data type
- optional constraints
9CREATE TABLE Example
CREATE TABLE Students (StudentNumber
integer, StudentLastName char(18) NOT
NULL, StudentFirstName char(18) NOT NULL, Email
char(50), PhoneNumber char(18) )
10Constraints
- Constraints can be defined within the CREATE
TABLE statement, or they can be added to the
table after it is created using the ALTER table
statement - Five types of constraints
- NULL/NOT NULL
- PRIMARY KEY may not have null values
- UNIQUE may have null values
- CHECK
- FOREIGN KEY
11Constraints Examples
CREATE TABLE Students (StudentNumber
integer, StudentLastName char(18) NOT
NULL, StudentFirstName char(18) NOT NULL, Email
char(50), PhoneNumber char(18), PRIMARY KEY
(StudentNumber), UNIQUE (Email) )
12Default Values and Data Constraints
- Students table
- Default value for PhoneNumber 410-123-4567
- Email like _at_usna.edu
CREATE TABLE Students (StudentNumber integer,
StudentLastName char(18) NOT NULL,
StudentFirstName char(18) NOT NULL, Email
char(50), PhoneNumber char(18) DEFAULT
410-123-4567, PRIMARY KEY (StudentNumber),
UNIQUE(Email), CHECK (Email LIKE
_at_usna.edu) )
Syntax depends on DBMS!!!
13FOREIGN KEY Constraints
14FOREIGN KEY Constraints
CREATE TABLE Departments (DepartmentName
char(18), Phone char(18) NOT NULL,
Building char(18), Room integer, PRIMARY
KEY (DepartmentName) )
15FOREIGN KEY Constraints
CREATE TABLE Students (StudentNumber integer,
StudentLastName char(18) NOT NULL,
StudentFirstName char(18) NOT NULL, Email
char(50), PhoneNumber char(18),
MajorDepartmentName char(18), PRIMARY KEY
(StudentNumber), UNIQUE(Email), FOREIGN KEY
(MajorDepartmentName) REFERENCES Departments
(DepartmentName) ON DELETE SET NULL ON UPDATE
CASCADE )
- SQL/92 and SQL1999 support all 4 options on
deletes and updates. - Default is NO ACTION (delete/update is rejected)
- CASCADE (also delete all rows that refer to
deleted row) - SET NULL / SET DEFAULT (sets foreign key value of
referencing row)
16Implementing Cardinalities
17ALTER Statement
- ALTER statement changes
- table structure,
- properties, or
- constraints
- after the table has been created
18Adding and Dropping Columns
- The following statement will add a column named
BirthDate to the Students table - ALTER TABLE Students ADD COLUMN BirthDate
Datetime NULL - You can drop an existing column with the
statement - ALTER TABLE Students DROP COLUMN BirthDate
19Adding and Dropping Constraints
- ALTER can be used to add a constraint as follows
- ALTER TABLE Student ADD CONSTRAINT DepartmentFK
- FOREIGN KEY (MajorDepartmentName)
- REFERENCES Departments (DepartmentName)
- ON DELETE NO ACTION
- ON UPDATE CASCADE
-
- ALTER can be used to drop a constraint
- ALTER TABLE Student DROP CONSTRAINT DepartmentFK
20Removing Tables
- SQL DROP TABLE
- DROP TABLE Departments
- If there are constraints
- ALTER TABLE Students
- DROP CONSTRAINT DepartmentFK
- DROP TABLE Departments
-
21Class Exercise
22SQL DDL and DML
- Data definition language (DDL) statements
- Used for creating and modifying tables, views,
and other structures - CREATE, ALTER, DROP
- Data manipulation language (DML) statements.
- Used for queries and data modification
- INSERT, DELETE, UPDATE, SELECT
23INSERT Statement
- INSERT command
- INSERT INTO Students (StudentNumber,
StudentLastName, StudentFirstName) - VALUES (190, Smith', John)
- INSERT INTO Students VALUES(190, Smith, John,
jsmith_at_usna.edu, 410-431-3456) - Bulk INSERT
- INSERT INTO Students (StudentNumber,
StudentLastName, StudentFirstName, Email,
PhoneNumber) - SELECT
- FROM Second_Class_Students
24UPDATE Statement
- UPDATE command
- UPDATE Students
- SET PhoneNumber 410-123-4567
- WHERE StudentNumber 673
- BULK UPDATE command
- UPDATE Students
- SET PhoneNumber 410-123-4567
- WHERE StudentLAstName Doe
25DELETE Statement
- DELETE command
- DELETE FROM Students
- WHERE StudentNumber 190
- If you omit the WHERE clause, you will delete
every row in the table!
26The SQL SELECT Statement
- The fundamental framework for SQL query statement
is the SQL SELECT statement - SELECT ColumnName(s)
- FROM TableName(s)
- WHERE Conditions
27Specific Columns on One Table
- SELECT StudentNumber,StudentLastName
- FROM Students
28Specify Column Order
- SELECT StudentLastName,StudentNumber
- FROM Students
29The DISTINCT Keyword
- SELECT StudentLastName
- FROM Students
SELECT DISTINCT StudentLastName FROM Students
30Selecting All Columns The Asterisk () Keyword
31Specific Rows from One Table
- SELECT
- FROM Students
- WHERE StudentLastName Doe'
- NOTE SQL wants a plain ASCII single quote '
NOT !
32Specific Columns and Rows from One Table
- SELECT StudentNumber,
- StudentLastName,
- StudentFirstName
- FROM Students
- WHERE PhoneNumber NOT NULL