Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Новое на сайте
Топовые новости
Новое

Инструкция 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

Источник