仓酷云

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

[学习教程] MSSQL编程:用SQL创立数据库

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

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

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

x
支持多种存储引擎。创立|数据|数据库
用SQL创立数据库

起首说说怎样用SQL语句创立数据库,创立数据库的语句有以下几种:
1.CREATETABLE(创立新表)
2.CREATEINDEX(增添索引)
3.DROPINDEX(删除索引)
4.CONSTRAINT(束缚语句)
5.ALTERTABLE(修正表)
6.DROPTABLE(删除表)

CREATETABLE语句:
在数据库中天生新表,表中字段的范例能够为:INTEGER(整型)、LONG(长整型)、SINGLE(单精度浮点数)、DOUBLE(双精度浮点数)、DATETIME(日期型,也能够写成DATE)、BIT(布尔型)、TEXT(字符串型,最年夜255个字节)、MEMO(字符串型,最年夜可达1.2G字节)、COUNTER(主动递增加整型,可断定纪录的独一性)、CURRENCY(泉币型,准确到小数点右边15位,右侧4位)、BINARY(字节型,最年夜255个)、LONGBINARY(用于OLE工具)、GUID(全局独一标识符)。
天生表NewTable,该表有文本字段Field1和整型字段Field2,表名和字段名能够任意你取,不辨别巨细写,可是,有些保存字不克不及用作表名字段名,好比NumberCREATETABLENewTable(Field1TEXT(30),Field2INTEGER);CREATEINDEX语句:
INDEX是为了加速查找纪录的速率,大概是为了增添字段束缚干系而设置的。

创立索引语句实行前表中能够有纪录,但存在的纪录必需满意该索引语句的束缚干系,不然语句不克不及实行,别的要注重的是在统一个数据库中(而不单单是在统一个表中),索引名不克不及不异,不然语句也会失利。
天生字段Field1的索引字段NewIndex,两条语句感化不异
天生后Field1字段能够有不异的值,能够有空值(NULL)CREATEINDEXNewIndexONNewTable(Field1);
CREATEINDEXNewIndexONNewTable(Field1)WITHIGNORENULL;

天生字段Field1的索引字段NewIndex,注重,每一个内外只能有一个主索引(PRIMARY)。天生后Field1字段不克不及有不异的值,不克不及有空值(固然,假如是TEXT范例,能够有一个空串,可是空串不是空值)CREATEINDEXNewIndexONNewTable(Field1)WITHPRIMARY;

字段Field1不克不及有不异的值,但能够有空值(两个空值不算不异的值)CREATEUNIQUEINDEXNewIndexONNewTable(Field1);

字段Field1能够有不异的值,但不克不及有空值CREATEINDEXNewIndexONNewTable(Field2)WITHDISALLOWNULL

能够在索引语句中到场ASC(升序)或DESC(降序)来把持纪录分列按次假如不利用按次字,SQL则默许利用ASC按次CREATEINDEXNewIndexONNewTable(Field1ASC,Field2DESC);DROPINDEX语句:删除表NewTable中的索引NewIndex,语句实行前索引NewIndex必需存在DROPINDEXNewIndexONNewTable;
CONSTRAINT语句:
CONSTRAINT子句用于创立数据库完全性的索引,它和INDEX语句感化一样,有些中央能够相互替换,它可使用PRIMARYKEY(主关头字),UNIQUE(独一)和FOREIGNKEY(内部关头字),和INDEX比拟不克不及利用IGNORNULL和DISALLOWNULL,但多了FOREIGNKEY(这也是它最壮大的中央)。别的,CONSTRAINT语句必需和CREATETABLE或ALTERTABLE语句一同利用。
天生表NewTable,主关头字段是Field1,主索引是NewPKCREATETABLENewTable(Field1LONGCONSTRAINTNewPKPRIMARYKEY,Field2MEMO,Field3DATETIME);

天生索引为NewUK的表NewTable,Field1不克不及有不异值,能够有空值CREATETABLENewTable(Field1INTEGERCONSTRAINTNewUKUNIQUE);

