Презентация на тему: SQL – язык структурированных запросов

SQL – язык структурированных запросов
Типы команд SQL
Data Definition Language ( DDL )
Data Definition Language ( DDL ) определение данных
CREATE TABLE
CREATE TABLE
CREATE TABLE
Изменение структуры таблицы
Возможно изменение описания столбцов, если
Data Manipulation Language ( DML )
Data Query Language ( DQL )
Оператор SELECT
Data Control Language ( DCL )
Команды управления транзакциями
Преимущества языка SQL
Преимущества языка SQL (продолжение)
Типы данных языка SQL по стандарту
Отсутствующие данные
Функция IDENTITY
Получение информации о типах данных
ВСТРОЕННЫЕ ФУНКЦИИ
Приступим к изучению оператора SELECT
ЧТО, СТРАШНО?
SELECT что вывести (какие столбцы) FROM откуда вывести (из каких таблиц)
Вычисляемые поля
Сортировка выбранных данных – предложение ORDER BY
ПРИМЕРЫ:
Предложение WHERE для фильтрации записей в соответствии с условием
СРАВНЕНИЕ
Порядок действий при вычислении выражений
Диапазон в WHERE
Диапазон в WHERE
Принадлежность множеству
Соответствие строкового значения заданному шаблону
Например:
продолжение
Проверка на значение NULL
Вычисления в SELECT
Подведение итогов в запросах.
Подведение итогов в запросах (продолжение).
Подведение итогов в запросах (продолжение).
Подведение итогов в запросах (продолжение).
Предложение GROUP BY
SQL – язык структурированных запросов
Предложение HAVING
Пример 1
Пример 2
А можно ли использовать WHERE, если есть HAVING ?
ОБЪЕДИНЕНИЯ ТАБЛИЦ
Объединение таблиц с помощью предложения WHERE
Объединение таблиц с помощью предложения WHERE – правильное решение
WHERE для объединения
РЕШЕНИЕ:
Внутреннее соединение с помощью конструкции INNER JOIN ON
Пример:
А если таблиц больше двух?
В нашем примере будет:
Ну, ОЧЕНЬ громоздко! Легко ошибиться в именах таблиц. Есть выход.
Подзапросы
Пример 1
Пример 2
Правильно, это простой запрос без подзапроса!
Подзапросы, возвращающие множество значений
Подзапросы, возвращающие множество значений
Комбинированные запросы. Оператор UNION
SQL – язык структурированных запросов
Язык манипулирования данными DML
Язык манипулирования данными DML (продолж.)
Язык манипулирования данными DML (продолж.)
INSERT INTO
Язык манипулирования данными DML
Язык манипулирования данными DML
Представление
SQL – язык структурированных запросов
Представление позволяет:
Для чего нужны представления:
1/76
Средняя оценка: 4.5/5 (всего оценок: 53)
Код скопирован в буфер обмена
Скачать (146 Кб)
1

Первый слайд презентации: SQL – язык структурированных запросов

Изображение слайда
2

Слайд 2: Типы команд SQL

DDL – язык определения данных, DML – язык манипулирования данными, DQL – язык запросов, DCL – язык управления данными, команды администрирования данных, команды управления транзакциями.

Изображение слайда
3

Слайд 3: Data Definition Language ( DDL )

Основные команды языка DDL : CREATE TABLE DROP TABLE ALTER TABLE CREATE INDEX DROP INDEX ALTER INDEX

Изображение слайда
4

Слайд 4: Data Definition Language ( DDL ) определение данных

Создание таблиц CREATE TABLE имя таблицы [ CHECK ( условие )] (имя_поля тип данных [ NULL|NOT NULL ][,…] ), где [CHECK( условие )] – ограничение на значение столбца. Например: CREATE TABLE stud ( ФИО varchar(20) NOT NULL, Дисциплина varchar(20) NOT NULL, Оценка smallint NOT NULL) ;

Изображение слайда
5

Слайд 5: CREATE TABLE

Кроме того должны включаться средства поддержки целостности данных PRIMARY KEY FOREIGN KEY () ON UPDATE CASCADE ON DELETE CASCADE

Изображение слайда
6

