使用DQL命令查询数据(二)

SELECT语法

ORDER BY排序

对SELECT语句查询得到的结果,按某些字段进行排序
与DESC或ASC搭配使用,默认为ASC升序

LIMIT

写法一、LIMIT [m,]n
写法二、LIMIT n OFFSET m

限制SELECT返回结果的行数
m 制定第一个返回记录行的偏移量
n 制定返回记录行的最大数目

注:m不指定则偏移量为0,从第一条开始返回前n条记录
LIMIT 常用于分页显示

示例:
SELECT * FROM result LIMIT 5 #返回前5条记录
SELECT * FROM result LIMIT 5,10 #返回6-15条记录

练习:查询《JAVA第一学年》课程成绩前10名且分数大于80的学生信息(学号,姓名,课程名,分数)
在这里插入图片描述

select StudentNo as '学号',StudentName as '姓名',SubjectName as 'JAVA第一学年',StudentResult from result as r 
inner join subject as s on r.SubjectNo=s.SubjectNo 
where SubjectName='JAVA第一学年' and StudentResult>80 
order by StudentResult desc
limit 10;

GROUP BY分组

使用GROUP BY关键字对查询结果分组

对所有的数据进行分组统计
分组的依据字段可以有多个,并依次分组
与HAVING结合使用,进行分组后的数据筛选
练习:按照不同的课程分组,分别算出其平均分、最高分和最低分,对于低于60分平均分的不予显示,结果如下:
在这里插入图片描述

SELECT SubjectName AS '课程名',MAX(StudentResult) AS '最高分',MIN(StudentResult) AS '最低分',AVG(StudentResult) AS '平均分'FROM result
JOIN `subject` ON result.`SubjectNo`=`subject`.`SubjectNo`
GROUP BY SubjectName

子查询

在查询语句中的WHERE条件子句中,又嵌套了另外一个查询语句

注:嵌套查询可由多个子查询组成,求解的方式是由里及外
子查询返回的结果一般都是集合,故而建议使用 IN 关键字

练习:查询课程为《高等数学-2》且分数不小于80分的学生的学号和姓名

SELECT s.StudentNo as '学号',StudentName as '姓名'FROM student as s
inner JOIN result as r ON s.StudentNo=r.StudentNo
WHERE r.subjectNo IN (SELECT SubjectNo FROM `subject` WHERE SubjectName='高等数学-2')
AND StudentResult>=80

MySQL函数

数学函数:
		select abs(-8) #绝对值
		select pi() #圆周率
		select sqrt() #开平方根
		select round() #保留小数
		select ceiling(9.3) #大于等于我的最小整数  值为10
		select floor(9.3) #小于等于我的最大整数 值为9
		select rand()  #返回0~1之间的随机数
		select rand(10)  #以某个数作为种子,返回重复随机数
		select sign()  #符号函数 正数返回1 负数返回-1 0返回0

字符串函数:
		select char_length()  #返回字符串中包含的字符数
		select concat()  #合并字符串
		select insert(字段,替换初始位置,替换的字段长度,替换内容)  
		#替换字符串,从某个位置开始,替换某个长度,如果起始位置超过字段长度,则返回原字符串
		select lower()   #把大写换成小写
		select upper()   #把小写换成大写
		select left(字段,所要截取的字段长度)   #从左边开始截取
		select right(字段,所要截取的字段长度)   #从右边开始截取
		select replace(字段,要替换的内容,被替换的内容)  #替换
		select substr (字段,开始截取的位置,截取长度)   #截取,从哪个位置开始截取,截取多长
		select reverse()   #反转字符串,即将字符串倒序排列

日期、时间函数:
		#获取当前日期:
		select current_date()   
		select curdate()
		#获取当前的日期和时间:
		select now()
		select localtime() 
		select sysdate()
		#分别获取日期中的某个部分
		select year(now())
		select month(now())
		select day(now())
		select hour(now())
		select minute(now())
		select second(now())

系统信息函数:
		select version()  查MySQL版本
		select user()   查用户
聚合函数:
		COUNT( )返回满足SELECT条件的记录总和数,如 SELECT COUNT(*)SUM( )	返回一列的总和
		AVG( )	返回一列的平均值
		MAX( )	返回最大的值
		MIN( )	返回最小的值

今天的分享就到这里,谢谢!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值