- •БАЗЫ ДАННЫХ
- •SQL (Structured Query Language) ─
- •SQL - это гибкий и эффективный язык, все средства которого применяются для манипулирования
- •Структура SQL:
- •Типы данных языка SQL/92 :
- •INTEGER или INT ─ целые числа. SMALLINT ─ целые числа меньшего диапазона.
- •VARCHAR(n) - строка символов переменной длины. BIT(n) ─ строка битов постоянной длины.
- •В стандарте SQL определены стандартные встроенные функции для обработки текста, чисел, даты-времени, определены
- •Операторы определения данных:
- •Операторы манипулирования данными:
- •Администрирование данных:
- •Соглашения:
- •Синтаксис оператора SELECT:
- •Простые запросы:
- •Выборка по условию:
- ••IN – предикат TRUE, когда сравниваемое значение входит в заданное множество (NOT IN
- ••IS NULL – предикат, применяющийся для выявления равенства значения некоторого атрибута неопределенному значению
- •Запросы (использовать все варианты ответа):
- •ORDER BY – список полей упорядочивания результата (ASC – возрастание, DESC – убывание).
- •Агрегатные функции:
- •Запросы:
- •Вычисляемые поля
- •GROUP BY – группирование результатов. SELECT и GROUP BY тесно связаны между собой.
- •Запросы:
- •Вывести среднее значение стипендии по группам:
- •Вложенные подзапросы
- •Виды подзапросов:
- •Накладываемые ограничения:
- ••В стандарте языка операторы сравнения расширены до многократных сравнений с использованием слов ANY
- •Определить студентов, у которых стипендии превышают начисления хотя бы одного студента в группе
- •Определить студентов, у которых стипендии превышают начисления любого студента в группе 1223
- •Предложение HAVING
- •Запрос: Получить группы, количество студентов в группе, среднюю стипендию для групп, у которых
- •Порядок обработки предложений в SELECT:
- •Многотабличные запросы
- •Самый простой запрос:
- •Поэтому перечисление таблиц используется с условием соединения записей из разных таблиц в предложении
- •Соединения равенства
- •Запрос: Вывести сведения о клиентах и их покупках (сведения в таблице ПРОДАЖИ).
- •Запрос: Вывести для каждого клиента суммарное количество покупок
- •Выборка из 3 таблиц проводится аналогично.
- •Внешнее соединения
- •Различают:
- •Синтаксис:
- •Запрос: Выбрать из таблицы «Товары» список товаров, а из таблицы «Продажи» - суммарное
- •Команда создания таблицы — CREATE TABLE
- •ограничение_столбца — с помощью этого предложения указываются ограничения, которые будут определены для столбца.
- •CONSTRAINT — необязательное ключевое слово, после которого указывается название ограничения на значения столбца
- •PRIMARY KEY — определение первичного ключа на уровне одного столбца (т. е. первичный
- •ON DELETE {CASCADE | NO ACTION} - эти ключевые слова определяют действия, предпринимаемые
- •CREATE TABLE Учебный_план (ID_План INTEGER NOT NULL,
- •Изменение структуры таблицы — ALTER TABLE
- •Добавим, например, в таблицу «Студенты» столбец Год_поступления следующим образом:
- •Удаление из таблицы «Студенты» столбца «Год_поступления»:
- •Удаление таблиц — DROP TABLE
- •Добавление данных —INSERT
- •Оператор удаления данных DELETE
- •Операция обновления данных UPDATE
- •Операторы создания и удаления индекса
- •Product
PRIMARY KEY — определение первичного ключа на уровне одного столбца (т. е. первичный ключ будет состоять только из значений одного столбца).
UNIQUE — указание на создание для столбца ограничения целостности UNIQUE (уникальность каждого отдельного значения в столбце).
FOREIGN KEY ... REFERENCES — указание на то, что столбец будет служить внешним ключом для таблицы, имя которой задается с помощью параметра <имя_главной_таблицы>.
ON DELETE {CASCADE | NO ACTION} - эти ключевые слова определяют действия, предпринимаемые при удалении строки из главной таблицы.
ON UPDATE {CASCADE | NO ACTION} - эти ключевые слова определяют действия, предпринимаемые при модификации строки главной таблицы.
CHECK — ограничение целостности, инициирующее контроль вводимых в столбец (или столбцы) значений;
CREATE TABLE Учебный_план (ID_План INTEGER NOT NULL,
ID_Дисциплина |
INTEGER NOT NULL, |
|
Семестр |
INTEGER NOT NULL, |
|
Количество_часов |
INTEGER, |
|
ID_Преподаватель |
INTEGER, |
|
PRIMARY KEY |
(ID_План), |
|
FOREIGN KEY (ID_Дисциплина) |
||
REFERENCES |
Дисциплины |
FOREIGN KEY (ID_Преподаватель) REFERENCES
Кадровый_состав
CHECK ((Семестр >= 1) OR (Семестр <= 10)))
Изменение структуры таблицы — ALTER TABLE
Основные режимы использования команды :
•добавление столбца;
•удаление столбца;
•модификация столбца;
•изменение, добавление и удаление ограничений (первичных и внешних ключей, значений по умолчанию).
ALTER TABLE <имя_таблииы>
[ALTER COLUMN <имя_столбца> [SET DEFAULT <выражение>]|
[DROP DEFAULT]]
|[ADD <определение_столбца>]
|[DROP COLUMN <имя_столбца> [CASCADE]|
[RESTRICT]]
|[ADD [<определение_первичного_ключа>]| [<определение_внешнего_ключа>]| [<условие_уникальности>]|[<условие_на_значение>]]
|[DROP CONSTRAINT <имя_ограничения>
[CASCADE]|[RESTRICT]]
Добавим, например, в таблицу «Студенты» столбец Год_поступления следующим образом:
ALTER TABLE Студенты
ADD Год_поступления INTEGER NOT NULL DEFAULT YEAR(GETDATE())
Пример модификации столбца «Номер_группы» таблицы «Студенты» (тип данных INTEGER заменяется на CHAR):
ALTER TABLE Студенты
ALTER COLUMN Номер_группы CHAR(6) NOT NULL
Удаление из таблицы «Студенты» столбца «Год_поступления»:
ALTER TABLE Студенты
DROP COLUMN Год_поступления
Добавление значения по умолчанию для столбца
Номер_группы:
ALTER TABLE Студент
ADD CONSTRAINT DEF_Номер_группы DEFAULT 1 FOR Номер_группы
Удаление таблиц — DROP TABLE
DROP TABLE <имя_таблииы>
Но невозможно удалить таблицу, если на нее с помощью ограничения целостности FOREIGN KEY ссылается другая таблица.
Добавление данных —INSERT
В простейшем случае вставка данных с помощью команды INSERT предполагает использование конструкции :
INSERT [INTO] <имя_таблицы>
[(<список_колонок>)] VALUES (<список_значений>)
Пример:
INSERT INTO Student VALUES (10, Иванов, Иван, 143,1500, 3) – вводится вся строка,
или выборочно
INSERT INTO Student (Kod, Ocenka) VALUES (3, 10)
Оператор удаления данных DELETE
DELETE FROM имя_таблицы [WHERE условия_отбора]
DELETE FROM Student – удаление всех строк
DELETE FROM Student
WHERE Fam = 'Иванов '