Mysql数据库入门-高级操作

多条插入

基本语法:insert into 表名 [(字段列表)] values(值列表),(值列表);

insert into my_table  values('张三'),('李四'),('王五');

主键冲突

在有的表中,使用的是业务主键,但是在插入数据的时候,不确定表中已经存在对应的主键

主键冲突的解决方案:

  • 主键冲突更新

    insert into 表名 [(字段列表)] values(值列表) on duplicate key update 字段=新值

  • 主键冲突替换

Replace into[字段列表] values(值列表);

蠕虫复制

一分为二,成倍增加,从已有数据中获取数据,并且将获取到的数据插入到数据表中
基本语法:insert into 表名 [(字段列表)] select */字段列表 from 表

作用:
1、快速扩充数据进行数据表压力及效率测试
2、复制表内容:第一步复制表结构,第二步通过蠕虫复制数据
从生产环境复制到开发环境中进行测试

更新数据

1、在更新数据的时候,特别注意:通常一定是跟随条件更新
Update 表名set 字段名=新值 where 判断条件
2、如果没有条件,是全表更新数据。但是可以使用limit来显示更新的数量
Update 表名 set 字段名=新值[where 判断条件] limit 数量;

Update my_table set name='e' where name='a' limit 4;

删除数据

1、删除数据的时候尽量不要全删,带条件
2、删除数据的时候可以使用limit来限制数量

注意:Delete 删除的数据无法重置auto_increment

Mysql 有一个能够重置表选项中的自增长的语法
Truncate 表名; ==drop=》create

查询数据

来看看完整的查询指令:
Select select选项 字段列表 from 数据源 where 条件 group by分组 having条件 order by排序 limit限制;

  • Select选项:系统该如何对待查询得到的结果
    All:默认的,表示保存所有的记录
    Distinct:去重,去除重复的记录,只保留一条(所有字段相同才叫重复)

  • 字段列表
    有的时候需要从多张表获取数据,可能存在不同表中有同名的字段
    ,需要将同名的字段命名成不同名的:别名 alias

    基本语法:字段名[as] 别名


  • 数据源
    From 是为前面的查询提供数据,数据源只要是一个符合二维表结构的数据即可
  • 单表数据
    from 表名
  • 多表数据
    from 表1 ,表2,…
    结果:两表记录数相乘,字段数拼接,所谓的笛卡尔积,对数据库造成压力,需要避免
  • 动态数据
    from后面跟的数据不是一个实体表,而是一个从表中查询出来得到的二维结果表(子查询)
    基本语法:from (select 字段列表 from 表)as 别名

  • Group by子句
    group by 表示分组的含义:根据指定的字段,将数据进行分组,目的是为了统计
    基本语法: group by 字段名

Group by是为了分组后进行数据统计的,如果只是想看数据显示,那么没有什么意义
Group by将数据按照指定的字段分组之后,只会保留每组的第一条记录

利用一些统计函数:
count():统计每组中的数量,如果统计目标是字段,那么不统计为空NULL字段
avg():求平均值
sum():求和
max():求最大值
min():求最小值

select class_id , count(*),max(stu_age),min(stu_height),avg(stu_age) from my_student group by class_id
  • 多分组

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42435721/article/details/86653064