Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000555.doc
Скачиваний:
31
Добавлен:
30.04.2022
Размер:
19.12 Mб
Скачать

9.4. Операторы создания баз данных sql

9.4.1. Команда создания таблицы.

В SQL для создания таблиц имеется команда CREATE TABLE.

Эта команда создает пустую таблицу - таблицу без строк.

Значения вводятся с помощью команды INSERT.

Команда CREATE TABLE в основном определяет имя таблицы, в виде описания набора имен столбцов, указанных в определенном порядке. Она также определяет типы данных и размеры столбцов. Каждая таблица должна содержать по крайней мере один столбец.

Команда CREATE TABLE: имеет следующий синтаксис:

CREATE TABLE < Имя таблицы >

(<Имя столбца > <Тип> [(<Размер>)],

<Имя столбца > <Тип> [(<Размер>)] ... );

Так как пробелы используются для разделения частей команды SQL, они не могут быть частью имени таблицы ( или любого другого объекта, такого как индекс ).

Для разделения слов в именах таблиц обычно используется подчеркивание ( _ ).

Значение аргумента размера зависит от типа данных. Если размер не указан, система сама будет назначать значение автоматически. Для числовых значений, это - лучший выход, потому что в этом случае, все ваши поля такого типа получат один и тот же размер, что освобождает от проблем их общей совместимости.

Один тип данных, которому, в основном, нужно назначать размер – это CHAR (символ).

Аргумент размера - это целое число, которое определяет максимальное число символов, которое может вместить поле.

Фактически, число символов поля может быть от нуля ( если поле - NULL ) до этого числа. По умолчанию, аргумент размера = 1 означает, что поле может содержать только одну букву.

9.4.2. Первичные ключи таблицы

Таблицы могут содержать большое число строк

Чтобы поддерживать максимальную гибкость таблицы, строки таблицы, по определению, не должны находиться ни в каком определенном порядке. По этой и другим причинам, нужно иметь столбец в таблице, который бы уникально идентифицировал каждую строку.

Обычно, в списке любой организации имеется этот уникальный столбец, который содержит личный номер, получаемый каждым сотрудником при приеме на работу.

Такой уникальный столбец или уникальная группа столбцов , используемые, чтобы идентифицировать каждую строку и хранить все строки отдельно, называются Первичными ключами таблицы.

Первичные ключи таблицы важный элемент в структуре базы данных. Они - основа системы записи в файл; и когда нужно найти определенную строку в таблице, выполняется ссылка к этому первичному ключу.

Кроме этого, первичные ключи гарантируют, что данные таблицы имеют определенную целостность. Если первичный ключ правильно используется и поддерживается, можно гарантировать, что нет пустых строк таблицы, и что каждая строка отличается от любой другой строки.

9.4.3. Индексы таблицы

Строки таблицы могут характеризоваться индексами.

Индекс - это упорядоченный (буквенный или числовой) список столбцов или групп столбцов в таблице. Индексы служат для быстрого поиска строк по каким-то другим признакам, отличным от признака первичного ключа

Теперь рассмотрим вопрос создания индексов.

Синтаксис команды создания индексов в общем виде выглядит так:

CREATE INDEX <Имя индекса> ON <Имя таблицы>

(<Имя поля> [,<Имя поля>]...);

Например:

CREATE INDEX NewIndex ON NewTable (name);

Здесь создаётся с именем NewIndex в таблице NewTable для поля name.

В данном примере новому индексу не предписывается

уникальность, хотя это является одним из назначений индекса.

Уникальность индекса будет создана, если используется ключевое слово UNIQUE перед ключевым словом INDEX.

Для создания уникального индекса, нужно написать следующую команду:

CREATE UNIQUE INDEX NewIndex ON NewTable (name);

При создании простых индексов можно указать в скобках несколько полей, например:

CREATE INDEX NewIndex ON NewTable (name, city);

Это создаст составной индекс и проиндексирует таблицу сразу по двум полям name и city.

При создании уникальных индексов такого делать нельзя. Поле должно быть одно.

При создании таблицы или ее изменении, в команду CREATE TABLE можно помещать ограничение на значения, которые могут быть введены в поля.

Если это сделано, SQL будет отклонять любые значения, которые нарушают заданные ограничения.

Имеется два основных типа ограничений - ограничение столбца и ограничение таблицы. Различие между ними в том, что ограничение столбца применяется только к индивидуальным столбцам, в то время как ограничение таблицы применяется к группам из одного и более столбцов.

Вставляются ограничение столбца в конец имени столбца после типа данных и перед запятой.

Ограничение таблицы помещаются в конец имени таблицы после имени последнего столбца, перед заключительной круглой скобкой.

