0% found this document useful (0 votes)
89 views38 pages

Data Base Chapter Seven

SQL is a standard language for accessing and manipulating databases. It allows users to define, manipulate, and query databases. The core components of SQL include DML (SELECT, INSERT, UPDATE, DELETE) to query and manipulate data, and DDL (CREATE, ALTER, DROP) to define and modify database structures. SQL statements use clauses like WHERE to filter query results and JOIN to combine data from multiple tables.

Uploaded by

Amanuel Derese
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
89 views38 pages

Data Base Chapter Seven

SQL is a standard language for accessing and manipulating databases. It allows users to define, manipulate, and query databases. The core components of SQL include DML (SELECT, INSERT, UPDATE, DELETE) to query and manipulate data, and DDL (CREATE, ALTER, DROP) to define and modify database structures. SQL statements use clauses like WHERE to filter query results and JOIN to combine data from multiple tables.

Uploaded by

Amanuel Derese
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 38

CHAPTER SEVEN

Introduction to SQL

SQL is a standard computer language for accessing and manipulating


databases.

What is SQL?
 SQL stands for Structured Query Language
 SQL allows you to access a database
 SQL is an ANSI standard computer language
 SQL can execute queries against a database
 SQL can retrieve data from a database
 SQL can insert new records in a database
 SQL can delete records from a database
 SQL can update records in a database
 SQL is easy to learn

SQL is a Standard - BUT....


SQL is an ANSI (American National Standards Institute) standard computer language
for accessing and manipulating database systems. SQL statements are used to
retrieve and update data in a database. SQL works with database programs like MS
Access, DB2, Informix, MS SQL Server, Oracle, Sybase, etc.
Unfortunately, there are many different versions of the SQL language, but to be in
compliance with the ANSI standard, they must support the same major keywords in
a similar manner (such as SELECT, UPDATE, DELETE, INSERT, WHERE, and others).
Note: Most of the SQL database programs also have their own proprietary
extensions in addition to the SQL standard!

SQL Database Tables


A database most often contains one or more tables. Each table is identified by a
name (e.g. "Customers" or "Orders"). Tables contain records (rows) with data.
Below is an example of a table called "Persons":
LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes

DBU Dep’t of IT instructor brhin k Page 1


Pettersen Kari Storgt 20 Stavanger

