一、MySQL数据库简单查询
1、数据的备份还原
导出:先对数据库进行备份,然后提取备份文件中的sql语句
导入:
方法1:创建和原始数据库同名的数据,然后执行从备份文件中导出的sql语句【此方法不需要修改
导出sql语句】
方法2:在数据库中直接运行导出的sql语句【此方法往往需要先修改数据库文件】
2、简单查询概述
简单查询即不含where的select语句。
在进行查询之前,我们先准备一个测试数据,代码如下:
- 创建数据库
drop database if exist stu;
create database stu;
USE stu;
-- 创建student表
create table student (
id int,primary key,
name varchar(50),
age int,
gender varchar(50) default('m','f'),
classid int
);
-- 向student表插入数据
insert into student values('1001', 'wang', 15, 'f',2);
insert into student values('1002', 'who', 18, 'f',3);
insert into student values('1003', 'liucun', 20, 'f',1);
insert into student values('1004', 'hanxuw', 17, 'f',4);
insert into student values('1008', 'yuke', 22, 'f',4);
insert into student values('1007', 'mohen', 14, 'f',2);
1、查询所有字段
select * from 表名;
2、查询指定字段
select 字段名... from 表名;
例如:查询指定数据表中字段id和name的数据信息
select id,name from student;
3、常数的查询
在select中除了书写列名,还可以书写常数。可以用于标记
常数的查询日期标记 MySQL命令:
select id,name,'2022-03-31' from student;
4、算术运算符
在select查询语句中还可以使用加减乘除运算符。
查询学生20年后的年龄MySQL命令:
select name,age+20 from student;
5、过滤常数的查询
在select中除了书写列名,还可以书写常数。可以用于标记
常数的查询日期标记 MySQL命令:
select id,name,'2022-03-31' from student;
二、聚合函数
在开发中,我们常常有类似的需求:统计某个字段的最大值、最小值、 平均值等等。为
此,MySQL中提供了聚合函数来实现这些功能。所谓聚合,就是将多行汇总成一行。聚合函数具
有自动滤空的功能,若某一个值为NULL,那么会自动将其过滤使其不参与运算。
聚合函数使用规则:
只有select子句和having子句、order by子句中能够使用聚合函数。
1、常用的函数
字段 | 含义 |
---|---|
count() | 统计表中数据的行数或者统计指定列其值不为NULL的数据个数 |
sum() | 计算指定列的数值和 |
max() | 计算指定列的最大值 |
min() | 计算指定列的最小值 |
avg() | 计算指定列的平均值 |
1.1、count()
统计数据表中的学生数量
select count(*) from student;
1.2、max()
查询该学生表中学生年龄最大的学生
select max(age) from student;
1.3、min()
查询该学生表中学生年龄最大的学生
select min(age) from student;
1.3、avg()
计算该学生表中学生的平均年龄
select avg(age) from students;
1.3、sum()
计算该学生表中学生年龄之和
select sum(age) from students;
三、条件查询
数据库中存有大量数据,我们可根据需求获取指定的数据。此时,我们可在查询语句中通过
where子句指定查询条件对查询结果进行过滤。
1、查询条件的写法
条件 | 含义 |
---|---|
> | 大于 |
< | 小于 |
= | 等于 |
<= | 小于等于 |
>= | 大于等于 |
!= | 不等于 |
is not null | 不是空 |
like | 模糊查询 |
in | 判断某个字段是否在给定的集合中 |
between...and... | 判断范围 |
and | 多个条件同时满足 |
or | 多个条件满足任意一个即可 |
order by | 根据指定的字段进行排序 asc 升序(默认情况下) desc 降序 |
limit | 指定输出几条记录 |
group by | 分组查询 |
distinct | 去除重复的数据 |
1.1、查询年龄等于或大于17的学生的信息:
select * from student where age>=17;
1.2、使用in关键字查询
select * from student where id in ('1002','1003');
1.3、使用between and关键字查询
select * from student where age between 15 and 18;
1.4、使用空值查询
select * from student where name is not null;
1.5、使用like关键字查询
select * from student where sname like 'w%';
1.6、使用and关键字查询
select * from student where age>15 and gender='m';
1.7、使用or关键字查询
select * from student where age>15 or gender='m';
1.8、使用order by排序查询
select * from student where age>15 order by desc;
1.9、使用limit限制查询
select * from student where age>15 order by desc limit 1;
1.10、使用group by关键字查询
#1 按照性别进行分组,分别统计m 和 f有多少个学员
select count(gender),gender from student group by gender;
#5 统计各个班级中,分别有多少个学员,要求只显示班级人数大于3的班级
select classid,count(classid) from student group by classid having count(classid)>3;
1.11、使用distinct关键字查询
# 将年龄小于50的用户,按照年龄排序,并且去除重复的年龄
select distinct age from student where age<50 order by age;