前言
在前几篇,我介绍了关于MySQL的基本概念,那么本次就要开始介绍关于MySQL的最重要的部分,那就是关于表的操作。(CRUD- Create, Retrieve,Update,Drop)。
建表
例:创建一张学生表
create table student(
id int primary key,
name varchar(20),
sex varchar (2),
addr varchar(20)
);
插入数据
- 单行插入(全列插入)
insert into student values(1,‘张三’,’男‘,‘西安’);
- 多行插入(指定列插入)
insert into student(id,name,sex) values(1,‘张三’,’男‘);
查询
- 全列查询
select * from student;
- 指定列查询
select id,name from student;
- 查询去重
//查询去重后的数学成绩
select distinct shuxue from student
where条件
-
比较运算
-
逻辑运算
where语句使用
//此处使用的表为假想表,意思意思即可,能理解语句就行。
查询数学成绩大于60分的同学
select id,name from student where shuxue > 60;
查询语文成绩在80到90之间的同学
select name, yuwen from student where yuwen between 80 and 90;
查询英语成绩是 58 或者 89 或者 98 或者 99 分的同学及英语成绩
select name,yingyu from student where yingyu = 58 or yingyu = 89 or yingyu = 98 or = yingyu = 99;
select name,yingyu from student where yingyu in(58,89,98,99);
模糊匹配
- % 匹配任意多个(包括 0 个)任意字符
- _ 匹配严格的一个任意字符
查询名字为张某某的同学
select name from student where name like '张%';
查询名字为张某的同学(只有两个字)
select name from student where name like '张_';
排序
- 升序 ASC (默认)
- 降序 DESC
查询数学成绩升序的同学
select name,shuxue from student order by shuxue ;
查询英语成绩降序的同学
select name,yingyu from student order by yingyu DESC ;
筛选分页
- 从 0 开始,筛选 n 条结果(LIMIT n);
- 从 s 开始,筛选 n 条结果(LIMIT s, n);
- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用(]LIMIT n OFFSET n)
更新
将张三同学的数学成绩变更为 80 分
update student set shuxue = 80 where name = '张三';
将总成绩倒数前三的 3 位同学的数学成绩加上 30 分
select name, shuxue, yuwen + shuxue + yingyu 总分 from student
order by 总分 limit 3;
update没有where子句,则更新的是整个表
删除数据
删除名为张三的同学
DELETE FROM student WHERE name = '张三';
删除整张表
delete from student
截断表
TRUNCATE [TABLE] table_name
- 只能对整表操作,不能像 DELETE 一样针对部分数据操作;
- 实际上 MySQL 不对数据操作,所以比 DELETE 更快
- 会重置 AUTO_INCREMENT 项
聚合函数
统计班级共有多少同学
select count(*) from student;
统计语文成绩总分
select sum(yuwen) form student;
统计数学成绩平均分
select avg(shuxue) from student;
返回英语最高分
select max(yingyu) from student;
返回英语最低分
select min(yingyu) from student;
分组查询
在select中使用group by 子句可以对指定列进行分组查询
select column1, column2, .. from table group by column;
例:统计各个部门的平均工资
select avg(sal) from EMP group by deptno