MSSQL编程:SQL Server 7.0 进门(一)
线上或者测试环境经常出现的误操作总是让DBA同学那么闹心。server交互式SQL(TransactSQL,TSQL)它是SQLServer的查询言语。供应以下命令:
・创立和数据库工具。
・会见和修正数据。
・数据聚合(aggregation,又称会萃)。
・实行平安措施。
数据库工具
数据库工具是数据库中的物理工具。这些工具具有独一的名字,并保留数据和数据干系信息。SQLServer界说了以下几种工具:
1、表(table)
表是用来存储数据的两维数组,它有行和列。列也称为表属性或字段,表中的每列具有独一的名字,每列包括详细的数据范例,这个数据范例由列中的数据范例界说。
2、视图(view)
视图是假造的表,它只包括表的一部分。与表分歧的是,保留在视图中的数据并非物理存储的数据,它是由表派生的,派生表被称为视图的基础表。视图的界说存储在数据库中。
3、束缚前提(constraint)
束缚前提界说数据的完全性和无效性。束缚前提为列中的值创建划定规矩。换而言之,假如在某一列上界说了却束前提,则拔出这一列的每个值必要经由过程束缚前提反省。束缚前提是在触发器和划定规矩上包管数据完全性和无效性的较佳选择。SQLServerQueryOptimizer使用束缚前提发生出低本钱的查询企图。束缚前提有以下范例:
・NOTNULL这个束缚前提请求列中不克不及有NULL值。
・CHECK为列指定能具有的值的汇合后,反省束缚前提。列中任安在界说以外的数据都为有效数据。无效值汇合称为列的域。
・PRIMARYKEY主关头字是列或列组合,它用来独一标识一行。
・FOREIGNKEY用来界说两个表之间的父子干系。假如一个关头字既是一个表的主关头字的一部分,同时又是另外一个表的主关头字,则称它为外来关头字。外来关头字用来界说数据的援用完全性。
・UNIQUE独一束缚前提是指无任何两行在列中有不异的NON-NULL值。独一性由主关头字包管,但他们不同意NULL值,而且每个表只能有一个关头字。
4、默许值(default)
默许值是为列界说的值,假如在拔出一行时没有供应某一列的值,则此列利用默许值,默许值能够是以下的一种:
・常量
・数学表达式
・外部函数(Built-infunction)
5、划定规矩(rule)
划定规矩实行和CHECK束缚前提一样的功效。但划定规矩和束缚前提分歧的是:划定规矩作为自力的工具存在,它能够用于多个表,而束缚前提作为表的一部分存储。但是,划定规矩是作为向后兼容特性而供应的,倡议用户利用束缚前提。
6、触发器和存储历程
触发器和存储历程是一个TSQL命令集,它们作为一个工具存储在数据库中。
工具定名商定
SQLServer用三段式(three-part)名字标识工具:
<数据库名>.<一切者名>.<工具名>
前两部分能够省略,体系有一个默许值。数据库名的默许值是以后数据库,一切者名的默许值是数据库一切者(dbo)。
数据范例
任何包括数据的工具都有一个数据范例和它联系关系。数据范例是指定工具能包括何种数据的属性。
SQLServer数据范例
数据范例
说明
同义
Bit
1位,值为0或1
Int
Integer
4字节,值为-2^31~2^31-1
Smallint
2字节,值为-2^15~2^15-1
Tinyint
1字节,值为0~255
Decimal(p,s)
数字数据,流动精度为P,宽度为S
Numeric
Money
8字节,寄存泉币范例,值为-2^63~2^63-1
Smallmoney
4字节,寄存泉币范例,值为-214748.3648~+214748.3647近似数值数据范例
Float(n)
N在1~24之间,4字节,7位精度
N=1~7为real
N在25~53之间,8字节,15位精度
=8~15为float
Datetime
8字节,形貌某天的日期和时候,值的准确度为1/300秒
Smalldatetime
4字节,形貌某天的日期和时候,精度为分钟
Cursor
对游标的援用
Timestamp
8字节,寄存在数据库内独一的数据
Uniqueidentifier
16字节,寄存全局独一标识(GUID)
Char(n)
非unicode字符串的流动长度,n=1~8000
Character(n)
Varchar(n)
可变长度,非unicode字符串n=1~8000
Charvarying(n)
Text
服务器代码页中可变长度非unicode数据。最年夜长度为231-1个字符
Nchar
流动长度unicode字符串n=1~4000
Nationalcharacter(n),
Nationalchar(n)
Nvarchar
流动长度unicode字符串n=1~4000
Nationalcharactervarying(n)
Ntext
可变长度unicode数据,最年夜长度为230-1个字符
Nationaltext
Binary(n)
流动长度二进制数据,n在1~8000之间,存储空间为n+4字节
Varbinary(n)
可变长度二进制数据,n=1~8000
Binaryvarying(n)
Tmage
可变长度二进制数据,巨细为0~231-1
注重:
1)关于数值型数据范例,宽度(scale)是指存储在小数点后的数字位数,而精度(precision)是指能存储的包括小数点在内的一切数字位数。
2)money和smallmoney的存储宽度为4。
3)工夫戳列值在每行更新时体系主动更新,工夫戳列不克不及是关头字或关头字的一部分。
4)独一标识数据范例不克不及利用算术操纵符(如+、-等),这类数据范例只能利用相称对照操纵。Unicode是一切字符集的分歧存储数据的尺度。它要利用两倍于非Unicode数据存储的存储空间。
在ORDERBY操作中,MySQL只有在排序条件不是一个查询条件表达式的情况下才使用索引。(虽然如此,在涉及多个数据表查询里,即使有索引可用,那些索引在加快ORDERBY方面也没什么作用)。 现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层. 是要和操作系统进行Socket通讯的场景。否则建议慎重! 不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理? 对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。 很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。 这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片? 学习SQL语言的话如果要学会去做网站就不是很难!但是要做数据库管理的话就有难度了! 可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。 以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了
页:
[1]