Выбор

Назначение:

Извлеките данные указанных столбцов из указанной таблицы.

Синтаксис:

SELECT column_name(s) FROM table_name

Пояснение:

Выбор указанных столбцов из базы данных, а также возможность выбора одного или нескольких указанных столбцов или строк из одной или нескольких указанных таблиц. Полный синтаксис оператора SELECT довольно сложен, но основные предложения можно обобщить так:

SELECT select_list 
[ INTO new_table ] 
FROM table_source 
[ WHERE search_condition ] 
[ GROUP BY group_by_expression ] 
[ HAVING search_condition ] 
[ ORDER BY order_expression [ ASC | DESC ] ] 

Пример:

Данные в таблице "Persons" таковы:

LastName FirstName Адрес Город
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Pettersen Кари Сторгт 20 Ставангер

Выберите данные полей "LastName" и "FirstName":

SELECT LastName,FirstName FROM Persons

Результат:

LastName FirstName
Hansen Ola
Svendson Tove
Pettersen Кари

Выберите данные всех полей:

SELECT * FROM Persons

Результат:

LastName FirstName Адрес Город
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Pettersen Кари Сторгт 20 Ставангер

Где

Назначение:

Используется для указания критериев запроса на выборку.

Синтаксис:

SELECT column FROM table WHERE column condition value

В WHERE можно использовать следующие операторы:

=,<>,>,<,>=,<=,BETWEEN,LIKE

Примечание: в некоторых версиях SQL оператор неравенства < > можно записать как != .

Пояснение:

Оператор SELECT возвращает данные, для которых условие в предложении WHERE истинно.

Пример:

Выберите людей, проживающих в "Sandnes", из таблицы "Persons":

SELECT * FROM Persons WHERE City='Sandnes'

Данные в таблице "Persons" таковы:

LastName FirstName Адрес Город Год
Hansen Ola Timoteivn 10 Sandnes 1951
Svendson Tove Borgvn 23 Sandnes 1978
Svendson Stale Kaivn 18 Sandnes 1980
Pettersen Кари Сторгт 20 Ставангер 1960

Результат:

LastName FirstName Адрес Город Год
Hansen Ola Timoteivn 10 Sandnes 1951
Svendson Tove Borgvn 23 Sandnes 1978
Svendson Stale Kaivn 18 Sandnes 1980

AND и OR

Назначение:

В предложении WHERE операторы AND и OR используются для соединения двух или более условий.

Пояснение:

AND при объединении двух логических выражений возвращает TRUE только когда оба выражения имеют значение TRUE.

OR при объединении двух логических выражений возвращает TRUE, если хотя бы одно из условий имеет значение TRUE.

Пример:

Исходные данные в таблице "Persons":

LastName FirstName Адрес Город
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Svendson Stephen Kaivn 18 Sandnes

Используйте оператор AND, чтобы найти данные в таблице "Persons", где FirstName — "Tove", а LastName — "Svendson":

SELECT * FROM Persons
WHERE FirstName='Tove'
AND LastName='Svendson'

Результат:

LastName FirstName Адрес Город
Svendson Tove Borgvn 23 Sandnes

Используйте оператор OR, чтобы найти данные в таблице "Persons", где FirstName — "Tove" или LastName — "Svendson":

SELECT * FROM Persons
WHERE firstname='Tove'
OR lastname='Svendson'

Результат:

LastName FirstName Адрес Город
Svendson Tove Borgvn 23 Sandnes
Svendson Stephen Kaivn 18 Sandnes

Вы также можете комбинировать AND и OR (используя круглые скобки для составления сложных выражений), например:

SELECT * FROM Persons WHERE
(FirstName='Tove' OR FirstName='Stephen')
AND LastName='Svendson'

Результат:

LastName FirstName Адрес Город
Svendson Tove Borgvn 23 Sandnes
Svendson Stephen Kaivn 18 Sandnes

Between…And

Назначение:

