Create table, alter table, drop table, create index, alter index, drop index. • DML (Data Manipulation Language) – язык манипулирования данными. Insert, update, delete. •


Чтобы посмотреть этот PDF файл с форматированием и разметкой, скачайте его и откройте на своем компьютере.
SQL

S
tructured

Q
uery

L
anguage



информационно
-
логический

язык

для

описания,

изменения

и

извлечения

данных,

хранимых

в

реляционных

базах

данных
.



Категории

команд
:


DDL

(
Data

Definition

Language
)



язык

определения

данных
.

CREATE

TABLE,

ALTER

TABLE,

DROP

TABLE,

CREATE

INDEX,

ALTER

INDEX,

DROP

INDEX
.


DML

(
Data

Manipulation

Language
)



язык

манипулирования

данными
.

INSERT
,

UPDATE,

DELETE
.


DQL

(
Data

Query

Language)



язык

запросов
.

SELECT
.


DCL

(Data

Control

Language)



язык

управления

данными
.

GRANT
,

REVOKE
.


Команды

управления

транзакциями
.

COMMIT
,

ROLLBACK,

SAVEPOINT,

SET

TRANSACTION
.

SQL

Преимущества
:


Стандартизирован

организациями

ANSI,

ISO
.


Кроссплатформенность
.


Простота

в

изучении

и

использовании
.


Поддержка

интерактивного

и

программного

режимов

запросов
.


Обеспечение

различного

представления

данных
.


Хорошая

поддержка

архитектуры

клиент
-
сервер
.


Команда
SELECT
͗ пример

Пример
:

таблицы

продавцов,

покупателей

и

заказов
.

Команда
SELECT
͗ пример

Prod_Nom

Prod_Name

City

Procent

1001

Иванов

Саранск

12

1002

Петров

Москва

13

1003

Андреев

Кострома

10

Pok_No
m

Pok_Name

City

Rating

Prod_Nom

2001

Потапов

Саранск

100

1001

2002

Гарин

Владимир

200

1003

2003

Ли

Москва

200

1002

2004

Глухов

Самара

300

1002

2005

Клюев

Саранск

100

1001

Zak_Nom

Zak_Summa

Zak_Date

Pok_Nom

Prod_Nom

3001

18
.
69

10
.
12
.
2016

2005

1001

3002

767
.
19

10
.
12
.
2016

2001

1001

3003

1900
.
10

10
.
12
.
2016

2002

1003

3004

123
.
45

15
.
12
.
2016

2003

1002

3005

100
.
00

16
.
12
.
2016

2004

1002

3006

95
.
13

15
.
12
.
2016

2001

1001

Prodavec

Pokupatel

Zakaz

SELECT:
выбор из одной таблицы

Выбор определенных
полей (проекция полей)

SELECT

Prod_Nom
,
Prod_name
, City
FROM

Prodavec

Выбор
всех полей

SELECT

*
FROM

Prodavec

Условие
поиска

SELECT

Prod_Nom
,
Prod_name
, City

FROM

Prodavec


WHERE

City="
Саранск
"

Логические
операции в условии поиска

SELECT

*
FROM

Pokupatel


WHERE

Rating
�=200
AND City
="Москва"

Значение
поля принадлежит множеству

SELECT

*
FROM

Pokupatel


WHERE
City
IN