The table above contains three records (one for each person) and four columns
(LastName, FirstName, Address, and City.

SQL Queries
With SQL, we can query a database and have a result set returned.
A query like this:

SELECT LastName FROM Persons

Gives a result set like this:


LastName
Hansen
Svendson
Pettersen

Note: Some database systems require a semicolon at the end of the SQL statement.
We don't use the semicolon in our tutorials.

SQL Data Manipulation Language (DML)


SQL (Structured Query Language) is a syntax for executing queries. But the SQL
language also includes a syntax to update, insert, and delete records.
These query and update commands together form the Data Manipulation Language
(DML) part of SQL:
 SELECT - extracts data from a database table
 UPDATE - updates data in a database table
 DELETE - deletes data from a database table
 INSERT INTO - inserts new data into a database table

SQL Data Definition Language (DDL)


The Data Definition Language (DDL) part of SQL permits database tables to be
created or deleted. We can also define indexes (keys), specify links between tables,
and impose constraints between database tables.
The most important DDL statements in SQL are: 
 CREATE TABLE - creates a new database table

DBU Dep’t of IT instructor brhin k Page 2


 ALTER TABLE - alters (changes) a database table
 DROP TABLE - deletes a database table
 CREATE INDEX - creates an index (search key)
 DROP INDEX - deletes an index
SQL WHERE Clause
The WHERE clause is used to specify a selection criterion.

The WHERE Clause 


To conditionally select data from a table, a WHERE clause can be added to the
SELECT statement.
Syntax
SELECT column FROM table
WHERE column operator value

With the WHERE clause, the following operators can be used:


Operator Description
= Equal
<> Not equal
> Greater than
< Less than
>= Greater than or equal
<= Less than or equal
BETWEEN Between an inclusive range
LIKE Search for a pattern

Note: In some versions of SQL the <> operator may be written as !=


Using the WHERE Clause
To select only the persons living in the city "Sandnes", we add a WHERE clause to
the SELECT statement: 

SELECT * FROM Persons


WHERE City='Sandnes'

"Persons" table
LastName FirstName Address City Year
Hansen Ola Timoteivn 10 Sandnes 1951

DBU Dep’t of IT instructor brhin k Page 3


Svendson Tove Borgvn 23 Sandnes 1978
Svendson Stale Kaivn 18 Sandnes 1980
Pettersen Kari Storgt 20 Stavanger 1960

Result
LastName FirstName Address City Year
Hansen Ola Timoteivn 10 Sandnes 1951
Svendson Tove Borgvn 23 Sandnes 1978
Svendson Stale Kaivn 18 Sandnes 1980

Using Quotes
Note that we have used single quotes around the conditional values in the examples.
SQL uses single quotes around text values (most database systems will also accept
double quotes). Numeric values should not be enclosed in quotes.

For text values:

This is correct:
SELECT * FROM Persons WHERE FirstName='Tove'
This is wrong:
SELECT * FROM Persons WHERE FirstName=Tove

For numeric values:

This is correct:
SELECT * FROM Persons WHERE Year>1965
This is wrong:
SELECT * FROM Persons WHERE Year>'1965'

The LIKE Condition


The LIKE condition is used to specify a search for a pattern in a column.
Syntax
SELECT column FROM table

DBU Dep’t of IT instructor brhin k Page 4


WHERE column LIKE pattern

A "%" sign can be used to define wildcards (missing letters in the pattern) both
before and after the pattern.

Using LIKE
The following SQL statement will return persons with first names that start with an
'O':

SELECT * FROM Persons


WHERE FirstName LIKE 'O%'

The following SQL statement will return persons with first names that end with an
'a':

SELECT * FROM Persons


WHERE FirstName LIKE '%a'

The following SQL statement will return persons with first names that contain the
pattern 'la':

SELECT * FROM Persons


WHERE FirstName LIKE '%la%'

SQL INSERT INTO Statement


The INSERT INTO statement is used to insert new rows into a table.
Syntax
INSERT INTO table_name
VALUES (value1, value2,....)

You can also specify the columns for which you want to insert data:

INSERT INTO table_name (column1, column2,...)


VALUES (value1, value2,....)

Insert a New Row


This "Persons" table:
LastName FirstName Address City

DBU Dep’t of IT instructor brhin k Page 5


Pettersen Kari Storgt 20 Stavanger

And this SQL statement:

INSERT INTO Persons


VALUES ('Hetland', 'Camilla', 'Hagabakka 24', 'Sandnes')

Will give this result:


LastName FirstName Address City
Pettersen Kari Storgt 20 Stavanger
Hetland Camilla Hagabakka 24 Sandnes

Insert Data in Specified Columns


This "Persons" table:
LastName FirstName Address City
Pettersen Kari Storgt 20 Stavanger
Hetland Camilla Hagabakka 24 Sandnes

And This SQL statement:

INSERT INTO Persons (LastName, Address)


VALUES ('Rasmussen', 'Storgt 67')

Will give this result:


LastName FirstName Address City
Pettersen Kari Storgt 20 Stavanger
Hetland Camilla Hagabakka 24 Sandnes
Rasmussen Storgt 67

SQL UPDATE Statement


The UPDATE statement is used to modify the data in a table.
Syntax
UPDATE table_name

DBU Dep’t of IT instructor brhin k Page 6


SET column_name = new_value
WHERE column_name = some_value

Person:
LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Storgt 67

Update one Column in a Row


We want to add a first name to the person with a last name of "Rasmussen":

UPDATE Person SET FirstName = 'Nina'


WHERE LastName = 'Rasmussen'

Result:
LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Nina Storgt 67

Update several Columns in a Row


We want to change the address and add the name of the city:

UPDATE Person
SET Address = 'Stien 12', City = 'Stavanger'
WHERE LastName = 'Rasmussen'

Result:
LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Nina Stien 12 Stavanger

DBU Dep’t of IT instructor brhin k Page 7


SQL DELETE Statement
The DELETE statement is used to delete rows in a table.
Syntax
DELETE FROM table_name
WHERE column_name = some_value

Person:
LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Nina Stien 12 Stavanger

Delete a Row
"Nina Rasmussen" is going to be deleted:

DELETE FROM Person WHERE LastName = 'Rasmussen'

Result
LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger

Delete All Rows


It is possible to delete all rows in a table without deleting the table. This means that
the table structure, attributes, and indexes will be intact:

DELETE FROM table_name


or
DELETE * FROM table_name

SQL ORDER BY
The ORDER BY keyword is used to sort the result.

Sort the Rows


The ORDER BY clause is used to sort the rows.

DBU Dep’t of IT instructor brhin k Page 8


Orders:
Company OrderNumber
Sega 3412
ABC Shop 5678
W3Schools 2312
W3Schools 6798

Example
To display the companies in alphabetical order:

SELECT Company, OrderNumber FROM Orders


ORDER BY Company

Result:
Company OrderNumber
ABC Shop 5678
Sega 3412
W3Schools 6798
W3Schools 2312

Example
To display the companies in alphabetical order AND the ordernumbers in numerical
order:

SELECT Company, OrderNumber FROM Orders


ORDER BY Company, OrderNumber

Result:
Company OrderNumber
ABC Shop 5678
Sega 3412
W3Schools 2312
W3Schools 6798

DBU Dep’t of IT instructor brhin k Page 9


Example
To display the companies in reverse alphabetical order:

SELECT Company, OrderNumber FROM Orders


ORDER BY Company DESC

Result:
Company OrderNumber
W3Schools 6798
W3Schools 2312
Sega 3412
ABC Shop 5678

Example
To display the companies in reverse alphabetical order AND the ordernumbers in
numerical order:

SELECT Company, OrderNumber FROM Orders


ORDER BY Company DESC, OrderNumber ASC

Result:
Company OrderNumber
W3Schools 2312
W3Schools 6798
Sega 3412
ABC Shop 5678

SQL AND & OR


AND & OR
AND and OR join two or more conditions in a WHERE clause.
The AND operator displays a row if ALL conditions listed are true. The OR operator
displays a row if ANY of the conditions listed are true.

Original Table (used in the examples)


LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes

DBU Dep’t of IT instructor brhin k Page 10


Svendson Tove Borgvn 23 Sandnes
Svendson Stephen Kaivn 18 Sandnes

Example
Use AND to display each person with the first name equal to "Tove", and the last
name equal to "Svendson":

SELECT * FROM Persons


WHERE FirstName='Tove'
AND LastName='Svendson'

Result:
LastName FirstName Address City
Svendson Tove Borgvn 23 Sandnes

Example
Use OR to display each person with the first name equal to "Tove", or the last name
equal to "Svendson":

SELECT * FROM Persons


WHERE firstname='Tove'
OR lastname='Svendson'

Result:
LastName FirstName Address City
Svendson Tove Borgvn 23 Sandnes
Svendson Stephen Kaivn 18 Sandnes

Example
You can also combine AND and OR (use parentheses to form complex
expressions):
SELECT * FROM Persons WHERE
(FirstName='Tove' OR FirstName='Stephen')
AND LastName='Svendson'
Result:

DBU Dep’t of IT instructor brhin k Page 11


LastName FirstName Address City
Svendson Tove Borgvn 23 Sandnes
Svendson Stephen Kaivn 18 Sandnes

SQL IN
IN
The IN operator may be used if you know the exact value you want to return for at
least one of the columns.

SELECT column_name FROM table_name


WHERE column_name IN (value1,value2,..)

Original Table (used in the examples)


LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Nordmann Anna Neset 18 Sandnes
Pettersen Kari Storgt 20 Stavanger
Svendson Tove Borgvn 23 Sandnes

Example 1
To display the persons with LastName equal to "Hansen" or "Pettersen", use the
following SQL:

SELECT * FROM Persons


WHERE LastName IN ('Hansen','Pettersen')

Result:
LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Pettersen Kari Storgt 20 Stavanger

DBU Dep’t of IT instructor brhin k Page 12


SQL BETWEEN
BETWEEN ... AND
The BETWEEN ... AND operator selects a range of data between two values. These
values can be numbers, text, or dates.

SELECT column_name FROM table_name


WHERE column_name
BETWEEN value1 AND value2

Original Table (used in the examples)


LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Nordmann Anna Neset 18 Sandnes
Pettersen Kari Storgt 20 Stavanger
Svendson Tove Borgvn 23 Sandnes

SQL Alias

With SQL, aliases can be used for column names and table names.

Column Name Alias


The syntax is:

SELECT column AS column_alias FROM table

Table Name Alias


The syntax is:

SELECT column FROM table AS table_alias

Example: Using a Column Alias


This table (Persons):
LastName FirstName Address City

DBU Dep’t of IT instructor brhin k Page 13


Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Pettersen Kari Storgt 20 Stavanger
And this SQL:

SELECT LastName AS Family, FirstName AS Name


FROM Persons

Returns this result:


Family Name
Hansen Ola
Svendson Tove
Pettersen Kari

Example: Using a Table Alias


This table (Persons):
LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Pettersen Kari Storgt 20 Stavanger

And this SQL:

SELECT LastName, FirstName


FROM Persons AS Employees

Returns this result:


Table Employees:
LastName FirstName
Hansen Ola
Svendson Tove
Pettersen Kari

DBU Dep’t of IT instructor brhin k Page 14


SQL JOIN
Joins and Keys
Sometimes we have to select data from two or more tables to make our result
complete. We have to perform a join.
Tables in a database can be related to each other with keys. A primary key is a
column with a unique value for each row. Each primary key value must be unique
within the table. The purpose is to bind data together, across tables, without
repeating all of the data in every table.
In the "Employees" table below, the "Employee_ID" column is the primary key,
meaning that no two rows can have the same Employee_ID. The Employee_ID
distinguishes two persons even if they have the same name.
When you look at the example tables below, notice that: 
 The "Employee_ID" column is the primary key of the "Employees" table
 The "Prod_ID" column is the primary key of the "Orders" table
 The "Employee_ID" column in the "Orders" table is used to refer to the
persons in the "Employees" table without using their names
Employees:
Employee_ID Name
01 Hansen, Ola
02 Svendson, Tove
03 Svendson, Stephen
04 Pettersen, Kari

Orders:
Prod_ID Product Employee_ID
234 Printer 01
657 Table 03
865 Chair 03

Referring to Two Tables


We can select data from two tables by referring to two tables, like this:
Example
Who has ordered a product, and what did they order?

SELECT Employees.Name, Orders.Product

DBU Dep’t of IT instructor brhin k Page 15


FROM Employees, Orders
WHERE Employees.Employee_ID=Orders.Employee_ID
Result
Name Product
Hansen, Ola Printer
Svendson, Stephen Table
Svendson, Stephen Chair

Example
Who ordered a printer?

SELECT Employees.Name
FROM Employees, Orders
WHERE Employees.Employee_ID=Orders.Employee_ID
AND Orders.Product='Printer'
Result
Name
Hansen, Ola

SQL UNION
The UNION command is used to select related information from two tables, much like
the JOIN command. However, when using the UNION command all selected columns
need to be of the same data type.
Note: With UNION, only distinct values are selected.

SQL Statement 1
UNION
SQL Statement 2

Employees_Norway:
E_ID E_Name
01 Hansen, Ola
02 Svendson, Tove
03 Svendson, Stephen
04 Pettersen, Kari

DBU Dep’t of IT instructor brhin k Page 16


Employees_USA:
E_ID E_Name
01 Turner, Sally
02 Kent, Clark
03 Svendson, Stephen
04 Scott, Stephen

Using the UNION Command


Example
List all different employee names in Norway and USA:

SELECT E_Name FROM Employees_Norway


UNION
SELECT E_Name FROM Employees_USA
Result
E_Name
Hansen, Ola
Svendson, Tove
Svendson, Stephen
Pettersen, Kari
Turner, Sally
Kent, Clark
Scott, Stephen

Note: This command cannot be used to list all employees in Norway and USA. In the
example above we have two employees with equal names, and only one of them is
listed. The UNION command only selects distinct values.

SQL Create Database, Table, and Index


Create a Database
To create a database:

CREATE DATABASE database_name

DBU Dep’t of IT instructor brhin k Page 17


Create a Table
To create a table in a database:

CREATE TABLE table_name


(
column_name1 data_type,
column_name2 data_type,
.......
)

Example
This example demonstrates how you can create a table named "Person", with four
columns. The column names will be "LastName", "FirstName", "Address", and "Age":

CREATE TABLE Person


(
LastName varchar,
FirstName varchar,
Address varchar,
Age int
)

This example demonstrates how you can specify a maximum length for some
columns:

CREATE TABLE Person


(
LastName varchar(30),
FirstName varchar,
Address varchar,
Age int(3)
)

DBU Dep’t of IT instructor brhin k Page 18


The data type specifies what type of data the column can hold. The table below
contains the most common data types in SQL:
Data Type Description
integer(size) Hold integers only. The maximum number of digits are
int(size) specified in parenthesis.
smallint(size)
tinyint(size)
decimal(size,d) Hold numbers with fractions. The maximum number of
numeric(size,d) digits are specified in "size". The maximum number of
digits to the right of the decimal is specified in "d".
char(size) Holds a fixed length string (can contain letters, numbers,
and special characters). The fixed size is specified in
parenthesis.
varchar(size) Holds a variable length string (can contain letters,
numbers, and special characters). The maximum size is
specified in parenthesis.
date(yyyymmdd) Holds a date

SQL Constraints
SQL constraints  are used to specify rules for the data in a table.

 If there is any violation between the constraint and the data action, the action is aborted by
the constraint.

Constraints can be specified when the table is created (inside the CREATE TABLE statement)


or after the table is created (inside the ALTER TABLE statement).

SQL CREATE TABLE + CONSTRAINT Syntax

CREATE TABLE table_name
(
column_name1 data_type(size) constraint_name,
column_name2 data_type(size) constraint_name,
column_name3 data_type(size) constraint_name,
....
);

 In SQL, we have the following constraints:

DBU Dep’t of IT instructor brhin k Page 19


 NOT NULL - Indicates that a column cannot store NULL value
 UNIQUE - Ensures that each row for a column must have a unique value
 PRIMARY KEY  - A combination of a NOT NULL and UNIQUE. Ensures that a column (or
combination of two or more columns) have an unique identity which helps to find a
particular record in a table more easily and quickly
 FOREIGN KEY  - Ensure the referential integrity of the data in one table to match
values in another table
 CHECK - Ensures that the value in a column meets a specific condition
 DEFAULT - Specifies a default value when specified none for this column

By default, a table column can hold NULL values

SQL NOT NULL Constraint


 The NOT NULL constraint enforces a column to NOT accept NULL values.
 The NOT NULL constraint enforces a field to always contain a value. This means that
you cannot insert a new record, or update a record without adding a value to this field.
 The following SQL enforces the "P_Id" column and the "LastName" column to not
accept NULL values:
 Example
 CREATE TABLE PersonsNotNull
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

SQL UNIQUE Constraint


 The UNIQUE constraint uniquely identifies each record in a database table.
 The UNIQUE and PRIMARY KEY constraints both provide a guarantee for uniqueness
for a column or set of columns.
 A PRIMARY KEY constraint automatically has a UNIQUE constraint defined on it.
 Note that you can have many UNIQUE constraints per table, but only one PRIMARY
KEY constraint per table.

SQL UNIQUE Constraint on CREATE TABLE


The following SQL creates a UNIQUE constraint on the "P_Id" column when the
"Persons" table is created:
 SQL Server / Oracle / MS Access:
CREATE TABLE PersonsUnique
(
P_Id int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
 MySQL:

DBU Dep’t of IT instructor brhin k Page 20


CREATE TABLE PersonsUnique
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (P_Id)
)

SQL PRIMARY KEY Constraint


 The PRIMARY KEY constraint uniquely identifies each record in a database table.
 Primary keys must contain unique values.
 A primary key column cannot contain NULL values.
 Each table should have a primary key, and each table can have only ONE primary key.

SQL PRIMARY KEY Constraint on CREATE TABLE


 The following SQL creates a PRIMARY KEY on the "P_Id" column when the "Persons"
table is created:
 MySQL:
 CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
)
 SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
P_Id int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
SQL PRIMARY KEY Constraint on ALTER TABLE

 To create a PRIMARY KEY constraint on the "P_Id" column when the table is already
created, use the following SQL:
MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD PRIMARY KEY (P_Id)

To DROP a PRIMARY KEY Constraint


 To drop a PRIMARY KEY constraint, use the following SQL:
MySQL:
ALTER TABLE Persons
DROP PRIMARY KEY
SQL Server / Oracle / MS Access:

DBU Dep’t of IT instructor brhin k Page 21


ALTER TABLE Persons
DROP CONSTRAINT pk_PersonID

SQL FOREIGN KEY Constraint


A FOREIGN KEY in one table points to a PRIMARY KEY in another table.

Let's illustrate the foreign key with an example. Look at the following two tables:

Note that the "P_Id" column in the "Orders" table points to the "P_Id" column in the "Persons"
table.

The "P_Id" column in the "Persons" table is the PRIMARY KEY in the "Persons" table.

The "P_Id" column in the "Orders" table is a FOREIGN KEY in the "Orders" table.

 The FOREIGN KEY constraint is used to prevent actions that would destroy links
between tables.
 The FOREIGN KEY constraint also prevents invalid data from being inserted into the
foreign key column, because it has to be one of the values contained in the table it
points to.

