- •Выборка данных
- •Оператор select
- •Выражения sql
- •Выражение from
- •Операции left join, right join
- •Операция inner join
- •Выражение in
- •Предикаты all, distinct, distinctrow, top
- •Объявление with owneraccess option
- •Выражение where
- •Операция Like
- •Операция In
- •Операция Between...And
- •Подзапрос
- •Выражение order by
- •Выражение group by
- •Выражение having
- •Оператор union
- •Оператор transform
- •Выражение procedure
- •Объявление parameters
- •Изменение данных
- •Оператор update
- •Оператор insert into
- •Оператор delete
- •Изменение структуры
- •Оператор select...Into
- •Оператор create table3
- •Выражение constraint4
- •Оператор alter table5
- •Оператор create index6
- •Оператор drop7
- •Агрегатные функции
- •Функция Count
- •Функция Avg
- •Функция Sum
- •Функции Var и VarP
- •Функции StDev и StDevP
- •Функции Min, Max
- •Функции First, Last
Оператор create table3
Создает новую таблицу. Формат
CREATE TABLE table (field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...]] [, CONSTRAINT multifieldindex [, ...]])
Оператор CREATE TABLE имеет следующие части:
Часть |
Описание |
table |
Имя создаваемой таблицы |
field1, field2,... |
Названия создаваемых полей. В новой таблице нужно создать хотя бы одно поле. |
type |
Тип поля |
size |
Размер поля в символах (для Text и Binary полей) |
index1, index2 |
Выражения CONSTRAINT, определяющие простые индексы (см. оператор CONSTRAINT) |
multifieldindex |
Выражение CONSTRAINT, определяющее составной индекс (см. оператор CONSTRAINT) |
Оператор CREATE TABLE создает новую таблицу и устанавливает свойства ее полей. Если для поля указано NOT NULL, оно требует обязательного ввода. Свойство NOT NULL можно указывать для отдельного поля или в именованом выражении CONSTRAINT. Соответственно, оно будет применяться к одному полю или ко всем перечисленным. Его можно устанавливать для поля только один раз, иначе происходит ошибка.
Выражение CONSTRAINT устанавливает ограничения для отдельного поля и может использоваться для создания первичного ключа. Для создания ключей (в т.ч. первичного) в существующей таблице используется оператор CREATE INDEX.
Следующие запросы меняют таблицы в базе Northwind (если изменения нежелательны, нужно предварительно сделать копию). Запросы вводятся в SQL окне конструктора запросов, затем нужно выполнить запрос.
Создается таблица с двумя текстовыми полями:
CREATE TABLE FirstTable (FirstName TEXT, LastName TEXT);
Создается таблица с двумя текстовыми и Date/Time полем, создается уникальный составной индекс на основе всех трех полей:
CREATE TABLE SecondTable (FirstName TEXT, LastName TEXT, DateOfBirth DATETIME, CONSTRAINT MyTableConstraint UNIQUE (FirstName, LastName, DateOfBirth));
Создается таблица с двумя текстовыми и Integer полем, поле SSN является первичным ключом:
CREATE TABLE ThirdTable (FirstName TEXT, LastName TEXT, SSN INTEGER CONSTRAINT MyFieldConstraint PRIMARY KEY);
Выражение constraint4
Используется в операторах ALTER TABLE и CREATE TABLE для установки свойств полей – наложения или удаления ограничений. Позволяет также устанавливать связь с другой таблицей. Имеются две формы – для одного поля и для нескольких.
Ограничения для одного поля:
CONSTRAINT name {PRIMARY KEY | UNIQUE | NOT NULL | REFERENCES foreigntable [(foreignfield1, foreignfield2)]}
Ограничения для нескольких полей
CONSTRAINT name {PRIMARY KEY (primary1[, primary2 [, ...]]) | UNIQUE (unique1[, unique2 [, ...]]) | NOT NULL (notnull1[, notnull2 [, ...]]) | FOREIGN KEY (ref1[, ref2 [, ...]]) REFERENCES foreigntable [(foreignfield1 [, foreignfield2 [, ...]])]}
Выражение CONSTRAINT имеет следующие части:
Часть |
Описание |
name |
Имя создаваемого ограничения |
primary1, primary2 |
Имя поля/полей, образующих первичный ключ |
unique1, unique2 |
Имя поля/полей, образующих уникальный индекс |
notnull1, notnull2 |
Имя поля/полей, обязательных для заполнения |
ref1, ref2 |
Имя поля/полей, внешнего ключа, ссылающихся на другую таблицу |
foreigntable |
Имя другой таблицы, содержащей указанные поля |
foreignfield1, foreignfield2 |
Имя поля/полей другой таблицы, на которые ссылаются ref1, ref2. Поля, входящие в ее первичный ключ можно не указывать. |
Синтаксис для единичного поля можно использовать в операторах ALTER TABLE и CREATE TABLE в определении поля сразу после указания типа, синтаксис для нескольких полей можно использовать в тех же операторах вне определений полей со служебным словом CONSTRAINT.
Выражение CONSTRAINT может устанавливать следующие ограничения:
UNIQUE – определяет поле с уникальными значениями, т.е. две записи не могут содержать в этом поле одинаковые значения. Если полей несколько, в двух записях невозможны одинаковые сочетания их значений.
PRIMARY KEY – поле/поля образуют первичный ключ. Все значения должны быть разными и не Null. Т.к. в таблице только один первичный ключ, при попытке создать второй происходит ошибка.
NOT NULL – поле/поля не могут содержать Null, т.е. обязательны для заполнения.
FOREIGN KEY – поле/поля образуют внешний ключ. Если первичный ключ внешней таблицы состоит из нескольких полей, нужно использовать форму CONSTRAINT для нескольких полей, содержащую перечень ссылающихся полей, имя внешней таблицы и имена полей во внешней таблицы, на которые ссылаются перечисленные, указанные в том же порядке. Если ссылка идет не поля первичного ключа внешней таблицы, их указывать не нужно, т.к. эти поля подразумеваются по умолчанию.
Следующие запросы меняют таблицы в базе Northwind (если изменения нежелательны, нужно предварительно сделать копию). Запросы вводятся в SQL окне конструктора запросов, затем нужно выполнить запрос.
Создается таблица с двумя текстовыми и Date/Time полем, создается уникальный составной индекс на основе всех трех полей:
CREATE TABLE SecondTable (FirstName TEXT, LastName TEXT, DateOfBirth DATETIME, CONSTRAINT MyTableConstraint UNIQUE (FirstName, LastName, DateOfBirth));
Создается таблица с двумя текстовыми и Integer полем, поле SSN является первичным ключом:
CREATE TABLE ThirdTable (FirstName TEXT, LastName TEXT, SSN INTEGER CONSTRAINT MyFieldConstraint PRIMARY KEY);
