Разделы презентаций


04 Язык SQL.ppt

Содержание

ВведениеSQL:Structured Query Language = Структурированный язык запросовСредство работы с реляционными БДИмеются стандарты SQL2Включает DDL, DML, QLВключает дополнительные средства управления параллельной обработкой данных и администрирования БДТермины «Отношение» = «таблица», «атрибут» = «столбец»CREATE

Слайды и текст этой презентации

Слайд 1Базы данных
Structured Query Language (SQL)

Базы данныхStructured Query Language (SQL)

Слайд 2Введение
SQL:
Structured Query Language = Структурированный язык запросов
Средство работы с реляционными

БД
Имеются стандарты SQL2
Включает DDL, DML, QL
Включает дополнительные средства управления параллельной

обработкой данных и администрирования БД
Термины «Отношение» = «таблица», «атрибут» = «столбец»

CREATE TABLE
staff(sno VARCHAR(15),
lname VARCHAR(23),
salary DECIMAL (7,2));

INSERT INTO staff
VALUES (‘SG6’, ‘Петров’, 3500)

SELECT sno, lname, salary
FROM staff
WHERE salary > 1000

ВведениеSQL:Structured Query Language = Структурированный язык запросовСредство работы с реляционными БДИмеются стандарты SQL2Включает DDL, DML, QLВключает дополнительные

Слайд 3Введение
Типы данных (выборочно)
CHAR(n) – символьная строка
VARCHAR(n) – символьная строка переменной

длины
NVARCHAR(n) – символьная строка переменной длины в кодировке Unicode
DECIMAL(n,m) –

число с фиксированной точкой
BIT – для хранения логических данных (0 или 1)
INT - целое
DATETIME – для хранения даты и времени
FLOAT(n) – для вещественных чисел

Примеры констант:
56.61 – вещественное число
2.9E-4 – вещественное число
‘произвольный текст’ – символьная константа
’11-mar-2000’ – символьная константа, содержащая дату

ВведениеТипы данных (выборочно)CHAR(n) – символьная строкаVARCHAR(n) – символьная строка переменной длиныNVARCHAR(n) – символьная строка переменной длины в

Слайд 4Введение
Операции (выборочно):
Арифметические: * умножить, / разделить, + сложить (для строк

- конкатенация), - вычесть, % получение остатка от деления,
Логические:

OR – логическое ИЛИ, AND – логическое И, NOT – отрицание; операции сравнения <, >, <=, >=, <>, =,
Операции над множествами: IN, NOT IN

Операнды выражений:
Константы
Переменные – идентификатор, начинающийся с @
Имена столбцов – должны быть идентификаторами, в противном случае использовать [ ] или “ ”.
Функции
Подзапросы

ВведениеОперации (выборочно):Арифметические: * умножить, / разделить, + сложить (для строк - конкатенация), - вычесть, % получение остатка

Слайд 5Введение
Некоторые полезные функции:
DAY(date) – возвращает число из заданной даты
MONTH(date) –

возвращает номер месяца из указанной даты
YEAR(date) – возвращает номер года

из указанной даты
RTRIM(string) – удаляет завершающие пробелы в строке
LTRIM(string) – удаляет лидирующие пробелы в строке
ВведениеНекоторые полезные функции:DAY(date) – возвращает число из заданной датыMONTH(date) – возвращает номер месяца из указанной датыYEAR(date) –

Слайд 6Оператор SELECT
SELECT [ALL | DISTINCT] ( | *)
FROM

данных>
[WHERE ]
[GROUP BY ]
[HAVING ]
[ORDER BY

<список полей>]

