1. 定义基本表语句
Перевод:
ИСПОЛЬЗУЙТЕ 数据库名 CREATE TABLE 表名 (列名类型(大小) DEFAULT'默认值',
列名类型(大小) DEFAULT'默认值',
列名类型(大小) DEFAULT'默认值',
... ...);
注: 绿色部份是可以省略的.
Пример: CREATE TABLE S (SNO char(2), SNAME char(8), AGE char(2), SEX char(2) DEFAULT'男', DEPT char(2));
创建了一个五列的表,其中第四列的默认值为'男'。
-------------------------------------------------- ------------------------------
2. 定义完整性约束
Перевод:
USE 数据库名 CREATE TABLE 表名 (列名 类型(大小) DEFAULT'默认值' CONSTRAINT 约束名 约束定义,
ОГРАНИЧЕНИЕ DEFAULT'默认值' 约束名 约束定义,
ОГРАНИЧЕНИЕ DEFAULT'默认值' 约束名 约束定义,
... ...);
注: (1) 绿色部份是可以省略的。
(2) 一个列是可以有多个约束的。
约束定义:
(1)НОЛЬ | NOT NULL
Введите: CONSTRAINT 约束名 NULL | НЕ НУЛЬ
Источник:
а. NOT NULL 约束强制列不接受 NULL 值。
б. NOT NULL记录。
例:
Например, SQL-запрос «Id_P» и «LastName», или NULL 值:
СОЗДАТЬ ТАБЛИЦУ Персоны
(
Id_P int НЕ НУЛЬ,
Фамилия varchar(255) НЕ NULL,
Имя varchar(255),
Адрес varchar(255),
Городской варчар(255)
)
(2) УНИКАЛЬНЫЙ 约束唯一标识数据库表中的每条记录。(即可以定义列也可能定义表)
语法:CONSTRAINT 约束名 UNIQUE (列名, 列名, ... ...);
定于指定基本表在某一个列或多个列的组合上取值必须唯一。 义了UNIQUE 约束的那些列称为唯一键。如果为基本表的革一列或多个列的组合指定了УНИКАЛЬНЫЕ фотографии, фотографии, фотографии, фотографии, фотографии, фотографии, фотографии, фотографии, фотографии, фотографии, фотографии, фотографии, фотографии, фотографии, фотографии, фотографии, фотографии组合上不能取同样的值。
Источник:
а. UNIQUE 约束唯一标识数据库表中的每条记录。
б. УНИКАЛЬНЫЙ ПЕРВИЧНЫЙ КЛЮЧ или ПЕРВИЧНЫЙ КЛЮЧ.
в. ПЕРВИЧНЫЙ КЛЮЧ 拥有自动定义的 UNIQUE 约束。
d.请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 ПЕРВИЧНЫЙ КЛЮЧ 约束。
例:
下面的 SQL и «Persons» 表创建时在 «Id_P» и UNIQUE 约束:
MySQL:
СОЗДАТЬ ТАБЛИЦУ Персоны
(
Id_P int НЕ НУЛЬ,
Фамилия varchar(255) НЕ NULL,
Имя varchar(255),
Адрес варчар(255),
Городской варчар(255),
УНИКАЛЬНЫЙ (Id_P)
)
SQL-сервер/Оракл/MS-доступ:
СОЗДАТЬ ТАБЛИЦУ Персоны
(
Id_P int NOT NULL УНИКАЛЬНЫЙ,
Фамилия varchar(255) НЕ NULL,
Имя varchar(255),
Адрес варчар(255),
Городской варчар(255)
)
如果需要命名 UNIQUE 约束,以及为多个列定义 UNIQUE 约束,请使用下面的 SQL 语法:
MySQL/SQL Server/Oracle/MS Access:
СОЗДАТЬ ТАБЛИЦУ Персоны
(
Id_P int НЕ НУЛЬ,
Фамилия varchar(255) НЕ NULL,
Имя varchar(255),
Адрес varchar(255),
Городской варчар(255),
CONSTRAINT uc_PersonID UNIQUE (Id_P,Фамилия)
)
(3) ПЕРВИЧНЫЙ КЛЮЧ 约束唯一标识数据库表中的每条记录。(即可以定义列也可能定义表)
语法:CONSTRAINT 约束名 ПЕРВИЧНЫЙ КЛЮЧ (列名, 列名, ... ...);
说明:用于定义基本表的主键。与UNIQUE约束类似,PRIMARY KEY 约束也是通过建立唯一索引来保证基本表在主键列(某一个列或多个列的组合)上取值的唯一性。然而它们之间也存在着很大差别:在一个基本表中只能定义一个 PRIMARY KEY 约束,却能定义多个UNIQUE约束。如果为基本表的某一个列或多个列的组合指定了 ПЕРВИЧНЫЙ КЛЮЧ 约束,那么其中在任何一个列都不能出现空值;而 UNIQUE 约束允许出现空值。
Источник:
а. 主键必须包含唯一的值。
б. 主键列不能包含 NULL 值。
в. 每个表应该都一个主键,并且每个表只能有一个主键。
例:
Например, SQL или «Persons», или «Id_P», или PRIMARY KEY, например:
MySQL:
СОЗДАТЬ ТАБЛИЦУ Персоны
(
Id_P int НЕ НУЛЬ,
Фамилия varchar(255) НЕ NULL,
Имя varchar(255),
Адрес варчар(255),
Городской варчар(255),
ПЕРВИЧНЫЙ КЛЮЧ (Id_P)
)
SQL-сервер/Оракл/MS-доступ:
СОЗДАТЬ ТАБЛИЦУ Персоны
(
Id_P int NOT NULL ПЕРВИЧНЫЙ КЛЮЧ,
Фамилия varchar(255) НЕ NULL,
Имя varchar(255),
Адрес варчар(255),
Городской варчар(255)
)
Формат первичного ключа (PRIMARY KEY) Формат SQL:
MySQL/SQL Server/Oracle/MS Access:
СОЗДАТЬ ТАБЛИЦУ Персоны
(
Id_P int НЕ НУЛЬ,
Фамилия varchar(255) НЕ NULL,
Имя varchar(255),
Адрес varchar(255),
Городской варчар(255),
CONSTRAINT uc_PersonID ПЕРВИЧНЫЙ КЛЮЧ (Id_P, фамилия)
)
(4)ВНЕШНИЙ КЛЮЧ 外键 (即可以定义列也可能定义表)
语法:CONSTRAINT 约束名 FOREIGN KEY (列名, 列名, ... ...) REFERENCES (列名, 列名, ... ...) ;
说明: 指定某一个列或多个列的组合作为外部键,并在外部键和它所引用的主键或唯一键之间建立联系。在这种联系中, 包含外部键的基本表称为从表,包含外部键引用的主键或唯一键的表称为主表。一旦为一列或列的组合定义了 FOREIGN KEY 约束,系统将保证从表在外部键上的取值要么是主表中某一个主键值或唯一键值, 要么取空值。
Источник:
a.在REFERENCES 中引用的列必须和 FOREIGN KEY 的外部键列一一对应, 即列数目相等并且相应列的数据类型相同。
例:
Например, SQL или «Заказы», или «Id_P», или FOREIGN KEY:
MySQL:
СОЗДАТЬ ТАБЛИЦУ Заказы
(
O_Id int НЕ НУЛЬ,
OrderNo int NOT NULL,
Ид_П целое,
ПЕРВИЧНЫЙ КЛЮЧ (O_Id),
ВНЕШНИЙ КЛЮЧ (Id_P) ССЫЛКИ Лица (Id_P)
)
SQL-сервер/Оракл/MS-доступ:
СОЗДАТЬ ТАБЛИЦУ Заказы
(
O_Id int NOT NULL ПЕРВИЧНЫЙ КЛЮЧ,
OrderNo int NOT NULL,
Id_P int ССЫЛКИ НА ИНОСТРАННЫЕ КЛЮЧИ Лица (Id_P)
)
Формат FOREIGN KEY, поддержка FOREIGN KEY, поддержка FOREIGN KEY, поддержка SQL.
MySQL/SQL Server/Oracle/MS Access:
СОЗДАТЬ ТАБЛИЦУ Заказы
(
O_Id int НЕ НУЛЬ,
OrderNo int NOT NULL,
Ид_П целое,
ПЕРВИЧНЫЙ КЛЮЧ (O_Id),
CONSTRAINT fk_PerOrders ВНЕШНИЙ КЛЮЧ (Id_P) ССЫЛКИ Лица (Id_P)
)
(5) ПРОВЕРЬТЕ 约束用于限制列中的值的范围。 (即可以定义列也可能定义表)
语法:CONSTRAINT 约束名 CHECK (约束条件);
说明:用于指定基本表中的每一条记录必须满足的条件,可以对基本表在各个列上的值做进一步的约束, 如成绩列的取值既不能大于100, 也不能小于0.
Источник:
а. 如果对单个列定义 ПРОВЕРЬТЕ 约束,那么该列只允许特定的值。
б. 如果对一个表定义 ПРОВЕРЬТЕ 约束,那么此约束会在特定的列中对值进行限制。
例:
下面的 SQL 在 «Persons» 表创建时为 «Id_P» 列创建 CHECK 约束。CHECK 约束规定 «Id_P» 列必须只包含大于 0 的整数。
Мой SQL:
СОЗДАТЬ ТАБЛИЦУ Персоны
(
Id_P int НЕ НУЛЬ,
Фамилия varchar(255) НЕ NULL,
Имя varchar(255),
Адрес varchar(255),
Городской варчар(255),
ПРОВЕРИТЬ (Id_P>0)
)
SQL-сервер/Оракл/MS-доступ:
СОЗДАТЬ ТАБЛИЦУ Персоны
(
Id_P int NOT NULL ПРОВЕРКА (Id_P>0),
Фамилия varchar(255) НЕ NULL,
Имя varchar(255),
Адрес varchar(255),
Городской варчар(255)
)
如果需要命名 CHECK 约束,以及为多个列定义 CHECK 约束,请使用下面的 SQL 语法:
MySQL/SQL Server/Oracle/MS Access:
СОЗДАТЬ ТАБЛИЦУ Персоны
(
Id_P int НЕ НУЛЬ,
Фамилия varchar(255) НЕ NULL,
Имя varchar(255),
Адрес varchar(255),
Городской варчар(255),
CONSTRAINT chk_Person CHECK (Id_P>0 И City='Sandnes')
)
-------------------------------------------------- ------------------------------
Пример: USE Lijintao CREATE TABLE S2
(SNO CHAR(2) CONSTRAINT S_PRIM ПЕРВИЧНЫЙ КЛЮЧ,
SN CHAR(8) CONSTRAINT SN_CONS NOT NULL,
AGE NUMERIC(2) CONSTRAINT AGE_CONS NOT NULL CONSTRAINT AGE_CHK CHECK (ВОЗРАСТ ОТ 15 ДО 45),
SEX CHAR(2) DEFAULT '男' CONSTRAINT SEX_CHK CHECK(SEX = '男' OR SEX = '女'),
DEPT CHAR(2) CONSTRAINT DEPT_CONS NOT NULL);
Файл CSDN-файла, файл CSDN-файла: http://blog.csdn.net/Qingqinglanghua/archive/2009/12/21/5051563.aspx
-