
Введение в язык sql
SQL - это язык, ориентированный на реляционные базы данных.
В 1987 г Международной организацией по стандартизации (ISO) был принят стандарт ANSI SQL в качестве международного стандарта. (ANSI-американский институт стандартов).
Этот стандарт был пересмотрен и в настоящее время действует стандарт SQL99 и SQLJ
Основные категории языка sql
Любая форма SQL делится на подразделы, которые часто упоминаются в литературе и полезны при изучении, хотя на практике так категорично не подразделяются
-DDL - Data Definition Language – язык определения данных, состоит из команд, которые создают объекты БД (таблицы, представления, индексы и т.д.)
-DML - Data Manipulation Language – язык манипулирования данными, состоит из команд, определяющих, какие значения присутствуют в таблицах в любой заданный момент времени
-DQL – Data Query Language – язык структурированных запросов, содержит команду вывода определенной информации из БД
-DCL – Data Control Language – язык управления данными, включает в себя средства подтверждения прав пользователя на выполнение определенного действия
- Команды управления транзакциями
В каждый подраздел входит группа операторов, которые подразделены согласно функциональному признаку.
Основные команды DDL:
CREATE TABLE – создать таблицу
ALTER TABLE – модифицировать таблицу
DROP TABLE – удалить таблицу
CREATE INDEX – создать индекс для таблицы
ALTER INDEX – изменить индекс таблицы
DROP INDEX – удалить индекс таблицы
Основные команды языка DML:
INSERT – ввод данных в таблицу
UPDATE – изменения, вводимые в таблицу
DELETE – удаление данных из таблицы
Основная команда языка DQL
SELECT – выборка данных. Эта команда со своими многоканальными опциями и предложениями используется для формирования запросов к БД от самых простых до очень сложных
Основные команды DCL
GRANT – представление привилегий
REVOKE – лишение привилегий
Основные команды управления транзакциями
COMMIT – используется для сохранения результатов транзакций
ROLLBACK – используется для отмены результатов транзакций
Поскольку реляционные БД позволяют устанавливать отношения между данными, необходимо четко различать типы, чтобы применять подходящие процедуры обработки и сравнения
Наиболее используемые типы данных:
Тип данных |
Описание |
CHAR(num) |
Текстовая строка фиксированной длины, содержащая num символов. Если параметр num опущен, он считается равным 1. |
VARCHAR(num) |
Текстовая строка переменной длины, содержащая не более num символов. Если параметр num опущен, значение по умолчанию определяется реализацией. |
INTEGER |
Точный числовой тип без десятичной точки. Записывается также как INT. |
DECIMAL |
Точный числовой тип с явно указанной или подразумеваемой точкой записывается также как DEC. |
DATE |
Тип, содержащий дату, с полями для года, месяца и дня. |
Некоторые основные термины SQL
- Ключевые слова (keywords) – это слова, имеющие в SQL специальное значение. Они обозначают инструкции или части инструкции, а не текст или имена объектов.
- Операторы (statements), или команды – это инструкции БД SQL. Они состоят из одной или нескольких логически раздельных частей, называемых предложениями (clauses). Обычно предложение начинается с ключевого слова и содержит ключевые слова и аргументы.
- Объекты (objects) – это структуры БД, которые имеют имя и хранятся постоянно. К ним относятся базовые таблицы, представления** (разновидности таблиц) и индексы. (Понятие объекта в SQL отличается от того, что используется в ООП)
Точка с запятой (;) завершает оператор SQL, он является официальным признаком конца оператора. (Но если вы используете встроенный SQL, то оператор завершается тем символом, который принят в базовом языке).
** представление – это объект данных, который не содержит собственных данных. Это разновидность таблицы, содержимое которой заимствуется из других таблиц в результате выполнения запроса.
Создание, изменение и удаление таблиц (DDL)
Оператор CREATE TABLE (создать таблицу).
Приступая к созданию таблицы, необходимо знать ответы на следующие вопросы:
Как будет называться таблица?
Данные каких типов будут храниться в таблице?
Из каких полей состоит таблица, и как они будут называться?
Из каких столбцов будет состоять первичный ключ?
Какие столбцы таблицы требуют обязательного ввода?
Какой размер памяти должен быть выделен для хранения каждого столбца?
Таблицы создаются с помощью команды CREATE TABLE. Она формирует пустую таблицу, не содержащую строк. Эта команда определяет таблицу как набор поименованных столбцов, расположенных в указанном порядке, а также задает типы данных и размеры столбцов. Каждая таблица имеет хотя бы один столбец.
Синтаксис оператора CREATE TABLE
CREATE TABLE имя таблицы
({имя столбца тип данных [(размер)]}…);
Это упрощенный синтаксис команды. В него не включены ограничения, индексы и т.д.
Имя таблицы не может содержать пробелов. Для разделения слов используется знак подчеркивания. Аргумент «размер» представляет собой целое число, указывающее максимальное количество символов в столбе. По умолчанию – равен 1 (одному символу). При записи команды можно разместить определения столбцов в одной строке, но они должны быть разделены запятыми.
Пользователь, который создает таблицу, является их владельцем. Пользователи, не являются владельцами таблицы, при ссылке на таблицу должны указать пред её именем имя схемы, отделенное точкой. (Группа взаимосвязанных таблиц называется схемой. БД может содержать любое количество схем)
Оператор ALTER TABLE (изменить таблицу)
С помощью этой команды может быть модифицирована структура существующей таблицы. Она может выполнять следующие действия:
добавлять столбец к таблице;
удалять столбец из таблицы;
добавлять ограничения к таблице;
удалять ограничения из таблицы;
добавлять и удалять значения по умолчанию.
Синтаксис оператора ALTER TABLE
ALTER TABLE имя таблицы
{ADD [COLUMN] определение столбца}
| { ALTER [COLUMN] имя столбца
{SET DEFAULT значение по умолчанию}
| {DROP DEFAULT}}
| {DROP [COLUMN] имя столбца}
| {ADD определение ограничения на таблицу}
| {DROP CONSTRAINT имя ограничения};
Это упрощенное описание.
Этот оператор служит в основном для переопределения таблиц, но при разработке БД его использовать не рекомендуется. Изменение структуры существующей таблицы может привести к тому, что представления, которые являются вторичными таблицами, увлекающие данные из основных таблиц, перестанут нормально функционировать, а приложения будут работать некорректно. Лучше создать новую таблицу, определить ее с учетом необходимых изменений и перенести в нее старые данные. В дополнение к этому необходимо будет выдать пользователям старой таблицы права на доступ к новой таблице.
Оператор DROP TABLE (Удаление таблицы) Удаление таблицы выполняется в два этапа:
- сначала необходимо удалить из таблицы все данные, используя оператор Delete;
- затем можно аннулировать определение таблицы с помощью оператора Drop Table.
Для удаления таблицы пользователь должен быть владельцем схемы, в которой размещена таблица.
Синтаксис оператора Drop Table:
Drop table имя таблицы [Restrict / Cascade],
Если при этой команде использовать опций Restrict, а на таблицу ссылается какое-нибудь представление или ограничение, то команда Drop Table возвращает ошибку.
Если также использовать опцию Cascade, то команда выполнится успешно и вместе с таблицей будут удалены все ссылавшиеся на нее представления и ограничения.