网页制作网站开发流程,手机上怎么做自己卖菜的网站,长沙网站开发培训,百度竞价推广托管一、索引 什么是索引#xff1a;索引是数据库库中用来提高查询效率的技术#xff0c;类似于目录 为什么要使用索引#xff1a;如果不使用索引#xff0c;数据会零散的保存在磁盘块中#xff0c;查询数据需要遍历每一个磁盘块#xff0c;直到找到数据为止#xff0c;效率…一、索引 什么是索引索引是数据库库中用来提高查询效率的技术类似于目录 为什么要使用索引如果不使用索引数据会零散的保存在磁盘块中查询数据需要遍历每一个磁盘块直到找到数据为止效率低下。使用索引以后会会将磁盘块以树状结构保存查询数据的时候会大大的降低磁盘块的访问次数从而提高查询效率 有索引就一定好吗如果数据库表中的数据很少使用索引反而会降低查询效率 索引是不是越多越好不是因为索引会占用磁盘空间只针对查询时常用的字段创建索引。 导入数据 item2.sql 导入完成之后 show tables; 查看是否有item2这张表 select count(*) from item2; 172万8千多 测试查询耗时 select * from item2 where title100; //耗时0.622
select count(*) from item2; //0.327 如何创建索引 语法 create index 索引名 on item(字段(字段长度))
代码create index index_item_title on item2(title); 测试查询效率 select * from item2 where title100; //耗时0.009
select count(*) from item2; // 耗时0.399 查看索引 语法show index from 表名;
代码show index from item2; 删除索引 语法drop index 索引名 表名;
代码 drop index index_item_title on item2; 索引的分类 聚集索引通过主键创建索引称之为聚集索引聚集索引中保存数据只要给表添加主键约束则会自动的创建聚集索引 非聚集索引通过非主键字段创建的索引称之为非聚集索引非聚集索引中没有数据 复合索引 通过多个字段创建的索引称之为符合索引 语法 create index 索引名 on 表名(字段1字段2);
代码create index index_item_price_title on item2(title,price); 索引总结 索引是用来提高查询效率的技术类似目录 因为索引会占用磁盘空间所以不是越多越好 因为数据量小的时候使用索引会降低查询效率所以不是有索引就一定好 分类聚集索引非聚集索引 通过多个字段创建的索引称之为符合索引 二、事务 什么是事务数据库中执行同一业务需要多条SQL语句指定的工作单元可以保证全部执行成功或者全部失败 事务的ACID特性一原持久隔离) Atomicty : 原子性 最小不可拆分保证全部成功或者全部失败 Consistency: 一致性保证事务从一个一致状态到另一个一致状态 Isolation:隔离性 多个事务之间互不影响 Durablity:持久性事务提交之后数据保存到数据库文件中永久生效 事务相关的SQL 开启事务begin 回滚事务rollback; 提交事务 commit 设置回滚点savepoint s1; 回滚到回滚点 rollback to s1; 查看自动提交状态 show variables like %autocommit% 修改自动提交状态 set autocommiton/off 三、group_concat()函数 查询每一个部门所有员工的姓名和工资 SELECTdeptno,group_concat(ename,:,sal)
FROMemp
GROUP BYdeptno
查询每个部门的员工姓名要求每个部门只能显示一行 SELECTdeptno,group_concat(ename)
FROMemp
GROUP BYdeptno 四、笔试题 创建学生成绩表 student(id主键name姓名subject学科score成绩) create table student(id int primary key auto_increment,name varchar(50),subject varchar(50),core int
); 保存以下数据 张三 语文 66
张三 数学 77
张三 英语 55
张三 体育 77
李四 语文 59
李四 数学 88
李四 英语 78
李四 体育 95
王五 语文 75
王五 数学 98
王五 英语 54
王五 体育 88
insert into student values
(null,张三, 语文,66),
(null,张三, 数学, 77),
(null,张三, 英语 ,55),
(null,张三, 体育, 77),
(null,李四, 语文, 59),
(null,李四, 数学, 88),
(null,李四, 英语, 78),
(null,李四, 体育 ,95),
(null,王五, 语文, 75),
(null,王五, 数学, 98),
(null,王五, 英语, 54),
(null,王五, 体育, 88); 查询每个人的平均分从大到小排序 SELECTname,avg(core) a
FROMstudent
GROUP BY name
ORDER BYa desc; 查询每个人的名字科目和成绩一行显示出来 SELECTname,group_concat(subject,:,core)
FROMstudent
GROUP BYname 查询每个人的最高分和最低分 SELECTname,max(core),min(core)
FROMstudent
GROUP BYname 查询每个人的名字不及格的科目以及分数不及格的科目数量一行显示 SELECT name,group_concat(subject,: ,core),count(*)
FROMstudent
WHEREcore60
GROUP BYname 行专列计算每门课的总成绩 sum(if()) SELECTifnull(name,总成绩) as name, sum(if(subject语文,core,0)) as 语文,sum(if(subject数学,core,0)) as 数学,sum(if(subject英语,core,0)) as 英语,sum(if(subject体育,core,0)) as 体育
FROMstudent
GROUP BY name with rollup; 查询结果