日期:2014-05-16  浏览次数:20528 次

传智播客.net培训428数据库索引子查询
常用的sql语句学习后今天深入的学习了高级的语句使用。
以及一些数据库高级功能。
语句中主要有连接和子查询的使用,数据库的功能上主要讲了索引和视图。
索引是提高查询效率的一种手段,但是也耗费存储空间。
视图我觉得对于数据安全权限有很好的帮助、
子查询的思路很简单,写起来还是要多试试。
连接分外连接和内连接,两个表连接后要注意on后连接的条件

索引:
全表扫描:对数据进行检索(select)效率最差的是全表扫描,就是一条条的找。(查找年龄大于15岁的。)
通常数据量大且经常查询的情况下适合简历索引
创建索引的方式,在表设计器中点击右键,选择“索引/键”→添加→在列中选择索引包含的列。
使用索引能提高查询效率,但是索引也是占据空间的,而且添加、更新、删除数据的时候也需要同步更新索引,因此会降低Insert、Update、Delete的速度。只在经常检索的字段上(Where)创建索引。

子查询:
把一个查询的结果在另一个查询中使用就叫子查询
例如:
Select * from (select col1,col2 from tab) as t
子查询基本分类:
?独立子查询:子查询可以独立运行
?相关子查询:子查询中引用了父查询中的结果

查询高二二班的所有学生
?select * from student where sClassId = (select cId from class where cName='高二二班')
子查询返回的值不止一个。当子查询跟随在=、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。

分页(rownum):
select * from MyStudent

--另外一种分页的写法,通过为每行编个号。
select *,ROW_NUMBER() over(order by fid desc) as rnum from MyStudent

--要显示第3页的数据,每页显示5条
select * from
(
select *,ROW_NUMBER() over(order by fid desc) as rnum from MyStudent
) as t
where t.rnum between (5*2)+1 and 5*3
--order by Fid desc

表连接:

select * from TblClass
select
tsname,
tsage ,
TblClass.tclassName
from TblStudent
inner join TblClass on TblClass.tClassId=tblstudent.tsclassid

视图:
视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上
视图在操作上和数据表没有什么区别,但两者的差异是其本质是不同:数据表是实际存储记录的地方,然而视图并不保存任何记录。
相同的数据表,根据不同用户的不同需求,可以创建不同的视图(不同的查询语句)
视图的目的是方便查询,所以一般情况下不能对视图进行增删改

优点:
?筛选表中的行
?防止未经许可的用户访问敏感数据
?降低数据库的复杂程度