第9天10天复习
1.查询 select
2.模糊查询 like like 一般和通配符一起用 %,_ '%nm%' not like 不包含
3.排序 order by 升序 ASC 降序 desc
4.取前几个查询结果 limit,limit n,m 表示从n行数据开始取,m表示取了多少行 举例order by 字段名 desc limit 1
5.多条件链接符: 且 and 或 or
not 非
6.在什么和什么之间 between a and b between and 表示闭区间,如果要查询开区间不能用between
7.规定多个子值in (,)in后面表示集合要用括号括起来.如 in('小明','语文')
8.分组 group by 字段名group by 一般和聚合函数一起用,或者说用聚合函数一般会用到分组having 只对 group by 过滤
公式:SELECT 分组名,聚合函数(字段名) FROM 表名 GROUP BY 分组名 HAVING 条件
9.having group by 字段名 having 条件
10.聚合函数
公式:SELECT 分组名,聚合函数(字段名) FROM 表名 GROUP BY 分组名 HAVING 条件
- 统计 count
- 求和 sum
- 平均值 AVG
- 最大值 max
- 最小值 min
having只对上面聚合函数过滤
11.去重 distinct
select distinct 字段名 from 表名 where 条件
- where 普通过滤
12.多表关联 - where 关联 笛卡尔乘积
select * from 表1 别名a,表2 别名b,表3 别名c where a.字段名 = b.字段名 and b.字段名 = c.字段名 连接符(and/or) 条件
3表联接 - 内连接 inner join/join
select * from 表名1 别名a join 表名2 别名b on a.字段 = b.字段 join 表3 别名c on b.字段 =c.字段 where 条件
3表联接 - 嵌套
select 字段1,字段名2 from 表名 where 字段名 in (select 字段名 from 表名 where 条件)
举例
-- 查询 比王芳操作系统成绩高的所有学生
SELECT a.sname FROM `student` a JOIN `score` b ON a.sno =b.sno WHERE b.degree >
(SELECT b.degree FROM student a JOIN score b ON a.`sno` = b.`sno` JOIN course c ON b.`cno` =c.`cno` WHERE a.sname = '王芳' AND c.`cname` = '操作系统');
-- 查询 平均成绩高于60分的课程名
SELECT cname FROM `course` WHERE cno IN (SELECT cno FROM score GROUP BY cno HAVING AVG(degree) >60 ); 嵌套
SELECT c.cname FROM student a JOIN score b ON a.sno = b.sno JOIN course c ON b.cno = c.cno GROUP BY b.cno HAVING AVG(b.degree) > 60;
- 左连接 left join
select * from 表名1 别名a left join 表名2 别名b on a.字段 = b.字段 where 条件
2表连接 - 右连接right join
select * from 表名1 别名a right join 表名2 别名b on a.字段 = b.字段 where 条件
2表连接 - 全连接 full join
select * from 表名1 别名a full join 表名2 别名b on a.字段 = b.字段 where 条件
2表连接
增
INSERT INTO 表名 (字段1,字段2,字段3....)VALUE(值1,值2,值3.....) 增加1行
INSERT INTO 表名 (字段1,字段2,字段3....)VALUES(值1,值2,值3.....),(值1,值2,值3.....),(值1,值2,值3.....) 增加多行
value后没加s表示只增加一行,多个S表示可增加多行.值之间用逗号隔开
改
update 表名 set 字段名1=值,字段名2 =值 where 条件
删
delete from 表名 where 条件
- delete from 表名 清空整张表 但是结构还在
例题
-- 往学生表中插入一条数据 学生编号 110,姓名 小明,性别 待定,班级 95032
-- 把上面插入的学生性别改成男
-- 删除 上面插入的行
-- 新增一个学生,学生信息 小张,生日 2018-01-01 ,性别 女
-- 在成绩表中,添加一条数据,学生姓名 小张,课程名 语文,成绩 1;
-- 修改 把小张的语文成绩修改为 100分
-- 删除刚才新增的记录
表备份
- 备份到临时表
- 只备份表结构
create table 临时表名 as select * from 源表名 where 1=2;
1=2表示条件不成立 - 备份表结构+数据
create table 临时表名 as select * from 源表名 where 1=1;
1=1 表示条件成立
备份成sql脚本--通过sqlyog导出/导入sql脚本
右键表名--备份/导出--导出数据作为--数据格式--sql--路径选择--输出保存的文件名--保存
备份成csv文件
只是格式换一下就行了
扩展
增
把数据从一张表备份到另一张表中
格式1
insert into 目标表 select * from 数据源 where 条件
两张表的结构必须完全相同
格式2
insert into 目标表 (字段名1,字段名2,..) select 字段1,字段2,.. from 数据源 where 条件
不限制表结构
建表
create table
建数据库
create database
改
改表结构
alter - alter table 表名 修改数据库表
- alter database 数据库名 修改数据库
删
清表
delete from 表名
只删除表数据,不清内存
truncate table 表名
表全部清空
删表
drop table 表名
删库 drop database 库名