欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mysql中对表进行简单查询的操作

程序员文章站 2024-01-18 08:43:28
...

首先,创建一个表格,命名为student。
Mysql中对表进行简单查询的操作
插入数据:
Mysql中对表进行简单查询的操作
前边查询时,我们经常会用到查询所有的,一旦有大量数据时,这样查询的效率就会很低。
Mysql中对表进行简单查询的操作

1.指定查询内容

select id, name, math from student;
Mysql中对表进行简单查询的操作

2.去重查询

select distinct math from student;
distinct如果结果中有相同的,去除重复的。
Mysql中对表进行简单查询的操作

3.在select语句中进行运算并且起别名

例3.1:查询学生总成绩

select id, name, (chinese+math+english) from student;
Mysql中对表进行简单查询的操作
我们会想到这样的查询方式,但是看起来不是很方便,就有了下边的这种起别名的方式。
select id, name, (chinese+math+english) as ‘总成绩’ from student;
Mysql中对表进行简单查询的操作
将所有姓唐的同学总成绩增加60%
select id, name, (chinese+math+english)*1.6 as ‘总成绩’ from student
where name like ‘唐%’;
Mysql中对表进行简单查询的操作

4.select的where语句

使用where语句,进行查询过滤。

例4.1:查询所有姓李的学生信息以及总成绩

select id, name, (chinese+math+english) as ‘总成绩’ from student
where name like ‘李%’;
Mysql中对表进行简单查询的操作

例4.2:查询所有英语成绩大于90的同学信息

select id, name, english from student
where english > 90;
Mysql中对表进行简单查询的操作

例4.3:查询所有总分大于200分的同学

按照我们的正常思路来说应该需要这样得查询语句。
select id, name, (chinese+math+english) as ‘总成绩’
from student
where ‘总成绩’ > 200;
Mysql中对表进行简单查询的操作
发现查询结果为空,这是为什么呢?
因为该select语句中先执行where语句,再执行select语句。所以,’总成绩’这个字段不会被查询到。所以,where语句中不能使用别名。
select id, name, (chinese+math+english) as ‘总成绩’
from student
where (chinese+math+english) > 200;
Mysql中对表进行简单查询的操作

例4.4:查询姓李并且id小于10的学生信息(and)

select id, name
from student
where name like ‘李%’ and id < 10;
Mysql中对表进行简单查询的操作

例4.5:查询英语成绩大于语文成绩的同学

select id, name
from student
where english > chinese;
Mysql中对表进行简单查询的操作

例4.6:查询所有总分大于200并且数学成绩小于语文成绩的姓唐的学生信息

select id, name
from student
where (chinese+math+english) > 200 and math < chinese and name like ‘唐%’;
Mysql中对表进行简单查询的操作

例4.7:查询所有英语成绩在80~90分的同学信息

select id, name
from student
where english>=80 and english<=90;
Mysql中对表进行简单查询的操作
也可以这样写。
select id, name
from student
where english between 80 and 90;
Mysql中对表进行简单查询的操作
注意:between…and只能用于闭区间。

例4.8:查询数学成绩为89,90,91的同学信息

select id, name
from student
where math=89 or math=90 or math=91;
Mysql中对表进行简单查询的操作
也可以这样写。
select id, name
from student
where math in(89,90,91);
Mysql中对表进行简单查询的操作
表示若干个特定值,可以用in。

总结:

like 模糊查询
not like
and
or
between … and

5.select order by(排序)语句

a.默认升序(asc),如果要降序使用关键字desc
b. order by语句一定放在语句结尾

例5.1:对数学成绩排序

select math from student order by math asc;
Mysql中对表进行简单查询的操作

例5.2:总成绩从高到低输出

select (chinese+math+english) as ‘总成绩’
from student
order by ‘总成绩’;
Mysql中对表进行简单查询的操作
order by可以使用别名,是与where语句不同的。
原因是order by进行排序时,会先拿到数据进行,然后进行排序。

例5.3:对所有姓李的学生按照成绩进行倒序排序

select id, name, (chinese+math+english) as ‘总成绩’
from student
where name like ‘李%’
order by 总成绩 desc;
Mysql中对表进行简单查询的操作

6.常用函数

a.count()或count(列名):统计数量

只能用于数值型。

例6.1:统计当前表中一共有多少学生

select count(*) as ‘学生人数’
from student;
Mysql中对表进行简单查询的操作

例6.2:统计一个班中数学成绩大于等于90的学生人数

