Реляционная модель данных


Создание таблиц БД с помощью языка SQL


Download 372 Kb.
bet16/21
Sana28.12.2022
Hajmi372 Kb.
#1023068
1   ...   13   14   15   16   17   18   19   20   21
Bog'liq
Conn&Begg

Создание таблиц БД с помощью языка SQL. Язык SQL включает в себя набор различных операторов (инструкций, команд), при выполнении которых СУБД производит определенные действия: создает новые таблицы в составе БД или изменяет их структуру, добавляет новые данные в существующие таблицы, осуществляет выборку данных и т.п.
Каждая инструкция SQL начинается со стандартных ключевых слов, которые описывают характер выполняемых действий: CREATE (создать), INSERT (добавить), SELECT (выбрать), DELETE (удалить) и т.п. Затем указывается одно или несколько предложений, которые конкретизируют требуемые действия. Эти предложения могут содержать имена таблиц и их столбцов, константы, выражения и дополнительные ключевые слова.
В дальнейшем для описания формата операторов языка SQL применяются следующие обозначения расширенной формы BNF (Backus Naur Form — форма Бэкуса–Наура):

  • прописные буквы будут использоваться для записи зарезервированных слов;

  • строчными буквами записываются слова, определяемые пользователем;

  • вертикальная черта () указывает на необходимость выбора одного из нескольких приведенных вариантов;

  • фигурные скобки определяют обязательный элемент;

  • квадратные скобки определяют необязательный элемент;

  • многоточие (…) используется для указания необязательной возможности повторения конструкции от нуля до нескольких раз.

Описание типов данных. Современные СУБД позволяют обрабатывать данные разнообразных типов, среди которых основными являются следующие:

  • INT, SMALLINT — целые числа;

  • NUMERIC, DECIMAL — числа с фиксированной точкой;

  • REAL, FLOAT — числа с плавающей точкой;

  • CHAR, VARCHAR — строки символов постоянной и переменной длины;

  • MONEY, SMALLMONEY — денежные величины;

  • DATETIME, SMALLDATETIME — дата и время;

  • BIT — логические величины.

Создание таблиц БД. В простейшем виде команда CREATE TABLE имеет следующий синтаксис:
CREATE TABLE table_name ({column_def  table_constraint} [, …])

Определение отдельной колонки, обозначенное как column_def, имеет следующий формат:


{column_name data_type} [DEFAULT constant_expression] [column_constraint} [, …]


Прежде всего, следует определить имя колонки (column_name), а также тип хранимых в ней данных (data_type). Ключевое слово DEFAULT определяет значение по умолчанию (constant_expression), которое будет использовано, если при вводе записи явно не указано другое значение.


Кроме того, для колонки можно определить набор ограничений (column_constraint), которые обеспечивают поддержку целостности данных, т.е. защиту БД от нарушения согласованности сохраняемых данных. При этом может использоваться несколько видов ограничений.
1. Обязательные данные. Для некоторых столбцов требуется наличие в каждой строке таблицы конкретного и допустимого значения. Чтобы задать ограничение подобного типа, предусмотрено использование спецификатора NOT NULL. Если для некоторого столбца задан такой спецификатор, то система будет препятствовать появлению в этом столбце пустых значений (NULL). В соответствии со стандартом ISO спецификатор NULL должен применяться по умолчанию.
Например, каждый сотрудник обязательно занимает ту или иную должность. Следовательно, столбец Position в таблице Staff должен определяться следующим образом:

Position VARCHAR(10) NOT NULL




2. Первичный ключ. Для определения простого первичного ключа используется спецификатор PRIMARY KEY, который приписывается соответствующему столбцу. При этом для столбца гарантируется уникальность значений, а также становятся запрещенными неопределенные значения (NULL). В таблице можно определить только один первичный ключ.
3. Уникальность значений столбца. Если в дополнение к первичному ключу необходимо иметь альтернативные ключи, то следует применять спецификатор UNIQUE. Например, в таблице Subject (Дисциплина) первичный ключ строится по целочисленному коду SubjectID, что сокращает время поиска. Однако и название дисциплины (символьное поле SubName) должно быть уникальным, что обеспечивается с помощью спецификатора UNIQUE:

CREATE TABLE Subject (SubjectID INTEGER PRIMARY KEY,


SubName VARCHAR(20) NOT NULL UNIQUE);


4. Проверочные ограничения. С помощью спецификатора CHECK(logical_expression) можно задать диапазон возможных значений для некоторого столбца. Это ограничение, которое основано на проверке логического выражения logical_expression, позволяет объединить несколько условий контроля при вводе данных.
Например, правильность ввода значений для столбца Семестр в некоторой таблице можно обеспечить следующим образом:

Семестр INTEGER NOT NULL CHECK((Семестр >= 1) OR (Семестр <= 10))




5. Внешний ключ. Конструкция [FOREIGN KEY] REFERENCES ref_table[(ref_column)] определяет внешний ключ, который предусматривается в дочерней (зависимой) таблице для связи с родительской (главной) таблицей ref_table. Параметр ref_column не является обязательным, т.к. в родительской таблице ссылка осуществляется на первичный ключ. При ссылке на альтернативный ключ (столбец с атрибутом UNIQUE) этот параметр требуется указать в явном виде.
Ограничения для значений в колонках таблицы могут устанавливаться и другим способом — через определение ограничений table_constraint на уровне таблицы. Такой вариант обычно применяется в случае составных ключей. При этом используются те же самые ключевые слова, однако синтаксис немного изменяется:

{PRIMARY KEY  UNIQUE} {(column [, …])}


FOREIGN KEY (column [, …]) REFERENCES ref_table [(ref_column [, …])]

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


CREATE TABLE Subject (SubjectID INTEGER,


SubName VARCHAR(20) NOT NULL,
PRIMARY KEY (SubjectID), UNIQUE (SubName));



Download 372 Kb.

Do'stlaringiz bilan baham:
1   ...   13   14   15   16   17   18   19   20   21




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling