1.新增
sql
insert into 表名 [列名1,列名2...] values (val1,val2...)
注意
列名可以没有,如果没有列名,所有的列都应该插入,即val包含所有列的值.
后面的val必须和前面的列名对应.
各个数据之间用,隔开.
1.1单行数据插入
1.1.1单行数据全列插入
values中值的数量必须和定义表的列的数量及顺序⼀致
sql
insert into users values (1, '张三');
1.1.2单行数据指定列插入
values中值的数量必须和指定列数量及顺序⼀致
sql
insert into users(id, name) values (3, '王五');
1.2多行数据指定列插入
在⼀条INSERT语句中也可以指定多个values,实现一次插入多行数据
sql
insert into users(id, name) values (4, '赵六'), (5, '钱七');
2.修改
语法:
update 表名 set 列名=表达式 限制条件
案例:
将张三的英语成绩改为92
sql
update student set english=92 where name='张三';
将所有人的英语成绩加10分
sql
update student set english= english+10;
Update注意事项
• 以原值的基础上做变更时,不能使用math+=30这样的语法
• 不加where条件时,会导致全表数据被列新,谨慎操作
3.删除
语法:
delete from 表名 限制条件
案例:
删除张三的成绩
sql
delete from exam where name = '张三';
删除整张表
sql
delete from t_delete;
Delete注意事项
• 执行Delete时不加条件会删除整张表的数据,谨慎操作
4.常用函数

4.1 COUNT
案例:
统计exam表中有多少记录:
sql
# 使⽤ * 做统计
select count(*) from exam;
# 使⽤常量做统计
select count(1) from exam;
统计有多少学生参加数学考试
sql
# 使⽤指定列做统计
select count(math) from exam;

4.2SUM
案例:
统计所有学生数学成绩总分
sql
select sum(math) from exam;
注意:值为NULL的列不参与统计
不能统计非数值的列
4.3AVG
案例:
统计英语成绩的平均分
sql
# NULL值不参与统计
select avg(english) from exam;
4.4MAX/MIN
案例:
查询英语最高分:
sql
select max(english) from exam;
查询>70分以上的数学最低分
sql
select min(math) from exam where math > 70;
查询数据成绩的最高分与英语成绩的最低分
sql
# 可以使⽤多个聚合函数
mysql> select max(math), min(english) from exam;
5.新增-->insert
插入查询结果,也就是把另一个表中所查询到的数据复制过来.
语法:
insert into 表名 (列名) select ...
案例:把student的id和name数据复制到新建的student2中
sql
create table student2 (id int primary key , name varchar(10),class_id int);
insert into student2 (id,name) select id,name from student;
select * from student2;

这里我们看到,student中的两列数据被成功地插入了student2这张表中.这里需要注意的一点是,前面insert插入操作的时候,列名要加括号,在后面select操作的时候,列名不需要加括号,还有插入表中的数据要和查询出来的数据类型相吻合.