一.索引
增加查询效率,当数据量小的时候。索引看不出来效果。当数据量很大的时候,索引会显著的提高你的查询速度。
当给表添加索引之后,新插入一条数据,就会让索引进行重新排列
如果频繁的增加或者删除数据,此时索引的效率并不会高
我们在创建表的时候,主键会自动地的被设置为索引
语法规则:
创建索引:create index 索引的名称 on 表(字段)
删除索引:drop index 索引的名称 on 表
创建索引代码:
create index student_index_sname on student(sname)
删除索引代码:
drop index student_index_sname on student
二.视图
视图可以把一段sql语句保存起来,以后进行查询的时候可以直接从视图中查询数据
语法规则:
创建视图:create view 视图的名称 as sql语句
删除视图:drop view视图的名称
创建视图代码:
create view student_sc_course as
select s.sid,s.sname,c.cid,c.cname,score from student s inner join sc on s.sid=sc.sid inner join course c on sc.cid = c.cid
视图其实就是一段sql语句形成的表,比如这里的视图就是
select s.sid,s.sname,c.cid,c.cname,score from student s inner join sc on s.sid=sc.sid inner join course c on sc.cid = c.cid
select sid,avg(score) from student_sc_course group by sid
不推荐更新视图,因为这样做麻烦且危险。
删除视图:
drop view student_sc_course
三.触发器
触发器可以监控表,当表被执行增删改操作的时候可以执行一些固定的操作
比如:
删除student表数据的时候,把该数据保存起来,以备后面进行的数据恢复
语法规则:
创建触发器:
Create trigger 触发器的名字
triggerTime ->before|after
triggerName->insert|update|delete
On 表 For Each Row
begin
sql语句
End
先设计一个表“student_back”
监控student表:
create trigger stu_trigger
before
delete
on student
for each row
begin
-- old 原来的数据库里的老的数据
-- new 新来的数据
insert into student_back(sname,sage,ssex) values(old.sname,old.sage,old.ssex);
end;
删除
delete from student where sid = 3
依次执行上面两段代码,可以发现:
表“student”中sid为3被删除的数据转移到表“student_back”里面去了
四.分页查询(重点)
语法规则: limit start length
如果当前页是n,则当前页可以显示(n-1)*pageSize条数据
select * from student limit (n-1)*pageSize,pageSize
执行以下代码
select * from student limit 2,4
执行以下代码:
select * from student limit 0,4
select * from student limit 4,4
结果是:
select * from student limit 8,4