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( ) 返回最小的值
今天的分享就到这里,谢谢!