SQL Server基础知识三十三问 (1-7)
1. SQL Server运行在什么端口上? 可以被修改么?
答: 1433端口. 可以修改的, 在SQL Server Configuration Manager的SQL Server Network Configuration的TCP/IP中.
Configure a Server to Listen on a Specific TCP Port (SQL Server Configuration Manager)
http://msdn.microsoft.com/en-us/library/ms177440.aspx
2. Clustered index和non-clustered index的区别是什么?
答: 区别如下.
- Clustered index是一种特殊类型的index, 特殊在表中的记录的重新排序的存储是物理的. 所以, 表只能有一份clustered index. clustered index的叶节点包含数据页面.
- Non clustered index中, index的逻辑顺序和存储在磁盘上的物理顺序是不匹配的. 非clustered index的叶节点不包含数据页面, 取而代之的是index rows.
3. 一张表可以有多少种不同的索引配置?
答:
- 没有索引.
- a clustered index
- a clustered index and many non clustered index
- a non clustered index
- many non clustered index
4. SQL Server 有哪几种collation sensitivity?
答:
- Case sensitivity-字母大小写敏感. 举例: 如果A和a, B和b被认为是一样的, 那么就是大小写不敏感.
- Accent sensitivity- 重音敏感. 举例: 如果 a 和 á, o a和 ó 被认为是一样的, 那么就是重音不敏感.
- Kana sensitivity- 日文假名敏感. 举例: 如果假名字符Hiragana 和Katakana 被认为是一样的, 那么就是假名不敏感.
- Width sensitivity- 字符宽度敏感. 举例:如果a 和a被认为是一样的, 那么就是字符宽度不敏感.
SQL Server and Collation
http://www.databasejournal.com/features/mssql/article.php/3302341/SQL-Server-and-Collation.htm
5. 什么是OLTP (Online Transaction Processing)? 那OLAP呢?
答:
On-Line Transaction Processing联机事务处理系统(OLTP),也称为面向交易的处理系统,其基本特征是顾客的原始数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果。
最大优点是可以即时地处理输入的数据,及时地回答。也称为实时系统(Real time System)。衡量联机事务处理系统的一个重要性能指标是系统性能,具体体现为实时响应时间(Response Time),即用户在终端上送入数据之后,到计算机对这个请求给出答复所需要的时间。OLTP是由数据库引擎负责完成的。
OLTP 数据库旨在使事务应用程序仅写入所需的数据,以便尽快处理单个事务。
特征:
- 支持大量并发用户定期添加和修改数据。
- 反映随时变化的单位状态,但不保存其历史记录。
- 包含大量数据,其中包括用于验证事务的大量数据。
- 具有复杂的结构。
- 可以进行优化以对事务活动做出响应。
- 提供用于支持单位日常运营的技术基础结构。
- 个别事务能够很快地完成,并且只需访问相对较少的数据。OLTP 系统旨在处理同时输入的成百上千的事务。
- 实时性要求高。
- 数据量不是很大。
- 交易一般是确定的,所以OLTP是对确定性的数据进行存取。(比如存取款都有一个特定的金额)
- 并发性要求高并且严格的要求事务的完整、安全性。(比如这种情况:有可能你和你的家人同时在不同的银行取同一个帐号的款)。
当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。
OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
OLAP是使分析人员、管理人员或执行人员能够从多角度对信息进行快速、一致、交互地存取,从而获得对数据的更深入了解的一类软件技术。OLAP的目标是满足决策支持或者满足在多维环境下特定的查询和报表需求,它的技术核心是"维"这个概念。
“维”是人们观察客观世界的角度,是一种高层次的类型划分。“维”一般包含着层次关系,这种层次关系有时会相当复杂。通过把一个实体的多项重要的属性定义为多个维(dimension),使用户能对不同维上的数据进行比较。因此OLAP也可以说是多维数据分析工具的集合。
OLAP的基本多维分析操作有钻取(roll up和drill down)、切片(slice)和切块(dice)、以及旋转(pivot)、drill across、drill through等。
OLTP
http://baike.baidu.com/view/277075.htm
6. primary key和unique key的区别是什么?
答: 这两种键都在他们定义的列上强制唯一性. 但是默认的, primary key会在列上创建一个clustered index, 而默认unique key会在列上创建一个non clustered index. 另一个主要的区别就是, primary key不允许空值(NULL), 而unique key只允许一个NULL.
7. Delete命令和Truncate命令的区别是什么?
答: Delete命令会从table中移除满足我们提供了where子句的条件的特定的行. Truncate命令会从table中删除所有的行, 命令运行结束之后, 表中不会有任何数据留下.
其他区别如下:
Truncate
- Truncate运行更快, 会比Delete命令使用更少的系统资源和transaction log资源.
- Truncate通过释放用来存储table中数据的data page来移除数据, 并且在transaction log中只有释放页面的信息.
- Truncate从表中移除所有的行, 但是表结构, 列, constraints, index等等都保留. 被Identity使用的指向新row的counter被重置到列的seed上.
- 你不能在被Foreign Key引用了的表上执行Truncate table操作.
- Trancate 是不能被roll back的.
- Trancate是DDL command.
- Truncate会重置表的identity.
Delete
- Delete一次删除一行, 并且在transaction log中为删掉的每一行添加一条记录.
- 如果你想要保留identity counter, 你需要使用delete命令. 如果你想要删除表的定义以及表中的数据, 你需要使用drop table命令.
- Delete可以被用在一个没有where子句的语句里.
- Delete可以激活trigger.
- Delete可以被roll back.
- Delete是一个DML command.
- Delete不会reset table的identity.
什么是Identity属性?
Identity columns可以被用来生成Key value. 列的Identity属性会保证:
- 任何新的value都会基于当前的seed和increment来生成.
- 某transaction的任何一个新value都与该表上并发的其他transaction的value不同.
IDENTITY (Property) (Transact-SQL)
http://msdn.microsoft.com/en-us/library/ms186775.aspx
什么是DDL command?
SQL command是用在database上的执行某数据处理任务的指令. SQL command不光能被用来搜索数据库, 还可以被用于执行许多其他的功能, 比如说, 创建表, 向表中添加数据, 修改数据, 删除表, 对用户设置权限. SQL command被根据他们的功能分为4个主要的类别:
- Data Definition Language (DDL) - 这类命令允许你:
- 创建,修改,删除schema objects
- 赋予,激活privileges和roles
- 为data dictionary添加comments
Create, alter, 和drop命令需要对被修改的对象的exclusive的访问. 比如说, 一个alter table命令会因为另一个用户有一个在同一张表上进行中的transaction而失败.
- Data Manipulation Language (DML) - 这些command是用来存储, 取回, 修改, 和删除数据的. 这些命令是select, insert, update和delete.
- Transaction Control Language (TCL) – tranaction control命令是用来管理DML 命令所作的changes的. 这些修改都是影响到data的. 这些命令是commit, rollback, 和savepoint.
- Data Control Language (DCL) - 这些命令被用来船舰role, permission, 和referential integrity, 还被用来控制对数据库的访问. 这些命令提供对数据库object的安全控制. 这些命令是grant和revoke.
SQL COMMANDS: DDL,DML, TCL, DCL
http://www.sqlserverspecialists.com/2012/01/sql-commands-ddldml-tcl-dcl.html
资料来源
=======================
How to answer SQL Server Common Questions interview questions?
http://www.indiabix.com/technical/sql-server-common-questions/
500 Sql server interview questions and answers
http://www.careerride.com/SQLServer-Interview-Questions.aspx