ALL – все строки, в том числе повторяющиеся (нарушение реляционной модели)
DISTINCT – только различающиеся строки
* - все столбцы результирующей таблицы
FROM – исходная таблица, операция декартово произведения (,) или операция соединения таблиц (JOIN)
WHERE – условия выборки или соединения
GROUP BY – образуются группы строк, имеющих одно и то же значение в указанных столбцах
HAVING – условие фильтрации групп (а не отдельных строк). Выполняется после группирования выходных данных
ORDER BY – список столбцов, по которым должно выполняться упорядочивание (ASC – по возрастанию, DESC – по убыванию)
Оператор SELECTSELECT [ALL | DISTINCT] ( | *)FROM [WHERE ][GROUP BY ][HAVING ][ORDER BY ]ALL – все

Слайд 7Оператор SELECT
Имена полей результата выборки SELECT [ФИО] AS name, [Дисц] AS

course, [Оценка] AS mark FROM E
Псевдонимы таблиц SELECT DISTINCT a.[ФИО] FROM E

a WHERE a.[Дисц] = ‘БД’
Оператор SELECTИмена полей результата выборки SELECT [ФИО] AS name, [Дисц] AS course, [Оценка] AS mark FROM EПсевдонимы

Слайд 8Оператор SELECT
Концептуальная схема базы данных для примеров
E =

- результаты сдачи экзаменов
G= - состав группы
P= -

набор дисциплин, по которым надо сдавать экзамены группам

Получить список всех групп без повторений, где должны пройти экзамены
SELECT DISTINCT [Группа] FROM P
Получить список студентов, сдавших экзамен по БД на 5
SELECT [ФИО] FROM E WHERE [Дисц] = ‘БД’ AND [Оценка] = 5

Оператор SELECTКонцептуальная схема базы данных для примеровE = - результаты сдачи экзаменовG= - состав группыP= - набор

Слайд 9Оператор SELECT
Получить список студентов, которым надо сдавать экзамены
SELECT [ФИО], [Дисц]

FROM G,P WHERE G.[Группа] = P.”Группа”
SELECT [ФИО], [Дисц] FROM G

JOIN P ON G.[Группа] = P.”Группа”

Получить список студентов имеющих несколько двоек
SELECT DISTINCT a.[ФИО] FROM E a JOIN E b
ON a.[ФИО] = b.[ФИО] WHERE a.[Дисц] <> b.[Дисц] AND a.[Оценка] <=2
AND b.[Оценка] <=2
Найти студентов одного потока
SELECT [ФИО] FROM G
WHERE [Группа] IN (‘ВТ-100’, ‘ВТ-200’, ‘ВТ-300’)

Получить список студентов, сдававших экзамены, в алфавитном порядке
SELECT [ФИО], [Оценка] FROM E
ORDER BY [ФИО]
Получить список студентов, сдававших экзамены, в порядке убывания оценок
SELECT [ФИО], [Оценка] FROM E
ORDER BY [Оценка] DESC, [ФИО] ASC


Оператор SELECTПолучить список студентов, которым надо сдавать экзаменыSELECT [ФИО], [Дисц] FROM G,P WHERE G.[Группа] = P.”Группа”SELECT [ФИО],

Слайд 10Оператор SELECT
Определитель NULL - указывает, что значение атрибута неизвестно, т.е.

какое-либо значение отсутствует. Использование null приводит к трехзначной логике.
Всегда ложь: a.field

= NULL NULL = NULL NULL <> NULL
Имеется специальный предикат, он равен true, если операнд есть null <операнд> IS NULL

Найти студентов, которые еще не распределены по группам
SELECT [ФИО] FROM G WHERE G.[Группа] IS NULL

Оператор SELECTОпределитель NULL - указывает, что значение атрибута неизвестно, т.е. какое-либо значение отсутствует. Использование null приводит к

Слайд 11Соединения
FROM

В общем виде предложение FROM может содержать

различные источники данных
::= [[AS] ] |

[AS] <псевдоним>| <соединение таблиц> | …

<соединение таблиц> ::= <источник данных> <тип соединения><источник данных> ON <предикат соединения> | <источник данных> CROSS JOIN <источник данных>
СоединенияFROM В общем виде предложение FROM может содержать различные источники данных ::=   [[AS] ] |

