sqlserver浅谈

sqlserver浅谈,第1张

概述Sqlserver 一、Sqlserver简介 SQL Server一开始并不是微软自己研发的产品,而是当时为了要和IBM竞争时,与Sybase合作所产生的,其最早的发展者是Sybase[1],同时微软也和Sybase合作过SQL Server 4.2版本的研发,微软亦将SQL Server 4.2移植到Windows NT(当时为3.1版),在与Sybase终止合作关系后,自力开发出SQL Se sqlserver 一、sqlserver简介

sql Server一开始并不是微软自己研发的产品,而是当时为了要和IBM竞争时,与Sybase合作所产生的,其最早的发展者是Sybase[1],同时微软也和Sybase合作过sql Server 4.2版本的研发,微软亦将sql Server 4.2移植到Windows NT(当时为3.1版),在与Sybase终止合作关系后,自力开发出sql Server 6.0版,往后的sql Server即均由微软自行研发。

在与微软终止合作关系后,Sybase在windows NT上的数据库产品原本称为Sybase sql Server,后来改为现在的Sybase Adaptive Server Enterprise

sqlserver 6.0之前版本都是与sybase联合研发,在sql Server for windows NT之后从sybase手中买断sqlserver著作权开始自主研发。sqlserver 2017开始支持linux系统。 二、sqlserver架构

sqlserver架构与MysqLoracle不同(在sql 2000数据库用户名称架构是绑定的,一个完整的表的名称包括服务器名.数据库名.用户名.对象名2005时为服务器名.数据库名.架构名.对象名2008版本之后取消了用户和其创建对象的关联),在一个sqlserver实例下可以创建多个数据库实例,每个数据库实例中可以创建多个模式,模式下才有表和视图

 

sql Server只保存视图的元数据,用户描述这个对象,以及它所包含的列,安全,依赖等。当你查询视图时,无论是获取数据还是更新数据,sql server都用视图的定义来访问基础表视图在我们日常 *** 作也扮演着许多重要的角色,比如可以利用视图访问经过筛选和处理的数据,而不是直接访问基础表,以及在一定程度上也保护了基础表。

视图的作用:

1、视图隐藏了底层的表结构,简化了数据访问 *** 作,客户端不在需要知道底层的结构及其之前的关系。

2、视图提供了一个统一访问数据的接口。(即可以允许用户通过视图访问数据的安全机制,而不授予用户直接访问底层表的权限)

3、加强了安全性,时用户只能看到视图所显示的数据

4、视图还可以被嵌套,一个视图中可以嵌套另一个视图

 

三、使用

连接工具:Navicat、Microsoft sql Server Management Studio,推荐使用后者,毕竟这是微软专门配套的工具。通过Microsoft sql Server Management Studio导出表结构、数据都是很容易实现的。右键点击库名选择任务-->生成脚本-->点击下一步选择需要导出的表或者视图(选择导出结构还是数据)-->一直下一步就可以了。最后脚本会导出到指定的文件夹下。

1、Join

对于普通的增删改查与其他数据库没有多大区别,而且在sqlserver中可以跨模式、跨库进行关联查询。

跨模式:

 

跨库:

 

 

同一库下跨模式需要带上模式名,跨库关联需要带上库名、模式名。

另外我们可能会遇到数据是汉字乱码的情况,这时需要我们修改sqlserver编码,

对某个库设置编码sql:

 

将数据先设置为单用户模式,修改字符编码后在设置为多用户模式。若不先设置为单用户模式数据库被占用无法修改编码。

2、查看执行计划

对图中这条sql查看执行计划(点击上方工具栏显示估计的执行计划,也可以使用快捷见Ctrl+L)如下图:

 

 

从图中可以得出以下几点信息:

1)、各阶段执行开销

2)、各阶段执行什么样的 *** 作

3)、各阶段数据量(通过线条粗细来表示的)

通过这些信息对一些慢查询做针对性的优化非常有帮助。

3、元数据查询

 在日常开发中,我们可能对数据的关注的会比较多,但是对于元数据多一些了解对于开发是很有帮助的。这里简单介绍一下sqlserver的元数据管理。

(1)、获取库下所有用户表(u:用户表,s:系统表)

select name from sysobjects where xtype=‘u‘ and status>=0;

 (2)、获取某一个表的所有字段

 select name from syscolumns where ID=object_ID(表名)

3)、查询用户创建的所有数据库

select d.*,s.name from master..sysdatabases D join master..syslogins s on d.sID=s.sID;

 (4)、查询某一个表的字段和数据类型

select * from information_schema.columns where table_name = ‘student_type‘;

除此之外,还有两个语句可以获取比较详细的信息:

1)sp_help tablename

 

2)sp_columns tablename

推荐使用sp_help tablename,获取的信息比较全面。

有时我们还需要获取表、字段相关的注释信息,可使用如下sql:

表注释:

SELECTa.name,b.VALUEFROMsys.tableS aJOIN sys.extended_propertIEs b ON a.object_ID = b.major_IDJOIN sys.SCHEMAS c ON c.schema_ID = a.schema_IDWHEREb.minor_ID = ‘0‘AND c.name = ‘dbo‘AND a.name = ‘student_type‘;

  

字段注释:

SELECTb.name,a.VALUEFROMsys.extended_propertIEs aJOIN sys.ColUMNS b ON a.minor_ID = b.column_IDWHEREa.major_ID = OBJECT_ID ( ‘dbo.student_type‘ )AND b.object_ID = a.major_ID;

  

了解相关元数据信息有时会为我们带来很多便利。同时也能更有效的利用数据库帮助我们处理相关业务。

四、数据库对比

这里主要对三大数据库作比较:MysqL、mssql、oracle

 

MysqL

mssql

oracle

 

 

 

优点

存储、响应快,支持多种语言,用户安全性高,是较为单纯的数据存储

提供一整套的数据解决方案,良好的读写性能。容易维护监控支持扩展sql语法。存储过程支持图形化编辑界面记录

支持用户选择不同解决方案,安全性高,性能高效稳定,风险低,扩展、伸缩行好

 

缺点

不支持热备,没有存储过程记录

安全性地,多用户时性能低,伸缩扩展行不是很好

价格贵,成本高。管理维护比较麻烦, *** 作复杂,技术要求高

总结

以上是内存溢出为你收集整理的sqlserver浅谈全部内容,希望文章能够帮你解决sqlserver浅谈所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1176424.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存