("
Москва
", "
Саранск
")

Поиск по шаблону

SELECT

*
FROM

Pokupatel

WHERE

Pok_Name

LIKE

"
Б
%

("_" заменяет один символ)


SELECT:
выбор из одной таблицы

Построение вычисляемых полей

SELECT

Concat
(Left(Prod_Name,2),".
-
", City)
AS

"
Фамилия
-
Город
"

FROM
Prodavec


Сортировка выводимых данных

SELECT

*

FROM

Prodavec


ORDER
BY
Prod
_
Name


Функции
агрегирования (
COUNT, SUM, AVG, MAX, MIN
)

Общая сумма
заказов

SELECT

Sum(
Zak_Summa
)

FROM

Zakaz

Общее
число покупателей

SELECT

Count(*)

FROM

Pokupatel




SELECT:
выбор из одной таблицы

Промежуточные итоги

Для каждого продавца определить
максимальную сумму заказа

SELECT

Prod_Nom
,
Max(
Zak_Summa
)

FROM

Zakaz


GROUP
BY
Prod_Nom

Найти максимальные продажи для каждого продавца на каждый
день

SELECT

Prod_Nom
,
Zak_Date
, Max(
Kolvo
)

FROM

Zakaz


GROUP
BY
Prod_Nom
,
Zak_Date


Условия на группы записей
-

HAVING

SELECT

Prod_Nom
,
Zak_Date
, Max(
Kolvo
)

FROM

Zakaz


GROUP BY
Prod_Nom
,
Zak_Date

HAVING

Max
(
Kolvo
�)100




SELECT:
соединение нескольких таблиц

Соединение по равенству (внутреннее соединение)

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

SELECT

Pokupatel.Pok_Name
,
Prodavec.Prod_Name
,
Prodavec.City


FROM
Prodavec

Pokupatel


WHERE
Prodavec.City
=
Pokupatel.City


SELECT

Pokupatel.Pok_Name
,
Prodavec.Prod_Name
,
Prodavec.City


FROM

Prodavec

INNER JOIN
Pokupatel


ON

Prodavec.City
=
Pokupatel.City


Самообъединение

Найти
все пары покупателей, имеющих одинаковый рейтинг

SELECT

a.Pok_Name

AS

Pokupatel1,
b.Pok_Name

AS

Pokupatel2,
a.Rating

FROM

Pokupatel

a,
Pokupatel

b

WHERE

a.Rating
=
b.Rating




SELECT:
соединение нескольких таблиц

Внешнее соединение

В
отличие от внутренних объединений, которые связывают строки двух
таблиц, внешние объединения включают в результат также строки, не
имеющие пар͘

Вывести все пары Продавец
-
Покупатель (в том числе продавцов, не
имеющих покупателей )

SELECT

Prodavec.Prod_Name
,
Pokupatel.Pok_Name

FROM

Prodavec

LEFT OUTER JOIN

Pokupatel

ON

Prodavec.Prod_Nom

=
Pokupatel.Prod_Nom


SELECT

Prodavec.Prod_Name
,
Pokupatel.Pok_Name

FROM

Pokupatel

RIGHT
OUTER JOIN

Prodavec

ON

Prodavec.Prod_Nom

=
Pokupatel.Prod_Nom





SELECT:
вложенные запросы

Обычно внутренний запрос генерирует значения, которые тестируются на
предмет истинности предиката
.

По фамилии продавца найти все его заказы

SELECT

*
FROM

Zakaz


WHERE

Prod_Nom
=
(
SELECT
Prod_Nom

FROM

Prodavec

WHERE

Prod_Name
="
Иванов
")


SELECT

*
FROM

Zakaz


WHERE

Prod_Nom

IN
(
SELECT

Prod_Nom

FROM

Prodavec

WHERE

Prod_Name
="
Иванов
")


Внутри
HAVING

можно применять подзапросы, которые не дают множества
значений͘

Найти
количество покупателей с рейтингом, превышающим среднее
значение для покупателей из Саранска͘

SELECT

Rating, Count(
DISTINCT

Pok_Nom
)
FROM

Pokupatel

GROUP BY
Rating

HAVING

Ra�ting(
SELECT

Avg
(Rating)
FROM

Pokupatel

WHERE

City="
Саранск
")

SELECT:
связанные подзапросы

Найти

всех

покупателей,

сделавших

заказы

10
.
12
.
2016

SELECT

*

FROM

Pokupatel

a

WHERE


2016
-
12
-
10


IN


(
SELECT

Zak_Date

FROM

Zakaz

b

WHERE

a
.
Pok_Nom
=
b
.
Pok_Nom
)


Внутренний

запрос

должен

выполняться

отдельно

для

каждой

строки

внешнего

запроса
.

1.
Выбирается

текущая

строка
-
кандидат

из

таблицы,

указанной

во

внешнем

запросе
.

2.
Значение

этой

строки

сохраняется

в

псевдониме,

имя

которого

указано

в

предложении

FROM

внешнего

запроса
.

3.
Выполняется

подзапрос
.

Каждый

раз,

когда

встречается

псевдоним

для

внешнего

запроса,

его

значение

применяется

к

текущей

строке
-
кандидату

(внешней

ссылке)
.

4.
Оценивается

предикат

внешнего

запроса

на

основе

подзапроса,

выполненного

на

шаге

3
.

Это

позволяет

определить,

будет

ли

строка
-
кандидат

включена

в

состав

выходных

данных
.

5.
Процедура

для

следующей

строки
-
кандидата

таблицы

повторяется

до

тех

пор,

пока

не

будут

проверены

все

строки

таблицы
.


SELECT:
связанные подзапросы

Найдем

имена

и

номера

всех

продавцов,

имеющих

более

одного

покупателя

SELECT

Prod_Nom
,
Prod_Name

FROM

Prodavec

main

WHERE

1(
SELECT

Count(*)
FROM

Pokupatel

WHERE

Prod_Nom
=
main.Prod_Nom
)


Н
айдем

все

заказы,

сумма

в

которых

превышает

среднюю

сумму

заказа

для

данного

покупателя

SELECT

*

FROM

Zakaz

a

WHERE

Zak_Summa
�(
SELECT

Avg
(
Zak_Summa
)

FROM

Zakaz

b

WHERE

a
.
Pok_Nom
=
b
.
Pok_Nom
)


SELECT:
ключевое слово
EXISTS

Используется только совместно с подзапросами͘ Результат
равен
TRUE,
если
в возвращаемой подзапросом результирующей таблице присутствует хотя
бы одна
строка, иначе
FALSE
.


Найти продавцов, имеющих несколько покупателей

SELECT DISTINCT

Prod
_
Nom
FROM

Pokupatel

a

WHERE EXISTS

(
SELECT

*
FROM

Pokupatel

b
WHERE
b.Prod_Nom
=
a.Prod_Nom

AND
b.Pok_Nom

a.Pok_Nom
)


SELECT:
ключевые слова
ANY, ALL

Использу
ю
тся только совместно с подзапросами͘


Если

подзапросу

предшествует

ключевое

слово

ALL,

условие

сравнения

считается

выполненным,

только

когда

оно

выполняется

для

всех

значений

в

результирующем

столбце

подзапроса
.


Выбрать все заказы, сумма которых превосходит
суммы
всех заказов
,
сделанных 10͘12͘2016͗

SELECT

*
FROM

Zakaz

WHERE

Zak_Summa

ALL

(


SELECT

Zak_Summa

FROM

Zakaz

WHERE

Zak_Date
=“2016
-
12
-
10”)


Если

записи

подзапроса

предшествует

ключевое

слово

ANY,

то

условие

сравнения

считается

выполненным,

когда

оно

выполняется

хотя

бы

для

одного

из

значений

в

результирующем

столбце

подзапроса
.

Выбрать
все заказы,
сумма которых
превосходит
сумму
по крайней мере
одного из заказов
, сделанных
10.12.2016:

SELECT

*
FROM

Zakaz

WHERE

Zak_Summa

ANY

(


SELECT

Zak_Summa

FROM

Zakaz

WHERE

Zak_Date
=“2016
-
12
-
10”)



INSERT, UPDATE, DELETE

Вставка строк в таблицу

INSERT
INTO
Prodavec

(
Prod_Name
,
City
,
Procent
)
VALUES

(“
Казаков
",
"
Тверь
"
, 10
)


INSERT INTO
͙
SELECT

͙


Изменение строк

UPDATE

Prodavec

SET

Prod_Name

=


Шахов

WHERE

Prod_Name

=

Казаков



Удаление строк

Prodavec

WHERE

Prod_Name

=

Шахов




Приложенные файлы

  • pdf 7066438
    Размер файла: 510 kB Загрузок: 0

Добавить комментарий