Указывает диапазон возвращаемых данных.

Синтаксис:

SELECT column_name FROM table_name
WHERE column_name
BETWEEN value1 AND value2

Пример:

Исходные данные в таблице "Persons":

LastName FirstName Адрес Город
Hansen Ola Timoteivn 10 Sandnes
Nordmann Anna Neset 18 Sandnes
Pettersen Кари Сторгт 20 Ставангер
Svendson Tove Borgvn 23 Sandnes

Используйте BETWEEN...AND, чтобы вернуть данные, где LastName находится в диапазоне от "Hansen" до "Pettersen":

SELECT * FROM Persons WHERE LastName 
BETWEEN 'Hansen' AND 'Pettersen'

Результат:

LastName FirstName Адрес Город
Hansen Ola Timoteivn 10 Sandnes
Nordmann Anna Neset 18 Sandnes
Pettersen Кари Сторгт 20 Ставангер

Чтобы отобразить данные вне указанного диапазона, вы также можете использовать оператор NOT:

SELECT * FROM Persons WHERE LastName 
NOT BETWEEN 'Hansen' AND 'Pettersen'

Результат:

LastName FirstName Адрес Город
Svendson Tove Borgvn 23 Sandnes

Distinct

Назначение:

Ключевое слово DISTINCT используется для возврата уникальных значений.

Синтаксис:

SELECT DISTINCT column-name(s) FROM table-name

Пояснение:

Когда в column-name(s) есть повторяющиеся значения, в возвращаемом результате сохраняется только одно.

Пример:

Исходные данные в таблице "Orders":

Компания OrderNumber
Sega 3412
EXAMPLE 2312
Trio 4678
EXAMPLE 6798

Используйте ключевое слово DISTINCT, чтобы вернуть уникальные значения в поле Company:

SELECT DISTINCT Company FROM Orders

Результат:

Компания
Sega
EXAMPLE
Trio

Order by

Назначение:

Укажите сортировку результирующего набора.

Синтаксис:

SELECT column-name(s) FROM table-name ORDER BY  { order_by_expression [ ASC | DESC ] } 

Пояснение:

Укажите сортировку результирующего набора. Её можно выполнить с помощью ASC (по возрастанию, от наименьшего значения к наибольшему) или DESC (по убыванию, от наибольшего значения к наименьшему); по умолчанию — ASC.

Пример:

Исходные данные в таблице "Orders":

Компания OrderNumber
Sega 3412
ABC Shop 5678
EXAMPLE 2312
EXAMPLE 6798

Верните результирующий набор в порядке возрастания поля Company:

SELECT Company, OrderNumber FROM Orders
ORDER BY Company

Результат:

Компания OrderNumber
ABC Shop 5678
Sega 3412
EXAMPLE 6798
EXAMPLE 2312

Верните результирующий набор в порядке убывания поля Company:

SELECT Company, OrderNumber FROM Orders
ORDER BY Company DESC

Результат:

Компания OrderNumber
EXAMPLE 6798
EXAMPLE 2312
Sega 3412
ABC Shop 5678

Group by

Назначение:

Сгруппируйте результирующий набор; часто используется с агрегатными функциями.

Синтаксис:

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

Пример:

Исходные данные в таблице "Sales":

Компания Amount
EXAMPLE 5500
IBM 4500
EXAMPLE 7100

Сгруппируйте по полю Company, вычислите общую сумму Amout для каждой Company:

SELECT Company,SUM(Amount) FROM Sales
GROUP BY Company

Результат:

Компания SUM(Amount)
EXAMPLE 12600
IBM 4500

Having

Назначение:

Укажите условия поиска для группы или агрегата.

Синтаксис:

SELECT column,SUM(column) FROM table
GROUP BY column
HAVING SUM(column) condition value

Пояснение:

HAVING обычно используется вместе с предложением GROUP BY. Когда GROUP BY не используется, HAVING по функции аналогичен предложению WHERE.

