students表

id class_id name gender score
1 1 小明 M 90
2 1 小红 F 95
3 1 小军 M 88
4 1 小米 F 73
5 2 小白 F 81
6 2 小兵 M 55
7 2 小林 M 85
8 3 小新 F 91
9 3 小王 M 89
10 3 小丽 F 88

classes表

id name
1 一班
2 二班
3 三班
4 四班

①基本查询

SELECT * FROM students;

SELECT * FROM classes;

查询出students表,classes表的所有数据。注意:查询结果也是一个二维表,它包含列名和每一行的数据。

②条件查询

常用的条件表达式

条件 表达式举例1 表达式举例2 说明
使用=判断相等 score = 80 name = 'abc' 字符串需要用单引号括起来
使用>判断大于 score > 80 name > 'abc' 字符串比较根据ASCII码,中文字符比较根据数据库设置
使用>=判断大于或相等 score >= 80 name >= 'abc'  
使用<判断小于 score < 80 name <= 'abc'  
使用<=判断小于或相等 score <= 80 name <= 'abc'  
使用<>判断不相等 score <> 80 name <> 'abc'  
使用LIKE判断相似 name LIKE 'ab%' name LIKE '%bc%' %表示任意字符,例如'ab%'将匹配'ab','abc','abcd'

SELECT * FROM students WHERE score >= 80 AND gender = 'M';

查询出students表符合条件“分数在80分或以上”,并且还符合条件“男生”

SELECT * FROM students WHERE NOT class_id = 2;

查询出students表“不是2班的学生”

SELECT * FROM students WHERE (score < 80 OR score > 90) AND gender = 'M';

查询出students表分数在80以下或者90以上,并且是男生

③投影查询

SELECT id, score points, name FROM students;

students表中返回idscorename这三列,列名score重命名为points,而idname列名保持不变

④排序

SELECT id, name, gender, score FROM students ORDER BY score;

查询出students表按照成绩从低到高进行排序,加上DESC表示“倒序”

SELECT id, name, gender, score FROM students ORDER BY score DESC, gender;

查询出students表使用ORDER BY score DESC, gender表示先按score列倒序,如果有相同分数的,再按gender列排序

SELECT id, name, gender, score FROM students WHERE class_id = 1 ORDER BY score DESC;

查询出students表有WHERE子句,那么ORDER BY子句要放到WHERE子句后面。例如,查询一班的学生成绩,并按照倒序排序

⑤分页查询

SELECT id, name, gender, score FROM students ORDER BY score DESC LIMIT 3 OFFSET 0;

查询出students表把结果集分页,每页3条记录。要获取第1页的记录,可以使用LIMIT 3 OFFSET 0

可见,分页查询的关键在于,首先要确定每页需要显示的结果数量pageSize(这里是3),然后根据当前页的索引pageIndex(从1开始),确定LIMITOFFSET应该设定的值:

  • LIMIT总是设定为pageSize
  • OFFSET计算公式为pageSize * (pageIndex - 1)

这样就能正确查询出第N页的记录集。

⑥聚合查询

SELECT COUNT(*) num FROM students;

查询students表一共有多少条记录

SELECT AVG(score) average FROM students WHERE gender = 'M';

查询students表统计男生的平均成绩

SELECT class_id, gender, COUNT(*) num FROM students GROUP BY class_id, gender;

查询students表各班的男生和女生人数

SELECT class_id,AVG(score) point FROM students GROUP BY class_id;

查询查出每个班级的平均分

SELECT class_id,gender,AVG(score) FROM students GROUP BY class_id,gender;

查询查出每个班级男生和女生的平均分

聚合查询的WHERE条件没有匹配到任何行,COUNT()会返回0,而SUM()AVG()MAX()MIN()会返回NULL

 ⑦连接查询

假设我们希望结果集同时包含所在班级的名称,上面的结果集只有class_id列,缺少对应班级的name列。

现在问题来了,存放班级名称的name列存储在classes表中,只有根据students表的class_id,找到classes表对应的行,再取出name列,就可以获得班级名称。

这时,连接查询就派上了用场。我们先使用最常用的一种内连接——INNER JOIN来实现

SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
FROM students s
INNER JOIN classes c
ON s.class_id = c.id;

查询查出students表的所有学生信息包含所在班级的名称

INNER JOIN查询的写法是:

  1. 先确定主表,仍然使用FROM <表1>的语法;
  2. 再确定需要连接的表,使用INNER JOIN <表2>的语法;
  3. 然后确定连接条件,使用ON <条件...>,这里的条件是s.class_id = c.id,表示students表的class_id列与classes表的id列相同的行需要连接;
  4. 可选:加上WHERE子句、ORDER BY等子句。

多数内容转载自廖雪峰老师文章,仅供学习参考使用

