SQL语句创建表.docx
- 文档编号:14272393
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:7
- 大小:75.83KB
SQL语句创建表.docx
《SQL语句创建表.docx》由会员分享,可在线阅读,更多相关《SQL语句创建表.docx(7页珍藏版)》请在冰点文库上搜索。
SQL语句创建表
SQL语句创建表
LT
1.定义基本表语句
语法:
USE 数据库名CREATETABLE表名
(列名类型(大小)DEFAULT'默认值',
列名类型(大小)DEFAULT'默认值',
列名类型(大小)DEFAULT'默认值',
......);
注:
绿色部份是可以省略的。
例:
CREATETABLES(SNOchar
(2),SNAMEchar(8),AGEdecimal
(2),SEXchar
(2)DEFAULT'男',DEPTchar
(2));
创建了一个五列的表,其中第四列的默认值为‘男’。
2.定义完整性约束
语法:
USE 数据库名
CREATETABLE表名(列名类型(大小)DEFAULT'默认值'CONSTRAINT约束名约束定义, 列名类型(大小)DEFAULT'默认值'CONSTRAINT约束名约束定义,
列名类型(大小)DEFAULT'默认值'CONSTRAINT约束名约束定义, ......);
注:
(1)绿色部份是可以省略的。
(2)一个列是可以有多个约束的。
约束定义:
(1)NULL|NOTNULL 用于定义列的空值约束。
(定义列) (下面的蓝色部份是单选其中之一)
语法:
CONSTRAINT约束名NULL|NOTNULL
注意:
a.NOTNULL约束强制列不接受NULL值。
b.NOTNULL约束强制字段始终包含值。
这意味着,如果不向字段添加值,就无法插入新纪录或者更新记录。
例:
下面的SQL语句强制"Id_P"列和"LastName"列不接受NULL值:
CREATETABLEPersons
(
Id_PintNOTNULL,
LastNamevarchar(255)NOTNULL,
FirstNamevarchar(255),
Addressvarchar(255),
Cityvarchar(255)
)
(2)UNIQUE 约束唯一标识数据库表中的每条记录。
(即可以定义列也可能定义表)
语法:
CONSTRAINT约束名UNIQUE(列名,列名,......);
说明:
用于指定基本表在某一个列或多个列的组合上取值必须唯一。
定义了UNIQUE约束的那些列称为唯一键。
如果为基本表的革一列或多个列的组合指定了UNIQUE约束,则系统将为这些列建立唯一索引,从而保证在表中的任意两行记录在指定的列或列组合上不能取同样的值。
KEY约束:
SQLServer/Oracle/MSAccess:
CREATETABLEPersons
(
Id_PintNOTNULLPRIMARYKEY,
LastNamevarchar(255)NOTNULL,
FirstNamevarchar(255),
Addressvarchar(255),
Cityvarchar(255)
)
如果需要命名PRIMARYKEY约束,以及为多个列定义PRIMARYKEY约束,请使用下面的SQL语法:
MySQL/SQLServer/Oracle/MSAccess:
CREATETABLEPersons
(
Id_PintNOTNULL,
LastNamevarchar(255)NOTNULL,
FirstNamevarchar(255),
Addressvarchar(255),
Cityvarchar(255),
CONSTRAINTuc_PersonIDPRIMARYKEY(Id_P,LastName)
)
(4)FOREIGNKEY外键(即可以定义列也可能定义表)
语法:
CONSTRAINT约束名FOREIGNKEY(列名,列名,......)REFERENCES(列名,列名,......);
说明:
指定某一个列或多个列的组合作为外部键,并在外部键和它所引用的主键或唯一键之间建立联系。
在这种联系中,包含外部键的基本表称为从表,包含外部键引用的主键或唯一键的表称为主表。
一旦为一列或列的组合定义了FOREIGNKEY约束,系统将保证从表在外部键上的取值要么是主表中某一个主键值或唯一键值,要么取空值。
注意:
a.在REFERENCES中引用的列必须和FOREIGNKEY的外部键列一一对应,即列数目相等并且相应列的数据类型相同。
例:
下面的SQL在"Orders"表创建时为"Id_P"列创建FOREIGNKEY:
SQLServer/Oracle/MSAccess:
CREATETABLEOrders
(
O_IdintNOTNULLPRIMARYKEY,
OrderNointNOTNULL,
Id_PintFOREIGNKEYREFERENCESPersons(Id_P)
)
如果需要命名FOREIGNKEY约束,以及为多个列定义FOREIGNKEY约束,请使用下面的SQL语法:
MySQL/SQLServer/Oracle/MSAccess:
CREATETABLEOrders
(
O_IdintNOTNULL,
OrderNointNOTNULL,
Id_Pint,
PRIMARYKEY(O_Id),
CONSTRAINTfk_PerOrdersFOREIGNKEY(Id_P)REFERENCESPersons(Id_P)
)
(5)CHECK约束用于限制列中的值的范围。
(即可以定义列也可能定义表)
语法:
CONSTRAINT约束名CHECK(约束条件);
说明:
用于指定基本表中的每一条记录必须满足的条件,可以对基本表在各个列上的值做进一步的约束,如成绩列的取值既不能大于100,也不能小于0。
注意:
a.如果对单个列定义CHECK约束,那么该列只允许特定的值。
b.如果对一个表定义CHECK约束,那么此约束会在特定的列中对值进行限制。
例:
下面的SQL在"Persons"表创建时为"Id_P"列创建CHECK约束。
CHECK约束规定"Id_P"列必须只包含大于0的整数。
SQLServer/Oracle/MSAccess:
CREATETABLEPersons
(
Id_PintNOTNULLCHECK(Id_P>0),
LastNamevarchar(255)NOTNULL,
FirstNamevarchar(255),
Addressvarchar(255),
Cityvarchar(255)
)
如果需要命名CHECK约束,以及为多个列定义CHECK约束,请使用下面的SQL语法:
MySQL/SQLServer/Oracle/MSAccess:
CREATETABLEPersons
(
Id_PintNOTNULL,
LastNamevarchar(255)NOTNULL,
FirstNamevarchar(255),
Addressvarchar(255),
Cityvarchar(255),
CONSTRAINTchk_PersonCHECK(Id_P>0ANDCity='Sandnes')
)
例:
USElijintaoCREATETABLES2
(SNOCHAR
(2)CONSTRAINTS_PRIMPRIMARYKEY,
SNCHAR(8)CONSTRAINTSN_CONSNOTNULL,
AGENUMERIC
(2)CONSTRAINTAGE_CONSNOTNULLCONSTRAINTAGE_CHKCHECK(AGEBETWEEN15AND45),
SEXCHAR
(2)DEFAULT'男'CONSTRAINTSEX_CHKCHECK(SEX='男'ORSEX='女'),
DEPTCHAR
(2)CONSTRAINTDEPT_CONSNOTNULL);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 语句 创建