Слайд 12Соединения
::=
[INNER | { { LEFT | RIGHT

| FULL} [OUTER] }] JOIN

INNER – (по умолчанию) внутреннее соединение.

Выбираются пары строк, для которых выполняется условие соединения, заданное предикатом (ON <предикат> )
LEFT – левое внешнее соединение: в результат включается внутреннее соединение таблиц, к которому добавляются строки из левой таблицы, не вошедшие во внутреннее соединение. Строки из левой таблицы, не вошедшие во внутреннее соединение, дополняются значениями NULL в соответствии со схемой результирующей таблицы.
RIGHT – правое внешнее соединение: в результат включается внутреннее соединение таблиц, к которому добавляются строки из правой таблицы, не вошедшие во внутреннее соединение. Строки из правой таблицы, не вошедшие во внутреннее соединение, дополняются значениями NULL в соответствии со схемой результирующей таблицы.
FULL – полное открытое соединение: в результат включается внутреннее соединение таблиц, к которому добавляются строки из левой таблицы, не вошедшие во внутреннее соединение, и строки из правой таблицы, не вошедшие во внутреннее соединение, которые дополняются значениями NULL в соответствии со схемой результирующей таблицы.
Соединения ::= [INNER | { { LEFT | RIGHT | FULL} [OUTER] }] JOININNER – (по умолчанию)

Слайд 13Соединения
Концептуальная схема базы данных для примеров
E = -

результаты сдачи экзаменов
G= - состав группы
P= - набор

дисциплин, по которым надо сдавать экзамены группам

Получить список студентов, которым надо сдавать экзамены
SELECT [ФИО], [Дисц] FROM G INNER JOIN P ON G.[Группа] = P.[Группа]
Получить список студентов имеющих несколько двоек
SELECT DISTINCT a.[ФИО] FROM E a INNER JOIN E b ON a.[ФИО] = b.[ФИО]
WHERE a.[Дисц] <> b.[Дисц] AND a.[Оценка] <=2 AND b.[Оценка] <=2

Получить план сдачи экзаменов для всех студентов
SELECT G.[ФИО], P.[Дисц] FROM G LEFT JOIN P ON G.[Группа] = P.[Группа]

Результат левого соединения

СоединенияКонцептуальная схема базы данных для примеровE = - результаты сдачи экзаменовG= - состав группыP= - набор дисциплин,

Слайд 14Соединения
Получить результаты сдачи сессии для всех студентов (включая тех, кто

должен был сдавать, но не сдавал экзамены)
SELECT G.[ФИО], P.[Дисц], E.[Оценка] FROM

G INNER JOIN P ON G.[Группа] = P.[Группа] LEFT JOIN E ON G.[ФИО] = E.[ФИО] AND P.[Дисц] = E.[Дисц]
СоединенияПолучить результаты сдачи сессии для всех студентов (включая тех, кто должен был сдавать, но не сдавал экзамены)SELECT

