仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 948|回复: 8
打印 上一主题 下一主题

[学习教程] 绝无经由的SQL语句---创立表

[复制链接]
乐观 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 20:11:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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的数据库平台。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-18 18:29:25 | 只看该作者
索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。
乐观 该用户已被删除
板凳
 楼主| 发表于 2015-1-23 07:06:19 | 只看该作者
where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
不帅 该用户已被删除
地板
发表于 2015-1-31 15:37:00 | 只看该作者
我们学到了什么?思考问题的时候从表的角度来思考问
冷月葬花魂 该用户已被删除
5#
发表于 2015-2-6 20:15:28 | 只看该作者
sqlserver的痛苦之处在于有用文档的匮乏,很多只是表明的东西
精灵巫婆 该用户已被删除
6#
发表于 2015-2-18 13:35:55 | 只看该作者
如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。
活着的死人 该用户已被删除
7#
发表于 2015-3-6 07:49:52 | 只看该作者
比如日志传送、比如集群。。。
小女巫 该用户已被删除
8#
发表于 2015-3-12 22:58:56 | 只看该作者
SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。
老尸 该用户已被删除
9#
发表于 2015-3-20 05:23:00 | 只看该作者
还不是性能有问题!否则面向对象的数据库早就实现了!建议使用CLR的地方一般是和应用的复杂程度或操作系统环境有很高的耦合度的场景。如你想构建复杂的算法,并且用到了大量的指针和高级数据模型。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 07:05

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表