SQL SERVER 面试题与答案
sqlserver面试题
![sqlserver面试题](https://img.taocdn.com/s3/m/b4696f3c178884868762caaedd3383c4bb4cb4e7.png)
sqlserver面试题SQL Server面试题一、什么是SQL Server?SQL Server是一种关系型数据库管理系统(RDBMS),由微软公司开发和发布。
它是一个全面的数据库服务器,用于管理和存储大量的数据。
SQL Server支持结构化查询语言(SQL),以及存储过程、触发器和其他数据库操作。
二、SQL Server的主要功能有哪些?1. 数据管理:SQL Server可以用于创建、修改和删除数据库、表、视图和索引等对象,以及导入、导出和修改数据。
2. 数据安全:SQL Server提供了丰富的安全功能,包括用户身份验证、权限控制和数据加密等,以确保数据的机密性和完整性。
3. 数据备份和恢复:SQL Server支持数据库的备份和恢复操作,以防止数据丢失和错误。
4. 数据复制和同步:SQL Server可以通过复制和同步机制将数据复制到不同的数据库服务器,以实现高可用性和负载均衡。
5. 数据分析和报表:SQL Server支持数据分析和报表生成,以便用户可以从数据库中提取有用的信息和洞察力。
6. 性能优化:SQL Server提供了各种性能优化工具和技术,以确保数据库的高性能和响应能力。
三、请解释SQL Server中的主键和外键的作用。
主键是用于唯一标识数据库表中每条记录的一列或一组列。
它的作用是保证表中的每个记录都具有唯一的标识符,以方便数据的检索和修改。
主键还可以用于建立表与其他表之间的关系。
外键则用于建立表与其他表之间的关联关系。
外键是指表中的一列或一组列,它引用了另一张表的主键。
外键的作用是维护数据的完整性和一致性,通过约束来确保外键引用的数据必须存在于关联表中。
这样可以防止无效的数据插入或更新操作。
四、SQL Server中的事务是什么?请解释ACID属性。
事务是SQL Server中一系列数据库操作的逻辑单元,它要么全部执行成功,要么全部回滚到初始状态。
事务可以保证数据的一致性和完整性。
SQL Server数据库管理员面试题(DBA)
![SQL Server数据库管理员面试题(DBA)](https://img.taocdn.com/s3/m/37998bdaa58da0116c1749b3.png)
答:当您在PDC或BDC上安装SQL Server时,它仍可保持良好的工作状态。如需确定某种配置方案能否适应于您的站点,应当考虑您所拥有的资源。如果您拥有足够的网络带宽、内存空间与空闲处理器,那么,使用运行SQL Server的计算机作为域控制器便是一种合理的方案。然而,在这种情况下,根据域的实际规模,相应的计算机可能需要承担大量工作负载。如果您认为SQL Server的任务将会非常繁重,那么,便请不要再让其运行任何其它服务。
将事务日志移动到不同的驱动器
问:如何将数据库事务日志移动到不同的驱动器上?
答:您可以通过用于分离与附加数据库的SQL Server存储过程来移动事务日志。您需要对数据库进行分离,移动日志文件,然后再将其重新附加到数据库上。举例来说,如果要将pubs数据库从C驱动器移动到D驱动器,应首先使用以下格式的sp_detach_db命令分离数据库:
做个形象的比喻:
sql实例就相当于一个公司.
如果你要在公司工作自然就要成为公司的员工, 因此公司的员工就相当于登录
公司有不同的部门, 这相当于数据库, 你要在某个部门做事, 必须把你分配到某个部门, 也就是在部门的名单中要有你, 这个部门的名单就相当于用户. 名单必须对应公司的某个员工.
答:您必须获取跟踪过程的其它部分(如存储过程StmtCompleted所返回的结果),并将这些部分收集在一起(语句放在最前面)以捕获完整的查询内容。之所以会出现这样的结果,其原因在于从SQL Server关系型引擎恢复数据的SQL事件查看器方法。这样的问题在SQL Server 7.0中同样存在。然而,由于当事件产生时,位于引擎内部的参数取值是未知的,因此,我们无法在这一时刻做出修改。
�
但你一个人是可以在多个部门工作的
sql server数据库面试题
![sql server数据库面试题](https://img.taocdn.com/s3/m/4b5a715bc4da50e2524de518964bcf84b9d52d00.png)
sql server数据库面试题1. 介绍SQL Server数据库SQL Server是一种关系型数据库管理系统,由Microsoft开发和维护。
它支持广泛的数据处理任务,在企业级应用程序和云环境中得到广泛应用。
2. 什么是SQL语言?SQL是结构化查询语言(Structured Query Language)的缩写,是用于管理关系型数据库的标准化语言。
它可以用于查询、插入、更新和删除数据库中的数据。
3. SQL Server数据库的主要特点是什么?- 可扩展性:SQL Server支持大规模数据处理,并且可以轻松扩展以适应不断增长的数据量。
- 安全性:SQL Server提供多层次的安全控制,包括用户认证、权限管理和数据加密。
- 高可用性:SQL Server支持故障转移、备份和恢复机制,确保数据始终可用。
- 强大的查询优化功能:SQL Server可以自动优化查询以提高性能,并且提供了各种工具来优化查询计划。
4. 什么是索引,为什么要使用索引?索引是一种数据结构,用于提高数据库查询的速度。
它们是基于一个或多个列的值来排序和组织数据的结构。
通过创建索引,可以减少数据库查询时需要扫描的数据量,从而提高查询性能。
5. 请列举一些SQL Server数据库常用的索引类型。
- 聚集索引(Clustered Index):该索引决定了表中数据的物理排序方式。
- 非聚集索引(Non-clustered Index):该索引不会改变表中数据的物理排序方式,而是创建一个单独的数据结构来提高查询性能。
- 全文索引(Full-Text Index):该索引用于对文本数据执行高效的全文搜索。
- 空间索引(Spatial Index):该索引用于对地理和几何数据执行高效的空间查询。
6. 请解释SQL Server数据库中的事务是什么?事务是一组数据库操作的逻辑单元,可以保证这些操作要么全部执行成功,要么全部失败。
事务具有ACID属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
面试题-sqlserver
![面试题-sqlserver](https://img.taocdn.com/s3/m/4ffd41130b4e767f5acfceb3.png)
选择题:1、在“连接”组中有两种连接认证方式,其中在(_ B _)方式下,需要客户端应用程序连接时提供登录时需要的用户标识和密码。
A、Windows身份验证B、SQL Server身份验证C、以超级用户身份登录时D、其他方式登录时2、表在数据库中是一个非常重要的数据对象,它是用来(1_ C __)各种数据内容的,数据库创建后就可以创建表了,创建表可以用(2_ D__)等方法来创建。
⑴A、显示B、查询C、存放D、检索⑵A、企业管理器B、查询分析器C、OSQLD、企业管理器和CREATE TABLE语句3、在Transact-SQL语法中,SELECT语句的完整语法较复杂,但至少包括的部分(1_B_),使用关键字(2_A_)可以把重复行屏蔽,将多个查询结果返回一个结果集合的运算符是(3__B_),如果在SELECT语句中使用集合函数时,一定在后面使用(4_A__)。
⑴A、SELECT,INTO B、SELECT,FROMC、SELECT,GROUPD、仅SELECT⑵A、DISTINCT B、UNIONC、ALL C、TOP⑶A、JOIN B、UNIONC、INTO C、LIKE⑷A、GROUP BY B、COMPUTE BYC、HAVINGD、COMPUTE4、在SQL SERVER服务器上,存储过程是一组预先定义并(1_B__)的Transact -SQL语句。
可以用(2__D_)来声明游标。
⑴A、保存B、编译C、解释D、编写⑵A、CREATE CURSOR B、ALTER CURSORC、SET CURSORD、DECLARE CURSOR简答题:1、自定义函数的类型?各自原返回值。
①标量函数返回值:单个数据值②内嵌表值函数返回值:table,③多语句表值函数返回值:table2、用户权限的种类有哪些?各自的作用?①对象权限作用:决定用户对数据库对象所执行的操作,包括用户对数据库中的表、视图、列或存储过程等对象的操作权限②语句权限作用:决定用户能否操作数据库和创建数据库对象③隐含权限作用:控制那些只能由预定义系统角色的成员或数据库对象所有者执行的活动。
sqlserver高级面试题
![sqlserver高级面试题](https://img.taocdn.com/s3/m/7884fc0b842458fb770bf78a6529647d272834c4.png)
sqlserver高级面试题SQL Server高级面试题1. 介绍SQL Server的架构和主要组件SQL Server是由微软开发的关系型数据库管理系统。
它的架构分为三个主要的组件:- 数据引擎:负责数据的存储、处理和查询。
它包含了查询处理器、事务管理器、存储引擎等模块。
- Analysis Services:提供了数据仓库和在线分析处理(OLAP)功能,用于数据分析和决策支持。
- Integration Services:用于数据抽取、转换和加载(ETL),支持数据仓库的构建和更新。
2. 请解释SQL Server中的索引和它的类型。
索引是用于提高查询性能的数据结构,它可以加快数据的检索速度。
SQL Server中的索引类型包括:- 聚集索引(Clustered Index):决定了数据行在表中物理上的存储顺序,一个表只能有一个聚集索引。
- 非聚集索引(Non-Clustered Index):创建在表的列上,它包含以下两种信息:索引键的值和指向该键所在行的指针。
- 唯一索引(Unique Index):与非聚集索引类似,但是要求索引的键值必须唯一。
- 全文索引(Full-Text Index):用于进行全文本搜索,可以对文本内容进行高效的关键字搜索。
3. 请列举一些提高SQL Server查询性能的方法。
- 创建合适的索引:通过分析查询语句中的WHERE和JOIN条件来确定需要创建的索引,以提高查询的速度。
- 避免使用SELECT *:只查询所需的列,减少不必要的数据传输和处理。
- 使用适当的数据类型:选择最合适的数据类型来存储数据,可以减少空间占用和提高查询速度。
- 数据库规范化:将数据分解为更小的表,以减少数据冗余和提高查询性能。
- 定期维护数据库:进行索引重建、统计信息更新、日志清理等操作,以保持数据库的优化状态。
4. 请解释SQL Server中的事务以及ACID属性。
事务是一组逻辑操作,这些操作要么全部成功执行,要么全部回滚。
SQL Server面试题及答案
![SQL Server面试题及答案](https://img.taocdn.com/s3/m/a08b33bb960590c69ec376a8.png)
为管理岗位业务培训信息,建立3个表:S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄C (C#,CN ) C#,CN 分别代表课程编号、课程名称SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩1. 使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名--实现代码:Select SN,SD FROM SWhere [S#] IN(Select [S#] FROM C,SCWhere C.[C#]=SC.[C#]AND CN=N'税收基础')2. 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位--实现代码:Select S.SN,S.SD FROM S,SCWhere S.[S#]=SC.[S#]AND SC.[C#]='C2'3. 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位--实现代码:Select SN,SD FROM SWhere [S#] NOT IN(Select [S#] FROM SCWhere [C#]='C5')4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位--实现代码:Select SN,SD FROM SWhere [S#] IN(Select [S#] FROM SCRIGHT JOINC ON SC.[C#]=C.[C#] GROUP BY [S#]HAVING COUNT(*)=COUNT([S#]))5. 查询选修了课程的学员人数--实现代码:Select 学员人数=COUNT(DISTINCT [S#]) FROM SC6. 查询选修课程超过5门的学员学号和所属单位--实现代码:Select SN,SD FROM SWhere [S#] IN(Select [S#] FROM SCGROUP BY [S#]HAVING COUNT(DISTINCT [C#])>5)题目2问题描述:已知关系模式:S (SNO,SNAME) 学生关系。
sqlserver面试题
![sqlserver面试题](https://img.taocdn.com/s3/m/b39180868ad63186bceb19e8b8f67c1cfad6eec9.png)
sqlserver面试题SQL Server面试题1. 简介SQL Server是由微软公司开发的关系型数据库管理系统(RDBMS),广泛应用于企业级应用程序、数据仓库以及一系列Web 应用程序中。
在SQL Server的面试过程中,面试官通常会涉及各个方面的知识,包括SQL语法、数据库设计与优化、性能调优、高可用性等。
以下是一些常见的SQL Server面试题及其解答,希望能对您的面试准备有所帮助。
2. SQL基础2.1 SELECT语句在SQL Server中,SELECT语句用于从表中检索数据。
如果要查询一个表中的所有列,可以使用以下语法:SELECT * FROM 表名;如果只需要查询特定的列,可以使用以下语法:SELECT 列名1, 列名2 FROM 表名;2.2 WHERE子句WHERE子句用于指定查询时的条件,可以根据条件过滤出符合要求的行。
例如:SELECT 列名1, 列名2 FROM 表名 WHERE 条件;2.3 ORDER BY子句ORDER BY子句用于按照指定的列对查询结果进行排序,默认情况下是升序排序。
例如:SELECT 列名1, 列名2 FROM 表名 ORDER BY 列名;2.4 GROUP BY子句GROUP BY子句用于按照指定的列对查询结果进行分组。
例如: SELECT 列名1, 列名2 FROM 表名 GROUP BY 列名;3. 数据库设计与优化3.1 范式和反范式范式是用来评估数据库设计是否合理的一种标准。
常见的范式有第一范式(1NF)、第二范式(2NF)、第三范式(3NF)等。
范式化的设计可以提高数据的一致性和减少冗余,但也会增加查询的复杂度。
反范式化是根据实际需求和性能考虑,对数据库进行冗余设计,以提高查询性能。
3.2 索引的优化索引是提高查询性能的重要手段。
在SQL Server中,可以通过CREATE INDEX语句创建索引。
合理选择索引列、避免过多的索引以及定期维护索引可以提高查询性能。
sql server面试题
![sql server面试题](https://img.taocdn.com/s3/m/86d916c4a1c7aa00b52acbb7.png)
1.在数据库技术中,独立于计算机系统的模型是E-R模型。
2.数据库系统的控制中枢是数据库管理系统。
3.使用SQL命令将学生表STUDENT中的学生年龄AGE字段的值增加1岁,应该使用的命令式UPDATE STUDENT SET AGE=AGE+1.4.在关系数据库中,建立数据库表时,将年龄字段值限制在12—40岁之间的这种约束属于域完整性约束。
5.在SQL语句中,与x BETWEEN 20 AND 30 等价的表达式是x>=20 and x<=306.在数据库中,概念模型是用于信息世界的建模,与具体的DBMS无关。
7.在关系数据库中,模式对应的是视图和所有基本表。
8.数据库的并发操作可能带来的问题包括丢失更新。
9.能实现绝对的与平台无关性的web数据库访问技术是JDBC。
10.SQL是集合操作方式。
11.数据库系统是由数据库组成的。
12.在SQL查询时,使用WHERE子句指出的是查询条件。
13.在RDMBS产品中,属于小型数据库系统的是ACCESS。
14.数据库类型是按照数据模型来划分的。
15.数据库管理系统更适合于数据处理方面的应用。
16.CREATE,DROP,GRANT全部属于数据定义语句的命令。
17.用过INTERNET及浏览器处理的数据库,应该是主从结构式处理。
18.数据的逻辑独立性是指数据与程序的逻辑独立性。
19.关系代数的三个基本运算时连接,投影,选择20.用二维表来表示实体及实体之间联系的数据模型称为关系模型。
21.在基本SQL中不可以实现并发控制。
22.数据库镜像可以用于进行数据库恢复或并发操作。
23.在数据库系统中,应用最广泛的是关系型数据库系统。
填空题(1空1分共20分)1、如果设计的表不符合第二范式,可能会导致_______,________,_______。
2、SQL是由_______语言,________语言,_______语言组成。
3、SQL Server在两个安全级上验证用户,分别是______________,_____________________。
sql server基础面试题
![sql server基础面试题](https://img.taocdn.com/s3/m/9198fba29a89680203d8ce2f0066f5335a816717.png)
sql server基础面试题SQL Server是微软开发的关系型数据库管理系统,以下是一些SQL Server 的基础面试题:1. 什么是SQL Server,它与数据库的关系是什么?2. 在SQL Server中,如何创建一个新的数据库?3. 描述一下SQL Server的存储过程是什么,以及它的用途是什么?4. 在SQL Server中,触发器的作用是什么?5. 什么是索引,它在SQL Server中有什么作用?6. 解释一下SQL Server中的事务处理,以及如何使用BEGIN TRANSACTION、COMMIT和ROLLBACK语句?7. 如何优化SQL Server查询性能?8. 如何在SQL Server中设置和使用视图?9. 如何备份和恢复SQL Server数据库?10. 解释一下SQL Server中的游标是什么,以及何时应该使用游标?11. 如何使用SQL Server中的存储过程和函数来处理日期和时间?12. 描述一下SQL Server中的数据完整性概念,以及如何实现它?13. 如何使用SQL Server中的系统函数和系统存储过程?14. 解释一下SQL Server中的复制和发布功能,以及它们的应用场景?15. 如何管理和维护SQL Server数据库?16. 描述一下SQL Server中的系统表和动态管理视图(DMVs),以及它们的作用是什么?17. 如何使用SQL Server中的分区表和索引?18. 解释一下SQL Server中的全文搜索功能,以及如何使用它进行文本搜索?19. 如何使用SQL Server中的报表服务来生成报表?20. 描述一下SQL Server中的CLR集成,以及如何使用它来编写和执行CLR存储过程和函数?。
sql server面试题
![sql server面试题](https://img.taocdn.com/s3/m/9fd0859677eeaeaad1f34693daef5ef7ba0d1223.png)
sql server面试题SQL Server是一种关系型数据库管理系统(RDBMS),被广泛应用于企业级应用程序开发和数据管理。
为了帮助您准备就业面试或升职面试,以下是一些常见的SQL Server面试题及其答案。
1. 什么是SQL Server?它的功能是什么?SQL Server是一种由Microsoft开发的关系型数据库管理系统,用于管理和存储数据。
它提供了数据的安全性、完整性和可靠性,并具备高效的数据检索和处理功能。
SQL Server支持多种编程语言和操作系统,并提供了丰富的管理工具和功能,如备份和还原、复制和高可用性。
2. SQL Server中的主要数据类型有哪些?SQL Server支持多种数据类型,包括整数类型(int、bigint、smallint)、浮点数类型(float、real、decimal)、日期和时间类型(datetime、date、time)、字符串类型(varchar、char、text)等。
3. 什么是索引?SQL Server中的索引类型有哪些?索引是一种用于加快数据检索速度的数据结构。
SQL Server中的索引类型包括聚集索引(clustered index)和非聚集索引(non-clustered index)。
聚集索引决定了物理存储顺序,而非聚集索引是一种单独的数据结构,它包含指向实际数据行的指针。
4. 如何优化SQL Server查询性能?优化SQL Server查询性能有多种方法,包括创建适当的索引、使用正确的JOIN操作、避免使用通配符、避免在WHERE子句中对函数进行计算等。
可以使用SQL Server的性能监视器(Performance Monitor)来监视数据库服务器的性能,并采取相应的优化措施。
5. SQL Server中如何执行事务处理?在SQL Server中,可以使用BEGIN TRANSACTION、COMMIT和ROLLBACK语句来执行事务处理。
SQL SERVER 面试题与答案
![SQL SERVER 面试题与答案](https://img.taocdn.com/s3/m/53676de25ef7ba0d4b733b04.png)
SqlServer面试题及答案1.磁盘柜上有14块73G的磁盘,数据库为200G 大小包括日志文件,如何设置磁盘(要说明这14磁盘是怎么用的)?2.有两服务器群集,分别为node1和node2 现在要打win200系统补丁,打完后,要重新启动,如何打补丁,不能影响用户使用(要用群集的术语详细说明)。
3.有一个A 数据库,分别复制到B和C B 要求每次数据更新也同时更新,C 每天更新一次就行,如何制定复制策略!4.有一个order 表,有90个字段,20个索引,15个复合索引,其中有3个索引字段超过10个,如何进行优化5.有一个数据库200G大小,每天增加50M 允许用户随时访问,制定备份策略(详细说明)。
参考答案:1.磁盘柜上有14块73G的磁盘,数据库为200G 大小包括日志文件,如何设置磁盘(要说明这14磁盘是怎么用的)?这个问题应该是考察硬件知识和数据库物理部署。
首先需要知道这些磁盘是否要用于存放数据库备份文件和数据库性能(读/写)要求。
来决定raid的级别。
1)、如果偏重于性能考虑,而且不用存放数据库备份文件的话,考虑使用raid0 1,这样可使用的磁盘容量为:14*73*50%=511G。
2)、如果读/写性能要求不高,而且还比较抠门的话,可以考虑raid5,这样可使用的磁盘容量为:13*73=949G。
至于如何使用应该是说数据库物理文件的部署。
注意说出将tempdb,data file,log file分开存放以减少I/O竞争即可。
其实现在的条带化磁盘一般都会自动将文件分存,人为的分布已经越来越不重要了。
2.有两服务器群集,分别为node1和node2 现在要打win200系统补丁,打完后,要重新启动,如何打补丁,不能影响用户使用(要用群集的术语详细说明)。
这个具体操作有点忘了。
大致是:首先看哪个节点正在使用,通过节点IP(私有)访问另一个空闲节点,为其打上补丁,然后在群集管理器中停止该节点(也可以用命令行方式),重新启动。
SQLSERVER数据库面试题
![SQLSERVER数据库面试题](https://img.taocdn.com/s3/m/769afa6e9a6648d7c1c708a1284ac850ad020404.png)
SQLSERVER数据库⾯试题1.⽤⼀条SQL语句查询出每门课都⼤于80分的学⽣姓名name kecheng fenshu张三语⽂ 81张三数学 75李四语⽂ 76李四数学 90王五语⽂ 81王五数学 100王五英语 90A: select distinct name from table where name not in (select distinct name from table where fenshu<=80)2.学⽣表如下:⾃动编号学号姓名课程编号课程名称分数1 2005001 张三 0001 数学 692 2005002 李四 0001 数学 893 2005001 张三 0001 数学 69删除除了⾃动编号不同,其他都相同的学⽣冗余信息A: delete tablename where ⾃动编号 not in(select min(⾃动编号) from tablename group by 学号,姓名,课程编号,课程名称,分数)⼀个叫department的表,⾥⾯只有⼀个字段name,⼀共有4条纪录,分别是a,b,c,d,对应四个球对,现在四个球对进⾏⽐赛,⽤⼀条sql语句显⽰所有可能的⽐赛组合.你先按你⾃⼰的想法做⼀下,看结果有我的这个简单吗?答:select , from team a, team bwhere < 请⽤SQL语句实现:从TestDB数据表中查询出所有⽉份的发⽣额都⽐101科⽬相应⽉份的发⽣额⾼的科⽬。
请注意:TestDB中有很多科⽬,都有1-12⽉份的发⽣额。
AccID:科⽬代码,Occmonth:发⽣额⽉份,DebitOccur:发⽣额。
数据库名:JcyAudit,数据集:Select * from TestDB答:select a.*from TestDB a,(select Occmonth,max(DebitOccur) Debit101ccur from TestDB where AccID='101' group by Occmonth) b where a.Occmonth=b.Occmonth and a.DebitOccur>b.Debit101ccur************************************************************************************⾯试题:怎么把这样⼀个表⼉year month amount1991 1 1.11991 2 1.21991 3 1.31991 4 1.41992 1 2.11992 2 2.21992 3 2.31992 4 2.4查成这样⼀个结果year m1 m2 m3 m41991 1.1 1.2 1.3 1.41992 2.1 2.2 2.3 2.4答案⼀、select year,(select amount from aaa m where month=1 and m.year=aaa.year) as m1,(select amount from aaa m where month=2 and m.year=aaa.year) as m2,(select amount from aaa m where month=3 and m.year=aaa.year) as m3,(select amount from aaa m where month=4 and m.year=aaa.year) as m4from aaa group by year这个是ORACLE 中做的:select * from (select name, year b1, lead(year) over(partition by name order by year) b2, lead(m,2) over(partition by name order by year) b3,rank()over( partition by name order by year) rk from t) where rk=1;************************************************************************************精妙的SQL语句!精妙SQL语句作者:不详发⽂时间:2003.05.29 10:55:05说明:复制表(只复制结构,源表名:a 新表名:b)SQL: select * into b from a where 1<>1说明:拷贝表(拷贝数据,源表名:a ⽬标表名:b)SQL: insert into b(a, b, c) select d,e,f from b;说明:显⽰⽂章、提交⼈和最后回复时间SQL: select a.title,ername,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b说明:外连接查询(表名1:a 表名2:b)SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c说明:⽇程安排提前五分钟提醒SQL: select * from ⽇程安排 where datediff('minute',f开始时间,getdate())>5说明:两张关联表,删除主表中已经在副表中没有的信息SQL:delete from info where not exists ( select * from infobz where info.infid=infobz.infid )说明:--SQL:SELECT A.NUM, , B.UPD_DATE, B.PREV_UPD_DATEFROM TABLE1,(SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATEFROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHANDFROM TABLE2WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(SYSDATE, 'YYYY/MM')) X, (SELECT NUM, UPD_DATE, STOCK_ONHANDFROM TABLE2WHERE TO_CHAR(UPD_DATE,'YYYY/MM') =TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM') ¦¦ '/01','YYYY/MM/DD') - 1, 'YYYY/MM') ) Y, WHERE X.NUM = Y.NUM (+)AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) <> X.STOCK_ONHAND ) BWHERE A.NUM = B.NUM说明:--SQL:select * from studentinfo where not exists(select * from student where studentinfo.id=student.id) and 系名称='"&strdepartmentname&"' and 专业名称='"&strprofessionname&"' order by 性别,⽣源地,⾼考总成绩说明:从数据库中去⼀年的各单位电话费统计(电话费定额贺电化肥清单两个表来源)SQL:SELECT erper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy') AS telyear,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '01', a.factration)) AS JAN,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '02', a.factration)) AS FRI,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '03', a.factration)) AS MAR,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '04', a.factration)) AS APR,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '05', a.factration)) AS MAY,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '06', a.factration)) AS JUE,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '07', a.factration)) AS JUL,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '08', a.factration)) AS AGU,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '09', a.factration)) AS SEP,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '10', a.factration)) AS OCT,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '11', a.factration)) AS NOV,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '12', a.factration)) AS DECFROM (SELECT erper, a.tel, a.standfee, b.telfeedate, b.factrationFROM TELFEESTAND a, TELFEE bWHERE a.tel = b.telfax) aGROUP BY erper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy')说明:四表联查问题:SQL: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....说明:得到表中最⼩的未使⽤的ID号SQL:SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleIDFROM HandleWHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a)*******************************************************************************有两个表A和B,均有key和value两个字段,如果B的key在A中也有,就把B的value换为A中对应的value这道题的SQL语句怎么写?update b set b.value=(select a.value from a where a.key=b.key) where b.id in(select b.id from b,a where b.key=a.key);***************************************************************************⾼级sql⾯试题原表:courseid coursename score-------------------------------------1 java 702 oracle 903 xml 404 jsp 305 servlet 80-------------------------------------为了便于阅读,查询此表后的结果显式如下(及格分数为60):courseid coursename score mark---------------------------------------------------1 java 70 pass2 oracle 90 pass3 xml 40 fail4 jsp 30 fail5 servlet 80 pass---------------------------------------------------写出此查询语句没有装ORACLE,没试过select courseid, coursename ,score ,decode(sign(score-60),-1,'fail','pass') as mark from course完全正确SQL> desc course_vName Null? Type----------------------------------------- -------- ----------------------------COURSEID NUMBERCOURSENAME VARCHAR2(10)SCORE NUMBERSQL> select * from course_v;COURSEID COURSENAME SCORE---------- ---------- ----------1 java 702 oracle 903 xml 404 jsp 305 servlet 80SQL> select courseid, coursename ,score ,decode(sign(score-60),-1,'fail','pass') as mark from course_v; COURSEID COURSENAME SCORE MARK---------- ---------- ---------- ----1 java 70 pass2 oracle 90 pass3 xml 40 fail4 jsp 30 fail5 servlet 80 pass*******************************************************************************原表:id proid proname1 1 M1 2 F2 1 N2 2 G3 1 B3 2 A查询后的表:id pro1 pro21 M F2 N G3 B A写出查询语句解决⽅案sql求解表a列 a1 a2记录 1 a1 b2 x2 y2 z⽤select能选成以下结果吗?1 ab2 xyz使⽤pl/sql代码实现,但要求你组合后的长度不能超出oracle varchar2长度的限制。
sql server 面试题
![sql server 面试题](https://img.taocdn.com/s3/m/fd45c86159fb770bf78a6529647d27284b733701.png)
sql server 面试题在准备SQL Server面试之前,你需要对这个数据库管理系统有一定的了解,并熟悉一些常见的面试题。
本文将为你提供一些常见的SQL Server面试题及其解答,帮助你更好地准备面试。
1. 什么是SQL Server?SQL Server是由微软开发的关系型数据库管理系统(RDBMS)。
它为存储、管理和处理大量结构化数据提供了功能强大的解决方案。
2. SQL Server与其他数据库管理系统有何区别?与其他数据库管理系统相比,SQL Server具有以下特点:- 完全兼容的Windows操作系统。
SQL Server是专为Windows平台而设计的,因此在Windows环境下部署和管理更加方便。
- 集成的开发工具。
SQL Server提供了一套集成的开发工具,如SQL Server Management Studio(SSMS),这使得数据库的管理和开发更加高效。
- 强大的商业智能功能。
SQL Server集成了强大的商业智能功能,如数据仓库、数据挖掘和报告服务,可以帮助企业更好地分析和利用数据。
- 高可用性和灾难恢复。
SQL Server提供了多种高可用性和灾难恢复解决方案,如数据库镜像、AlwaysOn可用性组等,以确保数据的安全性和可用性。
3. 什么是数据库的范式化和反范式化?数据库的范式化是一种设计方法,旨在消除数据冗余和确保数据的一致性。
它通过将数据分解为多个表,并通过主键-外键关系将它们连接起来来实现。
常用的范式有第一范式(1NF)、第二范式(2NF)、第三范式(3NF)等。
反范式化是一种优化数据库性能的方法,它通过尽量减少表之间的关联关系,将一些常用的数据冗余存储在一个表中,以提高查询性能。
4. SQL Server支持的数据类型有哪些?SQL Server支持各种数据类型,包括整数、浮点数、日期和时间、字符串、二进制数据等。
常见的数据类型有int、varchar、datetime、decimal等。
SQLServer面试题
![SQLServer面试题](https://img.taocdn.com/s3/m/c9eedd24c850ad02de8041bb.png)
SQL Server 面试题维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么?答:尽可能用约束(包括CHECK、主键、唯一键、外键、非空字段)实现,这种方式的效率最好;其次用触发器,这种方式可以保证无论何种业务系统访问数据库都能维持数据库的完整性、一致性;最后再考虑用自写业务逻辑实现,但这种方式效率最低、编程最复杂,当为下下之策。
什么是事务?什么是锁?答:事务是指一个工作单元,它包含了一组数据操作命令,并且所有的命令作为一个整体一起向系统提交或撤消请求操作,即这组命令要么都执行,要么都不执行。
锁是在多用户环境中对数据的访问的限制。
SqlServer自动锁定特定记录、字段或文件,防止用户访问,以维护数据安全或防止并发数据操作问题,锁可以保证事务的完整性和并发性。
什么是索引,有什么优点?答:索引象书的目录类似,索引使数据库程序无需扫描整个表,就可以在其中找到所需要的数据,索引包含了一个表中包含值的列表,其中包含了各个值的行所存储的位置,索引可以是单个或一组列,索引提供的表中数据的逻辑位置,合理划分索引能够大大提高数据库性能。
视图是什么?游标是什么?答:视图是一种虚拟表,虚拟表具有和物理表相同的功能,可以对虚拟表进行增该查操作,视图通常是一个或多个表的行或列的子集,视图的结果更容易理解(修改视图对基表不影响),获取数据更容易(相比多表查询更方便),限制数据检索(比如需要隐藏某些行或列),维护更方便。
游标对查询出来的结果集作为一个单元来有效的处理,游标可以定位在结果集的特定行、从结果集的当前位置检索一行或多行、可以对结果集中当前位置进行修改。
什么是存储过程?有什么优点?答:存储过程是一组予编译的SQL语句,它的优点有 1.允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次。
2.允许更快执行,如果某操作需要执行大量SQL语句或重复执行,存储过程比SQL语句执行的要快。
sql server常见面试题
![sql server常见面试题](https://img.taocdn.com/s3/m/9cbd9541e97101f69e3143323968011ca200f76f.png)
sql server常见面试题以下是一些常见的SQL Server 面试题及其答案:1. 什么是SQL Server?SQL Server 是由Microsoft 开发的关系型数据库管理系统(RDBMS)。
它是一个功能强大、可靠性高的数据库平台,广泛用于企业级应用和数据管理。
2. 什么是数据库?数据库是一个组织结构化的数据集合,可以通过数据库管理系统(DBMS)进行访问、管理和操作。
它提供了一种存储、检索和处理数据的方式。
3. 什么是表?表是数据库中的基本组成单元,用于存储数据。
它由列(字段)和行组成,每个列定义了数据类型和约束规则,每一行表示一个记录。
4. 什么是主键?主键是表中唯一标识每个记录的列或列组合。
它用于确保数据的唯一性和完整性,并且在建立关系时起到重要作用。
5. 什么是外键?外键是表中与其他表的关联字段,它建立了表之间的关系。
外键约束用于确保引用表中的数据完整性,并支持表之间的数据关联。
6. 什么是索引?索引是一种数据结构,用于快速定位和访问数据库中的数据。
它可以加快查询的速度,但会增加写操作的开销。
常见的索引类型包括聚集索引、非聚集索引和全文索引。
7. 什么是事务?事务是数据库操作的基本单位,它是由一个或多个数据库操作组成的逻辑工作单元。
事务要么完全执行,要么完全回滚,以确保数据的一致性和完整性。
8. 什么是视图?视图是从一个或多个表中派生的虚拟表。
它是一个预定义的查询,可以像操作表一样使用。
视图提供了数据的安全性、简化了复杂的查询和隐藏了底层数据结构的能力。
9. 什么是存储过程?存储过程是一组预编译的SQL 语句,以及可选的流程控制语句,用于执行特定任务。
它们被保存在数据库中,并可以通过名称调用和执行,提供了代码重用和性能优化的好处。
10. 什么是触发器?触发器是与表相关联的特殊类型的存储过程。
它们在插入、更新或删除表中的数据时自动触发,并允许执行其他的业务逻辑或数据操作。
这些问题涵盖了SQL Server 中的一些基本概念和功能。
SQL Server面试题目精选 包含答案
![SQL Server面试题目精选 包含答案](https://img.taocdn.com/s3/m/bd89bc2d915f804d2b16c154.png)
Insert Into 数据表名称(字段名称1,字段名称2,...) values(字段值1,字段值2,...)insert into user(username,password,age) values('李老四','6666',45)Update 数据表名称 Set 字段名称=字段值,字段名称=字段值,...[Where 条件]Delete From 数据表下列查询返回在LONDON(伦敦)或SEATTLE(西雅图)的所有雇员:SELECT * FROM employees WHERE UPPER(city) IN ('LONDON','SEATTLE')下面示例利用DATEDIFF函数,确定在 pubs 数据库中标题发布日期和当前日期间的天数。
SELECT DATEDIFF(day, OrderDate, getdate()) AS no_of_days FROM table1返回字符串"wonderful"在 titles 表的 notes 列中开始的位置。
SELECT CHARINDEX('wonderful', notes)以下是返回的结果:(第47个字符位置)显示工作站的名称:select host_name() as [Client Computer Name]下例是检索 titles 表中百分之五十的书。
如果 titles 表中包含了 18 行,则将检索前 9 行。
SELECT TOP 50 PERCENT title FROM titles字段名称 [Not] Between 起始值 and 终止值列出BOOK表中30至50元的书select * from book where price between 30 and 50字段名称 [Not] In(列出值1,列出值2,...)从BOOK表中列出价格为30,40,50,60的所有书select * from book where price in(30,40,50,60)字段名称 [Not] Like "通配符"列出BOOK表中出版社含电的所有记录select * from book where publishing like '*电*'列出BOOK表中出版社第一个字是电的所有记录select * from book where publishing like '电*'---select Sum/Count/Avg/Max/Min(字段名称) [As 新名称] From 数据表名称sum求和:求出总价格做为合计字段select sum(price ) as 合计 from bookcount统计数量:统计BOOK表中有多少条记录做为数量字段select count(id) as 数量 from bookAVG平均:算出BOOK表中所有书的平均价格select avg(price) as 平均价格 from bookMAX最大:列出BOOK表中最贵的书select max(price) as 最贵书 from bookMIN最小:select min(price) as 最便宜书 from book交叉联接:SELECT * FROM table1 CROSS JOIN table2select x.[name], y.[name] from x left join y on x.[refid] = y.idselect y.[name], x.[name] from x right join y on x.[refid] = y.id表联接查询SELECT t1.ProductID, t2.VendorID, FROM table1 t1, table2 t2WHERE t1.VendorID = t2.VendorIDAND StandardPrice > $10AND Name LIKE 'F%'SELECT ProductID, talbe2.VendorID, NameFROM table1 JOIN table2ON (table1.VendorID = table2.VendorID)WHERE StandardPrice > $10AND Name LIKE 'F%'COMPUTE by 子句可选 BY 关键字。
sql server dba 面试题
![sql server dba 面试题](https://img.taocdn.com/s3/m/0edcd37442323968011ca300a6c30c225901f03e.png)
sql server dba 面试题SQL Server DBA面试题为了帮助您准备SQL Server DBA面试,本文将提供一系列常见的面试题,并提供详细的答案和解释。
请按照以下格式浏览并学习相关内容。
题目1:SQL Server的默认端口是多少?如何修改SQL Server的默认端口?答案1:SQL Server的默认端口是1433。
要修改SQL Server的默认端口,可以按照以下步骤进行:1. 打开SQL Server配置管理器(SQL Server Configuration Manager)。
2. 在左侧的面板中,展开“SQL Server网络配置”(SQL Server Network Configuration)。
3. 选择“MSSQLServer”。
4. 在右侧的面板中,找到“TCP/IP”协议,并右键单击选择“属性”(Properties)。
5. 在弹出的对话框中,选择“IP地址”(IP Addresses)选项卡。
6. 找到“IPAll”部分,并将“TCP端口”(TCP Port)设置为所需的端口号。
7. 点击“应用”(Apply)和“确定”(OK),保存更改。
8. 重新启动SQL Server服务,使更改生效。
题目2:如何备份和还原SQL Server数据库?答案2:数据库备份:1. 使用SQL Server Management Studio(SSMS)连接到目标SQL Server实例。
2. 在对象资源管理器(Object Explorer)中,展开“数据库”(Databases)节点。
3. 右键单击要备份的数据库,并选择“任务”(Tasks)->“备份”(Backup)。
4. 在备份对话框中,选择要备份到的位置、备份类型、备份文件的名称等选项,并点击“确定”(OK)开始备份过程。
数据库还原:1. 在SSMS中连接到目标SQL Server实例。
2. 在对象资源管理器中,右键单击“数据库”节点,并选择“还原数据库”(Restore Database)。
sqlserver相关的面试题
![sqlserver相关的面试题](https://img.taocdn.com/s3/m/c4acc468e3bd960590c69ec3d5bbfd0a7956d5d7.png)
sqlserver相关的面试题含解答共20道1. 什么是SQL Server?- SQL Server 是由Microsoft 公司开发的关系型数据库管理系统(RDBMS)。
2. 什么是主键(Primary Key)?-主键是一列或一组列,其值用于唯一标识表中的每一行。
主键的值不能为NULL。
3. 什么是外键(Foreign Key)?-外键是一列或一组列,用于建立两个表之间的关联。
外键在一个表中创建,指向另一个表的主键。
4. 什么是索引(Index)?-索引是一种数据结构,用于提高数据库表的检索速度。
它类似于书籍的目录,加速数据的查找。
5. 什么是触发器(Trigger)?-触发器是一种特殊的存储过程,与表相关联,当表上的特定事件发生时,触发器会自动执行。
6. 什么是存储过程(Stored Procedure)?-存储过程是一组预编译的SQL 语句,可以在数据库中保存并由应用程序调用。
7. 区分UNION 和UNION ALL 的区别。
- UNION 会去除结果集中的重复行,而UNION ALL 保留所有行,包括重复的。
8. 什么是SQL 注入(SQL Injection)?- SQL 注入是一种攻击技术,通过向应用程序的输入中注入SQL 代码,从而破坏数据库查询。
9. 什么是事务(Transaction)?-事务是一组SQL 语句,它们作为一个单一的工作单元执行,要么全部执行,要么全部回滚。
10. 解释ACID 属性。
-ACID 是数据库事务的四个特性,包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
11. 什么是视图(View)?-视图是基于一个或多个表的查询结果的虚拟表。
它与物理表不同,不包含实际存储的数据。
12. 如何备份和还原数据库?-使用SQL Server Management Studio(SSMS)可以通过图形界面进行备份和还原数据库的操作,也可以使用T-SQL 命令`BACKUP` 和`RESTORE`。
数据库面试题(SQLSERVER)及答案
![数据库面试题(SQLSERVER)及答案](https://img.taocdn.com/s3/m/0144139e33d4b14e8424681c.png)
数据库面试题(SQL2005)一、选择题(5分一题,共50分)1、公司A使用SQL Server 2005数据库。
来自贸易伙伴的客户数据每天晚上都要导入到客户表。
你要确保,在导入的过程中,对于存在的客户数据进行更新、对于不存在的客户数据进行插入。
你该怎么做?(B)A. 创建一个FOR触发器。
B. 创建一个INSTEAD OF 触发器。
C. 创建一个 AFTER 触发器。
D. 创建一个 DDL 触发器。
2、你负责维护你们部门SQL Server 2005数据库的调度作业。
其中一个作业从多源为报表聚集数据。
这个作业每日运行,由多步构成。
每一步都为某一特定报表聚集数据。
有用户反映一些报表的数据近期没有更新。
你要确保即使发生错误,聚合数据作业的每一步也都要执行。
那你该如何做?(C)A. 将作业中所有步骤组合成一个每日运行的步骤。
B. 创建一个通知;在每次出现错误时通知你。
以便你能及时更正错误,重启作业。
C. 修改失败使要执行的步骤为“转到下一步”。
D. 设置作业重试当前步骤。
3、你要创建一个SQL Server 2005应用程序来存储和管理法律文件。
原文件以XML文档存于一文件服务器上。
此应用程序用于将文件插入到数据库。
此后,这些文档必须能够从数据库中得到,并与原文件保持一致。
你要设计一个表去存储这些文档数据,该怎样做?(A)A. 将XML文档存于以nvarchar(max)为数据类型的一列中。
B. 分割此XML文档并将其存储于在一个关系结构中。
C. 将XML文档存于以XML为数据类型的一列中。
D. 将XML文档存于以varchar(8000)为数据类型的一列中。
4、你正在写一个查询,从SQL Server 2005数据库表中返回数据。
一些数据存储在关系列中,一些存储在XML数据类型列中。
你的查询需要返回一个关系结果集,其中包含关系域中的数据以及XML数据类型列的属性值。
你应该使用XML数据类型的哪两个方法?(每一个正确的答案代表方案的一部分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SqlServer面试题及答案1.磁盘柜上有14块73G的磁盘,数据库为200G 大小包括日志文件,如何设置磁盘(要说明这14磁盘是怎么用的)?2.有两服务器群集,分别为node1和node2 现在要打win200系统补丁,打完后,要重新启动,如何打补丁,不能影响用户使用(要用群集的术语详细说明)。
3.有一个A 数据库,分别复制到B和C B 要求每次数据更新也同时更新,C 每天更新一次就行,如何制定复制策略!4.有一个order 表,有90个字段,20个索引,15个复合索引,其中有3个索引字段超过10个,如何进行优化5.有一个数据库200G大小,每天增加50M 允许用户随时访问,制定备份策略(详细说明)。
参考答案:1.磁盘柜上有14块73G的磁盘,数据库为200G 大小包括日志文件,如何设置磁盘(要说明这14磁盘是怎么用的)?这个问题应该是考察硬件知识和数据库物理部署。
首先需要知道这些磁盘是否要用于存放数据库备份文件和数据库性能(读/写)要求。
来决定raid的级别。
1)、如果偏重于性能考虑,而且不用存放数据库备份文件的话,考虑使用raid0 1,这样可使用的磁盘容量为:14*73*50%=511G。
2)、如果读/写性能要求不高,而且还比较抠门的话,可以考虑raid5,这样可使用的磁盘容量为:13*73=949G。
至于如何使用应该是说数据库物理文件的部署。
注意说出将tempdb,data file,log file分开存放以减少I/O竞争即可。
其实现在的条带化磁盘一般都会自动将文件分存,人为的分布已经越来越不重要了。
2.有两服务器群集,分别为node1和node2 现在要打win200系统补丁,打完后,要重新启动,如何打补丁,不能影响用户使用(要用群集的术语详细说明)。
这个具体操作有点忘了。
大致是:首先看哪个节点正在使用,通过节点IP(私有)访问另一个空闲节点,为其打上补丁,然后在群集管理器中停止该节点(也可以用命令行方式),重新启动。
等到启动完毕,将切换使用节点,为另一个节点打补丁。
然后重新启动。
3.有一个A 数据库,分别复制到B和C B 要求每次数据更新也同时更新,C 每天更新一次就行,如何制定复制策略!这个应该考察的是复制知识。
a->B1)、如果使用SQL Server复制功能,那么让a->b使用事务性复制方式(同步复制)。
2)、如果表不多,也可以自己写触发器,利用linkserver distribute transaction。
a->C1)、如果使用SQL Server复制功能,那么让a->b使用快照复制方式,在某一时间点进行一次性复制。
2)、也可以自己写bat,将a备份后,通过ftp传输备份介质,恢复c。
(比较麻烦,不推荐)4.有一个order 表,有90个字段,20个索引,15个复合索引,其中有3个索引字段超过10个,如何进行优化这个问题问的比较没水平。
你不详细说明这个表的使用方式(读写类的,还是几乎是静态表),就问人家怎么优化?!!还不如问问索引的分布访问原理更好。
看得出他就想让你说:那三个索引超过10个,B树遍例效率很低,适当减少字段数目。
如果是SQL2005,可以将选择性不好的字段放在“索引附加字段”中,以保证索引覆盖。
而且SQL Server由于有锁升级的毛病,可以考虑拆开表。
5.有一个数据库200G大小,每天增加50M 允许用户随时访问,制定备份策略(详细说明)。
这种情况可以采用增量备份方式。
每周日做一次全备份,周一到周六作增量备份(由于数据量较少,可以考虑每30分钟增量备份一次)。
这样可以尽量减少性能消耗,而且如果transaction log丢失的情况下,可以保证最多丢失30分钟数据。
2. 6.管理50台数据库,日常工作是检查数据库作业是否完成,你该如何完成这项检查工作?7.自定义函数和存储过程的区别是什么,什么情况下只能用自定义函数,什么情况下只能用存储过程参考答案:6.管理50台数据库,日常工作是检查数据库作业是否完成,你该如何完成这项检查工作?这个比较简单。
在每台机器上建立linkserver,然后在DBA管理服务器上做个分布式视图,每次查询该视图,各个机器上的作业情况一目了然。
分布式视图写法:create view vw_joBasselect '机器一' as MName,* from linkserver1..sysjobactivityunion allselect '机器二' as MName,* from linkserver2..sysjobactivityunion allselect '机器三' as MName,* from linkserver3..sysjobactivity7.自定义函数和存储过程的区别是什么,什么情况下只能用自定义函数,什么情况下只能用存储过程这个应该是考察存储过程编写经验。
一般自定义函数主要用于其他sql中的调用,如:select yourfunc(...) from tablE这种情况下,一般只能通过函数实现。
存储过程的功能要远远强于函数,例如动态执行sql(sp_executesql)的使用和一些特殊的功能,自定义函数中是不支持的,只能用存储过程实现。
3.8.SQL 2005 的新特性是什么?与oracle 有什么区别?9.DBA 的品质应该有哪些,你有哪些,有什么欠缺的?10.如果想配置SQL Mail 应该在服务器安装哪些软件!参考答案:8.SQL 2005 的新特性是什么?与oracle 有什么区别?SQL 2005 的新特性一般都是和Oracle学的。
4.一、数据库设计方面1、字段类型。
varchar(max)\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
但是这就引发了对varchar和char效率讨论的老问题。
到底如何分配varchar的数据,是否会出现大规模的碎片?是否碎片会引发效率问题?这都是需要进一步探讨的东西。
varbinary(max)代替image也让SQL Server的字段类型更加简洁统一。
XML字段类型更好的解决了XML数据的操作。
XQuery确实不错,但是个人对其没好感。
(CSDN的开发者应该是相当的熟了!)2、外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
但是再开发调试阶段和OLAP环境中,外键是可以建立的。
新版本中加入了SET NULL 和 SET DEFAULT 属性,能够提供能好的级联设置。
3、索引附加字段这是一个不错的新特性。
虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。
我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。
4、计算字段的持久化原来的计算字段其实和虚拟字段很像。
只是管理方面好了而已,性能方面提高不多。
但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。
OLTP慎用。
OLAP可以大规模使用。
5、分区表分区表是个亮点!从分区表也能看出微软要做大作强SQL Server的信心。
资料很多,这里不详细说。
但是重点了解的是:现在的SQL Server2005的表,都是默认为分区表的。
因为它要支持滑动窗口的这个特性。
这种特性对历史数据和实时数据的处理是很有帮助的。
但是需要注意的一点,也是我使用过程中发现的一个问题。
在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。
这一点很让我纳闷。
如果你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。
不知道这算不算一个bug。
大家也可以试试。
分区表效率问题肯定是大家关心的问题。
在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。
但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。
但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。
(500万数量级只相差10%左右)6、CLR类型微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。
最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。
但是作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。
但是现在有哪些系统大批使用了java 存储过程?!连Oracle自己的应用都不用为什么?!还不是性能有问题!否则面向对象的数据库早就实现了!建议使用CLR的地方一般是和应用的复杂程度或操作系统环境有很高的耦合度的场景。
如你想构建复杂的算法,并且用到了大量的指针和高级数据模型。
或者是要和操作系统进行Socket通讯的场景。
否则建议慎重!7、索引视图索引视图2k就有。
但是2005对其效率作了一些改进但是schema.viewname 的作用域真是太限制了它的应用面。
还有一大堆的环境参数和种种限制都让人对它有点却步。
8、语句和事务快照语句级快照和事务级快照终于为SQL Server的并发性能带来了突破。
个人感觉语句级快照大家应该应用。
事务级快照,如果是高并发系统还要慎用。
如果一个用户总是被提示修改不成功要求重试时,会杀人的!9、数据库快照原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。
但是比起Oracle10g的闪回技术还是细粒度不够。
可惜!10、MirrorMirror可以算是SQL Server的Data guard了。
但是能不能被大伙用起来就不知道了。
二、开发方面1、Ranking函数集其中最有名的应该是row_number了。
这个终于解决了用临时表生成序列号的历史,而且SQL Server2005的row_number比Oracle的更先进。
因为它把Order by集成到了一起,不用像Oracle那样还要用子查询进行封装。
但是大家注意一点。
如下面的例子:select ROW_NUMBER() OVER (order by aa)from tblorder by bB会先执行aa的排序,然后再进行bb的排序。
可能有的朋友会抱怨集成的order by,其实如果使用ranking函数,Order by 是少不了的。