Слайд 15Соединения
Концептуальная схема базы данных «Библиотека»
Publications = (ISBN

– уникальный код издания, название, автор)
Readers = (номер

читательского билета, фамилия читателя)
Exemplars = (инвентарный номер – естественный первичный ключ, ISBN издания, номер читательского билета, дата выдачи)
СоединенияКонцептуальная схема базы данных «Библиотека»Publications =  (ISBN – уникальный код издания, название, автор)Readers =  (номер

Слайд 16Соединения
Для всех экземпляров книг и для всех читателей показать, какие

книги есть у читателей и где находятся книги
SELECT Readers.name, Exemplars.inv FROM

Readers FULL JOIN Exemplars ON Readers.reader_id = exemplars.reader_id
СоединенияДля всех экземпляров книг и для всех читателей показать, какие книги есть у читателей и где находятся

Слайд 17Агрегатные функции
Агрегатные функции (обобщающие функции):
COUNT({[ALL | DISTINCT] |

*}) – количество строк с непустыми значениями атрибута. Если *,

то количество всех строк таблицы, не зависимо от содержания. Для числовых и символьных атрибутов
SUM([ALL | DISTINCT] <имя атрибута>) – сумма значений. Для числовых атрибутов
AVG([ALL | DISTINCT] <имя атрибута>) – среднее значение. Для числовых атрибутов
MIN(<имя атрибута>) – минимальное значение. Для числовых и символьных атрибутов. [ALL | DISTINCT] можно использовать, но не имеет смысла
MAX(<имя атрибута>) – максимальное значение. Для числовых и символьных атрибутов. [ALL | DISTINCT] можно использовать, но не имеет смысла

Применяются к результату выборки, либо к группам (если есть)


Агрегатные функцииАгрегатные функции (обобщающие функции):COUNT({[ALL | DISTINCT] | *}) – количество строк с непустыми значениями атрибута. Если

Слайд 18Агрегатные функции
Сколько раз студенты сдавали экзамен SELECT COUNT(*) FROM E SELECT COUNT(*)

AS number FROM E
Получить количество дисциплин, по которым есть 2

(ошибочный вариант) SELECT COUNT([Дисц]) as count FROM E WHERE [Оценка] = 2
Получить количество дисциплин, по которым есть 2, без повторения SELECT COUNT(DISTINCT [Дисц]) as count FROM E WHERE [Оценка] = 2
Общее количество баллов, набранных студентом SELECT SUM([Оценка]) AS summa FROM E WHERE [ФИО] = ‘Петров П.П.’
Количество дисциплин и общая сумма баллов одного студента SELECT COUNT([Дисц]) AS count, SUM([Оценка]) AS summa FROM E WHERE [ФИО] = ‘Петров П.П.’
Характеристики сдачи экзаменов SELECT MIN([Оценка]) AS minimum, MAX([Оценка]) AS maximum, AVG([Оценка]) AS average FROM E WHERE [ФИО] = ‘Петров П.П.’
Агрегатные функцииСколько раз студенты сдавали экзамен SELECT COUNT(*) FROM E SELECT COUNT(*) AS number FROM EПолучить количество

Слайд 19





Группировка результатов
FROM
WHERE
GROUP BY
HAVING
ORDER BY
Результат операции над таблицами
Оставшиеся строки
Группы
Оставшиеся группы
Сортированный результат
Исходные таблицы
Проекция
SELECT
Порядок выполнения операций
Указываются столбцы, по

которым выполняется группировка строк
Имена столбцов, указанные в GROUP BY, или использующие

их функции, в т.ч. агрегирующие
Группировка результатовFROMWHEREGROUP BYHAVINGORDER BYРезультат операции над таблицамиОставшиеся строкиГруппыОставшиеся группыСортированный результатИсходные таблицыПроекцияSELECTПорядок выполнения операцийУказываются столбцы, по которым выполняется

Слайд 20Группировка результатов
Подсчитать по каждой дисциплине количество студентов, сдававших экзамен SELECT [Дисц],

COUNT(*) AS counter FROM E GROUP BY [Дисц]
По каждой дисциплине посчитать

количество положительных оценок SELECT [Дисц], COUNT(*) FROM E WHERE [Оценка] > 2 GROUP BY [Дисц]

После группировки

Группировка результатовПодсчитать по каждой дисциплине количество студентов, сдававших экзамен SELECT [Дисц], COUNT(*) AS counter FROM E

Слайд 21Группировка результатов
Определить для каждой академической группы и дисциплины количество успешно

сдавших экзамен и средний бал по дисциплине SELECT G.[Группа], E.[Дисц], COUNT(*)

AS counter, AVG([Оценка]) AS average FROM G JOIN E ON E.[ФИО] = G.[ФИО] WHERE E.[Оценка] > 2 GROUP BY G.[Группа], E.[Дисц]

После группировки




Группы самого низкого уровня

Результат



Группировка результатовОпределить для каждой академической группы и дисциплины количество успешно сдавших экзамен и средний бал по дисциплине

Слайд 22Группировка результатов
Для отбора групп используется HAVING. Агрегатная функция в HAVING

вычисляется для каждой группы
Получить список тех групп, в которых по

одной дисциплине на экзаменах получено более одной двойки
SELECT DISTINCT G.[Группа] FROM E JOIN G ON E.[ФИО] = G.[ФИО] WHERE E.[Оценка] = 2 GROUP BY G.[Группа], E.[Дисц] HAVING COUNT(*) > 1
Группировка результатовДля отбора групп используется HAVING. Агрегатная функция в HAVING вычисляется для каждой группыПолучить список тех групп,

Слайд 23Вложенные запросы
Внутренний запрос генерирует таблицу, используемую в предикате внешнего запроса

в предложении WHERE или HAVING
Получить список тех, кто сдал все

положенные экзамены не на двойку
SELECT [ФИО] FROM E a WHERE [Оценка] > 2 GROUP BY [ФИО] HAVING COUNT(*) = (SELECT COUNT(*) FROM G JOIN P ON G.[Группа] = P.[Группа] WHERE G.[ФИО] = a.[ФИО])
Здесь вложенный запрос определяет количество экзаменов, которые должен сдавать студент a.[ФИО]
Вложенные запросыВнутренний запрос генерирует таблицу, используемую в предикате внешнего запроса в предложении WHERE или HAVINGПолучить список тех,

Слайд 24Вложенные запросы
С вложенными запросами используются предикаты:
EXISTS () – равен true,

если результат подзапроса не пуст
ALL () –

равен true, если оператор сравнения возвращает true для всех возвращаемых подзапросом значений
<выражение> <оператор сравнения> ANY (<подзапрос>) – равен true, если оператор возвращает true хотя бы для одного значения, возвращаемого подзапросом (эквивалент SOME)
<выражение> [NOT] IN (<подзапрос>) – возвращает true, если результат подзапроса содержит результат выражения
Вложенные запросыС вложенными запросами используются предикаты:EXISTS () – равен true, если результат подзапроса не пуст ALL ()

Слайд 25Вложенные запросы
Получить список тех, кто должен был сдавать экзамен по

БД, но пока еще не сдавал его
SELECT [ФИО] FROM G

a JOIN P ON G.[Группа] = P.[Группа] WHERE [Дисц] = ‘БД’ AND NOT EXISTS (SELECT [ФИО] FROM E WHERE [ФИО] = a.[ФИО] AND [Дисц] = ‘БД’)

Здесь подзапрос возвращает либо одно значение (a.[ФИО] того, кто сдал экзамен), либо ни одного

Вложенные запросыПолучить список тех, кто должен был сдавать экзамен по БД, но пока еще не сдавал егоSELECT

Слайд 26Вложенные запросы
Получить список студентов, которые сдали все экзамены на оценки

не ниже 4
SELECT DISTINCT a.[ФИО] FROM E a WHERE 4

(SELECT E.[Оценка] FROM E WHERE E.[ФИО] = a.[ФИО])

Получить список дисциплин, которые были сданы студентами из группы ВТ-100
SELECT DISTINCT E.[Дисц] FROM E WHERE [ФИО] IN (SELECT [ФИО] FROM G WHERE [Группа] = ‘ВТ-100’)

Вложенные запросыПолучить список студентов, которые сдали все экзамены на оценки не ниже 4SELECT DISTINCT a.[ФИО]  FROM

Слайд 27Вложенные запросы
Получить список студентов группы, в которой учится Иванов И.И.
SELECT

G.[ФИО] FROM G WHERE G.[Группа] = (SELECT G.[Группа] FROM G WHERE G.[ФИО] =

‘Иванов И.И.’)
Здесь подзапрос всегда возвращает единственное значение – название группы, в которой числится ‘Иванов И.И.’

Получить список студентов, которые сдали экзамен на оценку выше средней, с указанием отличия и дисциплины
SELECT [ФИО], [Дисц], [Оценка] – (SELECT AVG(Оценка) FROM E) AS [Разность] FROM E WHERE [Оценка] > (SELECT AVG(Оценка) FROM E)

Вложенные запросыПолучить список студентов группы, в которой учится  Иванов И.И.SELECT G.[ФИО]  FROM G WHERE G.[Группа]

Слайд 28Операторы манипулирования данными
Добавление строк
INSERT INTO [()] VALUES (

значений>)
INSERT INTO Exemplars (inv, isbn, reader_id, date_out) VALUES (202, ‘5-132’, 533,

GetDate())
Если значения в порядке объявления столбцов
INSERT INTO Exemplars VALUES (202, ‘5-132’, 533, GetDate())
Вставка из другой таблицы
INSERT INTO Readers (name) SELECT student_name FROM Students

Операторы манипулирования даннымиДобавление строкINSERT INTO  [()] VALUES ()INSERT INTO Exemplars (inv, isbn, reader_id, date_out) VALUES (202,

Слайд 29Операторы манипулирования данными
Удаление
DELETE FROM [WHERE ]
Удалить одну запись
DELETE FROM

G WHERE [ФИО] = ‘Петров’
Удалить студентов, имеющих две или более двоек
DELETE

FROM G WHERE G.[ФИО] IN (SELECT E.[ФИО] FROM E WHERE [Оценка]=2 GROUP BY E.[ФИО] HAVING COUNT(*) >=2)
Операторы манипулирования даннымиУдалениеDELETE FROM  [WHERE ]Удалить одну записьDELETE FROM G WHERE [ФИО] = ‘Петров’Удалить студентов, имеющих

Слайд 30Операторы манипулирования данными
Изменение значений в строке
UPDATE SET

= , … n [WHERE ]
Изменение в одной строке
UPDATE E

SET [Оценка] = 5, [Дисц] = ‘ОС’ WHERE [ФИО] = ‘Петров’ AND [Дисц] = ‘БД’
UPDATE E SET [Оценка] = [Оценка] + 1 WHERE [Дисц] = ‘БД’ AND [Оценка] < 5
Использование подзапроса
UPDATE E SET E.[Оценка] = [Оценка] + 1 WHERE E.[ФИО] IN (SELECT G.[ФИО] FROM G WHERE G.[Группа] IN (‘ВТ-100’, ‘ВТ-200’, ‘ВТ-300’))
Операторы манипулирования даннымиИзменение значений в строкеUPDATE  SET = , … n [WHERE ]Изменение в одной строкеUPDATE

Слайд 31Создание базы данных и таблиц
Создание базы данных CREATE DATABASE University
Установление текущей

базы данных USE University
Создание таблицы (сокращенный вариант) CREATE TABLE (

таблицы> [,… n])
<описание элемента таблицы> ::= <определение столбца> | [… опускаем]
<определение столбца> ::= <имя столбца> <тип данных> [<значение по умолчанию>] [<ограничения столбца>]
<значение по умолчанию> ::= DEFAULT {<литерал> | NULL | [… опускаем]}
<ограничение столбца> ::= NOT NULL […опускаем]

CREATE TABLE E
( [Дисц] CHAR(20) NOT NULL,
[ФИО] CHAR(40) NOT NULL,
[Оценка] INT DEFAULT 5)

Изменение таблицы (сокращенный вариант) ALTER TABLE <имя таблицы> { ADD <определение столбца> | DROP <имя столбца> [… опускаем] }
Переименовать столбец
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
Создание базы данных и таблицСоздание базы данных CREATE DATABASE UniversityУстановление текущей базы данных USE UniversityСоздание таблицы (сокращенный

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика