Создание и ведение баз данных
Основные операторы ЯОД (DDL) SQL, позволяющие создавать (и уничтожать) объекты БД:
CREATE TABLE – определяет имя создаваемой таблицы, имена и типы данных, первичный ключ и любые внешние ключи;
ALTER TABLE – позволяет добавлять новые поля (ADD) или удалять существующие поля (DROP);
DROP INDEX – удаляет из таблицы индекс;
DROP TABLE – удаляет таблицу из базы данных.
Большинство современных СУБД предоставляют интерфейс-надстройку над DDL, позволяющий проводить операции по созданию, изменению, удалению объектов БД с использованием GUI.
Основные операторы ЯМД (DML) SQL, использующиеся при обработке данных, – это:
SELECT
INSERT
UPDATE
DELETE.
Эти операторы не изменяют объекты БД, а оперируют только с данными, содержащимися в БД.
Рассмотрим вначале операции выборки (SELECT), а далее операции обновления (INSERT, UPDATE, DELETE).
Простейшая операция выборки представляется командой SELECT ‑ FROM ‑ WHERE (выбрать ‑ из ‑ где):
select <список атрибутов>
from<отношение>
where <условие>.
Например, если необходимо из отношения “Успеваемость”, имеющего схему:
Успеваемость (ФИО_студента, Дисциплина, Оценка, Дата, Преподаватель)
произвести выборку данных о том, какие оценки студент Иванов И.И. получил и по каким предметам, надо задать команду:
select Дисциплина, Оценка
from Успеваемость
where ФИО_студента = “Иванов И. И.”
Часть команды “where” не является обязательной. Например, можно получить список всех студентов из отношения “Успеваемость” с помощью следующей команды:
select unique ФИО_студента
from Успеваемость.
Ключевое слово unique позволяет исключить из результата дубликаты значений атрибута. Выбрать полностью информацию из таблицы можно с помощью команды:
select *
from Успеваемость.
Условие, следующее за “where”, может включать операторы сравнения =, <>, >, >=, <, <=, булевы операторы AND, OR, NOT, а также скобки для указания желаемого порядка операций. Например, выбрать из таблицы “Успеваемость” фамилии студентов, сдавших на “5” экзамен по информатике, можно с помощью команды:
select ФИО_студента
from Успеваемость
where Дисциплина = “Информатика” AND Оценка = 5.
Выборка может быть и вложенной, когда необходимо использовать в условии результаты другой выборки. Например, если надо из отношения “Успеваемость” выбрать только студентов физико-математического факультета, пользуясь отношением “Студент”, то команда select может выглядеть так:
Select ФИО_студента
from Успеваемость
where ФИО_студента is in
(select Фамилия
from Студент
where Ф_т = “физмат”).
Здесь “is in” является представлением оператора принадлежности элемента множеству. Можно также использовать операторы “is not in” – “не принадлежит множеству”, “contains” ‑ содержит, “does not contain” – не содержит. Смысл выражения “A contains В” (А содержит В) тот же, что и выражения “В is in А” (В принадлежит множеству А). Помимо слов select, from, where в команде выборки можно использовать и другие служебные слова, например:
order by <атрибут> asc ‑ определяет сортировку результата выборки в порядке возрастания (asc) или убывания (desc) значения атрибута;
group by <атрибут1> ‑ группирует данные по значениям атрибута;
having set <атрибут2>
minus ‑ операция вычитания множеств (данных
выборок).
Помимо команды выборки select, язык SQL имеет команды, позволяющие обновлять данные (update), вставлять (insert) и удалять (delete). Например, если студенты переводятся со второго курса на третий, информацию можно обновить командой:
update Студент
set Kypc=3
where Kypc=2.
Если атрибут “Семенов С.С.” сдал экзамен по информатике на “5” 15 января 1996 г. преподавателю Петрову П.П., то информация об этом может быть добавлена в таблицу “Успеваемость” командой:
insert into Успеваемость:
(“Семенов С. С.”, “Информатика”, 5, 15/01/96, “Петров П.П.”)
Оператор insert может быть использован для включения одной строки (как в этом примере) или произвольного числа строк, определенных списком кортежей, заключенных в скобки, или операций выборки select из какой-либо другой таблицы.
Команда delete используется для удаления информации из таблицы. Например:
delete Успеваемость
where Оценка=2
позволяет удалить информацию о студентах, получивших 2 (в случае их отчисления).
Существенно расширяют возможности языка библиотечные функции, такие как count (подсчет), sum (суммирование), avg (среднее), mах и min.
Например, подсчитать число студентов в таблице “Студент”: select count (*) from Студент.