Normal
0
false
false
false
EN-US
X-NONE
X-NONE
SQL
TOP Clause
The TOP Clause
The TOP clause is used to specify the number of records to return.
The TOP clause can be very useful on large tables with thousands of records.
Returning a large number of records can impact on performance.
Note: Not all database systems support the TOP clause.
SQL Server Syntax
|
SELECT TOP number|percent column_name(s)
FROM table_name
|
SQL SELECT TOP Equivalent in
MySQL and Oracle
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
|
SQL TOP Example
The "Persons" table:
|
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
|
1
|
Hansen
|
Ola
|
Timoteivn 10
|
Sandnes
|
|
2
|
Svendson
|
Tove
|
Borgvn 23
|
Sandnes
|
|
3
|
Pettersen
|
Kari
|
Storgt 20
|
Stavanger
|
|
4
|
Nilsen
|
Tom
|
Vingvn 23
|
Stavanger
|
Now we want to select only the two first records in the table above.
We use the following SELECT statement:
|
SELECT TOP 2 * FROM Persons
|
The result-set will look like this:
|
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
|
1
|
Hansen
|
Ola
|
Timoteivn 10
|
Sandnes
|
|
2
|
Svendson
|
Tove
|
Borgvn 23
|
Sandnes
|
SQL TOP PERCENT Example
The "Persons" table:
|
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
|
1
|
Hansen
|
Ola
|
Timoteivn 10
|
Sandnes
|
|
2
|
Svendson
|
Tove
|
Borgvn 23
|
Sandnes
|
|
3
|
Pettersen
|
Kari
|
Storgt 20
|
Stavanger
|
|
4
|
Nilsen
|
Tom
|
Vingvn 23
|
Stavanger
|
Now we want to select only 50% of the records in the table above.
We use the following SELECT statement:
|
SELECT TOP 50 PERCENT * FROM Persons
|
The result-set will look like this:
|
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
|
1
|
Hansen
|
Ola
|
Timoteivn 10
|
Sandnes
|
|
2
|
Svendson
|
Tove
|
Borgvn 23
|
Sandnes
|
SQL
LIKE Operator
The LIKE operator is used in a WHERE clause to search for a
specified pattern in a column.
The LIKE Operator
The LIKE operator is used to search for a specified pattern in a column.
SQL LIKE Syntax
|
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern
|
LIKE Operator Example
The "Persons" table:
|
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
|
1
|
Hansen
|
Ola
|
Timoteivn 10
|
Sandnes
|
|
2
|
Svendson
|
Tove
|
Borgvn 23
|
Sandnes
|
|
3
|
Pettersen
|
Kari
|
Storgt 20
|
Stavanger
|
Now we want to select the persons living in a city that starts with
"s" from the table above.
We use the following SELECT statement:
|
SELECT * FROM Persons
WHERE City LIKE 's%'
|
The "%" sign can be used to define wildcards (missing letters in
the pattern) both before and after the pattern.
The result-set will look like this:
|
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
|
1
|
Hansen
|
Ola
|
Timoteivn 10
|
Sandnes
|
|
2
|
Svendson
|
Tove
|
Borgvn 23
|
Sandnes
|
|
3
|
Pettersen
|
Kari
|
Storgt 20
|
Stavanger
|
Next, we want to select the persons living in a city that ends with an
"s" from the "Persons" table.
We use the following SELECT statement:
|
SELECT * FROM Persons
WHERE City LIKE '%s'
|
The result-set will look like this:
|
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
|
1
|
Hansen
|
Ola
|
Timoteivn 10
|
Sandnes
|
|
2
|
Svendson
|
Tove
|
Borgvn 23
|
Sandnes
|
Next, we want to select the persons living in a city that contains the
pattern "tav" from the "Persons" table.
We use the following SELECT statement:
|
SELECT * FROM Persons
WHERE City LIKE '%tav%'
|
The result-set will look like this:
|
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
|
3
|
Pettersen
|
Kari
|
Storgt 20
|
Stavanger
|
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.
We use the following SELECT statement:
|
SELECT * FROM Persons
WHERE City NOT LIKE '%tav%'
|
The result-set will look like this:
|
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
|
1
|
Hansen
|
Ola
|
Timoteivn 10
|
Sandnes
|
|
2
|
Svendson
|
Tove
|
Borgvn 23
|
Sandnes
|
SQL
Wildcards
SQL wildcards can be used when
searching for data in a database.
SQL
Wildcards
SQL wildcards can substitute for one
or more characters when searching for data in a database.
SQL wildcards must be used with the
SQL LIKE operator.
With SQL, the following wildcards
can be used:
|
Wildcard
|
Description
|
|
%
|
A substitute for zero or more
characters
|
|
_
|
A substitute for exactly one
character
|
|
[charlist]
|
Any single character in charlist
|
|
[^charlist]
or
[!charlist]
|
Any single character not in
charlist
|
SQL
Wildcard Examples
We have the following
"Persons" table:
|
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
|
1
|
Hansen
|
Ola
|
Timoteivn
10
|
Sandnes
|
|
2
|
Svendson
|
Tove
|
Borgvn
23
|
Sandnes
|
|
3
|
Pettersen
|
Kari
|
Storgt
20
|
Stavanger
|
Using
the % Wildcard
Now we want to select the persons
living in a city that starts with "sa" from the "Persons"
table.
We use the following SELECT
statement:
|
SELECT * FROM Persons
WHERE City LIKE 'sa%'
|
The result-set will look like this:
|
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
|
1
|
Hansen
|
Ola
|
Timoteivn
10
|
Sandnes
|
|
2
|
Svendson
|
Tove
|
Borgvn
23
|
Sandnes
|
Next, we want to select the persons
living in a city that contains the pattern "nes" from the
"Persons" table.
We use the following SELECT statement:
|
SELECT * FROM Persons
WHERE City LIKE '%nes%'
|
The result-set will look like this:
|
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
|
1
|
Hansen
|
Ola
|
Timoteivn
10
|
Sandnes
|
|
2
|
Svendson
|
Tove
|
Borgvn
23
|
Sandnes
|
Using
the _ Wildcard
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:
|
SELECT * FROM Persons
WHERE FirstName LIKE '_la'
|
The result-set will look like this:
|
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
|
1
|
Hansen
|
Ola
|
Timoteivn
10
|
Sandnes
|
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.
We use the following SELECT
statement:
|
SELECT * FROM Persons
WHERE LastName LIKE 'S_end_on'
|
The result-set will look like this:
|
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
|
2
|
Svendson
|
Tove
|
Borgvn
23
|
Sandnes
|
Using
the [charlist] Wildcard
Now we want to select the persons
with a last name that starts with "b" or "s" or
"p" from the "Persons" table.
We use the following SELECT
statement:
|
SELECT * FROM Persons
WHERE LastName LIKE '[bsp]%'
|
The result-set will look like this:
|
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
|
2
|
Svendson
|
Tove
|
Borgvn
23
|
Sandnes
|
|
3
|
Pettersen
|
Kari
|
Storgt
20
|
Stavanger
|
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:
|
SELECT * FROM Persons
WHERE LastName LIKE '[!bsp]%'
|
The result-set will look like this:
|
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
|
1
|
Hansen
|
Ola
|
Timoteivn
10
|
Sandnes
|
SQL
IN Operator
The IN Operator
The IN operator allows you to specify multiple values in a WHERE clause.
SQL IN Syntax
|
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
|
IN Operator Example
The "Persons" table:
|
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
|
1
|
Hansen
|
Ola
|
Timoteivn 10
|
Sandnes
|
|
2
|
Svendson
|
Tove
|
Borgvn 23
|
Sandnes
|
|
3
|
Pettersen
|
Kari
|
Storgt 20
|
Stavanger
|
Now we want to select the persons with a last name equal to
"Hansen" or "Pettersen" from the table above.
We use the following SELECT statement:
|
SELECT * FROM Persons
WHERE LastName IN ('Hansen','Pettersen')
|
The result-set will look like this:
|
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
|
1
|
Hansen
|
Ola
|
Timoteivn 10
|
Sandnes
|
|
3
|
Pettersen
|
Kari
|
Storgt 20
|
Stavanger
|
SQL
BETWEEN Operator
The BETWEEN operator is used in a WHERE clause to select a range
of data between two values.
The BETWEEN Operator
The BETWEEN operator selects a range of data between two values. The values
can be numbers, text, or dates.
SQL BETWEEN Syntax
|
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
|
BETWEEN Operator Example
The "Persons" table:
|
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
|
1
|
Hansen
|
Ola
|
Timoteivn 10
|
Sandnes
|
|
2
|
Svendson
|
Tove
|
Borgvn 23
|
Sandnes
|
|
3
|
Pettersen
|
Kari
|
Storgt 20
|
Stavanger
|
Now we want to select the persons with a last name alphabetically between
"Hansen" and "Pettersen" from the table above.
We use the following SELECT statement:
|
SELECT * FROM Persons
WHERE LastName
BETWEEN 'Hansen' AND 'Pettersen'
|
The result-set will look like this:
|
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
|
1
|
Hansen
|
Ola
|
Timoteivn 10
|
Sandnes
|
Note: The BETWEEN
operator is treated differently in different databases.
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.
Therefore: Check how your database treats the BETWEEN operator.
Example 2
To display the persons outside the range in the previous example, use NOT
BETWEEN:
|
SELECT * FROM Persons
WHERE LastName
NOT BETWEEN 'Hansen' AND 'Pettersen'
|
The result-set will look like this:
|
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
|
2
|
Svendson
|
Tove
|
Borgvn 23
|
Sandnes
|
|
3
|
Pettersen
|
Kari
|
Storgt 20
|
Stavanger
|
SQL
Alias
With SQL, an alias name can be given to a table or to a column.
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.
SQL Alias Syntax for Tables
|
SELECT column_name(s)
FROM table_name
AS alias_name
|
SQL Alias Syntax for Columns
|
SELECT column_name AS alias_name
FROM table_name
|
Alias Example
Assume we have a table called "Persons" and another table called
"Product_Orders". We will give the table aliases of "p" an
"po" respectively.
Now we want to list all the orders that "Ola Hansen" is
responsible for.
We use the following SELECT statement:
|
SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p,
Product_Orders AS po
WHERE p.LastName='Hansen'
WHERE p.FirstName='Ola'
|
The same SELECT statement without aliases:
|
SELECT Product_Orders.OrderID, Persons.LastName,
Persons.FirstName
FROM Persons,
Product_Orders
WHERE Persons.LastName='Hansen'
WHERE Persons.FirstName='Ola'
|
As you'll see from the two SELECT statements above; aliases can make queries
easier to both write and to read.