Пример:

Исходные данные в таблице "Sales":

Компания Amount
EXAMPLE 5500
IBM 4500
EXAMPLE 7100

Сгруппируйте по полю Company и найдите данные, где общая сумма Amout для каждой Company больше 10000:

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

Результат:

Компания SUM(Amount)
EXAMPLE 12600

Join

Назначение:

Когда вы хотите выбрать результирующий набор из двух или более таблиц, вы используете JOIN.

Пример:

Данные в таблице "Employees" выглядят следующим образом (где ID является первичным ключом):

ID Name
01 Хансен, Ола
02 Свендсон, Туве
03 Свендсон, Стивен
04 Петтерсен, Кари

Данные в таблице "Orders" выглядят следующим образом:

ID Продукт
01 Принтер
03 Таблица
03 Председатель

Сопоставьте ID из Employees с ID из Orders, чтобы выбрать данные:

SELECT Employees.Name, Orders.Product
FROM Employees, Orders
WHERE Employees.ID = Orders.ID

Результат:

Name Продукт
Хансен, Ола Принтер
Свендсон, Стивен Таблица
Свендсон, Стивен Председатель

Или вы также можете использовать ключевое слово JOIN для выполнения вышеуказанной операции:

SELECT Employees.Name, Orders.Product
FROM Employees
INNER JOIN Orders
ON Employees.ID = Orders.ID

INNER JOINСинтаксис:

SELECT field1, field2, field3
FROM first_table
INNER JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield

Пояснение:

Набор результатов, возвращаемый INNER JOIN, — это все совпадающие данные из двух таблиц.

LEFT JOINСинтаксис:

SELECT field1, field2, field3
FROM first_table
LEFT JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield

Используйте таблицу "Employees", чтобы выполнить левое внешнее соединение с таблицей "Orders" и найти связанные данные:

SELECT Employees.Name, Orders.Product
FROM Employees
LEFT JOIN Orders
ON Employees.ID = Orders.ID

Результат:

Name Продукт
Хансен, Ола Принтер
Свендсон, Туве
Свендсон, Стивен Таблица
Свендсон, Стивен Председатель
Петтерсен, Кари

Пояснение:

LEFT JOIN возвращает все строки из "first_table", даже если в "second_table" нет совпадающих данных.

RIGHT JOINСинтаксис:

SELECT field1, field2, field3
FROM first_table
RIGHT JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield

Используйте таблицу "Employees", чтобы выполнить правое внешнее соединение с таблицей "Orders" и найти связанные данные:

SELECT Employees.Name, Orders.Product
FROM Employees
RIGHT JOIN Orders
ON Employees.ID = Orders.ID

Результат:

Name Продукт
Хансен, Ола Принтер
Свендсон, Стивен Таблица
Свендсон, Стивен Председатель

Пояснение:

RIGHT JOIN возвращает все строки из "second_table", даже если в "first_table" нет совпадающих данных.

Псевдоним

Назначение:

Может использоваться для таблиц, наборов результатов или столбцов, чтобы присвоить им логическое имя.

Синтаксис:

Присвоить столбцу псевдоним:

SELECT column AS column_alias FROM table

Присвоить таблице псевдоним:

SELECT column FROM table AS table_alias

Пример:

Исходные данные в таблице "Persons":

LastName FirstName Адрес Город
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Pettersen Кари Сторгт 20 Ставангер

Выполните следующий SQL:

SELECT LastName AS Family, FirstName AS Name
FROM Persons

Результат:

Семейство Name
Hansen Ola
Svendson Tove
Pettersen Кари

Выполните следующий SQL:

SELECT LastName, FirstName
FROM Persons AS Employees

Результат:

Данные в Employees:

LastName FirstName
Hansen Ola
Svendson Tove
Pettersen Кари

Insert Into

Назначение:

Вставьте новую строку в таблицу.

Синтаксис:

Вставьте строку данных:

