第11天数据库增删改&备份&统计类界面

第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分
-- 删除刚才新增的记录

表备份

  1. 备份到临时表
  • 只备份表结构
    create table 临时表名 as select * from 源表名 where 1=2; 1=2表示条件不成立
  • 备份表结构+数据
    create table 临时表名 as select * from 源表名 where 1=1; 1=1 表示条件成立
    备份成sql脚本--通过sqlyog导出/导入sql脚本
    右键表名--备份/导出--导出数据作为--数据格式--sql--路径选择--输出保存的文件名--保存
    第11天数据库增删改&备份&统计类界面_第1张图片
    image.png

    第11天数据库增删改&备份&统计类界面_第2张图片
    image.png

    备份成csv文件
    第11天数据库增删改&备份&统计类界面_第3张图片
    image.png

    只是格式换一下就行了
    扩展

    把数据从一张表备份到另一张表中
    格式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 库名
第11天数据库增删改&备份&统计类界面_第4张图片
数据库增删改&备份&统计类界面.jpg

你可能感兴趣的:(第11天数据库增删改&备份&统计类界面)