数据表的增删查改操作
该篇主要介绍数据表中对数据的增删查改操作。
(一)数据表中增加数据
- 单行数据+全列插入
- 多行数据+指定列插入
- 插入否则更新
(即如果插入的数据与主键或者唯一键已经存在的值冲突而导致插入失败,这个时候可以选择同步更新,虽然冲突但是可以运行,保留原数据不变)
语法:
insert into 表名 values(...)
on duplicate key update column = value [, column = value]
- 替换
(即表中没有冲突数据,数据被直接插入;
如果表中有冲突数据,则删除后再插入)
语法:
replace into 表名 values(...);
//1,先创建一个数据库
create database student;
use student;
//2,创建一个数据表stu1
create table stu1(
id int unsigned primary key comment '学生id',
name varchar(20) not null comment '学生姓名',
age int unsigned comment '学生年龄',
sex char(2) default '男' comment '学生性别',
chinese int default 0 comment '学生语文成绩',
english int default 0 comment '学生英语成绩',
math int default 0 comment '学生语文成绩');
//3,向stu1表中插入数据
//3.1:单行数据+全列插入
insert into stu1 values (1,'张三',20,'男',80,78,90);
//3.2:多行数据+指定列插入
insert into stu1(id,name,age,chinese,english,math) values
(2,'李四',21,80,88,99),
(3,'王五',20,60,70,80),
(4,'孙刘',19,70,66,78);
此时结果如下:
//3.3 插入的数据与主键数据冲突
insert into student values (1,'张三',20,'女',99,99,99)
on duplicate key update id=1;
replace into student values(1,'张三',23,'男',98,98,98);
(二)数据表中查询数据
- 全列查询
select * from 表名;
- 指定列查询
select 列名 from 表名;
- 查询字段为表达式
举例:
select name chinese+10 from student;
- 为查询结果指定别名
举例:
select name chinese+english+math 总分 from student;
//查询学生表student中每个学生的名字及成绩总和,
//将学生的成绩总和指定一个别名 总分
- 查询结果去重
(即若要查询所有的语文成绩,有两个同学都是80分,若要去重,则使用distinct)
举例:
select distinct chinese from student;
- 使用where 条件
先熟悉下面运算符,灵活使用这些运算符。举例:
select name from student where chindee<60;
- 查询结果排序
–ASC 为升序(从小到大)
– DESC 为降序(从大到小)
– 默认为 ASC
与 order by连接使用。
//查询美味学生的姓名,数学成绩,并将数学成绩按降序排列
select name,math from student order by math desc;
- 筛选结果分页
//起始下标为 0
//从 0 开始,筛选 n 条结果
select...from table_name [where...] [order by...] limit n;
//从 s 开始,筛选 n 条结果
select...from table_name [where...] [order by...] limit s,n;
//从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
select...from table_name [where...] [order by...] limit n offset s;
(三)数据表中修改数据
语法:
update table_nameset column=expr [,column=expr...]
[where...] [order by...] [limit...]
(四)数据表中删除数据
语法:
delete from table_name [where...][order by...][limit...]
(五)聚合函数(六)group by 的使用
在select中使用group by 子句可以对指定列进行分组查询。
select column1, column2, .. from table group by column;
举例:
//显示每个学生id的学生姓名
select id,namde from student group by id;
注: