SQL Is A Standard Language For Accessing and Manipulating Databases
SQL Is A Standard Language For Accessing and Manipulating Databases
SQL
What is SQL?
Although SQL is an ANSI (American National Standards Institute) standard, there are many different versions of
the SQL language.
However, to be compliant with the ANSI standard, they all support at least the major commands (such as SELECT,
UPDATE, DELETE, INSERT, WHERE) in a similar manner.
Note: Most of the SQL database programs also have their own proprietary extensions in addition to the SQL
standard!
To build a web site that shows some data from a database, you will need the following:
RDBMS
A table is a collections of related data entries and it consists of columns and rows.
SQL Syntax
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.
The table above contains three records (one for each person) and five columns (P_Id, LastName, FirstName,
Address, and City).
SQL Statements
Most of the actions you need to perform on a database are done with SQL statements.
The following SQL statement will select all the records in the "Persons" table:
In this tutorial we will teach you all about the different SQL statements.
Some database systems require a semicolon at the end of each SQL statement.
Semicolon is the standard way to separate each SQL statement in database systems that allow more than one SQL
statement to be executed in the same call to the server.
We are using MS Access and SQL Server 2000 and we do not have to put a semicolon after each SQL statement,
but some database programs force you to use it.
SQL can be divided into two parts: The Data Manipulation Language (DML) and the Data Definition Language
(DDL).
The query and update commands form the DML part of SQL:
The DDL part of SQL permits database tables to be created or deleted. It also define indexes (keys), specify links
between tables, and impose constraints between tables. The most important DDL statements in SQL are:
SQL SELECT Statement
This chapter will explain the SELECT and the SELECT * statements.
and
Now we want to select the content of the columns named "LastName" and "FirstName" from the table above.
LastName FirstName
Hansen Ola
Svendson Tove
Pettersen Kari
SELECT * Example
Now we want to select all the columns from the "Persons" table.
Navigation in a Result-set
Most database software systems allow navigation in the result-set with programming functions, like: Move-To-
First-Record, Get-Record-Content, Move-To-Next-Record, etc.
Programming functions like these are not a part of this tutorial. To learn about accessing data with function calls,
please visit our ADO tutorial or our PHP tutorial.
SQL SELECT DISTINCT Statement
In a table, some of the columns may contain duplicate values. This is not a problem, however, sometimes you will
want to list only the different (distinct) values in a table.
The DISTINCT keyword can be used to return only distinct (different) values.
Now we want to select only the distinct values from the column named "City" from the table above.
We use the following SELECT statement:
City
Sandnes
Stavanger
SQL WHERE Clause
The WHERE clause is used to extract only those records that fulfill a specified criterion.
Now we want to select only the persons living in the city "Sandnes" from the table above.
SQL uses single quotes around text values (most database systems will also accept double quotes).
This is correct:
This is wrong:
This is correct:
This is wrong:
Operator Description
= Equal
<> Not equal
IN If you know the exact value you want to return for at least one of the columns
The AND & OR operators are used to filter records based on more than one condition.
The AND operator displays a record if both the first condition and the second condition is true.
The OR operator displays a record if either the first condition or the second condition is true.
Now we want to select only the persons with the first name equal to "Tove" AND the last name equal to
"Svendson":
We use the following SELECT statement:
OR Operator Example
Now we want to select only the persons with the first name equal to "Tove" OR the first name equal to "Ola":
You can also combine AND and OR (use parenthesis to form complex expressions).
Now we want to select only the persons with the last name equal to "Svendson" AND the first name equal to
"Tove" OR to "Ola":
SQL ORDER BY Keyword
If you want to sort the records in a descending order, you can use the DESC keyword.
ORDER BY Example
Now we want to select all the persons from the table above, however, we want to sort the persons by their last
name.
We use the following SELECT statement:
Now we want to select all the persons from the table above, however, we want to sort the persons descending by
their last name.
SQL INSERT INTO Statement
The first form doesn't specify the column names where the data will be inserted, only their values:
The second form specifies both the column names and the values to be inserted:
The following SQL statement will add a new row, but only add data in the "P_Id", "LastName" and the "FirstName"
columns:
5 Tjessem Jakob
« Chapter »
SQL UPDATE Statement
Note: Notice the WHERE clause in the UPDATE syntax. The WHERE clause specifies which record or records that
should be updated. If you omit the WHERE clause, all records will be updated!
5 Tjessem Jakob
Now we want to update the person "Tjessem, Jakob" in the "Persons" table.
UPDATE Persons
SET Address='Nissestien 67', City='Sandnes'
WHERE LastName='Tjessem' AND FirstName='Jakob'
Be careful when updating records. If we had omitted the WHERE clause in the example above, like this:
UPDATE Persons
SET Address='Nissestien 67', City='Sandnes'
SQL DELETE Statement
Note: Notice the WHERE clause in the DELETE syntax. The WHERE clause specifies which record or records that
should be deleted. If you omit the WHERE clause, all records will be deleted!
Now we want to delete the person "Tjessem, Jakob" in the "Persons" table.
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:
or
Note: Be very careful when deleting records. You cannot undo this statement!
SQL TOP Clause
The TOP Clause
The TOP clause can be very useful on large tables with thousands of records. Returning a large number of records
can impact on performance.
MySQL Syntax
SELECT column_name(s)
FROM table_name
LIMIT number
Example
SELECT *
FROM Persons
LIMIT 5
Oracle Syntax
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number
Example
SELECT *
FROM Persons
WHERE ROWNUM <=5
Now we want to select only the two first records in the table above.
Now we want to select only 50% of the records in the table above.
SQL LIKE Operator
The LIKE operator is used in a WHERE clause to search for a specified pattern in a column.
Now we want to select the persons living in a city that starts with "s" from the table above.
The "%" sign can be used to define wildcards (missing letters in the pattern) both before and after the pattern.
Next, we want to select the persons living in a city that ends with an "s" from the "Persons" table.
Next, we want to select the persons living in a city that contains the pattern "tav" from the "Persons" table.
It is also possible to select the persons living in a city that NOT contains the pattern "tav" from the "Persons" table,
by using the NOT keyword.
SQL Wildcards
SQL Wildcards
SQL wildcards can substitute for one or more characters when searching for data in a database.
Wildcard Description
or
[!charlist]
Now we want to select the persons living in a city that starts with "sa" from the "Persons" table.
Next, we want to select the persons living in a city that contains the pattern "nes" from the "Persons" table.
Now we want to select the persons with a first name that starts with any character, followed by "la" from the
"Persons" table.
We use the following SELECT statement:
Next, we want to select the persons with a last name that starts with "S", followed by any character, followed by
"end", followed by any character, followed by "on" from the "Persons" table.
Now we want to select the persons with a last name that starts with "b" or "s" or "p" from the "Persons" table.
Next, we want to select the persons with a last name that do not start with "b" or "s" or "p" from the "Persons"
table.
We use the following SELECT statement:
SQL IN Operator
The IN Operator
SQL IN Syntax
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
IN Operator Example
Now we want to select the persons with a last name equal to "Hansen" or "Pettersen" from the table above.
SQL BETWEEN Operator
The BETWEEN operator is used in a WHERE clause to select a range of data between two values.
The BETWEEN operator selects a range of data between two values. The values can be numbers, text, or dates.
Now we want to select the persons with a last name alphabetically between "Hansen" and "Pettersen" from the
table above.
In some databases, persons with the LastName of "Hansen" or "Pettersen" will not be listed, because the BETWEEN
operator only selects fields that are between and excluding the test values).
In other databases, persons with the LastName of "Hansen" or "Pettersen" will be listed, because the BETWEEN
operator selects fields that are between and including the test values).
And in other databases, persons with the LastName of "Hansen" will be listed, but "Pettersen" will not be listed
(like the example above), because the BETWEEN operator selects fields between the test values, including the first
test value and excluding the last test value.
Example 2
To display the persons outside the range in the previous example, use NOT BETWEEN:
SQL Alias
SQL Alias
You can give a table or a column another name by using an alias. This can be a good thing to do if you have very
long or complex table names or column names.
An alias name could be anything, but usually it is short.
Alias Example
Assume we have a table called "Persons" and another table called "Product_Orders". We will give the table aliases
of "p" and "po" respectively.
Now we want to list all the orders that "Ola Hansen" is responsible for.
As you'll see from the two SELECT statements above; aliases can make queries easier to both write and to read.
SQL Joins
SQL joins are used to query data from two or more tables, based on a relationship between certain columns in
these tables.
SQL JOIN
The JOIN keyword is used in an SQL statement to query data from two or more tables, based on a relationship
between certain columns in these tables.
Tables in a database are often related to each other with keys.
A primary key is a column (or a combination of columns) 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.
Note that the "P_Id" column is the primary key in the "Persons" table. This means that no two rows can have the
same P_Id. The P_Id distinguishes two persons even if they have the same name.
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15
Note that the "O_Id" column is the primary key in the "Orders" table and that the "P_Id" column refers to the
persons in the "Persons" table without using their names.
Notice that the relationship between the two tables above is the "P_Id" column.
Before we continue with examples, we will list the types of JOIN you can use, and the differences between them.
JOIN: Return rows when there is at least one match in both tables
LEFT JOIN: Return all rows from the left table, even if there are no matches in the right table
RIGHT JOIN: Return all rows from the right table, even if there are no matches in the left table
FULL JOIN: Return rows when there is a match in one of the tables
SQL INNER JOIN Keyword
SQL INNER JOIN Keyword
The INNER JOIN keyword return rows when there is at least one match in both tables.
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15
The INNER JOIN keyword return rows when there is at least one match in both tables. If there are rows in
"Persons" that do not have matches in "Orders", those rows will NOT be listed.
SQL LEFT JOIN Keyword
The LEFT JOIN keyword returns all rows from the left table (table_name1), even if there are no matches in the
right table (table_name2).
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15
Now we want to list all the persons and their orders - if any, from the tables above.
Svendson Tove
The LEFT JOIN keyword returns all the rows from the left table (Persons), even if there are no matches in the right
table (Orders).
SQL RIGHT JOIN Keyword
The RIGHT JOIN keyword Return all rows from the right table (table_name2), even if there are no matches in the
left table (table_name1).
SQL RIGHT JOIN Syntax
SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15
Now we want to list all the orders with containing persons - if any, from the tables above.
34764
The RIGHT JOIN keyword returns all the rows from the right table (Orders), even if there are no matches in the left
table (Persons).
SQL FULL JOIN Keyword
The FULL JOIN keyword return rows when there is a match in one of the tables.
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15
Now we want to list all the persons and their orders, and all the orders with their persons.
Svendson Tove
34764
The FULL JOIN keyword returns all the rows from the left table (Persons), and all the rows from the right table
(Orders). If there are rows in "Persons" that do not have matches in "Orders", or if there are rows in "Orders" that
do not have matches in "Persons", those rows will be listed as well.
SQL UNION Operator
The UNION operator is used to combine the result-set of two or more SELECT statements.
Notice that each SELECT statement within the UNION must have the same number of columns. The columns must
also have similar data types. Also, the columns in each SELECT statement must be in the same order.
Note: The UNION operator selects only distinct values by default. To allow duplicate values, use UNION ALL.
PS: The column names in the result-set of a UNION are always equal to the column names in the first SELECT
statement in the UNION.
"Employees_Norway":
E_ID E_Name
01 Hansen, Ola
02 Svendson, Tove
03 Svendson, Stephen
04 Pettersen, Kari
"Employees_USA":
E_ID E_Name
01 Turner, Sally
02 Kent, Clark
03 Svendson, Stephen
04 Scott, Stephen
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 will be listed. The UNION command selects only distinct values.
Result
E_Name
Hansen, Ola
Svendson, Tove
Svendson, Stephen
Pettersen, Kari
Turner, Sally
Kent, Clark
Svendson, Stephen
Scott, Stephen