MySQL---表的增删改查

增删改查是使用数据库时最常用的操作。


insert into 表名 [ ( 字段名 , ( 字段名 ) ) ]
value (value , [, value ] ) ;
这里写图片描述

  • 如果只给表的某几个字段赋值,则需要制定字段名
  • 给表中所有的字段名添加数据,不必写字段名
  • 插入的数据应该与字段的数据类型相同。使用desc 表名 可以查看字段类型
  • 数据大小应该在规定的范围内
  • 在value中列出的数据位置必须与被加入的列位置相对应
  • 字符和日期类型应该包含在单引号中
  • 插入空值时,不指定或 insert into 表名 values(null)
  • 一次添加多条数据 insert into 表名 values(),(),()

在数据插入时,假设主键对应的值已经存在,
这里写图片描述

当主键存在冲突时,可以进行以下操作:

  1. 更新操作:insert into 表名(字段列表) values(值列表) on duplicate key 字段=新值
    这里写图片描述
  2. 替换: repalce into 表名(包含字段) value(值列表)
    -有冲突->替换信息。
    -没有冲突->添加新数据
    这里写图片描述


update 表名 set 字段名=数据,[,字段2=数据] [where condition]

将字段所有数据修改
这里写图片描述
将指定字段指定数据修改
这里写图片描述
将数据进行算数修改
这里写图片描述
限制更新量
这里写图片描述

  • update可以用新值更新原有表中的各列
  • set语句指定更新的字段和值,可以指定多个字段
  • where语句指定更新哪些行。没有where,则更新所有行


delete from 表名 [where condition]
这里写图片描述
在删除数据时,为了防止误删:
复制一个表
create table 新表名 like 表名
将数据复制到新表
insert into 新表名 select * from 表名
这里写图片描述

delete 与 truncate删除
delete

  • 删除整个表的数据,但表结构还在
  • 可以带where,使用更灵活
  • 可以返回被删除的记录数

truncate

  • 删除速度快
  • 不能使用where
  • 返回0,常用于清除表中数据


select [distinct] *| {column1,column2,...} from tbl_name;

select * from 表名:效率低
这里写图片描述

扫描二维码关注公众号,回复: 2469018 查看本文章

select 字段名,字段名 from 表名
这里写图片描述

distinct:去除重复行
这里写图片描述

别名select 字段名,字段名 as 别名 from 表名 可以对起别名的字段进行只显示的数据操作
这里写图片描述

select + where

where语句中常用的运算符:
这里写图片描述

like’ %’
查询形如 ‘%红’ 的数据
select * from Friends where name like '%红'
这里写图片描述

>
查找年龄大于等于4的数据
select * from Friends where age >= 4
这里写图片描述

and
查询姓‘小’,并且年龄在3~5之间的人
select * from Friends where name like'小%' and age between 3 and 5
这里写图片描述

in
查询Tel为 ‘0003’ 的人
这里写图片描述

select的 order by 语句

  • 指定排序的列,可以使用列名也可以使用select语句后指定的别名
  • order by语句位于句尾
  • asc升序(默认),desc降序

对年龄进行逆序排序
select * from Friends order by age desc
这里写图片描述

select + count 统计

count (列名) 返回某一列,行的总数
select count(*)|count(列名) from 表名 where condition

统计表中一共有多少人
select count(*)from Friends
这里写图片描述

统计age大于3的数量
select count(*) from Friends where age>3
这里写图片描述

  • count(*) 会统计一共的记录数,count(列名)会排除NULL的情况

sum 求和

sum函数返回满足where条件的行的和
select sum(列名) {,sum(列名)...} from tbl_name [where condition]

求age之和
select sum(age) from Friends
这里写图片描述

平均年龄
select sum(age)/count(age) from Friends
这里写图片描述

  • sum仅对数值起作用,否则结果没有意义

avg 平均值

avg函数返回满足where条件的一列的平均值

求平均年龄
select avg(age) from Friends
这里写图片描述

max/min

select max(列名) from 表名 [where condition]
这里写图片描述

group by 分组

select column1,column2, .. from table group by column
为了明确的展示分组,这里使用了雇员信息表

  • EMP员工表
  • DEPT部门表
  • SALGRAD工资等级表

显示每个部门的平均工资和最高工资
mysql> select deptno,avg(sal),max(sal) from EMP group by deptno
这里写图片描述

显示每个部门的各种岗位的平均工资和最低工资
首先按deptno分组,然后各组再按job进行分组
mysql> select avg(sal),min(sal),job, deptno from EMP group by deptno, job;
这里写图片描述

having
和group by连用
显示平均工资低于2000的部门和它的平均工资
mysql> select avg(sal) as myavg from emp group by deptno having myavg<2000
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_37934101/article/details/81039664