大家好,本篇是MySQL的第二篇,重点讲述查询
接下来,让我们一起来学习MySQL的增删改查吧
创建表
基本格式:
create table 表名 (
列名 类型,
列名 类型
);
例子:
--创建一张学生表
create table student(
id int,
sn int comment '学号',
name varchar(20) comment '姓名',
qq_email varchar(20) comment 'QQ邮箱'
);
--创建一张考试表
create table exam(
id int,
name varchar(20),
chinese decimal(3,1),
math decimal(3,1),
english decimal(3,1)
);
插入数据
基本格式:
insert into 表名
values(值,值…);
例子:
在student表中插入唐三藏,孙悟空的数据
--插入数据
insert into student
values(1,001,'唐三藏',null),
values(2,002,'孙悟空',null);
多方数据,指定列插入:
--多方数据,指定列插入
insert into student(id, sn, name)
values(3,003,'孙权'),
values(4,004,'曹操');
-- 要一一对应
查询
全列查询
基本格式:
全列查询
select *
from 表名
如图所示:
指定列查询
基本格式:
select 列名
from 表名
表达式查询
基本格式:
select 表达式
from 表名
如图:
别名查询
基本格式:
select 表达式 as 别名
from 表名
如图:
去重
去重 (值相同的行只会保留一个,两个列名的值都一样会去掉)
基本格式
select distinct 列名,列名
from 表名
去除name这一列中相同的名字
select distinct name
from exam;
如图:
排序
基本格式:
查询的时候进行排序
select 列名
from 表名
order by 列名 asc / desc
小tips:
- asc(默认是升序) , desc 是降序
- 排序是针对临时数据排序的, 不影响原有数据在Mysql服务器上的存储的顺序
- 不加order by 查询的结果一定是无序的
如图:
例子:
select *
from 表名
order by math desc, chinese desc;
先按math降序排序, 如果数学成绩相同,则再按Chinese的成绩降序排序
关于null的计算结果
select name, chinese + math + english
from exam
where chinese + math + english < 380
–查询总分低于380分的人
![[条件查询 1.png]]
在这个表中的最后一列唐三藏的总分也是低于380的,但是为什么没有被查出来呢?
因为 : null参与各种运算,结果还是null
如图:
条件查询(where)
基本格式:
select *
from exam
where 条件表达式;
例子: 查询English小于60的同学
select *
from exam
where english < 60;
如图:
例子: 查询总分低于380分的人
select name, chinese + math + english
from exam
where chinese + math + english < 380;
如图:
and or
and 和or的应用:
例子:
查询Chinese和enlish 都大于75的
select name, chinese, english
from exam
where chinese > 75 and english > 75;
例子:
查询Chinese或者english > 75的
select name, chinese, english
from exam
where chinese > 75 or english > 75;
如图:
between and
between and的使用:
between and 是闭区间[60,85]
例子:
查询数学分数在[60,85]这个区间的人
select name, math
from exam
where math between 60 and 85;
如图:
模糊查询(like)
模糊查询:
- 模糊查询like搭配通配符% 以及 _
- % : 代表任意个字符
- _ :表示一个字符
例子: 查姓孙的人:
查询姓孙的人
select name,math
from exam
where name like ‘孙%’;
例子:
查询姓名只有两个字,而且姓孙的
select name, chinese
from exam
where name like ‘孙_’;
如图:
分页查询 (limit)
分页查询的使用:
目的: 限制查询结果数量,并给出分页查询的效果
例子1:
查询3个记录,从下标为0开始
select name
from exam
limit 3 offset 0;
例子2:
查询2个记录,从下标为3开始
select *
from exam
limit 2 offset 3;
如图:
修改数据(update)
基本格式:
update 表名
set 列名 = 值
where 条件
例子:
将id为1 的记录的语文成绩改为80分
update exam
set chinese = 80.0
where id = 1;
好啦,以上就是最基础的增删改查啦,
我们下次见,另外,小编也只是一个初学者,如果有误的地方,希望大家可以指出呀.
预告:下一篇会讲数据库的约束…