select count(*) as ‘学生人数’
from student
where math >= 90;
Mysql中对表进行简单查询的操作
说明:count(*)会统计为null的情况,count(列名)不会统计为空的情况

select count(*) from student;
select count(math) from student;
Mysql中对表进行简单查询的操作
通过比较,可以看出count(列名)为空的不会统计。

b.sum()

只能用于数值型。

例6.3:统计一个班的数学总成绩

select sum(math)
from student;
Mysql中对表进行简单查询的操作

例6.4:统计一个班的所有成绩的总成绩

select sum(chinese),sum(math),sum(english)
from student;
Mysql中对表进行简单查询的操作

c.avg()

只能用于数值型。

当我们学过了sum和count函数,将这两个函数结合使用就可以计算平均成绩。
select sum(math)/count(math) as ‘平均成绩’
from student;
Mysql中对表进行简单查询的操作

例6.5:全班数学成绩的平均分

select avg(math)
from student;
Mysql中对表进行简单查询的操作
我们发现avg函数求均分的时候是不包括null的。

d.max(),min()

只能用于数值型。

例6.6:求一个班级的最高分以及最低分

select max(chinese+math+english) as ‘最高成绩’,
min(chinese+math+english) as ‘最低成绩’
from student;
Mysql中对表进行简单查询的操作

e.日期函数

函数 表示含义
current_date() 当前日期
current_time() 当前时间
current_timestamp 当前时间戳
date(datetime) 返回datetime的日期部分
date_add(date,interval d_value_d_type) 在date上加上日期或时间
data_sub(date,interval d_value_d_type) 在date上减去日期或时间
datedeff(date1,date2) 两个日期差
now() 当前时间

Mysql中对表进行简单查询的操作
Mysql中对表进行简单查询的操作

说明:

* date_add()和date_sub()中的interval后面可以是year minute second day
* datediff(data1,date2)得到的是天数,date1-date2.

例6.7:创建一张用于记录生日的表

Mysql中对表进行简单查询的操作
添加当前日期
insert into tmp values(1,current_date());
Mysql中对表进行简单查询的操作
创建一张留言表
Mysql中对表进行简单查询的操作
查询在十分钟内发布的帖子
select * from msg where date_add(sendtime, interval 10 minute) > now();
Mysql中对表进行简单查询的操作

f.字符串函数

函数 表达含义
charset(str) 返回字符串字符集
concat(stri1,str2,…) 连接字符串
instr(str,substr) 返回substr在str中出现的位置,没有则返回0
ucase(str) 将str转换成大写
lcase(str) 将str转换成小写
left(str,length) 从str中的左边开始取length个字符
length(str) str的长度
replace(str,search_str,replace_str) 在str中用replace_str替换search_str
strcmp(str1,str2) 逐字符比较两字符串大小
substring(str,pos[,length]) 从str的pos位开始,取length个字符
ltrim(str)、rtrim(str)、trim(string) 去除前空格或后空格

例6.8:获取msg表列的字符集

Mysql中对表进行简单查询的操作

例6.9:要求将student表中的数据格式化输出。

格式为XXX的语文成绩为XXX,数学成绩为XXX,英语成绩为XXX。
select concat(name,’的语文成绩,’,chinese,’数学成绩,’,math,’英语成绩,’,english) as ‘分数’
from student;
Mysql中对表进行简单查询的操作

例6.10:获取学生表中姓名占用的字节数

select length(name), name from student;
Mysql中对表进行简单查询的操作

例6.11:将student表中所有姓名中带‘红’的替换为’上海’

select replace(name,’红’,’上海’),name from student;
Mysql中对表进行简单查询的操作
Mysql中对表进行简单查询的操作
注意:replace只是在查询的时候替换,不会改变原表。

例6.12:以首字母小写的形式展示所有员工的姓名(组合使用)

select concat(lcase(substring(name,1,1)),substring(name,2)) from student;
Mysql中对表进行简单查询的操作

g.常用的数学函数

函数 含义
abs(number) 绝对值
bin(number) 十进制转二进制
ceiling(number) 向上取整
conv(number,from_base,to_base) 进制转换
floor(number) 向下取整
format(number,decimal_places) 保留小数位数(小数四舍五入)
hex(decimal_num) 转换成16进制
rand() 返回随机浮点值,范围0~1
mod(num,denominator) 余数

h.其他常用函数

user():查询当前用户
mds(str):对一个字符串str进行加密
password():对mysql用户加密
ifnull(val1,val2):如果val1为null,返回val2,否则返回val1.