SQL FOREIGN KEY Constraint on CREATE TABLE


The following SQL creates a FOREIGN KEY on the "P_Id" column when the "Orders" table is
created:

MySQL:

CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Orders


(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)

SQL FOREIGN KEY Constraint on ALTER TABLE


To create a FOREIGN KEY constraint on the "P_Id" column when the "Orders" table is already
created, use the following SQL:

MySQL / SQL Server / Oracle / MS Access:

DBU Dep’t of IT instructor brhin k Page 22


ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

To DROP a FOREIGN KEY Constraint


To drop a FOREIGN KEY constraint, use the following SQL:

MySQL:

ALTER TABLE Orders


DROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access:

ALTER TABLE Orders


DROP CONSTRAINT fk_PerOrders

SQL CHECK Constraint


The CHECK constraint is used to limit the value range that can be placed in a
column.

If you define a CHECK constraint on a single column it allows only certain values for
this column.

If you define a CHECK constraint on a table it can limit the values in certain columns
based on values in other columns in the row.

SQL CHECK Constraint on CREATE TABLE


The following SQL creates a CHECK constraint on the "P_Id" column when the
"Persons" table is created. The CHECK constraint specifies that the column "P_Id"
must only include integers greater than 0.

MySQL:

CREATE TABLE Persons


