【MySQL】基础学习——单表查询及常用函数

  在数据库的学习和使用中,表的查询一直是使用非常多的一种操作,也是最为重要的一种操作。

首先,我们先创建一个表,并插入一些数据,以下的查找都是基于这张表的。
这里写图片描述
  

基础查询

  在写查询语句的时候一定要清楚查询的是什么,看清楚主语,接下来跟查询的限制条件或者排序等关键字。
1. select指定查询内容,多个内容之间以逗号分隔;
例如:查找学生的id,姓名和数学成绩
这里写图片描述

2. 去重查询(distinct)
在上面的七个数学成绩中,有两个90,去重查询,就是查到的数据中只有一个90;
这里写图片描述

3. 在select语句中进行运算并起别名(as关键字)
查询学生的总成绩:
这里写图片描述

4. where子句
a. “like,not like”模糊查询;
查询所有姓李的学生信息以及总成绩
这里写图片描述
b. where子句后不能使用别名,因为语句的执行时有先后顺序的;
查询总分大于200的同学信息:
这里写图片描述
c. between…and… and or in
查询所有英语成绩在80-90之间的同学信息(between…and..):
这里写图片描述
查找总分大于200并且数学成绩小于语文成绩的姓唐的同学(and):
这里写图片描述
查询数学成绩在89,90,91的同学信息(or、in):
这里写图片描述

5. select order by子句
a. 默认是升序,如果需要降序排列,使用关键字desc;
对英语成绩进行降序排列:
这里写图片描述
b. order by语句一定要放在查询语句的结尾
这里写图片描述
c. order by是可以使用别名的;
这里写图片描述

6. 常用函数
a. count(*)统计一共有多少条记录,count(列名)统计此列中不为null的记录
统计表中一共有多少名数学成绩大于等于90的学生:
这里写图片描述
b. sum 求和
统计一个班的数学总成绩:
这里写图片描述
c. avg 求平均值,如果记录中有null,则去掉null后在求平均值
这里写图片描述
d. max/min 求最大值/最小值
统计一个班总成绩中的最高分和最低分
这里写图片描述

7. group by子句
a. 对属性进行分组
b. 多次分组,不同分组之间按照”,”分隔,并且有先后顺序
显示每个部门每种岗位的平均工资和最高工资:
这里写图片描述
c. 在group by子句中,要想进行条件过滤,只能使用having语句,having语句也只能作用于group by语句。
显示平均工资低于2000的部门编号和平均工资:
这里写图片描述


常用函数

1. 日期函数

select current_date();  /*返回当前日期*/
select current_time(); /*返回当前时间*/
select current_timestamp(); /*返回年月日 时分秒*/
select datediff(date1,date2); /*两个时间差 以天为单位*/   
select date_add(date,interval d_value_d_type);  /*返回当前日期+相应天数后的日期*/

例如:
这里写图片描述
2. 字符串函数

charset(str);  /*返回字符串字符集*/
concat(string2[,...]);  /*连接字符串*/
ucase(string2)   /*转换为大写*/
lcase(string2)   /*转换为小写*/
length(string)  /*求string的长度*/
instr(string,substring)  /*返回substring在string中出现的位置,没有返回0*/
left(string2,length) /*从string2中的左边起取length个字符*/
replace(str, search_str, replace_str) /*str中用replace_str替换search_str*/
strcmp(string1,string2) /*逐字符比较两个字符串的大小*/
substring(str, position [,length]) /*从str的position开始,取length个字符*/

要求将student表中的数据格式化输出,格式为:xx的语文成绩是xx,数学成绩是xx,英语成绩是xx:(使用字符串连接的函数)
这里写图片描述
要求查看student表中的姓名的字节数:
这里写图片描述
将student表中名字有“李”的替换为“小李”:
这里写图片描述
截取student表中name中的第二个到第三个字符:
这里写图片描述
3. 常用数学函数

函数 作用
abs 求绝对值
bin 十进制转换为二进制
ceiling 向上取整
conv 进制转换
flooer 向下取整
format 保留小数位数
hex 转换为十六进制
rand() 返回随机浮点数值,范围0到1
mod 余数

例如:
这里写图片描述
4. 其他函数

user()查询当前用户
md5(str)可以对一个字符串进行md5加密,得到一个32位的字符
database()正在使用的数据库
password()mysql用户加密
ifnull(val1, val2)如果val1为Null,返回val2,否则返回val1

例如:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/wei_cheng18/article/details/80379067