Можно использовать команду CREATE TABLE, чтобы предохранить поле от разрешения в нем пустых (NULL) указателей с помощью ограничения NOT NULL. Это ограничение накладывается только для разнообразных столбцов.

NULL - это специальное обозначение, которое отмечает поле как пустое. NULL можно использовать, когда не допускаются пустые поля.

Очевидно, что первичные ключи никогда не должны быть пустыми, поскольку это будет подрывать их функциональные возможности. Кроме того, такие поля как имена телефоны и др., требуют в большинстве случаев, определенных значений.

Если вы поместите ключевые слова NOT NULL сразу после типа данных (включая размер ) столбца, любая попытка поместить значение NULL в это поле будет отклонена. В противном случае, SQL понимает, что помещение NULL разрешено.

Для примера создадим таблицу,

CREATE TABLE Sotrudniky

(NumberS integer NOT NULL,

NameS char (10) NOT NULL,

CityS char (10),

TelephoneS char (10) NOT NULL);

Хотя нам известно, что такое первичный ключ, и как он должен использоваться в любой таблице, но нам не известно "знает" ли об этом SQL.

Чтобы SQL знал об этом, используется ограничение UNIQUE или уникальные индексы в первичных ключах, чтобы предписывать им уникальность.

Однако, SQL поддерживает первичные ключи и непосредственно с ограничением Первичный Ключ ( PRIMARE KEY ).

PRIMARY KEY может ограничивать таблицы или их столбцы.

Это ограничение действует так же как и ограничение UNIQUE, за исключением случая, когда только один первичный ключ (для любого числа столбцов) может быть определен для данной таблицы.

Первичные ключи не могут позволить значений NULL. Это означает что, подобно полям в ограничении UNIQUE, любое поле, используемое в ограничении PRIMARY KEY, должно уже быть объявлено NOT NULL.

Ниже приведен новый вариант ранее созданной таблицы, учитывающий сказанное:

CREATE TABLE Sotrudniky

( NumberS integer NOT NULL PRIMARY KEY,

NameS char(10) NOT NULL UNIQUE,

CityS char(10),

TelephoneS char(10) NOT NULL UNIQUE;

Как видно, уникальность (UNIQUE) полей может быть объявлена для той же самой таблицы.

Лучше всего помещать ограничение PRIMARY KEY в поле (или в поля), которое будет образовывать ваш уникальный идентификатор строки, и сохранить ограничение UNIQUE для полей, которые должны быть уникальными логически ( такие как номера телефона или Имя), а не для идентификации строк.

Ограничение PRIMARY KEY может также быть применено для многочисленных полей, составляющих уникальную комбинацию значений.

Предположим, что первичный ключ - это имя, и имеется первое имя и последнее имя в двух различных полях ( так что можно организовывать данные с помощью любого из них ).

Очевидно, что ни первое, ни последнее имя нельзя заставить быть уникальным самостоятельно, но можно каждую из этих двух комбинаций сделать уникальной. Мы можем применить ограничение таблицы PRIMARY KEY для пар:

CREATE TABLE Sotrudniky

( firstname char (10) NOT NULL,

lastname char (10) NOT NULL

city char (10),

PRIMARY KEY ( firstname, lastname ));

В SQL можно устанавливать любые ограничения на данные, вводимые в таблицы.

Для этого в SQL имеет ключевое слово CHECK, которое позволяет задать условие, которому должно удовлетворять значение, вводимое в таблицу, прежде чем оно будет принято.

Ограничение CHECK состоит из ключевого слова CHECK, сопровождаемого предложением предиката, который использует указанное поле.

Любая попытка модифицировать или вставить значение поля, которое могло бы сделать этот предикат неверным - будет отклонена

……….Создадим новую таблицу

CREATE TABLE NewTable

( NumberS char (10) NOT NULL PRIMARY KEY,

Name char (10) NOT NULL UNIQUE,

AgeS decimal CHECK (Age<100 and Age>0));

Из этого примера видно, что числовое поле AgeS (возраст) имеет двойное ограничение размера, а именно его значение должно быть положительным и меньше 100.

Ключевое слово CHECK может использоваться со знакомыми нам знаками множественного набора (масками),такими как (-)подчеркивание (заменяет одну любую букву) и (%) процент (заменяет множество букв), а также знакомым нам оператором IN, который перечисляет в нижеприведенном примере допустимые значения поля City

CREATE TABLE NewTable

(Name char (10) NOT NULL PRIMARY KEY,

Name char (10) NOT NULL UNIQUE,

Age decimal CHECK (Age<110),

City char(15) CHECK (City in ('Moscow', 'Piter', 'Voronesh')),

DateB char(10) CHECK (DateB LIKE '__/__/____'),

Password char(10) CHECK (Password LIKE 'PR%') );