您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > sqlserver基础知识
SQLSERVER基础知识1、概述(对比oracle)随着信息技术的飞速发展,数据处理不仅在数量上要求越来越大,而且在质量上也要求越来越高。Oracle数据库在大多数企业中受到广泛使用,而SQLServer数据库也因为和Windows的联系,在企业中的使用也是非常广泛。操作系统的稳定对数据库来说是十分紧要的,在数据库可操作平台上,Oracle可在所有主流平台上运行,Oracle数据库采用开放的策略目标,它使得客户可以选择一种最适合他们特定需要的解决方案。客户可以利用很多种第三方应用程序、工具。对开发商来说是很大的支持。而SQLServer却只能在Windows上运行了,这个就显得比较单调了,但SQLSever在Window平台上的表现,和Windows操作系统的整体结合程度,使用方便性,和Microsoft开发平台的整合性都比Oracle强的很多。但Windows操作系统的稳定性及可靠性大家是有目共睹的,再说Microsoft公司的策略目标是将客户都锁定到Windows平台的环境当中,只有随着Windows性能的改善,SQLServer才能进一步提高。从操作平台这点上Oracle是完全优胜于SQLServer的了。从资料上可以看到,Oracle的安全认证获得最高认证级别的ISO标准认证,而SQLServer并没有获得什么安全认证。这方面证明了Oracle的安全性是高于SQLServer的。购买一个产品,首先考虑的当然是产品的性能了,当考虑性能的同时当然少不了究竟要花多少钱在这产品也是个很关键的问题。要建立并运行一个数据库系统。不仅仅包含最初购置软件、硬件的费用,还包含了培训及以后维护的费用。Orcale数据库的价格是远比SQLServer数据库要高,为什么Oracle数据库比SQLServer数据库价格上要高出那么多,一方面Oracle的初始花费相对较高,特别是在考虑工具软件的时候,Oracle很多工具软件需要另外购买,与Microsoft提供免费的SQLServer工具软件相比,Oracle更显价格的不菲。但由于SQLServer只能在Windows下运行的原因,普遍认为SQLServer数据库的可靠性是比较差的。Oracle的性能优势体现在他的多用户上,而SQLServer的性能优势在多用户上就显得力不从心了。操作上SQLServer明显要比Orcale简单,如果你用过Java和DOTNET的开发平台,区别的基本就是Oracle和SQLServer不同,Oracle的界面基本是基于Java的,大部分的工具是Dos界面的,甚至SQLPlus也是,SQLServer是跟VB一样,全图形界面,很少见到DOS窗口。SQLServer中的企业管理器给用户提供一个全图形界面的集成管理控制台来集中管理多个服务器。Oracle也有自己的企业管理器,而且它的性能在某些方面甚至超过了SQLServer的企业管理器,但它安装较为困难。Orcale数据库和SQLServer数据库那个更快?其实是一个很难答的问题,因为存在许多不定因素,包括处理类型、数据分布以及硬件基础设施等。SQLServer2000是一个具备完全Web支持的数据库产品,提供了可扩展标记语言核心支持以及Internet上和防火墙外进行查询的能力,具有可伸缩性、灵活性、扩充性好,而且价格便宜等特点,而Oracle则有着可靠安全性,速度比SQLServer快上百倍,但其价格在实施中却比SQLServer它高出了几百倍。其实各行业考虑选择那种数据库,是由数据库的特点以及根据自己的业务需求和基础设施综合考虑来决定的。2、常用sqlSQL分类:DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)首先,简要介绍基础语句:1、说明:创建数据库CREATEDATABASEdatabase-name2、说明:删除数据库dropdatabasedbname3、说明:备份sqlserver---创建备份数据的deviceUSEmasterEXECsp_addumpdevice'disk','testBack','c:\mssql7backup\MyNwind_1.dat';---开始备份BACKUPDATABASEpubsTOtestBack4、说明:创建新表createtabletabname(col1type1[notnull][primarykey],col2type2[notnull],..)SQLServer为SQL-92兼容性提供了数据类型同义词。有关更多信息,请参见数据类型同义词。精确数字整数bigint从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型数据(所有数字)。int从-2^31(-2,147,483,648)到2^31-1(2,147,483,647)的整型数据(所有数字)。smallint从-2^15(-32,768)到2^15-1(32,767)的整数数据。tinyint从0到255的整数数据。bitbit1或0的整数数据。decimal和numericdecimal从-10^38+1到10^38–1的固定精度和小数位的数字数据。numeric功能上等同于decimal。money和smallmoneymoney货币数据值介于-2^63(-922,337,203,685,477.5808)与2^63-1(+922,337,203,685,477.5807)之间,精确到货币单位的千分之十。smallmoney货币数据值介于-214,748.3648与+214,748.3647之间,精确到货币单位的千分之十。近似数字float从-1.79E+308到1.79E+308的浮点精度数字。real从-3.40E+38到3.40E+38的浮点精度数字。datetime和smalldatetimedatetime从1753年1月1日到9999年12月31日的日期和时间数据,精确到百分之三秒(或3.33毫秒)。smalldatetime从1900年1月1日到2079年6月6日的日期和时间数据,精确到分钟。字符串char固定长度的非Unicode字符数据,最大长度为8,000个字符。varchar可变长度的非Unicode数据,最长为8,000个字符。text可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。Unicode字符串nchar固定长度的Unicode数据,最大长度为4,000个字符。nvarchar可变长度Unicode数据,其最大长度为4,000字符。sysname是系统提供用户定义的数据类型,在功能上等同于nvarchar(128),用于引用数据库对象名。ntext可变长度Unicode数据,其最大长度为2^30-1(1,073,741,823)个字符。二进制字符串binary固定长度的二进制数据,其最大长度为8,000个字节。varbinary可变长度的二进制数据,其最大长度为8,000个字节。image可变长度的二进制数据,其最大长度为2^31-1(2,147,483,647)个字节。其它数据类型cursor游标的引用。sql_variant一种存储SQLServer支持的各种数据类型(text、ntext、timestamp和sql_variant除外)值的数据类型。table一种特殊的数据类型,存储供以后处理的结果集。timestamp数据库范围的唯一数字,每次更新行时也进行更新。uniqueidentifier根据已有的表创建新表:A:createtabletab_newliketab_old(使用旧表创建新表)B:createtabletab_newasselectcol1,col2…fromtab_olddefinitiononly5、说明:删除表:droptabletabname6、说明:增加一个列:Altertabletabnameaddcolumncoltype删除一个列、修改一个列7、说明:添加主键:Altertabletabnameaddprimarykey(col)说明:删除主键:Altertabletabnamedropprimarykey(col)8、说明:创建索引:create[unique]indexidxnameontabname(col….)删除索引:dropindexidxname注:索引是不可更改的,想更改必须删除重新建。9、说明:创建视图:createviewviewnameasselectstatement删除视图:dropviewviewname10、说明:几个简单的基本的sql语句选择:select*fromtable1where范围插入:insertintotable1(field1,field2)values(value1,value2)删除:deletefromtable1where范围更新:updatetable1setfield1=value1where范围查找:select*fromtable1wherefield1like’%value1%’---like的语法很精妙,查资料!排序:select*fromtable1orderbyfield1,field2[desc]总数:selectcount*astotalcountfromtable1求和:selectsum(field1)assumvaluefromtable1平均:selectavg(field1)asavgvaluefromtable1最大:selectmax(field1)asmaxvaluefromtable1最小:selectmin(field1)asminvaluefromtable111、说明:几个高级查询运算词A:UNION运算符UNION运算符通过组合其他两个结果表(例如TABLE1和TABLE2)并消去表中任何重复行而派生出一个结果表。当ALL随UNION一起使用时(即UNIONALL),不消除重复行。两种情况下,派生表的每一行不是来自TABLE1就是来自TABLE2。B:EXCEPT运算符EXCEPT运算符通过包括所有在TABLE1中但不在TABLE2中的行并消除所有重复行而派生出一个结果表。当ALL随EXCEPT一起使用时(EXCEPTALL),不消除重复行。C:INTERSECT运算符INTERSECT运算符通过只包括TABLE1和TABLE2中都有的行并消除所有重复行而派生出一个结果表。当ALL随INTERSECT一起使用时(INTERSECTALL),不消除重复行。注:使用运算词的几个查询结果行必须是一致的。12、说明:使用外连接A、leftouterjoin:左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。SQL:selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.cB:rightouterjoin:右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。C:fullouterjoin:全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。其次,大家来看一些不错的sql语句1、说明:复制表(只复制结构,源表名:a新表名:b)法一:select*intobfromawhere11法二:selecttop0*intobfroma2、说明:拷贝表(拷贝数据,源表名:a目标表名:b)insertintob(a,b,c)selectd,e,ffromb;3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径)insertintob(a,b,c)selectd,e,ffrombin‘具体数据库’where条件例子:..
本文标题:sqlserver基础知识
链接地址:https://www.777doc.com/doc-4405807 .html