Слайд 6: CREATE TABLE

Пример1: CREATE TABLE Клиент (КодКлиента INT IDENTITY (1,1) PRIMARY KEY, Фирма VARCHAR (50) NOT NULL, ФИО VARCHAR (50) NOT NULL, Город VARCHAR (50) NOT NULL, Телефон CHAR (10) NOT NULL CHECK (Телефон LIKE ‘[ 1-9 ][ 0-9 ][ 0-9 ] - [ 0-9 ][ 0-9 ] - [ 0-9 ][ 0-9 ]’))

Изображение слайда
7

Слайд 7: CREATE TABLE

Пример2: CREATE TABLE Заказ (КодЗаказа INT IDENTITY (1,1) PRIMARY KEY, КодКлиента INT NOT NULL, КодТовара INT NOT NULL, Количество INT NOT NULL DEFAULT 0, Дата DATETIME NOT NULL DEFAULT GETDATE(), CONSTRAINT fk_ Товар FOREIGN KEY( КодТовара ) REFERENCES Товар, CONSTRAINT fk_ Клиент FOREIGN KEY( КодКлиента ) REFERENCES Клиент)

Изображение слайда
8

Слайд 8: Изменение структуры таблицы

Для добавления столбцов в таблицу ALTER TABLE < имя таблицы > ADD (< имя столбца > < тип данных > < размер > ) Возможно изменение описания столбцов ALTER TABLE < имя таблицы > MODIFY < имя столбца > < тип данных > < размер/точность >

Изображение слайда
9

Слайд 9: Возможно изменение описания столбцов, если

столбец пуст, то можно изменить тип данных и размер/точность; столбец заполнен, то можно размер/точность можно увеличить, но нельзя понизить; ни одно значение столбца не содержит NULL, можно установить NOT NULL. Разрешается изменять значения по умолчанию.

Изображение слайда
10

Слайд 10: Data Manipulation Language ( DML )

Используется для манипулирования информацией внутри объектов РБД. Содержит всего три команды: INSERT UPDATE DELETE

Изображение слайда
11

Слайд 11: Data Query Language ( DQL )

Имеет всего один оператор, но зато какой?! SELECT

Изображение слайда
12

Слайд 12: Оператор SELECT

Предназначен для выборки информации из таблиц БД и представления нужным образом результата. Для выборки необходимо указать как минимум две вещи: что выбрать, откуда выбрать.

Изображение слайда
13

Слайд 13: Data Control Language ( DCL )

Позволяет управлять доступом к информации, хранящейся внутри БД, Используется для создания объектов, связанных с доступом к данным, Служит для контроля над привилегиями пользователей GRANT, REVOKE

Изображение слайда
14

Слайд 14: Команды управления транзакциями

COMMIT – для сохранения изменений, ROLLBACK - для отмены изменений, SAVEPOINT – для установки точек возврата, SET TRANSACTION – для установки режима транзакции

Изображение слайда
15

Слайд 15: Преимущества языка SQL

Стандартность (стандартизовано международными организациями), Независимость от конкретной СУБД, Возможность использования как для локальных так и для многопользовательских СУБД, Реляционная основа языка, а потому простота изучения, Возможность создания интерактивных запросов,

Изображение слайда
16

Слайд 16: Преимущества языка SQL (продолжение)

Возможность программного доступа к БД – язык легко использовать в приложениях, Возможности, предоставляемые представлениями, Возможность манипулировать структурой БД, Поддержка архитектуры клиент-сервер.

Изображение слайда
17

Слайд 17: Типы данных языка SQL по стандарту

Тип данных Объявления Символьный Char, varchar Битовый Bit, bit varying Точные числа Numeric, decimal, integer, smollint Округленные числа Float, real, double precision Дата\время Data, time, timestamp Интервал interval

Изображение слайда
18

Слайд 18: Отсутствующие данные

Для обозначения неизвестного в данный момент времени значения атрибута используется ключевое слово NULL. Использования в качестве аргумента функций count и AVG атрибутов, имеющих значение NULL, дает правильный результат.

Изображение слайда
19

Слайд 19: Функция IDENTITY

