Создание таблицы базы данных
История развития SQL
SQL (Structured Query Language) – Структурированный Язык Запросов - стандартный язык запросов по работе с реляционными БД. Язык SQL появился после реляционной алгебры, и его прототип был разработан в конце 70-х годов в компании IBM Research. Он был реализован в первом прототипе реляционной СУБД фирмы IBM System R. В дальнейшем этот язык применялся во многих коммерческих СУБД и в силу своего широкого распространения постепенно стал стандартом «де-факто» для языков манипулирования данными в реляционных СУБД.
Первый международный стандарт языка SQL был принят в 1989 г. (далее мыбудем называть его SQL/89 или SQL1). Иногда стандарт SQL1 также называют стандартом ANSI/ISO [5], и подавляющее большинство доступных на рынке СУБД поддерживают этот стандарт полностью. Однако развитие информационных технологий, связанных с базами данных, и необходимость реализации переносимых приложений потребовали в скором времени доработки и расширения первого стандарта SQL.
В конце 1992 г. был принят новый международный стандарт языка SQL, который в дальнейшим будем называть SQL/92 или SQL2. И он не лишен недостатков, но в то же время является существенно более точным и полным, чем SQL/89. В настоящий момент большинство производителей СУБД внесли изменения в свои продукты так, чтобы они в большей степени удовлетворяли стандарту SQL2.
В 1999 году появился новый стандарт, названный SQL3. Если отличия между стандартами SQL1 и SQL2 во многом были количественными, то стандарт SQL3 соответствует серьезным качественным преобразованиям. В SQL3 введены новые типы данных, при этом предполагается возможность задания сложных структурированных типов данных, которые в большей степени соответствуют объектной ориентации. Наконец, добавлен раздел, который вводит стандарты на события и триггеры, не затрагивавшиеся ранее в стандартах, хотя давно уже широко использовавшиеся в коммерческих СУБД. В стандарте определены возможности четкой спецификации триггеров как совокупности события и действия. В качестве действия могут выступать не только последовательности операторов SQL, но и операторы управления ходом выполнения программы. В рамках управления транзакциями произошел возврат к старой модели транзакций, допускающей точки сохранения (savepoints), и возможность указания в операторе отката ROLLBACK точек возврата, что позволит откатывать транзакцию не в начало, а в промежуточную ранее сохраненную точку. Такое решение повышает гибкость реализации сложных алгоритмов обработки информации.
SQL нельзя в полной мере отнести к традиционным языкам программирования, он не содержит традиционных операторов, управляющих ходом выполнения программы, операторов описания типов и многих других языковых конструкций, он содержит только набор стандартных операторов доступа к данным, хранящимся в базе данных. Операторы SQL встраиваются в базовый язык программирования, которым может быть любой стандартный язык, например C++, PL, COBOL и т. д. Кроме того, операторы SQL могут выполняться непосредственно в интерактивном режиме.
Структура SQL
В отличие от реляционной алгебры, где были представлены только операции запросов к БД, SQL является полным языком, в нем присутствуют не только операции запросов, но и операторы, соответствующие DDL - Data Definition Language - языку описания данных. Кроме того, язык содержит операторы, предназначенные для управления базой данных.
Рис. 6.1. Общая структура языка SQL
Язык DDL. Создание, удаление и изменение структур данных
Язык DDL представляет собой одну из самых главных частей языка SQL. Основная задача языка DDL – единое описание данных и их структур вне зависимости от выбранной системы управления базами данных. Язык DDL вводит единые типы данных и единые языковые конструкции (т.е. операторы языка) для создания любых структур данных.
Типы данных
Тип данных – это способ кодирования информации в двоичную форму и способ декодирования этой информации в форму, понятную человеку. Тип данных – не только форма информации, но множество операций по работе над этой информацией. Так, если тип данных – число, то базовыми операциями над этой информацией будут операции сложения, вычитания, умножения и деления, если тип данных – строка текста, то очевидно это будут операции соединения и разъединения строк, поиска текста в строке и т.п.
Можно выделить три основные группы типов данных:
- строковые (текстовые);
- числовые;
- дата/время.
Для краткости далее перечислим только основные типы данных, которые будут использованы для решения конкретных задач.
CHARACTER(n) или CHAR(n) – символьные строки постоянной длины в n символов. При задании данного типа под каждое значение всегда отводится n символов, и если реальное значение занимает менее, чем n символов, то СУБД автоматически дополняет недостающие символы пробелами.
NUMERIC – вещественные числа двойной точности.
DECIMAL[(n,m)] – точные числа, здесь n – общее количество цифр в числе, m – количество цифр слева от десятичной точки. Отличается от NUMERIC способом хранения информации: на каждую цифру отводится один байт. Арифметические операции над выражениями в этом случае производятся быстрее.
DEC[(n,m)] - то же, что и DECIMAL[(n,m)].
INTEGER или INT – целые числа.
FLOAT[(n)] – числа большой точности, хранимые в форме с плавающей точкой. Здесь n – число байтов, резервируемое под хранение одного числа. Диапазон чисел определяется конкретной реализацией.
VARCHAR(n) – строки символов переменной длины. NCHAR(N) – строки локализованных символов постоянной длины.
DATE – календарная дата.
ТIМЕSТАМР(точность) – дата и время.
Основные операторы DDL
Основные операторы языка DDL представлены в следующей таблице:
Оператор
| Назначение
| Действие
| CREATE TABLE
| Создать таблицу
| Создает новую таблицу в БД
| DROP TABLE
| Удалить таблицу
| Удаляет таблицу из БД
| ALTER TABLE
| Изменить таблицу
| Изменяет структуру существующей таблицы или ограничения целостности, задаваемые для данной таблицы
| CREATE VIEW
| Создать представление
| Создает виртуальную таблицу, соответствующую некоторому SQL-запросу
| ALTER VIEW
| Изменить представление
| Изменяет ранее созданное представление
| DROP VIEW
| Удалить представление
| Удаляет ранее созданное представление
| CREATE INDEX
| Создать индекс
| Создает индекс для некоторой таблицы для обеспечения быстрого доступа по атрибутам, входящим в индекс
| DROP INDEX
| Удалить индекс
| Удаляет ранее созданный индекс
|
Как видно из таблицы, операторы языка DDL используются для создания, модификации и удаления структур данных. Рассмотрим основные из них более подробно.
Создание таблицы базы данных
Как известно, таблица базы данных представляет собой основную структуру данных, используемую в реляционных базах данных. Для создания таблицы базы данных в любой СУБД[1] необходимо отправить в СУБД специальную команду на языке SQL. Для создания таблиц используется оператор[2] CREATE TABLE.
Упрощенный синтаксис оператора выглядит следующим образом[3]:
CREATE TABLE <имя таблицы> (<список полей>);
где <имя таблицы> – последовательность букв и цифр латинского или русского алфавита[4], обозначающая будущую таблицу;
<список полей> - наименования, через запятую столбцов таблицы с указанием типов данных, которые буду храниться в этих полях, а также других признаков, о которых мы будем говорит позднее.
ВНИМАНИЕ! Имена таблиц и полей всегда пишутся без пробелов. В случае необходимости смыслового разделения по словам в наименовании таблицы или поля необходимо вместо пробела использовать символ подчеркивания.
Более детальное представление синтаксиса оператора CREATE TABLE выглядит следующим образом:
CREATE TABLE <имя таблицы>
(<Имя поля1> <Тип данных1> <Ключевые слова-признаки1>,
<Имя поля2> <Тип данных2> <Ключевые слова-признаки2>,
<Имя поля3> <Тип данных3> <Ключевые слова-признаки3>,
…
<Имя поляN> <Тип данныхN> <Ключевые слова-признакиN>);
Пример: создать таблицу «Продажи», состоящую из следующих полей: «ДатаОперации», «НомерПродажи», «НаименованиеКлиента», «НаименованиеТовара», «Количество», «Цена», «Сумма». Для этого необходимо выполнить следующий запрос:
CREATE TABLE Продажи
(
ДатаОперации DATETIME NOT NULL,
НомерПродажиINTEGER NOT NULL,
НаименованиеКлиентаVARCHAR(50),
НаименованиеТовара VARCHAR(30),
Количество NUMERIC,
Цена NUMERIC,
Сумма NUMERIC,
PRIMARY KEY (НомерПродажи)
);
В первых двух строках примера используются ключевые слова-признаки, позволяющие создать дополнительные свойства для полей таблицы. Так NOT NULL означает, что поле не может быть пустым (должно обязательно содержать какое-то значение). Более подробно о ключевых словах-признаках можно узнать в руководстве по языку SQL [8]. PRIMARY KEY– задает поля, входящие в первичный ключ таблицы.
Оператор CREATE INDEXиспользуется для создания индекса – специальной структуры данных, увеличивающей скорость поиска информации по заранее определенным полям.
CREATE INDEX<Наименование индекса> ON <Наименование таблицы> (<список полей для индексирования>);
Пример:
CREATE INDEXИндексДатаОперации ONПродажи (ДатаОперации);
В результате выполнения этого оператора СУБД создаст специальную структуру данных (индекс) для ускорения процесса поиска данных по выбранному полю (полям). Подробнее об индексах, ограничениях целостности будет рассказано в отдельном занятии.
Для удаления таблицы используется оператор DROP TABLE с указанием имени таблицы.
Пример: удалить таблицу «Продажи».
DROP TABLEПродажи
Язык DML. Добавление, редактирование и удаление данных в таблицах базы данных
После создание таблицы базы данных оператором CREATE TABLE можно приступить к операциям ввода информации в базу данных. Добавлять, редактировать и удалять информацию из базы данных возможно с помощью специальных операторов языка DML (Data Manipulation Language).
Оператор
| Назначение
| Действие
| INSERT
| Вставить строку
| Ввод информации в базу данных
| UPDATE
| Обновить строку (значение столбца)
| Изменение информации в базе данных
| DELETE
| Удалить строку (строки)
| Удаление информации из базы данных
|
Рассмотрим каждый из этих операторов более подробно.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|