(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (P_Id>0)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Persons


(
P_Id int NOT NULL CHECK (P_Id>0),

DBU Dep’t of IT instructor brhin k Page 23


LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

To allow naming of a CHECK constraint, and for defining a CHECK constraint on


multiple columns, use the following SQL syntax:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons


(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')
)

SQL CHECK Constraint on ALTER TABLE


To create a CHECK constraint on the "P_Id" column when the table is already
created, use the following SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons


ADD CHECK (P_Id>0)

To allow naming of a CHECK constraint, and for defining a CHECK constraint on


multiple columns, use the following SQL syntax:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons


ADD CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')

To DROP a CHECK Constraint


To drop a CHECK constraint, use the following SQL:

SQL Server / Oracle / MS Access:

ALTER TABLE Persons


DROP CONSTRAINT chk_Person

MySQL:

ALTER TABLE Persons


DROP CHECK chk_Person

DBU Dep’t of IT instructor brhin k Page 24


SQL DEFAULT Constraint
The DEFAULT constraint is used to insert a default value into a column.

The default value will be added to all new records, if no other value is specified.

SQL DEFAULT Constraint on CREATE TABLE

The following SQL creates a DEFAULT constraint on the "City" column when the
"Persons" table is created:

My SQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons


(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT 'Sandnes'
)

The DEFAULT constraint can also be used to insert system values, by using functions
like GETDATE():

CREATE TABLE Orders


(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
OrderDate date DEFAULT GETDATE()
)

SQL DEFAULT Constraint on ALTER TABLE

To create a DEFAULT constraint on the "City" column when the table is already
created, use the following SQL:

MySQL:

ALTER TABLE Persons


ALTER City SET DEFAULT 'SANDNES'

SQL Server / MS Access:

ALTER TABLE Persons


ALTER COLUMN City SET DEFAULT 'SANDNES'

Oracle:

DBU Dep’t of IT instructor brhin k Page 25


ALTER TABLE Persons
MODIFY City DEFAULT 'SANDNES'

To DROP a DEFAULT Constraint

To drop a DEFAULT constraint, use the following SQL:

MySQL:

ALTER TABLE Persons


ALTER City DROP DEFAULT

SQL Server / Oracle / MS Access:

ALTER TABLE Persons


ALTER COLUMN City DROP DEFAULT

Create Index
Indices are created in an existing table to locate rows more quickly and efficiently. It
is possible to create an index on one or more columns of a table, and each index is
given a name. The users cannot see the indexes, they are just used to speed up
queries. 
Note: Updating a table containing indexes takes more time than updating a table
without, this is because the indexes also need an update. So, it is a good idea to
create indexes only on columns that are often used for a search.
A Unique Index
Creates a unique index on a table. A unique index means that two rows cannot have
the same index value.

CREATE UNIQUE INDEX index_name


ON table_name (column_name)

The "column_name" specifies the column you want indexed.


A Simple Index
Creates a simple index on a table. When the UNIQUE keyword is omitted, duplicate
values are allowed.

CREATE INDEX index_name

DBU Dep’t of IT instructor brhin k Page 26


ON table_name (column_name)

The "column_name" specifies the column you want indexed.


Example
This example creates a simple index, named "PersonIndex", on the LastName field of
the Person table:

CREATE INDEX PersonIndex


ON Person (LastName)

If you want to index the values in a column in descending order, you can add the
reserved word
DESC after the column name

CREATE INDEX PersonIndex


ON Person (LastName DESC)

If you want to index more than one column you can list the column names within the
parentheses, separated by commas:

CREATE INDEX PersonIndex


ON Person (LastName, FirstName)

SQL Drop Index, Table and Database


Drop Index
You can delete an existing index in a table with the DROP INDEX statement.
Syntax for Microsoft SQLJet (and Microsoft Access):

DROP INDEX index_name ON table_name

Syntax for MS SQL Server:

DROP INDEX table_name.index_name

Syntax for IBM DB2 and Oracle:

Delete a Table or Database

DBU Dep’t of IT instructor brhin k Page 27


To delete a table (the table structure, attributes, and indexes will also be deleted):

DROP TABLE table_name

To delete a database:

DROP DATABASE database_name

Truncate a Table
What if we only want to get rid of the data inside a table, and not the table itself?
Use the TRUNCATE TABLE command (deletes only the data inside the table):

TRUNCATE TABLE table_name

SQL ALTER TABLE


The ALTER TABLE statement is used to add or drop columns in an existing table.

ALTER TABLE table_name


ADD column_name datatype
ALTER TABLE table_name
DROP COLUMN column_name
Note: Some database systems don't allow the dropping of a column in a database
table (DROP COLUMN column_name).

Person:
LastName FirstName Address
Pettersen Kari Storgt 20

Example
To add a column named "City" in the "Person" table:

ALTER TABLE Person ADD City varchar(30)


Result:
LastName FirstName Address City
Pettersen Kari Storgt 20

Example
To drop the "Address" column in the "Person" table:

DBU Dep’t of IT instructor brhin k Page 28


ALTER TABLE Person DROP COLUMN Address

Result:
LastName FirstName City
Pettersen Kari

SQL Functions
SQL has a lot of built-in functions for counting and calculations.

Function Syntax
The syntax for built-in SQL functions is:

SELECT function(column) FROM table

Types of Functions
There are several basic types and categories of functions in SQL. The basic types of
functions are:
 Aggregate Functions
 Scalar functions
Aggregate functions
Aggregate functions operate against a collection of values, but return a single value.
Note: If used among many other expressions in the item list of a SELECT statement,
the SELECT must have a GROUP BY clause!!
"Persons" table (used in most examples)
Name Age
Hansen, Ola 34
Svendson, Tove 45
Pettersen, Kari 19

Aggregate functions in SQL Server


Function Description
AVG(column) Returns the average value of a column

BINARY_CHECKSUM
CHECKSUM
CHECKSUM_AGG
COUNT(column) Returns the number of rows (without a NULL value) of

DBU Dep’t of IT instructor brhin k Page 29


a column
COUNT(*) Returns the number of selected rows

COUNT(DISTINCT column) Returns the number of distinct results

FIRST(column) Returns the value of the first record in a specified field


(not supported in SQLServer2K)
LAST(column) Returns the value of the last record in a specified field
(not supported in SQLServer2K)
MAX(column) Returns the highest value of a column

MIN(column) Returns the lowest value of a column

STDEV(column)
STDEVP(column)
SUM(column) Returns the total sum of a column

VAR(column)
VARP(column)

SQL GROUP BY and HAVING


Aggregate functions (like SUM) often need an added GROUP BY
functionality.

GROUP BY...
GROUP BY... was added to SQL because aggregate functions (like SUM) return the
aggregate of all column values every time they are called, and without the GROUP
BY function it was impossible to find the sum for each individual group of column
values.
The syntax for the GROUP BY function is:

SELECT column,SUM(column) FROM table GROUP BY column

GROUP BY Example
This "Sales" Table:
Company Amount
W3Schools 5500
IBM 4500
W3Schools 7100

DBU Dep’t of IT instructor brhin k Page 30


And This SQL:

SELECT Company, SUM(Amount) FROM Sales

Returns this result:


Company SUM(Amount)
W3Schools 17100
IBM 17100
W3Schools 17100

The above code is invalid because the column returned is not part of an aggregate. A
GROUP BY clause will solve this problem:

SELECT Company,SUM(Amount) FROM Sales


GROUP BY Company

Returns this result:


Company SUM(Amount)
W3Schools 12600
IBM 4500

HAVING...
HAVING... was added to SQL because the WHERE keyword could not be used against
aggregate functions (like SUM), and without HAVING... it would be impossible to test
for result conditions.
The syntax for the HAVING function is:

SELECT column,SUM(column) FROM table


GROUP BY column
HAVING SUM(column) condition value

This "Sales" Table:


Company Amount
W3Schools 5500
IBM 4500
W3Schools 7100
This SQL:

DBU Dep’t of IT instructor brhin k Page 31


SELECT Company,SUM(Amount) FROM Sales
GROUP BY Company
HAVING SUM(Amount)>10000

Returns this result


Company SUM(Amount)
W3Schools 12600

DROP
The DROP TABLE Statement
The DROP TABLE statement is used to delete a table.

DROP TABLE table_name

The DROP DATABASE Statement


The DROP DATABASE statement is used to delete a database.

DROP DATABASE database_name

The TRUNCATE TABLE Statement


What if we only want to delete the data inside the table, and not the table itself?

Then, use the TRUNCATE TABLE statement:

TRUNCATE TABLE table_name

The ALTER TABLE Statement


The ALTER TABLE statement is used to add, delete, or modify columns in an existing
table.

SQL ALTER TABLE Syntax


To add a column in a table, use the following syntax:

ALTER TABLE table_name


ADD column_name datatype

To delete a column in a table, use the following syntax (notice that some database
systems don't allow deleting a column):

DBU Dep’t of IT instructor brhin k Page 32


ALTER TABLE table_name
DROP COLUMN column_name

To change the data type of a column in a table, use the following syntax:

SQL Server / MS Access:

ALTER TABLE table_name


ALTER COLUMN column_name datatype

My SQL / Oracle:

ALTER TABLE table_name


MODIFY COLUMN column_name datatype

SQL ALTER TABLE Example


Now we want to add a column named "DateOfBirth" in the "Persons" table.

We use the following SQL statement:

ALTER TABLE Persons


ADD DateOfBirth date

Notice that the new column, "DateOfBirth", is of type date and is going to hold a
date. The data type specifies what type of data the column can hold. For a complete
reference of all the data types available in MS Access, MySQL, and SQL Server, go to
our complete Data Types reference.

Change Data Type Example


Now we want to change the data type of the column named "DateOfBirth" in the
"Persons" table.

We use the following SQL statement:

ALTER TABLE Persons


ALTER COLUMN DateOfBirth year

Notice that the "DateOfBirth" column is now of type year and is going to hold a year
in a two-digit or four-digit format.

DROP COLUMN
Next, we want to delete the column named "DateOfBirth" in the "Persons" table.

We use the following SQL statement:

ALTER TABLE Persons


DROP COLUMN DateOfBirth

DBU Dep’t of IT instructor brhin k Page 33


SQL AUTO INCREMENT Field

Auto-increment allows a unique number to be generated when a new


record is inserted into a table.

AUTO INCREMENT a Field


Very often we would like the value of the primary key field to be created
automatically every time a new record is inserted.

We would like to create an auto-increment field in a table.

Syntax for MySQL


The following SQL statement defines the "ID" column to be an auto-increment
primary key field in the "Persons" table:

CREATE TABLE Persons


(
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID)
)

MySQL uses the AUTO_INCREMENT keyword to perform an auto-increment feature.

By default, the starting value for AUTO_INCREMENT is 1, and it will increment by 1


for each new record.

To let the AUTO_INCREMENT sequence start with another value, use the following
SQL statement:

ALTER TABLE Persons AUTO_INCREMENT=100

To insert a new record into the "Persons" table, we will NOT have to specify a value
for the "ID" column (a unique value will be added automatically):

INSERT INTO Persons (FirstName,LastName)


VALUES ('Lars','Monsen')

The SQL statement above would insert a new record into the "Persons" table. The
"ID" column would be assigned a unique value. The "FirstName" column would be set
to "Lars" and the "LastName" column would be set to "Monsen".

Syntax for SQL Server

DBU Dep’t of IT instructor brhin k Page 34


The following SQL statement defines the "ID" column to be an auto-increment
primary key field in the "Persons" table:

CREATE TABLE Persons


(
ID int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

The MS SQL Server uses the IDENTITY keyword to perform an auto-increment


feature.

In the example above, the starting value for IDENTITY is 1, and it will increment by
1 for each new record.

Tip: To specify that the "ID" column should start at value 10 and increment by 5,
change it to IDENTITY(10,5).

To insert a new record into the "Persons" table, we will NOT have to specify a value
for the "ID" column (a unique value will be added automatically):

INSERT INTO Persons (FirstName,LastName)


VALUES ('Lars','Monsen')

The SQL statement above would insert a new record into the "Persons" table. The
"ID" column would be assigned a unique value. The "FirstName" column would be set
to "Lars" and the "LastName" column would be set to "Monsen".

Syntax for Access


The following SQL statement defines the "ID" column to be an auto-increment
primary key field in the "Persons" table:

CREATE TABLE Persons


(
ID Integer PRIMARY KEY AUTOINCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

The MS Access uses the AUTOINCREMENT keyword to perform an auto-increment


feature.

By default, the starting value for AUTOINCREMENT is 1, and it will increment by 1 for
each new record.

DBU Dep’t of IT instructor brhin k Page 35


Tip: To specify that the "ID" column should start at value 10 and increment by 5,
change the autoincrement to AUTOINCREMENT(10,5).

To insert a new record into the "Persons" table, we will NOT have to specify a value
for the "ID" column (a unique value will be added automatically):

INSERT INTO Persons (FirstName,LastName)


VALUES ('Lars','Monsen')

The SQL statement above would insert a new record into the "Persons" table. The
"P_Id" column would be assigned a unique value. The "FirstName" column would be
set to "Lars" and the "LastName" column would be set to "Monsen".

Syntax for Oracle


In Oracle the code is a little bit more tricky.

You will have to create an auto-increment field with the sequence object (this object
generates a number sequence).

Use the following CREATE SEQUENCE syntax:

CREATE SEQUENCE seq_person


MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10

The code above creates a sequence object called seq_person, that starts with 1 and
will increment by 1. It will also cache up to 10 values for performance. The cache
option specifies how many sequence values will be stored in memory for faster
access.

To insert a new record into the "Persons" table, we will have to use the nextval
function (this function retrieves the next value from seq_person sequence):

INSERT INTO Persons (ID,FirstName,LastName)


VALUES (seq_person.nextval,'Lars','Monsen')

The SQL statement above would insert a new record into the "Persons" table. The
"ID" column would be assigned the next number from the seq_person sequence. The
"FirstName" column would be set to "Lars" and the "LastName" column would be set
to "Monsen".

SQL CREATE VIEW Statement


A view is a virtual table based on the result-set of a SELECT statement.

What is a View?

DBU Dep’t of IT instructor brhin k Page 36


In SQL, a VIEW is a virtual table based on the result-set of a SELECT statement.
A view contains rows and columns, just like a real table. The fields in a view are
fields from one or more real tables in the database. You can add SQL functions,
WHERE, and JOIN statements to a view and present the data as if the data were
coming from a single table.
Note: The database design and structure will NOT be affected by the functions,
where, or join statements in a view.
Syntax
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

Note: The database does not store the view data! The database engine recreates the
data, using the view's SELECT statement, every time a user queries a view.

Using Views
A view could be used from inside a query, a stored procedure, or from inside another
view. By adding functions, joins, etc., to a view, it allows you to present exactly the
data you want to the user.
The sample database Northwind has some views installed by default. The view
"Current Product List" lists all active products (products that are not discontinued)
from the Products table. The view is created with the following SQL:

CREATE VIEW [Current Product List] AS


SELECT ProductID,ProductName
FROM Products
WHERE Discontinued=No

We can query the view above as follows:

SELECT * FROM [Current Product List]

DBU Dep’t of IT instructor brhin k Page 37


Another view from the Northwind sample database selects every product in the
Products table that has a unit price that is higher than the average unit price:

CREATE VIEW [Products Above Average Price] AS


SELECT ProductName,UnitPrice
FROM Products
WHERE UnitPrice>(SELECT AVG(UnitPrice) FROM Products)

We can query the view above as follows:

SELECT * FROM [Products Above Average Price]

Another example view from the Northwind database calculates the total sale for each
category in 1997. Note that this view select its data from another view called
"Product Sales for 1997":

CREATE VIEW [Category Sales For 1997] AS


SELECT DISTINCT CategoryName,Sum(ProductSales) AS CategorySales
FROM [Product Sales for 1997]
GROUP BY CategoryName

We can query the view above as follows:

SELECT * FROM [Category Sales For 1997]

We can also add a condition to the query. Now we want to see the total sale only for
the category "Beverages":

SELECT * FROM [Category Sales For 1997]


WHERE CategoryName='Beverages'

DBU Dep’t of IT instructor brhin k Page 38

You might also like