Для типов данных int или decimal можно создать автоинкрементный столбец, чьи значения будут гарантировано уникальными, но он должен быть определен как NOT NULL. Такой столбец удобен в качестве первичного ключа. IDENTITY(n,m), где n -начальное значение, m -приращение.

Изображение слайда
20

Слайд 20: Получение информации о типах данных

Список всех используемых типов данных можно узнать из системной таблицы systypes SELECT * FROM systypes

Изображение слайда
21

Слайд 21: ВСТРОЕННЫЕ ФУНКЦИИ

Изображение слайда
22

Слайд 22: Приступим к изучению оператора SELECT

SELECT [ALL | DISTINCT] {* | [ имя столбца [AS новое имя ]]} [,… n] FROM имя таблицы [[AS] псевдоним ] [,… n] [WHERE < условие поиска >] [GROUP BY имя столбца [,… n] [HAVING < условие для группы >] [ORDER BY имя столбца [,… n]]

Изображение слайда
23

Слайд 23: ЧТО, СТРАШНО?

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

Изображение слайда
24

Слайд 24: SELECT что вывести (какие столбцы) FROM откуда вывести (из каких таблиц)

Примеры Выбрать номера зачеток и фамилии всех студентов SELECT N _зачетки, ФИО FROM Студент; 2. Выбрать все данные о преподавателях из таблицы преподаватели SELECT * FROM Преподаватели

Изображение слайда
25

Слайд 25: Вычисляемые поля

SELECT [ список полей,] выражение [ AS имя поля результата ] FROM … Следует помнить, что полученный результат не сохраняется в таблице.

Изображение слайда
26

Слайд 26: Сортировка выбранных данных – предложение ORDER BY

Предложение ORDER BY должно быть последним в операторе SELECT. Сортировать можно по нескольким столбцам. По умолчанию сортировка по возрастанию ( ASC ). Для сортировки по убыванию необходимо в конце указать ключевое слово DESCENDING сокращенно DESC ПРИМЕРЫ: 1. Вывести по алфавиту фамилии всех студентов и номера их зачеток SELECT ФИО, N _зачетки FROM Студент ORDER BY ФИО;

Изображение слайда
27

Слайд 27: ПРИМЕРЫ:

2. Вывести список студентов по убыванию значений поля «год рождения» SELECT ФИО, N _зачетки, год_рождения FROM Студент ORDER BY ФИО, год_рождения DESC ;

Изображение слайда
28

Слайд 28: Предложение WHERE для фильтрации записей в соответствии с условием

Существует 5 основных типов условий поиска: Сравнение Попадание в заданный диапазон Принадлежность множеству, Соответствие строкового значения заданному шаблону Проверка на значение NULL

Изображение слайда
29

Слайд 29: СРАВНЕНИЕ

WHERE логическое выражение Например: SELECT * FROM Ведомость WHERE Оценка >3 Логическое выражение может быть сложным

Изображение слайда
30

Слайд 30: Порядок действий при вычислении выражений

Выражение вычисляется слева направо. Сначала вычисляется то, что в скобках. Логические операции выполняются в следующей последовательности сначала NOT затем AND потом OR.

Изображение слайда
31

Слайд 31: Диапазон в WHERE

Оператор BETWEEN используется для поиска значения внутри диапазона BETWEEN минимальное значение диапазона AND максимальное значение диапазона ( граничные значения включаются) NOT BETWEEN – для поиска значений вне диапазона

Изображение слайда
32

Слайд 32: Диапазон в WHERE

ПРИМЕР: SELECT Наименование, Цена FROM Товар WHERE Цена BETWEEN 500 AND 1500

Изображение слайда
33

Слайд 33: Принадлежность множеству

Оператор IN (список заданных значений) проверяет соответствие списку заданных значений, NOT IN – наоборот несоответствие. Например: SELECT * FROM Ведомость WHERE оценка IN (4,5);

Изображение слайда
34

Слайд 34: Соответствие строкового значения заданному шаблону

Используется оператор LIKE ” шаблон ”. В шаблоне используются следующие символы: % -заменяет любое количество любых символов; _-заменяет один символ; []- предлагает набор символов; [^]- предлагает все символы кроме указанных.

Изображение слайда
35

Слайд 35: Например:

Найти студентов, у которых в номере телефона: Третья цифра 8 … WHERE Студент.Телефон LIKE ” _ _8% ” Вторая цифра 5 или 9 WHERE Студент.Телефон LIKE ” _ [59]%” Вторая цифра 5,6 или 7 WHERE Студент.Телефон LIKE ” _ [5-7]%” Встречается 23 WHERE Студент.Телефон LIKE ” %23% ”

Изображение слайда
36

Слайд 36: продолжение

WHERE Дисциплина LIKE ” математика % ” WHERE Дисциплина LIKE ” % математика % ” WHERE Дисциплина LIKE ” м % а ” Во всех этих случаях поиск идет медленно особенно, если метасимвол используется вначале шаблона.

Изображение слайда
37

Слайд 37: Проверка на значение NULL

Найти студентов без телефона: SELECT ФИО, Телефон FROM Студент WHERE Телефон IS NULL ; Найти студентов с телефоном: … WHERE Телефон IS NOT NULL ;

Изображение слайда
38

Слайд 38: Вычисления в SELECT

SELECT список полей, выражение AS имя поля-результата. Например, вывести список фамилий студентов с указанием только года рождения: SELECT ФИО, YEAR ( дата_рождения) AS Год_Рождения FROM СТУДЕНТЫ;

Изображение слайда
39

Слайд 39: Подведение итогов в запросах

SELECT имя поля, функция AS имя результата FROM имя таблицы ; Пример 1: вычислить общее количество студентов SELECT COUNT (*) AS всего_студентов FROM СТУДЕНТЫ ;

Изображение слайда
40

Слайд 40: Подведение итогов в запросах (продолжение)

Пример 2:вычислить общее количество студентов в группе 434 SELECT COUNT ( ФИО ) AS всего_студентов FROM СТУДЕНТЫ WHERE группа= ‘434’;

Изображение слайда
41

Слайд 41: Подведение итогов в запросах (продолжение)

А как быть, если надо подсчитать количество студентов в каждой группе по факультету?

Изображение слайда
42

Слайд 42: Подведение итогов в запросах (продолжение)

Правильно, нужно использовать группировку.

Изображение слайда
43

Слайд 43: Предложение GROUP BY

GROUP BY имя поля, по которому нужно группировать. В нашем примере будет SELECT Группа, COUNT ( ФИО ) AS всего_студентов FROM СТУДЕНТЫ GROUP BY Группа; Выражение COUNT ( ФИО ) вычисляется по одному разу для каждой группы

Изображение слайда
44

Слайд 44

А как применить условие к сгруппированным данным? Например, необходимо найти группы с количеством студентов > 20.

Изображение слайда
45

Слайд 45: Предложение HAVING

HAVING логическое выражение HAVING для групп тоже, что WHERE для записей. WHERE фильтрует строки, а HAVING – группы. WHERE фильтрует до группировки, а HAVING – после.

Изображение слайда
46

Слайд 46: Пример 1

Определить группы с количеством студентов более 20 SELECT Группа, COUNT ( ФИО ) AS всего_студентов FROM СТУДЕНТЫ GROUP BY Группа HAVING COUNT ( ФИО )> 20;

Изображение слайда
47

Слайд 47: Пример 2

Получить список клиентов, сделавших хотя бы 2 заказа. SELECT Код_клиента, COUNT ( * ) AS всего_заказов FROM Заказы GROUP BY Код_клиента HAVING COUNT ( * )> =2;

Изображение слайда
48

Слайд 48: А можно ли использовать WHERE, если есть HAVING ?

Конечно, если нужно. Например, нужно найти группы только 4-го курса, где количество студентов >20 SELECT Группа, COUNT ( ФИО ) AS всего_студентов FROM СТУДЕНТЫ WHERE Группа LIKE ”4*” GROUP BY Группа HAVING COUNT ( ФИО )> 20;

Изображение слайда
49

Слайд 49: ОБЪЕДИНЕНИЯ ТАБЛИЦ

Объединение – это самая мощная операция SQL. Чтобы извлечь данные, хранящиеся в нескольких таблицах с помощью одного оператора SELECT, необходимо их объединить. Чтобы объединить, нужно указать все необходимые таблицы и «объяснить», как они между собой связаны.

Изображение слайда
50

Слайд 50: Объединение таблиц с помощью предложения WHERE

Пусть нужно выбрать сведения об оценках, полученных студентами на экзаменах SELECT ФИО, N _зачетки, Оценка FROM Студент, Ведомость; Результатом такого запроса будет декартово произведение. Например, если в таблице Студент 30 записей, а таблице Ведомость 120 записей, то в результате такого запроса получится 3600 записей. Как вам такой результат?!

Изображение слайда
51

Слайд 51: Объединение таблиц с помощью предложения WHERE – правильное решение

SELECT ФИО, N _зачетки, Оценка FROM Студент, Ведомость WHERE Студент. N _зачетки= Ведомость. N _зачетки;

Изображение слайда
52

Слайд 52: WHERE для объединения

Если требуется объединить несколько таблиц, то это записывается в одном предложении WHERE c использованием операции AND. Например, пусть нужно выбрать сведения об оценках, полученных студентами на экзаменах, с указанием дисциплины

Изображение слайда
53

Слайд 53: РЕШЕНИЕ:

SELECT ФИО, N _зачетки, Дисциплина, Оценка FROM Студент, Ведомость, Дисциплины WHERE Студент. N _зачетки= Ведомость. N _зачетки AND Ведомость.Код_дисциплины=Дисциплины.Код_дисциплины;

Изображение слайда
54

Слайд 54: Внутреннее соединение с помощью конструкции INNER JOIN ON

Объединение задается в предложении FROM, вместо WHERE используется предложение ON

Изображение слайда
55

Слайд 55: Пример:

SELECT ФИО, N _зачетки, Оценка FROM Студент INNER JOIN Ведомость ON Студент. N _зачетки= Ведомость. N _зачетки;

Изображение слайда
56

Слайд 56: А если таблиц больше двух?

Ничего страшного! … FROM tabl1 INNER JOIN (tabl2 INNER JOIN tabl3 ON tabl2.id2=tabl3.id3) ON tadl1.id1=tabl3.id3 В нашем примере будет:

Изображение слайда
57

Слайд 57: В нашем примере будет:

SELECT ФИО, N _зачетки, дисциплина, Оценка FROM Студент INNER JOIN (Ведомость INNER JOIN Дисциплины ON Ведомость.Код_дисциплины=Дисциплины.Код_дисциплины) ON Студент. N _зачетки= Ведомость. N _зачетки;

Изображение слайда
58

Слайд 58: Ну, ОЧЕНЬ громоздко! Легко ошибиться в именах таблиц. Есть выход

Использовать псевдонимы таблиц: SELECT ФИО, N _зачетки, дисциплина, Оценка FROM Студент AS С INNER JOIN (Ведомость AS В INNER JOIN Дисциплины AS Д ON В.Код_дисциплины=Д.Код_дисциплины) ON С. N _зачетки= В. N _зачетки;

Изображение слайда
59

Слайд 59: Подзапросы

Когда в предложении WHERE значение, с которым надо сравнивать должно быть вычислено в момент выполнения оператора SELECT. Текст подзапроса заключается в скобки. Существует два типа подзапросов: Скалярный – возвращает единственное значение, Табличный – возвращает множество значений.

Изображение слайда
60

Слайд 60: Пример 1

Определить даты, когда продажи превышали средний уровень. SELECT Дата, Количество FROM Продажа WHERE Количество > ( SELECT AVR( Количество) FROM Продажа);

Изображение слайда
61

Слайд 61: Пример 2

Определить даты, когда среднее количество проданного за день товара оказалось > 25 единиц. SELECT Продажа.Дата, AVR ( Продажа.Количество) AS Среднедневное FROM Продажа GROUP BY Продажа.Дата HAVING AVR( Продажа.Количество) >25 ;

Изображение слайда
62

Слайд 62: Правильно, это простой запрос без подзапроса!

А если требуется найти тоже, но больше среднего показателя по всем сделкам вообще. Тогда: … GROUP BY Продажа.Дата HAVING AVR( Продажа.Количество) > SELECT ( AVR ( Продажа.Количество) FROM Продажа )

Изображение слайда
63

Слайд 63: Подзапросы, возвращающие множество значений

Можно добавить данные из одной таблицы в другую INSERT INTO табл1 SELECT * FROM табл2 WHERE поле IN(SELECT … )

Изображение слайда
64

Слайд 64: Подзапросы, возвращающие множество значений

Можно удалять данные из одной таблицы, по результатам, полученным в другой DELETE FROM студенты WHERE номер_зачетки IN (SELECT номер_зачетки FROM ведомость WHERE оценка=2 )

Изображение слайда
65

Слайд 65: Комбинированные запросы. Оператор UNION

Например, создать общий список студентов и преподавателей, фамилии которых начинаются на букву К SELECT ФИО, Адрес FROM Студенты WHERE Студенты.ФИО LIKE”K%” UNION SELECT ФИО, Адрес FROM Преподаватели WHERE Преподаватели.ФИО LIKE”K%”;

Изображение слайда
66

Слайд 66

Изображение слайда
67

Слайд 67: Язык манипулирования данными DML

Ввод данных: INSERT INTO имя_таблицы [( список полей )] VALUES (список значений) Например: INSERT INTO STUD ( ФИО,ГРУППА ) VALUES ( ‘ ИвановИИ ’, ‘ 425 ’ )

Изображение слайда
68

Слайд 68: Язык манипулирования данными DML (продолж.)

Правила: Если задаются значения всех полей, то список полей не нужен. Если столбец при описании таблицы имеет признак NOT NULL, то ввод данных в это поле в каждой записи обязателен. Если имеется хотя бы один необязательный столбец, в который не вводится значение, задание списка имен столбцов обязательно. Можно по запросу извлечь значения из одной таблицы и разместить их в другой: INSERT INTO табл.куда FROM табл. Откуда WHERE условие

Изображение слайда
69

Слайд 69: Язык манипулирования данными DML (продолж.)

Добавление выбранных данных INSERT INTO табл.куда (список полей) SELECT … Копирование данных из одной таблицы в другую SELECT * INTO новая табл FROM старая табл

Изображение слайда
70

Слайд 70: INSERT INTO

Можно по запросу извлечь значения из одной таблицы и разместить их в другой INSERT INTO табл.-куда FROM табл.-откуда WHERE л.в.

Изображение слайда
71

Слайд 71: Язык манипулирования данными DML

Обновление данных: UPDATE имя таблицы SET имя_поля1=нов.знач.1 [,имя поля2=нов.знач.2 ] и т.д. [WHERE условие отбора ] Например: UPDATE Ведомость SET Ведомость.Оценка=5 WHERE Ведомость.Оценка=2 AND Ведомость.Дисциплина= ’ 23 ’

Изображение слайда
72

Слайд 72: Язык манипулирования данными DML

DELETE FROM имя-таблицы [WHERE условие отбора ] Если не указать условие, то удаляются все строки и таблица будет пуста! Следите за нарушением целостности!

Изображение слайда
73

Слайд 73: Представление

это именованная виртуальная таблица, содержимое которой является результатом запроса, заданного при описании представления. CREATE VIEW имя_представления AS SELECT список_столбцов FROM … WHERE …

Изображение слайда
74

Слайд 74

Представление является хранимой инструкцией SELECT. Представления запрашиваются так же, как таблицы, и не принимают параметры.

Изображение слайда
75

Слайд 75: Представление позволяет:

Ограничивать число столбцов; Ограничивать число строк; Выводить дополнительные столбцы, преобразованные из других столбцов; Выводить группы строк.

Изображение слайда
76

Последний слайд презентации: SQL – язык структурированных запросов: Для чего нужны представления:

Обеспечивают независимость пользовательских программ от изменений логической структуры БД. Для каждого пользователя может быть создано «свое окно в БД». От определенных пользователей м.б. скрыты некоторые данные. Для повторного использования операторов SQL. Для упрощения выполнения сложных операций, например, объединения таблиц. Для изменения форматирования и отображения данных.

Изображение слайда