INSERT INTO table_name
VALUES (value1, value2,....)

Вставьте строку данных в указанные поля:

INSERT INTO table_name (column1, column2,...)
VALUES (value1, value2,....)

Пример:

Исходные данные в таблице "Persons":

LastName FirstName Адрес Город
Pettersen Кари Сторгт 20 Ставангер

Выполните следующий SQL, чтобы вставить строку данных:

INSERT INTO Persons 
VALUES ('Hetland', 'Camilla', 'Hagabakka 24', 'Sandnes')

После вставки данные в таблице "Persons" выглядят так:

LastName FirstName Адрес Город
Pettersen Кари Сторгт 20 Ставангер
Hetland Camilla Hagabakka 24 Sandnes

Выполните следующий SQL, чтобы вставить строку данных в указанные поля:

INSERT INTO Persons (LastName, Address)
VALUES ('Rasmussen', 'Storgt 67')

После вставки данные в таблице "Persons" выглядят так:

LastName FirstName Адрес Город
Pettersen Кари Сторгт 20 Ставангер
Hetland Camilla Hagabakka 24 Sandnes
Rasmussen Storgt 67

Update

Назначение:

Обновление существующих данных в таблице.

Синтаксис:

UPDATE table_name SET column_name = new_value
WHERE column_name = some_value

Пример:

Исходные данные в таблице "Person":

LastName FirstName Адрес Город
Nilsen Fred Kirkegt 56 Ставангер
Rasmussen Storgt 67

Выполните следующий SQL, чтобы обновить FirstName на "Nina" в таблице Person, где поле LastName равно "Rasmussen":

UPDATE Person SET FirstName = 'Nina'
WHERE LastName = 'Rasmussen'

После обновления данные в таблице "Person" выглядят так:

LastName FirstName Адрес Город
Nilsen Fred Kirkegt 56 Ставангер
Rasmussen Nina Storgt 67

Аналогично вы также можете обновить несколько полей одновременно с помощью оператора UPDATE:

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

После обновления данные в таблице "Person" выглядят так:

LastName FirstName Адрес Город
Nilsen Fred Kirkegt 56 Ставангер
Rasmussen Nina Stien 12 Ставангер

Delete

Назначение:

Удалить данные из таблицы.

Синтаксис:

DELETE FROM table_name WHERE column_name = some_value

Пример:

Исходные данные в таблице "Person":

LastName FirstName Адрес Город
Nilsen Fred Kirkegt 56 Ставангер
Rasmussen Nina Stien 12 Ставангер

Удалить данные в таблице Person, где LastName равно "Rasmussen":

DELETE FROM Person WHERE LastName = 'Rasmussen'

Данные в таблице "Person" после выполнения оператора DELETE:

LastName FirstName Адрес Город
Nilsen Fred Kirkegt 56 Ставангер

Создание таблицы

Назначение:

Создать новую таблицу.

Синтаксис:

CREATE TABLE table_name 
(
column_name1 data_type, 
column_name2 data_type, 
.......
)

Пример:

Создать таблицу с именем "Person" с 4 полями: "LastName", "FirstName", "Address", "Age":

CREATE TABLE Person 
(
LastName varchar,
FirstName varchar,
Address varchar,
Age int
)

Если вы хотите указать максимальную длину хранения для поля, это можно сделать так:

CREATE TABLE Person 
(
LastName varchar(30),
FirstName varchar(30),
Address varchar(120),
Age int(3) 
)

В следующей таблице перечислены некоторые типы данных в SQL:

Тип данных Описание
integer(size)
int(size)
smallint(size)
tinyint(size)
Хранит только целые числа. Максимальное количество цифр задаётся параметром size в скобках.
decimal(size,d)
numeric(size,d)
Хранит числа с десятичными знаками. Максимальное количество цифр задаётся параметром "size". Максимальное количество цифр справа от десятичной точки задаётся параметром "d".
char(size) Хранит строку фиксированной длины (может содержать буквы, цифры и специальные символы). Размер строки задаётся параметром size в скобках.
varchar(size) Хранит строку переменной длины (может содержать буквы, цифры и специальные символы). Максимальная длина строки задаётся параметром size в скобках.
date(yyyymmdd) Хранит дату.

