首页 > 数据库 >MySQL数据库实用教程(4)

MySQL数据库实用教程(4)

时间:2024-11-19 22:44:06浏览次数:3  
标签:实用教程 -- 数据库 MySQL 查询 grade 子句 WHERE SELECT

数据查询语言

-- 语法格式
SELECT [ALL | DISTINCT | DISTINCTROW ] 列名或表达式 ...                /*SELECT子句*/
[FROM 源表... ]	 			                                          /*FROM子句*/
[WHERE 条件]					                                      /*WHERE子句*/
[GROUP BY {列名| 表达式 | position} [ASC | DESC], ... [WITH ROLLUP]]	  /*GROUP BY子句*/
[HAVING 条件]				                                          /*HAVING 子句*/
[ORDER BY {列名 | 表达式 | position} [ASC | DESC] , ...]               /*ORDER BY子句*/
[LIMIT {[offset,] row_count | row_count OFFSET offset}]               /*LIMIT子句*/

单表查询

1、SELECT子句

SELECT [DISTINCT] 列名或表达式;   -- DISTINCT可去掉重复行
SELECT 列名 [AS 列别名];

-- 例1
SELECT teacherno, tname, school  -- 在teacher表中查询这三列
FROM teacher;

-- 例2
SELECT *   -- 查询teacher表中的所有列
FROM teacher;

--例3
SELECT studentno AS 学号, tc AS 学分, tc+2 AS 增加2分后的学分
FROM student;    -- 在student表中查这俩列,并将学分一栏全部+2

2、WHERE子句

SELECT 列名或表达式
FROM 表明
WHERE 条件;

(1)比较运算(>、<、= 等)

<表达式1> { = | < | <= | > | >= | <> | != } <表达式2>
-- 例1
SELECT *  --在student表中,查询specialityno为080903或ssex为男的学生
FROM student
WHERE specialityno='080903' or ssex='男';

-- 例2
SELECT *   -- 在student表中查询tc>50的学生
FROM student
WHERE tc>50;

(2)指定范围

        BETWEEN、NOT BETWEEN、IN是用于指定范围的三个关键字,用于查找字段值在(或不在)指定范围的行。语法格式如下。

<表达式> [ NOT ] BETWEEN <表达式1> AND <表达式2>
<表达式> [ NOT ] BETWEEN in (区间)
-- 例1
SELECT *   -- 在student表中查询tc在(48,50)区间内的记录
FROM student
WHERE tc in (48,50);

-- 例2
SELECT *   -- 在teacher表中,查询不在20世纪80年代出生的教师。
FROM teacher
WHERE tbirthday NOT BETWEEN '19800101' AND '19891231’;

(3)空值判断

<表达式> IS [ NOT ] NULL
-- 例
SELECT *    -- 查询score表中grade非空的记录
FROM score
WHERE grade IS null;

(4)使用LIKE 关键字的字符串匹配查询

<字符串表达式1> [ NOT ] LIKE <字符串表达式2> [ ESCAPE '<转义字符>' ]

        在使用LIKE关键字时,<字符串表达式2>可以含有通配符,通配符有以下两种:

        %:代表0或多个字符。        例子:%abc% , %abc  ,   abc%

        _:代表一个字符。               例子:_t_   ;    a_b  

        LIKE匹配中使用通配符的查询也称模糊查询。

-- 例
SELECT *   -- 查找teacher表中姓杨的教师
FROM teacher
WHERE tname LIKE '杨%’;

(5)正则表达式

match_表达式 [ NOT ][ REGEXP | RLIKE ] match_表达式
标题正则表达式中常用的字符匹配选项
-- 例
SELECT *  -- 在课程表中,查询含有“系统”或“工程”的所有课程名称。
FROM course
WHERE cname REGEXP '系统|工程’;

3、GROUP BY子句和HAVING子句

(1)聚合函数

聚合函数实现数据的统计计算,用于计算表中的数据,返回单个计算结果。聚合函数包括COUNT、SUM、AVG、MAX、MIN等函数

COUNT函数用于计算组中满足条件的行数或总行数。

COUNT ( { [ ALL | DISTINCT ] <表达式> } | * )    -- DISTINCT去掉重复值 

-- 例
SELECT COUNT(*) AS 总人数   -- 在教师表中,求教师的总人数
FROM teacher;

SUM函数用于求出一组数据的总和,AVG函数用于求出一组数据的平均值。

SUM / AVG ( [ ALL | DISTINCT ] <表达式> )

-- 例
SELECT SUM(grade) AS 课程号8001总分   --统计课程号为8001的总分。
FROM score;

MAX函数用于求出一组数据的最大值,MIN函数用于求出一组数据的最小值,这两个函数都可以适用于任意类型数据。

MAX / MIN ( [ ALL | DISTINCT ] <表达式> )

-- 例
SELECT MAX(grade) AS 课程号4008最高分, MIN(grade) AS 课程号4008最低分
FROM score;

(2)GROUP BY子句

GROUP BY子句用于指定需要分组的列。

GROUP BY [ ALL ] <分组表达式> [,…n]

-- 例
SELECT courseno AS 课程号, MAX(grade) AS 最高分, MIN(grade) AS 最低分
FROM score
GROUP BY courseno;    -- 查询成绩表中各门课程的最高分和最低分。

(3)HAVING子句

HAVING子句用于对分组按指定条件进一步进行筛选,过滤出满足指定条件的分组。

[ HAVING <条件表达式> ]    -- 条件表达式为筛选条件,可以使用聚合函数

