Инструкция CREATE/ALTER TABLE общие правила
Типичная инструкция CREATE TABLE очень проста. Как правило, в ней указываются имя таблицы и имена всех столбцов, которые в ней содержатся. Многие определения таблиц также содержат ограничение по NULL (nullability), как в приведенном примере кода для SQL Server.
CREATE TABLE housing_construction (project_number INT NOT NULL, project_date DATE NOT NULL, project_name VARCHAR(50) NOT NULL, construction_color NCHAR(20), construction_height DECIMAL (4, 1), construction_length DECIMAL (4, 1), construction_width DECIMAL (4, 1), construction_volume INT)
В следующем примере в таблицу добавляется внешний ключ.
— создание ограничения уровня столбца CREATE TABLE favorite_books
(isbn CHAR(100) PRIMARY KEY, book_name VARCHAR(40) UNIQUE, category VARCHAR(40), subcategory VARCHAR(40), pub_date DATETIME NOT NULL, purchase_date DATETIME NOT NULL, CONSTRAINT fk_categories FOREIGN KEY (category) REFERENCES category(cat_name));
Внешний ключ по столбцу категорий (categories) связывает этот столбец со столбцом cat_name в таблице category. Этот синтаксис поддерживают все производители, упомянутые в этой книге.
Примеры по созданию таблиц с использованием всех типов ограничений приведены в главе 2.
Точно так же внешний ключ можно добавлять постфактум, в виде многостолбцового ключа, включающего столбцы category и subcategory.
ALTER TABLE favonte.books ADD CONSTRAINT fk_categories FOREIGN KEY (category, subcategory) REFERENCES category(cat_name, subcat_name));
Теперь с помощью инструкции ALTER TABLE можно удалить ограничение целиком.
ALTER TABLE favorite_books DROP CONSTRAINT fk_categories RESTRICT;
Ниже приводятся более подробные примеры с использованием базы данных pubs, которая поставляется с Microsoft SQL Server и Sybase Adaptive Server.
Для базы данных Microsoft SQL Server
CREATE TABLE jobs (job_id SMALLINT IDENTITY(1.1) PRIMARY KEY CLUSTERED, job_desc VARCHAR(50) NOT NULL DEFAULT ‘New Position’, min_lvl TINYINT NOT NULL CHECK (min_lvl >= 10), max_lvl TINYINT NOT NULL CHECK (max_lvl