天生多列的主索引,两笔记录的Field1和Field2不克不及全体不异,也不克不及为空值CREATETABLENewTable(Field1INTEGER,Field2CURRENCY,CONSTRAINTNewPKPRIMARYKEY(Field1,Field2));

天生多列的UNIQUE索引,两笔记录的Field1和Field2不克不及全体不异注重,假如两笔记录个中一个字段不异而另外一个字段都是空值,那也算两个字段分歧CREATETABLENewTable(Field1INTEGER,Field2CURRENCY,CONSTRAINTNewUKUNIQUE(Field1,Field2));
要在几个分歧的表之间创建接洽,就要利用FOREIGNKEYREFERENCES子句,它能够限制某个表的字段内容必需存在于别的一个表中。
第一个例子:
起首,天生主关头字段为Field1的表NewTable1CREATETABLENewTable1(Field1INTEGERCONSTRAINTNewPKPRIMARYKEY);

然后,再天生内部索引,两个表的Field1必需范例不异,而且第一个表的Field1是主关头字段或UNIQUE字段。天生内部索引后,表NewTable2要增添纪录,它的Field1字段值必需已存在于表NewTable1的Field1字段中。
上面两条语句感化不异,由于Field1是NewTable1的主关头字段,能够省略不写CREATETABLENewTable2(Field1INTEGERCONSTRAINTNewFKREFERENCESNewTable1);
CREATETABLENewTable2(Field1INTEGERCONSTRAINTNewFKREFERENCESNewTable1(Field1));

第二个例子:
起首,天生主关头字段为Field1和Field2的表NewTable1CREATETABLENewTable1(Field1INTEGER,Field2TEXT(20),CONSTRAINTNewPKPRIMARYKEY(Field1,Field2));

然后,天生多列内部索引CREATETABLENewTable2(Field1INTEGER,Field2TEXT(20),CONSTRAINTNewFKFOREIGNKEY(Field1,Field2)REFERENCESNewTable1(Field1,Field2));ALTERTABLE语句:
在表天生以后,假如想修正表的布局,就利用这条语句,它能增添或删除字段和束缚干系。
给表NewTable增添日期型字段Field3,语句实行前表NewTalbe必需没有字段Field3ALTERTABLENewTableADDCOLUMNField3DATE;

删除表NewTable中的字段Field3,语句实行前字段Field3必需存在表NewTable中ALTERTABLENewTableDROPCOLUMNField3;

给表NewTable增添NewUK束缚干系ALTERTABLENewTableADDCONSTRAINTNewUKUNIQUE(Field1,Field2);

删除表NewTable的NewUK束缚干系ALTERTABLENewTableDROPCONSTRAINTNewUK;DROPTABLE语句:删除表NewTable,语句实行前表NewTable必需存在DROPTABLENewTable;你看出了作者的深度?深处半米!当初是冲那么多的大牛给他写序才买的,后来才发现无啥内容,作者也只是才用几年的新手,百花了几十两银子,再次感叹当今社会的虚伪与浮躁
兰色精灵 该用户已被删除
沙发
发表于 2015-1-19 16:25:45 | 只看该作者
如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。
灵魂腐蚀 该用户已被删除
板凳
发表于 2015-1-27 08:52:09 | 只看该作者
分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。
小魔女 该用户已被删除
地板
发表于 2015-2-5 06:24:59 | 只看该作者
可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
爱飞 该用户已被删除
5#
发表于 2015-2-11 06:40:33 | 只看该作者
至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。
谁可相欹 该用户已被删除
6#
发表于 2015-3-1 23:28:07 | 只看该作者
这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。
分手快乐 该用户已被删除
7#
 楼主| 发表于 2015-3-11 01:13:13 | 只看该作者
SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.
再现理想 该用户已被删除
8#
发表于 2015-3-17 17:49:25 | 只看该作者
也可谈一下你是怎么优化存储过程的?
山那边是海 该用户已被删除
9#
发表于 2015-3-24 17:07:18 | 只看该作者
然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-18 03:34

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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