- •Базы данных
- •Введение
- •Введение
- •Введение
- •Введение
- •Оператор SELECT
- •Оператор SELECT
- •Оператор SELECT
- •Оператор SELECT
- •Оператор SELECT
- •Соединения
- •Соединения
- •Соединения
- •Соединения
- •Соединения
- •Соединения
- •Агрегатные функции
- •Агрегатные функции
- •Группировка результатов
- •Группировка результатов
- •Группировка результатов
- •Группировка результатов
- •Вложенные запросы
- •Вложенные запросы
- •Вложенные запросы
- •Вложенные запросы
- •Вложенные запросы
- •Операторы манипулирования данными
- •Операторы манипулирования данными
- •Операторы манипулирования данными
- •Создание базы данных и таблиц
Базы данных
Structured Query Language (SQL)
Введение
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
Введение
Типы данных (выборочно)
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’ – символьная константа, содержащая дату
Введение
Операции (выборочно):
Арифметические: * умножить, / разделить, + сложить (для строк - конкатенация), - вычесть, % получение остатка от деления,
Логические: OR – логическое ИЛИ, AND – логическое И, NOT – отрицание; операции сравнения <, >, <=, >=, <>, =,
Операции над множествами: IN, NOT IN
Операнды выражений:
Константы
Переменные – идентификатор, начинающийся с @
Имена столбцов – должны быть идентификаторами, в противном случае использовать [ ] или “ ”.
Функции
Подзапросы
Введение
Некоторые полезные функции:
DAY(date) – возвращает число из заданной даты
MONTH(date) – возвращает номер месяца из указанной даты
YEAR(date) – возвращает номер года из указанной даты
RTRIM(string) – удаляет завершающие пробелы в строке
LTRIM(string) – удаляет лидирующие пробелы в строке
Оператор SELECT
SELECT [ALL | DISTINCT] (<список полей> | *) FROM <источник данных>
[WHERE <предикат условия>]
[GROUP BY <список полей результата>] [HAVING <предикат условия>]
[ORDER BY <список полей>]
ALL – все строки, в том числе повторяющиеся (нарушение реляционной модели)
DISTINCT – только различающиеся строки * - все столбцы результирующей таблицы
FROM – исходная таблица, операция декартово произведения (,) или операция соединения таблиц (JOIN)
WHERE – условия выборки или соединения
GROUP BY – образуются группы строк, имеющих одно и то же значение в указанных столбцах
HAVING – условие фильтрации групп (а не отдельных строк). Выполняется после группирования выходных данных
ORDER BY – список столбцов, по которым должно выполняться упорядочивание (ASC – по возрастанию, DESC – по убыванию)
Оператор SELECT
Имена полей результата выборки SELECT [ФИО] AS name, [Дисц] AS course, [Оценка] AS mark
FROM E
Псевдонимы таблиц SELECT DISTINCT a.[ФИО] FROM E a
WHERE a.[Дисц] = ‘БД’
Оператор SELECT
Концептуальная схема базы данных для примеров
E =<[ФИО], [Дисц], [Оценка]> - результаты сдачи экзаменов
G=<[ФИО], [Группа]> - состав группы
P=<[Группа], [Дисц]> - набор дисциплин, по которым надо сдавать экзамены группам
Получить список всех групп без повторений, где должны пройти экзамены
SELECT DISTINCT [Группа] FROM P
Получить список студентов, сдавших экзамен по БД на 5
SELECT [ФИО] FROM E WHERE [Дисц] = ‘БД’ AND [Оценка] = 5
Оператор 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 |
Петров |
5 |
|
Сидров |
5 |
|
Иванов |
4 |
|
Кузнецов |
4 |
Оператор SELECT
Определитель NULL - указывает, что значение атрибута неизвестно, т.е. какое-либо значение отсутствует. Использование null приводит к трехзначной логике.
Всегда ложь: a.field = NULL NULL = NULL NULL <> NULL
Имеется специальный предикат, он равен true, если операнд есть
null
<операнд> IS NULL
Найти студентов, которые еще не распределены по группам
SELECT [ФИО] FROM G WHERE G.[Группа] IS NULL