一. 查询—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数据库(三):查询的其他用法的更多相关文章

  1. mysql 中合并查询结果union用法 or、in与union all 的查询效率

    mysql 中合并查询结果union用法 or.in与union all 的查询效率 (2016-05-09 11:18:23) 转载▼ 标签: mysql union or in 分类: mysql ...

  2. MySql数据库慢查询

    一.什么是数据库慢查询? 数据库慢查询,就是查询时间超过了我们设定的时间的语句. 可以查看设定的时间: 默认的设定时间是10秒.也可以自己根据实际项目设定. set long_query_time=0 ...

  3. MySQL数据库三

    MySQL数据库三 多表查询: 有条件的内连接 将两张表根据相同的id连接起来 select * from info join details on info.id = details.id sele ...

  4. Mysql数据库使用量查询及授权

    Mysql数据库使用量查询及授权 使用量查询 查看实例下每个库的大小 select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2 ...

  5. MySQL数据库的查询缓冲机制

    MySQL数据库的查询缓冲机制 2011-08-10 11:07 佚名 火魔网 字号:T | T 使用查询缓冲机制,可以极大地提高MySQL数据库查询的效率,节省查询所用的时间.那么查询缓冲机制是怎样 ...

  6. MYSQL 数据库高频查询语句整理

    一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!>,!<,=>,= ...

  7. MySQL 数据库 分页查询

    在使用MySQL 进行数据库分页查询的时候最主要是使用LIMIT子句进行查询: 首先来看一下LIMIT: LIMIT子句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如果给出两 ...

  8. MYSQL数据库学习----查询

    查询语句是MYSQL数据库中用到的最多的语句. 查询语句分为几种 单表查询 集合函数查询 连接查询 子查询 合并查询 正则表达式查询 一:单表查询 SELECT 属性 FROM 表名 [WHERE 查 ...

  9. mysql 数据库 添加查询 修改 删除

    cmd 命令行模式操作数据库 添加查询 修改 删除 ( 表 字段 数据)   一 查看数据库.表.数据字段.数据 1 首先配置环境变量 进入mysql  或者通过一键集成工具 打开mysql命令行   ...

随机推荐

  1. Babel编译

    Babel的目的就是让你可以使用最新的标准来开发,然后把兼容的问题交给它来完成.比如我如何在使用ES6的语法写完之后将其转换为ES5满足通用性呢? 先用这个最常用的Babel的用法来引入吧. 一  首 ...

  2. JavaScript 入门之常见对象

    常见对象 1. Object 对象 2. String 对象 3. Array 对象 4. Date 对象 5. Number 对象 6. 自定义对象 with 语句 为了简化对象调用内容的书写 格式 ...

  3. Java方法区和永久代

    Java方法区和永久代 目前有三大Java虚拟机:HotSpot,oracle JRockit,IBM J9. JRockit是oracle发明的,用于其WebLogic服务器,IBM JVM是IBM ...

  4. 4.Data Types in the mongo Shell-官方文档摘录

    总结: 1.MongoDB 的BSON格式支持额外的数据类型 2 Date 对象内部存储64位字节存整数,存储使用NumberLong()这个类来存,使用NumberInt()存32位整数,128位十 ...

  5. Linux环境安装配置maven

     按照下面命令执行即可 1.下载apache-maven-3.5.3-bin.tar.gz 并上传到服务器上 提取地址:https://pan.baidu.com/s/11nxZp84lmonRBCR ...

  6. 前端 and css小技巧

    随意更改网页 重新格式化代码,解决缩进问题 https://q1mi.github.io/PythonBlog/post/about_frontend/ css margin: 0 auto 居中 文 ...

  7. 关于线程安全Dictionary

      使用Dictionary时, 是线程不安全的(). 会出现以下的问题, 导致IIS挂掉: 其实DicMapper是不为NUL的, DicMapper["aaasdfasdfasdfzxc ...

  8. [CTSC2008]祭祀

    题目描述 在遥远的东方,有一个神秘的民族,自称Y族.他们世代居住在水面上,奉龙王为神.每逢重大庆典, Y族都会在水面上举办盛大的祭祀活动.我们可以把Y族居住地水系看成一个由岔口和河道组成的网络.每条河 ...

  9. Mysql:实现分组查询拼接未分组同一字段字符group_concat()

    Mysql:实现分组查询拼接未分组同一字段字符group_concat() MySQL中,如果想实现将分组之后的多个数据合并到一列,可以使用group_concat函数,如下图所示: 在oralce中 ...

  10. 记一次网卡报错ERROR,some other host already uses address

    提示IP地址冲突,但是此IP确实没有被其他Server占用 解决如下: 编辑此文件 搜索arping 将下面几行注释掉 保存退出 激活网卡 此时IP地址已生效 下面是我的系统版本 (一般应该不会出现这 ...