mysql基础小测试三,Mysql基础操作(三)

文章总览图

b1516898dbee295792ae4934ffdd7454.png

排序

-- 升序

-- select * from students order by age asc

-- asc可省略

-- select * from students order by age

-- 如果不用排序就按添加的顺序排序

-- select * from students

-- 降序

-- select * from students order by age desc

-- 查询所有学生信息,按年龄从大到小排序,如果年龄相同,就按照学号降序排列

-- 优先按第一个字段进行排序,如果第一个字段的值相同了,才按照第二个字段进行排序

select * from students order by age,studentno desc

-- 查询所有学生信息,按班级从小到大排序,班级相同时,再按学号从小到大

-- select * from students order by class desc,studentno desc

-- gbk是中国的编码  对中文数据进行排序

-- select * from students order by convert(name using gbk)

聚合函数

01c58b5683017fdcc10bdef2834354eb.png

count(*)代表一行记录任意字段有值,就会统计在内。

count(card) 代表只统计card字段的个数,如果有null值不会被统计。

-- 统计所有记录 查询学生总数

-- select count(*) from students

-- 统计某个字段

-- select count(card) from students

-- 查询女生的最大年龄

-- select max(age) from students where sex='女'

-- 查询1班的最小年龄

-- select min(age) from students where class='1班'

-- 查询北京学生的年龄总和

-- select sum(age) from students where hometown='北京'

-- 查询女生的平均年龄

select avg(age) from students where sex='女'

分组

按照字段分组,表示此字段相同的数据会被放到一个组中。

分组后,分组的依据列会显示在结果集中,其它列不会显示在结果集中。

可以对分组后的数据进行统计,做聚合运算。

select 列1,列2,聚合...from 表名 group by 列1,列2....

-- 查询各种性别的人数

-- select sex,count(*) from students group by sex

-- 查询各种年龄的人数

select age,count(*) from students group by age

分组后过滤

-- 查询男生总人数

-- select count(*) from students where sex='男'

select sex,count(*) from students group by sex having sex='男'

where是对from后面指定的表进行数据筛选,属于对原始数据的筛选 having 是对group by的结果进行筛选

-- 查询1班除外其它班级学生的平均年龄、最大年龄、最小年龄

-- select class,avg(age),max(age),min(age) from students where class !='1班' group by class

select class,avg(age),max(age),min(age) from students group by class having class !='1班'

分页

获取部分行

当数据量过大时,在一页中查看数据是一件非常麻烦的事情。

select * from 表名 limit start,count

从start开始,获取count条数据。

start索引从0开始。

-- 查询前3行学生信息

-- select * from students limit 0,3

-- select * from students limit 4,4

-- select * from students order by age limit 0,3

-- 要求每页显示3条

-- select count(*) from students

-- 12/3 获取总页数

-- 第一页

-- select * from students limit 0,3

-- 第二页

-- select * from students limit 3,3

-- 第三页

-- select * from students limit 6,3

-- 第四页

select * from students limit 9,3

-- 每页显示5条数据,显示每一页的数据

-- 12/5 2+1

-- 第一页

-- select * from students limit 0,5

-- 第二页

-- select * from students limit 5,5

-- 第三页

select * from students limit 10,5

分页练习

-- select * from students limit 7

-- 相当于

select * from students limit 0,7

连接查询-等值连接

3aa6ec7309d40caad5034a79e2b6a2e3.png

eb5a90c197782c73f53a9e11b967e3bc.png

使用方式一会产生笛卡尔积,产生虚拟的临时表,会放进计算机的内存中,再过滤出需要的数据。

方式二不会产生临时表,每次连接的时候先判断条件,再出来结果。

准备数据

-- drop table if exists courses;

--

-- create table courses(

--   courses int(10) unsigned primary key auto_increment,

--  name varchar(10)

-- );

--

-- insert into courses values

-- ("1","数据库"),

-- ("2","qtp"),

-- ("3","linux"),

-- ("4","系统测试"),

-- ("5","单元测试"),

-- ("6","测试过程");

-- drop table if exists scores;

-- create table scores(

-- id int(10) unsigned primary key auto_increment,

-- courseNo int(10),

-- studentno varchar(10),

-- score tinyint(4)

-- );

insert into scores values

("1","1","001","90"),

("2","1","002","75"),

("3","2","002","98"),

("4","1","001","86"),

("5","3","003","80"),

("6","4","004","79"),

("7","5","005","96"),

("8","6","006","80");

89467278c79b8af8a6b3d5bc4e69fd81.png

-- 查询学生信息以及学生的成绩

select * from students,scores where students.studentno=scores.studentno

9523342664a9a331d99a9b2ed9ffee6a.png

连接查询-内连接

-- 方式一

-- select * from students,scores where students.studentno=scores.studentno

-- 方式二 不会产生笛卡尔积,不会产生临时表,性能高

select * from students inner join scores on students.studentno=scores.studentno

欢迎扫码关注!

d23eb1761dd5719465cc8dac760af390.gif

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值