MySQL基础语句(查询)的更多相关文章

  1. 2-14-1 MySQL基础语句,查询语句

    一. SQL概述 结构化查询语言(Structured Query Language)简称SQL 1. 它是一种特殊目的的编程语言 2. 它还是一种数据库查询和程序设计语言 (用于存取数据以及查询.更 ...

  2. MySQL基础语句与其在Python中的使用

    一.MySQL基础语句 $ mysql -u root -p (有密码时) $ mysql -u root     (无密码时) QUIT (or \q)  退出 查看当前所有数据库 show dat ...

  3. MySQL 基础语句

    MySQL 基础语句 多个知识点 ----------------------------------------------------------------------------------- ...

  4. MySQL基础语句【学习笔记】

    放在这里,以备后查. 1. 数据库, 数据库服务器, 数据库语言 数据库,是持久性数据的集合,供给定企业的应用程序系统使用,并且由一个数据库管理系统来管理: 数据库服务器,又称数据库管理系统,用来管理 ...

  5. 入门MySQL——基础语句篇

    前言:  前面几篇文章,我们介绍了MySQL的基础概念及逻辑架构.相信你现在应该有了自己的一套MySQL环境,接下来我们就可以开始练习MySQL了.本文将从MySQL最基础的语句出发,为你展示出创建及 ...

  6. MYSQL基础语句

    参考书籍< MySQL数据库基础与实例教程> --孔祥盛 SQL(structured query language)结构化查询语言,应用最为广泛的关系型数据库语言. MYSQL属于关系型 ...

  7. MYSQL基础02(查询)

    查询是很大的一块,所以这里我只会写mysql的特点,就我目前使用的情况,MYSQL对标准SQL是比较支持,如果是新手的话,建议去w3school 学习标准SQL. 1.DUAL DUAL是一个虚拟表, ...

  8. mysql基础之查询缓存、存储引擎

    一.查询缓存 "查询缓存",就是将查询的结果缓存下载,如果查询语句完全相同,则直接返回缓存中的结果. 如果应用程序在某个场景中,需要经常执行大量的相同的查询,而且查询出的数据不会经 ...

  9. MySQL基础语句(MySQL内置函数 )

    MySQL 字符串函数 函数 描述 实例 ASCII(s) 返回字符串 s 的第一个字符的 ASCII 码. 返回 CustomerName 字段第一个字母的 ASCII 码: SELECT ASCI ...

随机推荐

  1. 从Gartner与IDC三大行业报告,看国产RPA的市场规模与未来发展

    从Gartner与IDC三大行业报告,看国产RPA的市场规模与未来发展 Gartner与IDC的三份报告,描绘出中国RPA的市场规模与未来宏图 文/王吉伟 近期的国产RPA,可谓捷报频频.三个重量级行 ...

  2. SpringBoot碰到的疑问或问题

    1.@ResponseBody 和 @RequestBody 的区别 @ResponseBody是作用在方法上的,@ResponseBody 表示该方法的返回结果直接写入 HTTP response ...

  3. NOIP 模拟一 考试总结

    序列 考场上信心满满的打了nlogn的做法,我以为我稳了.据考试结束1h时发现看错题目了,打成了不连续的子序列.匆匆改了n2logn的做法.考试结束后,我发现我跪了.原来到终点才会发现我做的和人家不是 ...

  4. Unity——观察者模式

    观察者模式 一.Demo展示 二.设计思路 我们假设一种情况,在app中修改了头像,在所有显示头像的UI中都需要更改相应的图片,一个个去获取然后调用刷新会非常麻烦: 因此我们需要一个自动响应机制--观 ...

  5. Dart 中的final 和 const

    Dart 常量和常量值 final 和 const 两个关键字用来定义常量,有什么区别呢? final 声明的是运行时常量,const声明的是编译时常量 const 可以声明常量值 举个例子: imp ...

  6. iptables配置操作

    1.防火墙添加配置规则(正向) vim /etc/sysconfig/iptables 指定服务器的ip访问内访问某个端口 -A INPUT -p tcp -m iprange --src-range ...

  7. Apache Dubbo理解和应用

    官网:https://dubbo.apache.org/ slogan:高性能.轻量级的开源Java RPC框架 提供了六大核心能力:面向接口代理的高性能RPC调用,智能容错和负载均衡,服务自动注册和 ...

  8. 纯前端H5小应用_localStorage存储

    开发缘由[需求发现和分析] 想要送朋友一个礼物,但是想了想,街上买的东西,em~,我们这样的猿确实不会选礼物啊,由此就想利用自己手中的工具和知识做点有用的东西吧,抱枕是礼物,钢笔是礼物,电子产品也是礼 ...

  9. cvechecker 漏洞扫描工具部署及效果展示

    cvechecker 漏洞扫描工具部署及效果展示 介绍 cvechecker的目标是通过扫描已安装的软件并将结果与CVE数据库进行匹配来报告系统上可能存在的漏洞. 官方提示: 可能会产生许多误报(漏洞 ...

  10. Ajax样例

    $.ajax({ url : "newsservlet",//请求地址 dataType : "json",//数据格式 type : "post&q ...