Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы данных / 04 Язык SQL.ppt
Скачиваний:
67
Добавлен:
22.03.2015
Размер:
636.42 Кб
Скачать

Базы данных

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