1 新增数据

1.1 语法一:insert into 表名 values (列1,列2);

  1. 要求:
  1. values中列的数量与表的数量一致
  2. values中列的顺序与表结构一致

    • 查表结构字段顺序:
      • show create table 表名;
      • desc 表名;
      • select * from 表名;
      • show full fields from 表名

        1.2 语法二:insert into 表名(列名1,列名2)values(列值1,列值2);

        要求:
  3. 列名不用全部列出

  4. 列名的顺序可以变
  5. 列值和列名必须一 一对应即可。

    1.3 语法三:同时插入多个记录

  6. 方法一:insert into 表名 values (列1,列2),(列1,列2),(列1,列2);

  7. 方法二:insert into 表名(列名1,列名2)values(列值1,列值2),(列值1,列值2),(列值1,列值2);

    1.4 插入默认值

    用default代替

    1.5 插入null

    用null 代替

    1.6 插入自增列的值

  8. 可不可以指定值?可以,只要新值不重复即可。

  9. 用default代替,例如:insert into student values(default,”卢布”,”男”)

    1.7 从其他表拿数据来插入

  10. 方法一:insert into 表名 select 列名 from 表名;

    • 要求
      • 查找到的列必须和insert 的表列一 一对应,且顺序一致。
      • 数据类型要一致
  11. 方法二:insert into 表名(列名1,列名2) select (列名1,列名2) from 表名;

    例子:insert into student(name,sex) select name,sex from student where snum=4

    2 修改数据:

    2.1 语法 : update 表名 set 列名1=新值,列名2=新值 where 条件;

    2.2 更新为默认值

    新值用default单词代替

    2.3 更新为null

    新值改用null单词代替

    2.4 如何把值变大?例如年龄加1 ;

  • 新值处可以有数学计算,
  • 可以使用函数。
  • 可以使用表中的列

    3 删除数据:

    3.1 删除指定条件数据(记录)

  • 语法:delete from 表名 where 条件

    3.2 清空表

  • 方法一:truncate table 表名

    • truncate 无法应用于外键主表上,truncate 能重置自动增长为1,truncate 清除大表快
  • 方法二:delete from 表名

    4 查询结构:

    4.1 语法:

    select [distinct]列名 from 表名 [where 条件] [group by 列名[having 子句]] [order by 列名[asc|desc]] [limit 限制条数]

    4.2 select(展示列):

  1. 可以是列名
  2. 可以是*,表示所有列
  3. 函数(sum,avg,max,min,count)—-NULL 不进入计算 ( 可以用ifnull(null,0)函数转化)
  4. 可以用 as 或空格 给列名取个别名
  5. 列上可以做计算

    4.3 distinct(去除重复)

  • 如果后面是多个列名,是联合在一起去除重复。
  • distinct 左侧不能有其他列名

    4.4 from(数据源):

  • 数据源可以是如下一个或多个

    • ① 1个表
    • ②多个表
    • ③视图
    • ④子查询
    • ⑤join.. on …(inner join:内连接 , left join左连接 ,right join 连接)
  • 左连接:左连接以左表为主如果连接条件不成立,显示左表数据,右表数据为null。
  • 如何关联多个表

    1. 例子:查询 王小的成绩 用连接查询?

select * from student a left join score b on a.sno=b.sno left join course c on b.cno=c.cno where sname=”王小”;

4.5 where 条件

  1. 比较大小: > ,>=,=,<,<= ,!=(<>)
  2. BETWEEN a and b : 范围包含a和b
  3. and , or , NOT
  4. in ,not in
  5. 可以有子查询
  6. 如何判断是null :is null , is not null
  7. 字符串的模糊匹配: like
    • _ :表示一个任意字符
    • %:表示0个或多个任意字符

      4.6 group BY

  • 根据填写列进行分组
  • 如果指定了多列,联合一起分组
  • 一般和聚合函数一起使用 (sum、count、avg、max、min)
  • 如果查询除了分组字段外的其他列,可能不准确。

    1. 例子:查询其他非分组字段可能有错误,下面查询语句中sname列就有问题。<br /> select experience,max(age),sname from student GROUP by experience

    4.7 having:

  • 作用:在group by 之后筛选结果

  • 与where 的区别:where 是在分组之前筛选, having 是在分组之后。

    4.8 order by :

  • 作用:对查询结果进行排序

  • 使用:可以根据一列或多列排序

    1. 例子: order by age desc **, **score asc : 先根据age 降序排列,然后再根据score 顺序排序。

    4.9 limit:

  • 作用:限制查询结果条数

  • 使用:
  • limit 3 (表示取前3条);
  • limit 3 ,4 —表示取第4,第5,第6,第7条数据。

    5 提升题目(了解):

    5.1 插入数据时类型不一致,插入失败。

    mysql_增删改查_总结 - 图1
    解决:
    INSERT INTO book VALUES(DEFAULT,”西游记全集”,”吴承恩”,”中国历史出版色”,”文学”,REPLACE(“1,456.12”,”,”,””),115,20)

    5.2 更新字段可能需要子查询

    mysql_增删改查_总结 - 图2

    5.3 将一个表的字段值更新到另一张表

    mysql_增删改查_总结 - 图3

    5.4 删除满足子查询结果数据的操作

    mysql_增删改查_总结 - 图4
    mysql_增删改查_总结 - 图5

    5.5 查询中用到了非分组字段,查询结果可能有错

    mysql_增删改查_总结 - 图6

5.6 MySQL 不支持使用 LIMIT 子句的 IN/ALL/ANY/SOME 子查询

mysql_增删改查_总结 - 图7
mysql_增删改查_总结 - 图8

5.7 排名次问题

mysql_增删改查_总结 - 图9
mysql_增删改查_总结 - 图10

5.8 补充题(专家级别,可忽略)

https://www.cnblogs.com/laowenBlog/p/8795865.html