var
您好,欢迎访问景安网络旗下资讯网!
运营 建站 系统 数据库 编程

首页 > 数据库  >数据库面试题,赶紧来看一下?

数据库面试题,赶紧来看一下?

来源:景安资讯平台作者:小韩发布时间:2015-07-31点击:1451

数据库面试题

一、sql如何进行优化?


其实也就是索引的优化,因为我们不可能修改数据结构的情况下,提高数据库的查询效率似乎也只能用索引了


1.创建索引:对于查询占主要的应用来说,索引显得尤为重要,可以有效地避免每次查询都全表扫描的情况出现,如果表的数据很大,而符合条件的数据又很少,那么不加索引就会引起性能下降。


2.复合索引

比如有一条语句是这样的:select * from users where area=beijingand age=22;如果我们是在areaage上分别创建单个索引的话,由于mysql查询每次只能使用一个索引,所以虽然这样已经相对不做索引时全表扫描提高了很多效率,但是如果在areaage两列上创建复合索引的话将带来更高的效率。


3.索引不会包含有NULL值的列,


4.使用短索引, 对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的 列,如果在前10 个或20 个字符内,多数值是惟一的,那么就不要对整个列进行索引。


5.不要在列上进行运算,在列上进行运算将会导致索引失效,进行全盘扫描。


6.不使用NOT IN<>操作,将会导致索引失效,进行全盘扫描。


二、事务的四大属性分别是什么?


1.原子性(Atomicity):事务是一个完整的操作。


2.一致性(Consistency):当事务完成时,数据必须处于一致状态。


3.隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的。


4.持久性(Durability):事务完成后,它对于系统的影响是永久性的。


三、创建事务


T-SQL中管理事务的语句:


1 开始事务:begin transaction


2 提交事务:committransaction


3 回滚事务:rollback transaction


事务分类


1 显式事务begin transaction明确指定事务的开始。


2 隐性事务:打开隐性事务:set implicit_transactions on,当以隐性事务模式操作时,SQL Servler将在提交或回滚事务后自动启动新事务。无法描述事务的开始,只需要提交或回滚事务。


3 自动提交事务:SQLServer的默认模式,它将每条单独的T-SQL语句视为一个事务。如果成功执行,则自动提交,否则回滚。


示例:张三转800元到李四帐户上。


use stuDB

go

–创建帐户表bank

if exists(select* from sysobjects where name=bank)

drop table bank

create table bank

(

customerName char(10), –顾客姓名

currentMoney money –当前余额

)

go

/*//–添加约束,帐户不能少于元–*/

alter table bank add

constraint CK_currentMoneycheck(currentMoney>=1)

/*//–插入测试数据–*/

insert into bank(customerName,currentMoney)

select ‘张三’,1000union

select ‘李四’,1


select * from bank

go


/*//–使用事务–*/

use stuDB

go

–恢复原来的数据

update bank set currentMoney=currentMoney-1000 where customerName=’李’

set nocount on –不显示受影响的行数

print ‘查看转帐事务前的余额’

select * from bank

go


/*//–开始事务–*/

begin transaction

declare @errorSum int –定义变量,用于累计事务执行过程中的错误

/*//–转帐–*/

update bank set currentMoney=currentMoney-800 where customerName=’张三’

set @errorSum=@errorSum+@@error –累计是否有错误

update bank set currentMoney=currentMoney+800 where customerName=’李四’

set @errorSum=@errorSum+@@error –累计是否有错误


print ‘查看转帐事务过程中的余额’

select * from bank


/*//–根据是否有错误,确定事务是提交还是回滚–*/

if @errorSum>0

begin

print ‘交易失败,回滚事务.

rollback transaction

end

else

begin

print ‘交易成功,提交事务,写入硬盘,永久保存!’

commit transaction

end

go


print ‘查看转帐后的余额’

select * from bank

go


四、索引定义是?


SQL Server允许用户在表中创建索引,指定按某列预先排序,从而大大提高查询速度(类似于汉语词典中按照拼音或者字画查找)。


五、索引作用是?


通过索引可以大大的提高数据库的检索速度,提高数据库的性能。


六、索引有几种类型


1:唯一索引:唯一索引不允许两行有相同的索引值(其实也就是说唯一索引的这一列,每个值都是唯一的);


例如,如果在stuInfo表中的学员员身份证号(stuID) 列上创建了唯一索引,则所有学员的身份证号不能重复。


2:主键索引:定义表主键的时候,会自动创建主键索引(其实主键索引就是唯一索引的特例),主键索引要求每一个值都是唯一的且非空。


主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的。当在查询中使用主键索引时,它还允许快速访问数据。


3:聚集索引:表中各行的物理顺序与键值的逻辑顺序相同,每个表只能有一个。


4:非聚集索引:非聚集索引指定表的逻辑顺序,数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。


提示:SQL Server中,一个表只能创建1个聚集索引,多个非聚集索引。设置某列为主键,该列就默认为聚集索引


七、叙述一下索引的优缺点:


优点:加快访问速度加强行的唯一性


缺点:带索引的表在数据库中的存储需要更多的空间;


关键词: 数据库面试题

版权声明:本文系技术人员研究整理的智慧结晶,转载勿用于商业用途,并保留本文链接,侵权必究!

本文链接:https://www.zzidc.com:443/info/sjk/452.html

返回顶部