Alter Table

Назначение:

Добавляет или удаляет поля в существующей таблице.

Синтаксис:

ALTER TABLE table_name 
ADD column_name datatype
ALTER TABLE table_name 
DROP COLUMN column_name

Примечание: Некоторые системы управления базами данных не позволяют удалять поля из таблицы.

Пример:

Исходные данные в таблице "Person":

LastName FirstName Адрес
Pettersen Кари Сторгт 20

Добавьте поле с именем City в таблицу Person:

ALTER TABLE Person ADD City varchar(30)

Данные в таблице после добавления следующие:

LastName FirstName Адрес Город
Pettersen Кари Сторгт 20

Удалите существующее поле Address из таблицы Person:

ALTER TABLE Person DROP COLUMN Address

Данные в таблице после удаления следующие:

LastName FirstName Город
Pettersen Кари

Drop Table

Назначение:

Удаляет определение таблицы и все данные, индексы, триггеры, ограничения и спецификации разрешений этой таблицы из базы данных.

Синтаксис:

DROP TABLE table_name

Создание базы данных

Назначение:

Создать новую базу данных.

Синтаксис:

CREATE DATABASE database_name

Удаление базы данных

Назначение:

Удалить существующую базу данных.

Синтаксис:

DROP DATABASE database_name

Агрегатные функции

count

Назначение:

Возвращает количество строк в выбранном результирующем наборе.

Синтаксис:

SELECT COUNT(column_name) FROM table_name

Пример:

Исходные данные в таблице "Persons" следующие:

Name Age
Хансен, Ола 34
Свендсон, Туве 45
Петтерсен, Кари 19

Выберите общее количество записей:

SELECT COUNT(Name) FROM Persons

Результат выполнения:

3

sum

Назначение:

Возвращает сумму всех значений или только DISTINCT значений, в зависимости от выражения. SUM можно использовать только с числовыми строками. Значения Null игнорируются.

Синтаксис:

SELECT SUM(column_name) FROM table_name

Пример:

Исходные данные в таблице "Persons" следующие:

Name Age
Хансен, Ола 34
Свендсон, Туве 45
Петтерсен, Кари 19

Выберите суммарный возраст всех людей в таблице "Persons":

SELECT SUM(Age) FROM Persons

Результат выполнения:

98

Выберите суммарный возраст людей старше 20 лет в таблице "Persons":

SELECT SUM(Age) FROM Persons WHERE Age>20

Результат выполнения:

79

avg

Назначение:

Возвращает среднее значение выбранного набора результатов. Значения Null игнорируются.

Синтаксис:

SELECT AVG(column_name) FROM table_name

Пример:

Исходные данные в таблице "Persons" следующие:

Name Age
Хансен, Ола 34
Свендсон, Туве 45
Петтерсен, Кари 19

Выберите средний возраст всех людей в таблице "Persons":

SELECT AVG(Age) FROM Persons

Результат выполнения:

32.67

Выберите средний возраст людей старше 20 лет в таблице "Persons":

SELECT AVG(Age) FROM Persons WHERE Age>20

Результат выполнения:

39.5

max

Назначение:

Возвращает максимальное значение в выбранном наборе результатов. Значения Null игнорируются.

Синтаксис:

SELECT MAX(column_name) FROM table_name

Пример:

Исходные данные в таблице "Persons" следующие:

Name Age
Хансен, Ола 34
Свендсон, Туве 45
Петтерсен, Кари 19

Выберите максимальный возраст из таблицы "Persons":

SELECT MAX(Age) FROM Persons

Результат выполнения:

45

min

Назначение:

