mysql数据库(三):查询的其他用法
一. 查询—IN的用法
语法:select ... from 表名 where 字段 a in (值b, 值c, 值d...)
等价于 select ... from 表名 where 字段a=值b or 字段a=值c or 字段a=值d;
例如,查询学生表里学生编号为1401001或者1401002或者1401003的学生信息
select * from student where id=1401001 or id=1401002 or id=1401003;
select * from student where id in(1401001, 1401002, 1401003);
二. 查询—模糊查询(LIKE)
语法:select <字段1, 字段2, ...> from <表名> where <字段名> like '%值a%';
示例:
查询学生表中姓名中有"小"的学生信息
分析问题:
涉及表:学生表
要显示的字段:学生表中所有字段
条件:学生姓名中有"小"字
编写如下sql:
select * from student where name like '%小%';
注意:
%在不同位置所代表的意义 %值 值% %值%
%A:以任意字符开头,以A结尾的字符串
A%:以A开头,以任意字符结尾的字符串
%A%:包含了A的任意字符串
练习:
1. 查询科目表中,科目名称有"语"的科目信息
三. 查询—统计(COUNT(*))
关键词:count(*)
语法:select count(*) from <表名> where 条件表达式;
1. 统计一个表里总共有多少条记录
举例:查询学生表总共有多少学生
select count(*) from student;
2. 统计满足某一条件的记录数
举例:查询学生表的女生数量
select count(*) from student where sex='女';
3. 统计高一年级下共有多少学生
select count(*) from grade t1, class t2, student t3 where t3.class_id = t2.id and t2.grade_id=t1.id and t1.id=(select id from grade where name='高一年级');
select count(*) from student where class_id in (select t1.id from class t1, grade t2 where t1.grade_id=t2.id and t2.name='高一年级');
select count(*) from grade t1, class t2, student t3 where t3.class.class_id=t2.id and t2.grade_id=t1.id and t1.name='高一年级';
四. 查询—分组(GROUP BY)
根据一个或多个列对结果集进行分组
语法:select 字段1, 字段2, 统计函数xx() from <表名> group by 字段1, 字段2
select
示例:请按性别分组,统计学生表里男生和女生各有多少人
分析:
涉及表:student
查询字段:sex, count(*)
selct sex, count(*) from student group by sex;
五. MySQL—BETWEEN的用法
找出score表成绩在80和90之间的学生(包含边界值80和90)
select * from score where score between 80 and 90;
六. MySQL分页
语法:limit m,n;
m指的索引值是从m开始,n表示每页要取多少条
假如每页取十条展示,则第一页为:limit 0,10表示取索引从0开始取10条记录,第二页为:limit 10,10 表示取索引从10开始取10条记录,第三页为:limit 20,10 表示索引从20开始取10条记录
1) 请用sql查询出student表的前10条记录
2) 请用sql查出student表的第10到15条记录
七. 常见MySQL函数
举例mysql中常用的sql函数:
数值相关函数:
求字段A的最小值:min(字段A)
求字段A的最大值:max(字段A)
求字段A的平均值:avg(字段A)
求字段A的和:sum(字段A)
日期函数:
获取系统当前日期时间:sysdate()
获取系统当前日期:curdate()
获取系统当前时间:curtime()
获取date是一个月的第几天:dayofmonth(date)
获取当前月的最后一天:last_day(date)
为日期增加一个时间间隔:DATE_ADD(date, INTERVAL expr unit),例如在当前日期上加一天:select DATE_ADD(CURDATE(), INTERVAL 1 day);
获取当前月第一天:select date_add(curdate(), interval -day(curdate())+1 day);
字符串函数:
字符串拼接函数:concat(字段A, 字段B), SUBSTR(字段A, 截取开始的位置,截取字符个数), length(字段A)
八. 课后作业
1. 查询出"高一年级"下面的所有班级里面的男学生信息;
select t3.* from grade t1,class t2,student t3 where t1.id=t2.grade_id and t2.id=t3.class_id and t1.name='高一年级' and t3.sex='男';
2. 查询成绩小于等于90分的学生姓名、性别、科目名称、分数(涉及表student、course、score)
;
3. 查询高二年级下所有数学成绩小于90分的同学的学号和姓名以及分数(涉及到五个表:grade,class,student,course,score)
;
九. 常见面试题
1. 图书(图书号,图书名,作者编号,出版社,出版日期) 作者(作者姓名,作者编号,年龄,性别) 用SQL语句查询年龄小于平均年龄的作者姓名、图书名、出版社
select 作者.作者姓名,图书.图书名,图书.出版社 from 图书,作者 where 图书.作者编号=作者.作者编号 and 作者.年龄<(select avg(年龄) from 作者);
2. 作者表:authors
作者编号:authorId int(11)
作者姓名:authorName varchar(50)
性别:sex varchar(2)
年龄:age int
居住城市:city varchar(50)
联系电话:telephone varchar(11)
销量:sales int(11)
最新出版日期:jsbn datetime
1) 查询姓张的作者信息
select * from authors where authorName like '张%';
2) 查询联系电话第三位为8,9并以888结尾的作者信息
,) in ('8','9') and telephone like '%888';
3) 查询年龄在20-50之间的男性作者信息
and sex='男性';
4) 查询显示作者姓名的第二个字符
,) from authors;
5) 查询显示作者姓名的长度
select len(authorName) from authors;
6) 查询显示最年轻的5位作者的平均销量
select avg(t.sales) from (select * from authors order by age asc limit 0,5)) t;
7) 查询显示作者的姓名,出生年份,销量,并按销量降序排列
select authorName, year(curdate())-age, sales from authors order by sales desc;
8) 查询显示最新出版日期在今年前半年的作者信息
;
mysql数据库(三):查询的其他用法的更多相关文章
- mysql 中合并查询结果union用法 or、in与union all 的查询效率
mysql 中合并查询结果union用法 or.in与union all 的查询效率 (2016-05-09 11:18:23) 转载▼ 标签: mysql union or in 分类: mysql ...
- MySql数据库慢查询
一.什么是数据库慢查询? 数据库慢查询,就是查询时间超过了我们设定的时间的语句. 可以查看设定的时间: 默认的设定时间是10秒.也可以自己根据实际项目设定. set long_query_time=0 ...
- MySQL数据库三
MySQL数据库三 多表查询: 有条件的内连接 将两张表根据相同的id连接起来 select * from info join details on info.id = details.id sele ...
- Mysql数据库使用量查询及授权
Mysql数据库使用量查询及授权 使用量查询 查看实例下每个库的大小 select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2 ...
- MySQL数据库的查询缓冲机制
MySQL数据库的查询缓冲机制 2011-08-10 11:07 佚名 火魔网 字号:T | T 使用查询缓冲机制,可以极大地提高MySQL数据库查询的效率,节省查询所用的时间.那么查询缓冲机制是怎样 ...
- MYSQL 数据库高频查询语句整理
一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!>,!<,=>,= ...
- MySQL 数据库 分页查询
在使用MySQL 进行数据库分页查询的时候最主要是使用LIMIT子句进行查询: 首先来看一下LIMIT: LIMIT子句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如果给出两 ...
- MYSQL数据库学习----查询
查询语句是MYSQL数据库中用到的最多的语句. 查询语句分为几种 单表查询 集合函数查询 连接查询 子查询 合并查询 正则表达式查询 一:单表查询 SELECT 属性 FROM 表名 [WHERE 查 ...
- mysql 数据库 添加查询 修改 删除
cmd 命令行模式操作数据库 添加查询 修改 删除 ( 表 字段 数据) 一 查看数据库.表.数据字段.数据 1 首先配置环境变量 进入mysql 或者通过一键集成工具 打开mysql命令行 ...
随机推荐
- Struts 上传文件
1. 客户端注意事项 method="post" enctype="multipart/form-data" <input type="file ...
- 剑指Offer——从尾到头打印链表
题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 分析: 方法1:利用栈的性质,先从头到尾遍历链表每个节点的值存入栈中,最后一个一个出栈顺序便是从尾到头的. 方法2:直接从头到尾遍历链表存储节 ...
- javascript把RGB指定颜色转换成十六进制颜色(Converting R,G,B values to HTML hex notation)
Prologue 看见一篇非常好的外国文章,Making annoying rainbows in javascript,事实上我当时非常想把它翻译下来的,可是对于一个连六级都没过的人确实有点难度,一 ...
- python s12
logging模块 很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式 ...
- python中json怎么转换成字典
json的标准格式:要求必须 只能使用双引号作为键 或者 值的边界符号,不能使用单引号,而且“键”必须使用边界符(双引号)
- oracle中记录被另一个用户锁住的原因与解决办法
oracle数据中删除数据时提示“记录被另一个用户锁住” 解决方法: 1.查看数据库锁,诊断锁的来源及类型: select object_id,session_id,locked_mode from ...
- centos7 上搭建私有云
OwnCloud环境搭建 一. 环境搭建 1. 环境需求 服务器操作系统:Centos7.0 外网服务器操作系统:Centos7.0 Php版本号:5.4.16 Mysql版本号:5.5.52 Apa ...
- $python虚拟化运行环境——virtualenv
介绍 virtualenv是一种虚拟化环境,可以理解为创建了一个虚拟化的pyhon运行空间,可以从新安装各种库,而与本机环境互不影响,互相隔离. 安装及使用 首先要安装包管理工具pip(pip的使用详 ...
- canvas笔记1
w3c定义: <canvas> 标签定义图形,比如图表和其他图像. <canvas> 标签只是图形容器,您必须使用脚本来绘制图形. canvas 对象 属性: width he ...
- SVN使用—概念及生命周期
一.SVN简介 Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统,Subversion 在 2000 年由 CollabNet Inc 开发,现在发展成为 Ap ...