马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
应用程序需要使用数据库,数据库本身需要设计、开发和部署。还有MySQL学习教程,客户怎样实施混合系统,或者需要帮助管理多个云服务?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束缚,则体系将为这些列创建独一索引,从而包管在表中的恣意两行纪录在指定的列或列组合上不克不及取一样的值。
注重:
a.UNIQUE束缚独一标识数据库表中的每笔记录。
b.UNIQUE和PRIMARYKEY束缚均为列或列汇合供应了独一性的包管。
c.PRIMARYKEY具有主动界说的UNIQUE束缚。
d.请注重,每一个表能够有多个UNIQUE束缚,可是每一个表只能有一个PRIMARYKEY束缚。
例:
上面的SQL在"Persons"表创立时在"Id_P"列创立UNIQUE束缚:
MySQL:
CREATETABLEPersons
(
Id_PintNOTNULL,
LastNamevarchar(255)NOTNULL,
FirstNamevarchar(255),
Addressvarchar(255),
Cityvarchar(255),
UNIQUE(Id_P)
)
SQLServer/Oracle/MSaccess:
CREATETABLEPersons
(
Id_PintNOTNULLUNIQUE,
LastNamevarchar(255)NOTNULL,
FirstNamevarchar(255),
Addressvarchar(255),
Cityvarchar(255)
)
假如必要定名UNIQUE束缚,和为多个列界说UNIQUE束缚,请利用上面的SQL语法:
MySQL/SQLServer/Oracle/MSAccess:
CREATETABLEPersons
(
Id_PintNOTNULL,
LastNamevarchar(255)NOTNULL,
FirstNamevarchar(255),
Addressvarchar(255),
Cityvarchar(255),
CONSTRAINTuc_PersonIDUNIQUE(Id_P,LastName)
)
(3)PRIMARYKEY束缚独一标识数据库表中的每笔记录。(便可以界说列也大概界说表)
语法:CONSTRAINT束缚名PRIMARYKEY(列名,列名,......);
申明:用于界说基础表的主键。与UNIQUE束缚相似,PRIMARYKEY束缚也是经由过程创建独一索引来包管基础表在主键列(某一个列或多个列的组合)上取值的独一性。但是它们之间也存在着很年夜不同:在一个基础表中只能界说一个PRIMARYKEY束缚,却能界说多个UNIQUE束缚。假如为基础表的某一个列或多个列的组合指定了PRIMARYKEY束缚,那末个中在任何一个列都不克不及呈现空值;而UNIQUE束缚同意呈现空值。
注重:
a.主键必需包括独一的值。
b.主键列不克不及包括NULL值。
c.每一个表应当都一个主键,而且每一个表只能有一个主键。
例:
上面的SQL在"Persons"表创立时在"Id_P"列创立PRIMARYKEY束缚:
MySQL:
CREATETABLEPersons
(
Id_PintNOTNULL,
LastNamevarchar(255)NOTNULL,
FirstNamevarchar(255),
Addressvarchar(255),
Cityvarchar(255),
PRIMARYKEY(Id_P)
)
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:
MySQL:
CREATETABLEOrders
(
O_IdintNOTNULL,
OrderNointNOTNULL,
Id_Pint,
PRIMARYKEY(O_Id),
FOREIGNKEY(Id_P)REFERENCESPersons(Id_P)
)
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的整数。
MySQL:
CREATETABLEPersons
(
Id_PintNOTNULL,
LastNamevarchar(255)NOTNULL,
FirstNamevarchar(255),
Addressvarchar(255),
Cityvarchar(255),
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);
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Qingqinglanghua/archive/2009/12/21/5051563.aspx一些典型的RDBMS功能并不总是在DBaaS系统中可用。例如MySQL学习教程,WindowsAzureSQLDatabase(以前的SQLAzure)是微软的DBaaS产品,提供了一个类似于SQLServer的数据库平台。 |