КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Центральное место среди команд DML занимает команда создания таблиц CREATE TABLE
CREATE TABLE <table name> ( { <column name> <data type> I<size>] [<colcnstrnt> ...]} .,.. ); [<tabconstrnt>] .,.. );
где
¦ ЭЛЕМЕНТ ¦ ОПРЕДЕЛЕНИЕ ¦ ¦ ¦ ¦ ¦<table name> ¦ Имя таблицы создаваемой этой командой. ¦ ¦ ¦ ¦ ¦<column name> ¦ Имя столбца таблицы. ¦ ¦ ¦ ¦ ¦<data type> ¦ Тип данных который может содержаться в столбце. ¦ ¦ ¦ Может быть любым из следующих: ¦ ¦ ¦ INTEGER (ЦЕЛОЕ ЧИСЛО), ¦ ¦ ¦ CHARACTER (СИМВОЛЬНОЕ), ¦ ¦ ¦ DECIMAL (ДЕСЯТИЧНОЕ), ¦ ¦ ¦ NUMERIC (ЧИСЛОВОЕ), ¦ ¦ ¦ SMALLINT (НАИМЕНЬШЕЕ) ¦ ¦ ¦ FLOAT (С ПЛАВАЮЩЕЙ ТОЧКОЙ) ¦ ¦ ¦ REAL (РЕАЛЬНОЕ), ¦ ¦ ¦ DOUBLE PRECISION (УДВОЕННАЯ ТОЧНОСТЬ С ¦ ¦ ¦ ПЛАВАЮЩЕЙ ТОЧКОЙ), ¦ ¦ ¦ LONG * (ДЛИННОЕ *), ¦ ¦ ¦ VARCHAR * (ПЕРЕМЕННОЕ СИМВОЛЬНОЕ) *, ¦ ¦ ¦ DATE (ДАТА *), ¦ ¦ ¦ TIME (ВРЕМЯ) ¦ ¦ ¦ ¦ ¦ ¦( * - указывает на нестандартный для SQL тип данных)¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦<size> ¦ Размер.Его значение зависит от <data type>. ¦ ¦ ¦ ¦ ¦<colconstrnt> ¦ Может быть любым из следующих: ¦ ¦ ¦ NOT NULL (НЕ НУЛЕВОЙ), ¦ ¦ ¦ UNIQUE (УНИКАЛЬНЫЙ), ¦ ¦ ¦ PRIMARY KEY (ПЕРВИЧНЫЙ КЛЮЧ), ¦ ¦ ¦ CHECK(<predicate>) (ПРОВЕРКА предиката), ¦ ¦ ¦ DEFAULT = (ПО УМОЛЧАНИЮ = ¦ ¦ ¦ <value expression> значимому выражению) ¦ ¦ ¦ REFERENCES <table name> (ССЫЛКА НА имя таблицы ¦ ¦ ¦ [(<column name> .,.. )] [( имя столбца) ] ) ¦ ¦ ¦ ¦ ¦<tabconstrnt> ¦ Может быть любым из следующих: ¦ ¦ ¦ UNIQUE (УНИКАЛЬНЫЙ), ¦ ¦ ¦ PRIMARY KEY (ПЕРВИЧНЫЙ КЛЮЧ), ¦ ¦ ¦ CHECK (ПРОВЕРКА предиката ) ¦ ¦ ¦ FOREIGN KEY(<column name>) (ВНЕШНИЙ КЛЮЧ) ¦ ¦ ¦ ¦ ¦ ¦ REFERENCES <table name> (ССЫЛКА НА имя таблицы¦ ¦ ¦ [(<column name> .,.. )] [( имя столбца) ]. ¦ +-------------------------------------------------------------------+
Create Table Customer (ID integer Primary Key NOT NULL, NAME char(20), CITY char(20), CREDIT decimal, BIRTHDAY date ) Create Table Employee (ID integer Primary Key NOT NULL, NAME char(20), CITY char(20), COMM decimal, BIRTHDAY date )
Create Table Orders (ID integer NOT NULL, Cust_Ref integer NOT NULL References Customers, Emp_Ref integer NOT NULL References Employee, START date, FINISH date Check Start<Finish )
Create Table Item (Order_Ref integer NOT NULL References Orders, Product_Ref integer NOT NULL References Product, Amount integer Update of Orders Cascades, Delete of Orders Cascades Delete of Product Restricted )
Create Table Product (Id integer Primary Key, Name char(30), Price decimal, Type char(10) )
Как уже отмечалось выше, стандартность различных версий SQL далека от идеальной. Различные диалекты языка используют различные скалярные типы, функции и предикаты, поддерживают (или не поддерживают) различные опции команд и самый разнообразный синтаксис для них. В своем изложении языка мы следуем стандарту ANSI SQL.
Щадя читателя и следуя принципу "разумной достаточности", мы далее немного упрощаем синтаксис - в основном, за счет исключения синонимии и редко используемых опций. С другой стороны, мы стараемся упомянуть наиболее часто встречающиеся на практике опции; такие языка, отсутствующие в стандарте (и, возможно - в используемой читателем версии) расширения SQL отмечены символом *.
|