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


insert into 表名 [ ( 字段名 , ( 字段名 ) ) ]

value (value , [, value ] ) ;

mysql的stat_value不准 mysql中value_mysql的stat_value不准

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

在数据插入时,假设主键对应的值已经存在,

mysql的stat_value不准 mysql中value_数据库_02

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

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


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

将字段所有数据修改

mysql的stat_value不准 mysql中value_select操作_03


将指定字段指定数据修改

mysql的stat_value不准 mysql中value_MySQL_04


将数据进行算数修改

mysql的stat_value不准 mysql中value_修改数据库_05


限制更新量

mysql的stat_value不准 mysql中value_mysql的stat_value不准_06

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


delete from 表名 [where condition]

mysql的stat_value不准 mysql中value_select操作_07


在删除数据时,为了防止误删:

复制一个表

create table 新表名 like 表名

将数据复制到新表

insert into 新表名 select * from 表名

mysql的stat_value不准 mysql中value_mysql的stat_value不准_08

delete 与 truncate删除
delete

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

truncate

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


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

select * from 表名:效率低

mysql的stat_value不准 mysql中value_修改数据库_09

select 字段名,字段名 from 表名

mysql的stat_value不准 mysql中value_mysql的stat_value不准_10

distinct:去除重复行

mysql的stat_value不准 mysql中value_修改数据库_11

别名select 字段名,字段名 as 别名 from 表名 可以对起别名的字段进行只显示的数据操作

mysql的stat_value不准 mysql中value_mysql的stat_value不准_12

select + where

where语句中常用的运算符:

mysql的stat_value不准 mysql中value_select操作_13

like’ %’

查询形如 ‘%红’ 的数据

select * from Friends where name like '%红'

mysql的stat_value不准 mysql中value_修改数据库_14

>

查找年龄大于等于4的数据

select * from Friends where age >= 4

mysql的stat_value不准 mysql中value_mysql的stat_value不准_15

and

查询姓‘小’,并且年龄在3~5之间的人

select * from Friends where name like'小%' and age between 3 and 5

mysql的stat_value不准 mysql中value_mysql的stat_value不准_16

in

查询Tel为 ‘0003’ 的人

mysql的stat_value不准 mysql中value_mysql的stat_value不准_17

select的 order by 语句

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

对年龄进行逆序排序

select * from Friends order by age desc

mysql的stat_value不准 mysql中value_mysql的stat_value不准_18

select + count 统计

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

统计表中一共有多少人

select count(*)from Friends

mysql的stat_value不准 mysql中value_数据库_19

统计age大于3的数量

select count(*) from Friends where age>3

mysql的stat_value不准 mysql中value_数据库_20

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

sum 求和

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

求age之和

select sum(age) from Friends

mysql的stat_value不准 mysql中value_MySQL_21

平均年龄

select sum(age)/count(age) from Friends

mysql的stat_value不准 mysql中value_修改数据库_22

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

avg 平均值

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

求平均年龄

select avg(age) from Friends

mysql的stat_value不准 mysql中value_数据库_23

max/min

select max(列名) from 表名 [where condition]

mysql的stat_value不准 mysql中value_mysql的stat_value不准_24

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

mysql的stat_value不准 mysql中value_修改数据库_25

显示每个部门的各种岗位的平均工资和最低工资

首先按deptno分组,然后各组再按job进行分组

mysql> select avg(sal),min(sal),job, deptno from EMP group by deptno, job;

mysql的stat_value不准 mysql中value_select操作_26

having

和group by连用

显示平均工资低于2000的部门和它的平均工资

mysql> select avg(sal) as myavg from emp group by deptno having myavg<2000

mysql的stat_value不准 mysql中value_select操作_27