-- 例
SELECT studentno AS 学号, AVG(grade) AS 平均分
FROM score
GROUP BY studentno
HAVING AVG(grade)>90;   -- 查询平均分在90分以上的学生的学号和平均分。

4、ORDER BY子句和LIMIT子句

(1)排列查询(对查询结果进行排序)

[ ORDER BY { <排序表达式> [ ASC | DESC ] } [ ,…n ]
-- ASC 升序; DESC 降序

-- 例
 SELECT *      -- 将080703专业的学生按出生时间降序排序
FROM student
WHERE specialityno='080703'
ORDER BY sbirthday DESC;

(2)LIMIIT子句(限制SELECT语句返回的行数)

LIMIT {[第几行开始显示,] 显示几行 | 显示几行 OFFSET 第几行开始显示}

-- 例
SELECT studentno,courseno, grade  -- 查询成绩表中成绩排名前3位的学生的信息
FROM score
ORDER BY grade DESC
LIMIT 0, 3;  -- 或 LIMIT 3 OFFSET 0;

        LIMIT子句有两种语法格式,例如,显示表中第2行到第4行,可写为:”LIMIT 1, 3”,也可写为: ”LIMIT 3 OFFSET 1”。

标签:实用教程,--,数据库,MySQL,查询,grade,子句,WHERE,SELECT
From: https://blog.csdn.net/m0_73930473/article/details/143867642

相关文章

  • 使用MySQL
    1.了解数据库和表1.1showSHOWDATABASES;SHOWDATABASES;返回可用数据库的一个列表。包含在这个列表中的可能是MySQL内部使用的数据库SHOWTABLES;为了获得一个数据库内的表的列表,使用SHOWTABLES;SHOWSTATUS,用于显示广泛的服务器状态信息;SHOWGRANTS,用来显示授予......
  • JavaFX + MySQL:动态显示数据库查询结果的JavaFX应用程序
    文章目录示例概述示例代码导入必要的包定义主类和主方法详细解释导入必要的包定义主类和主方法连接数据库并处理查询结果运行效果示例数据库表结构注意事项示例概述我们将创建一个JavaFX应用程序,该应用程序连接到MySQL数据库,查询某个表中的数据,并将结果显示在一......
  • 一文带你从入门到精通——MySQL(一)
    目录一. MySQL基础知识1.1引言1.2数据库1.2.1数据库简介1.2.2 数据库分类1.3SQL语句1.3.1SQL通用语法1.3.2SQL数据类型1.3.3SQL字段约束1.3.3.1主键约束1.3.3.2 非空约束1.3.3.3 唯一约束1.3.3.4 默认约束1.3.3 SQL分类1.3.3.1常用DDL1.3.3.2 ......
  • 一文带你从入门到精通——MySQL(二)
    建议先阅读我的上一篇博客,掌握一定的MySQL基础知识后再阅读本文,链接如下:一文带你从入门到精通——MySQL(一)-CSDN博客、目录二、MySQL单表查询2.1基础查询2.2条件查询2.3排序查询2.4聚合查询2.5分组查询2.6分页查询2.7MySQL语句的执行顺序二、MySQL单表查询......
  • 基于Java+Springboot+Jpa+Mysql实现的在线网盘文件分享系统功能设计与实现一
    一、前言介绍:免费学习:猿来入此1.1项目摘要在线网盘文件分享系统的课题背景主要源于现代社会对数字化信息存储和共享需求的日益增长。随着互联网的普及和技术的快速发展,人们越来越依赖电子设备来存储和传输各种类型的数据文件。然而,传统的本地存储方式存在诸多不便,如空间有限、......
  • 基于Java+Springboot+Jpa+Mysql实现的在线网盘文件分享系统功能设计与实现二
    一、前言介绍:免费学习:猿来入此1.1项目摘要在线网盘文件分享系统的课题背景主要源于现代社会对数字化信息存储和共享需求的日益增长。随着互联网的普及和技术的快速发展,人们越来越依赖电子设备来存储和传输各种类型的数据文件。然而,传统的本地存储方式存在诸多不便,如空间有限、......
  • 5分钟,轻松搞定MySQL数据库等保测评
    前言作为数据库运维人员,需要理性看待数据库等保测评相关工作,完全按照测评结果对数据库进行整改,或完全忽略测评结果都是不可取的,过犹不及,物极必反。比如MySQL和Oracle为了防止密码被暴力破解的连接错误密码延时功能,随着连续输错密码次数的增加,连接的延时也会逐渐增加,如果设......
  • 用Oracle的经验优化达梦数据库?我被经验误导了!
    说明:本文只是记录近期学习达梦数据库的一些内容,并没有说达梦数据库有什么坑,希望有些所谓的"友商"不要恶意抹黑,实际上在我接触过的几家国产数据库中,个人认为达梦数据库无论是产品成熟度,还是技术社区、兼容性、运维习惯等都是名列前茅的,至少对曾经的OracleDBA来讲,是比较友好......
  • 【MySQL】约束
    【MySQL】约束文章目录【MySQL】约束前言一、概述二、约束演示三、外键约束总结前言本篇文章就MySQL约束,讲到约束的概述,约束演示以及外键约束。一、概述概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。目的:保证数据库中数据的正确、有效性和完整......
  • MySQL常用命令
    MySQL#用户管理及授权CREATEUSERluke@localhostIDENTIFIEDBY'linuxprobe';grantallon*.*toluke@localhost;grantselect,update,delete,insertonmysql.usertoluke@localhost;#查询用户权限showgrantsforluke@localhost;#创建DBcreatedatabaselinu......