Возвращает минимальное значение в выбранном наборе результатов. Значения Null игнорируются.

Синтаксис:

SELECT MIN(column_name) FROM table_name

Пример:

Исходные данные в таблице "Persons" следующие:

Name Age
Хансен, Ола 34
Свендсон, Туве 45
Петтерсен, Кари 19

Выберите минимальный возраст из таблицы "Persons":

SELECT MIN(Age) FROM Persons

Результат выполнения:

19

Арифметические функции

abs

Назначение:

Возвращает абсолютное значение указанного числового выражения.

Синтаксис:

ABS(numeric_expression )

Пример:

ABS(-1.0) ABS(0.0) ABS(1.0)

Результат выполнения:

1.0         0.0        1.0

ceil

Назначение:

Возвращает наименьшее целое число, большее или равное заданному числовому выражению.

Синтаксис:

CEIL(numeric_expression )

Пример:

CEIL(123.45)   CEIL(-123.45)

Результат выполнения:

124.00            -123.00

floor

Назначение:

Возвращает наибольшее целое число, меньшее или равное заданному числовому выражению.

Синтаксис:

FLOOR(numeric_expression )

Пример:

FLOOR(123.45)   FLOOR(-123.45)

Результат выполнения:

123.00             -124.00

cos

Назначение:

Математическая функция, возвращающая тригонометрический косинус указанного угла (в радианах) в указанном выражении.

Синтаксис:

COS(numeric_expression )

Пример:

COS(14.78)

Результат выполнения:

-0.599465

cosh

Назначение:

Возвращает угол в радианах, косинус которого равен указанному выражению с плавающей точкой; также известен как арккосинус.

Синтаксис:

COSH(numeric_expression )

Пример:

COSH(-1)

Результат выполнения:

3.14159

sin

Назначение:

Возвращает тригонометрический синус заданного угла (в радианах) как приблизительное числовое выражение (float).

Синтаксис:

SIN(numeric_expression )

Пример:

SIN(45.175643)

Результат выполнения:

0.929607

sinh

Назначение:

Возвращает угол в радианах, синус которого равен указанному выражению с плавающей точкой; также известен как арксинус.

Синтаксис:

SINH(numeric_expression )

Пример:

SINH(-1.00)

Результат выполнения:

-1.5708

tan

Назначение:

Возвращает тангенс входного выражения.

Синтаксис:

TAN(numeric_expression )

Пример:

TAN(3.14159265358979/2)

Результат выполнения:

1.6331778728383844E+16

tanh

Назначение:

Возвращает угол в радианах, тангенс которого равен указанному выражению с плавающей точкой; также известен как арктангенс.

Синтаксис:

TANH(numeric_expression )

Пример:

TANH(-45.01)

Результат выполнения:

-1.54858

exp

Назначение:

Возвращает значение экспоненты для заданного выражения с плавающей точкой.

Синтаксис:

EXP(numeric_expression )

Пример:

EXP(378.615345498)

Результат выполнения:

2.69498e+164 

log

Назначение:

Возвращает натуральный логарифм заданного float-выражения.

Синтаксис:

LOG(numeric_expression )

Пример:

LOG(5.175643)

Результат выполнения:

1.64396 

степень

Назначение:

Возвращает значение заданного выражения, возведённое в указанную степень.

Синтаксис:

POWER(numeric_expression,v )

Пример:

POWER(2,6)

Результат выполнения:

64

sign

Назначение:

Возвращает знак заданного выражения: положительный (+1), нулевой (0) или отрицательный (-1).

Синтаксис:

SIGN(numeric_expression )

Пример:

SIGN(123)    SIGN(0)    SIGN(-456)

Результат выполнения:

1             0          -1

sqrt

Назначение:

Возвращает квадрат заданного выражения.

Синтаксис:

SQRT(numeric_expression )

Пример:

SQRT(10)

Результат выполнения:

100

Другие руководства

Для более подробных руководств см.:Учебник по SQL