可爱的小海豚:MySQL 数据库
一.关系型数据库是什么
1.1 什么是数据库
本质上讲,数据库(Database,DB)是数据的集合,它具有统一的结构形式并存放于
统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。
1.2 什么是数据库管理系统
数据库管理系统(Database Management System,DBMS)是数据库的机构,它是一种系
统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。
1.3 什么是关系型数据库
关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念
和方法来处理数据库中的数据。现实中的各种实体以及实体之间的各种联系均用关系
模型来表示。
关系模型是由埃德加.科德于 1970 年首先提出的。所谓关系模型就是指二维表格模
型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。
关系型数据库使用 SQL(Structured Query Language)结构化查询语言,来存取数据以
及查询、更新和管理关系型数据库系统。当前主流的关系型数据库有 Oracle、DB2、
Microsoft SQL Server 和 MySQL 等。
1.4MySQL 的优点
MySQL 是一个中小型关系数据库管理系统,最初是由瑞典的 MySQL AB 公司开发,
2008 年 MySQL AB 被 Sun 公司收购,2009 年 Sun 公司又被 Oracle 公司收购。MySQL 软
件采用了 GPL 许可(GNU 通用公共许可证),分为免费版和商业版。由于其体积小、速度
快、总体拥有成本低,尤其是开放源码这一特点,所以一般中小型网站的开发都选择
MySQL 作为网站的数据库。
1.5MySql 的安装与配置
MySql 免安装配置方法:
http://jingyan.baidu.com/article/597035521d5de28fc00740e6.html
官网下载地址: http://www.mysql.com/downloads/
1、软件准备

注:在 Win8 中,在安装 msi 安装包的时候常常会出现代码为 2502、2503 的错误。其实这种错误是由于安装权限
不足造成的,可以这种 msi 的安装包不像其他 exe 的安装程序,在安装包上点击“右键”之后没有“以管理员身份运行”
的选项。出现这种情况时,就以管理员身份打开命令提示符 ,然后通过命令(msiexec /package)
执行安装
2、安装过程详解
2.1 MySql 欢迎界面
2.2 同意相关协议界面

2.3 安装前检查是否有版本更新(此处跳过版本更新检查)
2.4 选择安装类型
注:Developer Default:开发者类型,就是默认就给我们进行选择好的;
Server only:仅仅安装服务器版本的类型;
Client only:仅仅安装为客户端的类型;
Full:全部安装;
Custom:用户自定义安装
Installation Path:安装路径
Data Path:数据所存放的位置
2.5 环境检查
2.6 安装进度
2.7 日志记录界面
2.8 配置修改安装保存操作
注:如果此界面长期处于等待状态,很可能是服务启动不起来,或手动启动 MYSQL 服务时报 1067 错误
请进行如下操作:
2.9 设置服务启动权限 并右击 MYSQL56 服务,手动启动,确保安装继续进
2.10 安装完成:打勾:安装完成后启动 MYSQL 工作平台
二.MySQL 的基本操作
对于 MySQL 的操作,虽然现在有 phpMyAdmin、Navicat、MySQL GUI Tools、SQLyog
等许多优秀的可视化操作工具,但基于命令行的操作是我们学习 MSQL 的基础。我们
将在命令提示符(DOS)环境下介绍 MySQL 的基本操作。
2.1 数据库的操作
2.1.1 启动数据库服务
安装完 MySQL 数据库软件后,该数据库服务是默认启动的。那怎么判断 MySQL 服
务已经启动了呢?在 Win8.1 系统中可以通过选择”右键徽标”—>”命令提示符(管理员)”
打开命令行窗口,输出如下命令查看 MySQL 服务是否已经启动。
命令行:net start “mysql”;

如果查询结果中出现类似如图 1.1 所示的结果(注意:不同的安装包对 MySQL 服务
的命名可能有微小差别),即说明 MySQL 服务已经启动,否则代表没有启动!
注意:在 Vista、Windows 7 和 Windows8 系统中,需要利用管理员权限启动“命令
提示符”,然后执行上述命令,否则无法启动服务。
也可通过界面启动 MySQL 的服务,操作步骤如下
2.1.2 停止数据库服务
如上图所示也可以以管理员权限启动命令提示符,然后以 DOS 命令行的方式停
止服务:命令行:net stop “mysql”;
也可通过界面停止 MySQL 的服务,操作步骤如下
2.1.3 环境变量的配置
启动 MySQL 服务后,接下来就可以进入 MySQL 数据库环境了。如果是直接通过
MySQL 安装包安装的 MySQL 软件,那么可以从’开始’->’所有程序’->’MySQL’->’MySQL
Server 5.’->’MySQL Command Line Client’中启动 MySQL 命令行。输入 root 账户的密码,
按回车键后即可进入 MySQL 数据库环境。
否则需要将 MySQL 的 bin 目录添加到环境变量中。如何添加呢,在 Win8.1 下,右
击‘我的电脑’,选择‘属性’命令,弹出如图所示的界面:
选择’高级系统设置’选项卡单击‘环境变量’按纽。如果所示
在‘系统变量’一栏中选择 Path 变量,然后单击’编辑’按纽,如图所示
在‘变量值’文本编辑框的最后添加一分号”;”(注意是英文环境下的分号),然后将 MySQL
的 bin 目录路径添加到该分号之后,单击’确定’按纽,保存设置。
添加好环境变量后,就可以打开‘命令提示符’输入如下格式的命令:
mysql -h 主机名 -u 用户名 -p
其中,主机名为我们正要连接的安装有 MySQL 的主机 IP 地址,本地主机可以
为’127.0.0.1’或’localhost’,用户名为 MySQL 数据库的账户名。根据实际情况输入上述命
令后按回车键,会出现提示要求输入密码,输入账户密码后按回车键,就会出现欢迎
信息。
怎么退出 MySQL 的命令行环境呢?使用 quit 即可!
2.1.4 创建数据库
进入 MySQL 数据库环境后,就可以使用 CREATE DATABASE 语句创建自己的数据库了。
CREATE DATABASE 数据库名;
数据库名可以由任意字母、数字、下画线(
)和美元符号()组成,但不能由单独的数字组成,也不能为MySQL关键字,而且长度还不能超过64个字符。在windows系统下,数据库名不区分大小写,在UNIX、Linux系统下,数据库名是区分大小写的,但MySQL语句不区分大小写。实例1新建数据库注意:完整的MySQL语句必须以‘;’结尾的语句,如果忘记输入分号而按了回车,不必重新输入语句,因为没有分号的语句MySQL是不执行的,此时只要输入分号并按回车键,即可执行语句。创建数据库后,可以使用SHOW语句来查看数据库的信息。SHOWDATABASES数据库名;由于MySQL服务器上可能有多个数据库,我们在使用某个数据库之前就要先选择他。使用如下所示命令:删除数据库。使用如下所示命令:2.2数据表的操作∗∗2.2.1创建数据表∗∗关系型数据库是由一张张数据表组成的,我们创建好数据库后,接下来就是创建自己的数据表了。在创建数据表之前,首先需要用USE语句选择一个数据库,接下来无论是创建、查看还是修改、删除数据表,都在该数据库上进行!创建数据表使用CREATETABLE语句。语法格式如下:CREATE[TEMPORARY]TABLE[IFNOTEXISTS]tblname[(createdefinition....)][tableoptions][selectstatement]方括号([])中的参数均为可选对数。参数参数说明TEMPORARY该参数用于创建临时表。只有在当前连接下,临时表才是可见的;当连接关闭时,临时表被自动取消。IFNOTEXISTS如果要创建已经存在的表,则使用该参数可以防止发生错误。tblname数据表的名称、命名要求与数据库名一样,由任意字母、数字、下画线()和美元符号()组成,但不能由单独的数字 组成,也不能为 MySQL 关键字,而且长度还不能超过 64 个字符。在 windows 系统下, 数据库名不区分大小写,在 UNIX、Linux 系统下,数据库名是区分大小写的,但 MySQL 语句不区分大小写。 实例 1 新建数据库 注意:完整的 MySQL 语句必须以‘;’结尾的语句,如果忘记输入分号而按了回车,不 必重新输入语句,因为没有分号的语句 MySQL 是不执行的,此时只要输入分号并按回 车键,即可执行语句。 创建数据库后,可以使用 SHOW 语句来查看数据库的信息。 SHOW DATABASES 数据库名; 由于 MySQL 服务器上可能有多个数据库,我们在使用某个数据库之前就要先选择他。 使用如下所示命令: 删除数据库。使用如下所示命令: 2.2 数据表的操作 **2.2.1 创建数据表** 关系型数据库是由一张张数据表组成的,我们创建好数据库后,接下来就是创建 自己的数据表了。在创建数据表之前,首先需要用 USE 语句选择一个数据库,接下来 无论是创建、查看还是修改、删除数据表,都在该数据库上进行! 创建数据表使用 CREATE TABLE 语句。语法格式如下: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition....)][table_options] [select_statement] 方括号([])中的参数均为可选对数。 参数 参数说明 TEMPORARY 该参数用于创建临时表。只有在当前连接下,临时表才是可见的;当连接关闭时,临时 表被自动取消。 IF NOT EXISTS 如果要创建已经存在的表,则使用该参数可以防止发生错误。 tbl_name 数据表的名称、命名要求与数据库名一样,由任意字母、数字、下画线(_)和美元符号()组成,但不能由单独的数字组成,也不能为MySQL关键字,而且长度还不能超过64个字符。在windows系统下,数据库名不区分大小写,在UNIX、Linux系统下,数据库名是区分大小写的,但MySQL语句不区分大小写。实例1新建数据库注意:完整的MySQL语句必须以‘;’结尾的语句,如果忘记输入分号而按了回车,不必重新输入语句,因为没有分号的语句MySQL是不执行的,此时只要输入分号并按回车键,即可执行语句。创建数据库后,可以使用SHOW语句来查看数据库的信息。SHOWDATABASES数据库名;由于MySQL服务器上可能有多个数据库,我们在使用某个数据库之前就要先选择他。使用如下所示命令:删除数据库。使用如下所示命令:2.2数据表的操作∗∗2.2.1创建数据表∗∗关系型数据库是由一张张数据表组成的,我们创建好数据库后,接下来就是创建自己的数据表了。在创建数据表之前,首先需要用USE语句选择一个数据库,接下来无论是创建、查看还是修改、删除数据表,都在该数据库上进行!创建数据表使用CREATETABLE语句。语法格式如下:CREATE[TEMPORARY]TABLE[IFNOTEXISTS]tbln​ame[(created​efinition....)][tableo​ptions][selects​tatement]方括号([])中的参数均为可选对数。参数参数说明TEMPORARY该参数用于创建临时表。只有在当前连接下,临时表才是可见的;当连接关闭时,临时表被自动取消。IFNOTEXISTS如果要创建已经存在的表,则使用该参数可以防止发生错误。tbln​ame数据表的名称、命名要求与数据库名一样,由任意字母、数字、下画线()​和美元符号()
组成,但不能由单独的数字组成,也不能为 MySQL 的关键字,而且长度还不能超过 64 个
字符。
Table_options 该参数项用于设置数据库表的一些特性
Select_statement 该参数用于嵌入一个 SELECT 查询语句,从而快速创建数据表
在这些参数中,最重要也是最常用的是 create_definition,它是用来定义数据表的字段。
每个字段的语法格式如下:
col_name type [NOT NULL|NULL][DEFAULT
default_value][AUTO_INCREMENT][UNIQUE_KEY]|[PRIMARY_KEY][COMMENT ‘String’]
[reference_definition]
方括号([])中的参数均为可选参数。
参数 参数说明
Col_name 字段的名称、命名要求与数据库名一样,由任意字母、数字、下画线()和美元符号($)组
成,但不能由单独的数字组成,也不能为 MySQL 的关键字,而且长度还不能超过 64 个
字符。
type
字段的数据类型,如 INT,REAL,DOUBLE,FLOAT,DATE,VARCHAR 等
NOT NULL,NULL 如果设置为 NULL,或者省略不设置,那么表明该字段允许为空值;如果设置为 NOT NULL,
那么表明该字段不允许为空值
DEFAULT default_value 该参数用来设置字段的默认值,default_value 为该字段默认的数值
AUTO_INCREMENT 该参数用于设置一个整数类型的字段为自动增长字段。所谓自动增长,就是当试图向该
字段插入一个 NULL 值或 0 时,该字段的值会被设置成当前列的最大值+1,每张数据表只
能有一个 AUTO_INCREMNET 字段,且该字段必须设置索引,同时不能为有默认值。
UNIQUE 或 UNIQUE KEY 该参数用于设置 UNIQUE 索引。所谓 UNIQUE 索引,就是插入该字段的值必须不相等,否
则会出错。例个情况是,如果该字段被设置为允许 NULL 值,则插入该字段的值可以包含
多个 NULL 值。但此例外情况不适用于使用 Berkley DB(BDB)引擎的数据表。
PRIMARY KEY 或 KEY 该参数用于设置主键。一张数据表只能有一个 PRIMARY KEY,即只能有一个主键。设置为
主键的字段必须定义为 NOT NULL,如果该字段没有被明确地定义为 NOT NULL,则 MySQL
会隐含地定义该字段为 NOT NULL。
COMMENT ‘string’ 该参数用于设置字段的注释。字符串 string 中即为注释的内容
Reference_definition 该参数用于引用其他数据表中的字段
例:现在有一张数据表 student,该表拥有 name(姓名)、sid(学号)、major(专业)、tel(手
机)、birthday(出生日期)这 5 个字段,各字段的参数如下:
字段名 name sid major tel birthday
字段类型 VARCHAR(20) INT(10) VARCHAR(50) VARCHAR(11) DATE
是否允许为空 否 否 否 是 否
默认值 电气工程与自动化
是否自动增长 否 否 否 否 否
是否为 UNIQUE 索

否 否 否 是 否
是否为主键 否 是 否 否 否
注释 姓名 学员 专业 手机 出生日期
注:在执行这段代码之前需要提醒大家的是,由于将要创建的数据表中有值为中文的字段,所以在创建数据库时需
要指定一个支持中文字符的字符集编码。我们推荐使用 UTF-8 编码。
2.2.2SHOW 语句
使用 SHOW TABLES 语句可以查看指定数据库中所有的数据表。语法格式如下:
SHOW TABLES FROM 数据库名;
注:如果已经选择了某个数据库,则’FROM 数据库名’ 可以省略。查询操作默认是在当前数据库中进行的。
使用 SHOW COLUMNS 可以查看某个指定数据表的字段信息。
SHOW COLUMNS FROM 数据表名 FROM 数据库名;
或者
SHOW COLUMNS FROM 数据库名.数据表名;
2.2.3DESCRIBE 语句
与 SHOW COLUMNS 语句一样,DESCRIBE 语句也可以用于查看数据表的字段信息。语
法格式如下:
DESCRIBE 数据库名.数据库表名;
DESCRIBE 语句还可以用于查看数据表指定的某个字段的信息。语法格式如下:
DESCRIBE 数据库名.数据表名 字段名;
2.2.4 修改表结构
MySQL 中使用 ALTER TABLE 语句来修改数据表的结构,包括重命名数据表名称、重
命名字段名称、修改字段类型、修改字段默认值、增加和删减字段等。
注:在执行修改语句之前,都要先用 USE 语句选择对应的数据库,否则应使用’数据
库名.数据表名’代替’数据表名’。
2.2.4.1 重命名数据表名称
语法格式:ALTER TABLE 原数据表名 RENAME 新数据表名;
2.2.4.2 重命名字段名称
语法格式:ALTER TABLE 数据表名 CHANGE 原字段名 字段的定义;
注:字段的定义中只将原字段名改为新的字段名,其余的定义不变。
2.2.4.3 修改字段类型
语法格式:ALTER TABLE 数据表名 CHANGE 字段名 字段的定义;
注:其中,字段的定义中只将原字段类型改为新的字段类型,其余的定义不变。
2.2.4.4 修改字段默认值
语法格式:ALTER TABLE 数据表名 CHANGE 字段名 字段的定义;
2.2.4.5 增加和删减字段
语法格式:ALTER TABLE 数据表名 ADD 增加的字段定义;
注:其中,增加的字段定义的语法格式与 CREATE TABLE 语句中字段的定义一样。
删减字段使用 DROP 子语句。语法格式如下:
ALTER TABLE 数据表名 DROP 要删减字段的名称。
小结
最后提醒大家,ALTER TABLE 语句在执行时,会对原数据表进行临时复制,并在副本上
进行修改,修改完成后删除原数据表,再对新表进行重命名。在执行 ALTER TABLE 语句
时,其他用户可以阅读原数据表,但是对该数据表的更新和修改操作将被延迟,直到
新数据表生成为止。新表生成后,这些更新和修改信息会自动转移到新表上。
2.2.5 删除表结构
删除 MySQL 数据表,要使用 DROP TABLE 语句来实现。语法格式如下:
DROP TABLE [IF EXISTS] 数据表名[,数据表名…]
该语句用于删除一个或多个数据表,多个数据表名之间用英文逗号‘,’隔号。
DROP TABLE 语句中还可以使用’IF EXISTS’选项。此时,当删除一个不存在的数据表时,
会生成一个警告信息。通过 SHOW WARNINGS 语句可以查看该警告信息。
注:成功执行 DROP TABLE 语句后,相应数据表的定义和数据都会被删除,所以使用本
语句要小心!
2.3 备份与恢复
数据库在运行过程中,由于自身或外部的原因,难免会出现这样那样的问题。因
此,数据库的备份和恢复显得尤为重要。
2.3.1 备份 MySQL 数据库
在 MySQL 的 bin 目录下,有一个名为 mysqldump 的可执行文件,将该 bin 目录添加
到环境变量中,可以利用它在”命令提示符”环境下来备份数据库。语法格式如下:
mysqldump --opt 要备份的数据库名 -h MySQL数据库所在的域名或IP地址 -u账户名
-p -r 备份文件的路径

Mysqldump --opt 要备份的数据库名 -h MySQL 数据库所在的域名或 IP 地址 -u 账户名
-p>备份文件的路径
在’命令提示符’下执行该命令后,会出现提示要求输入账户名对应的密码,输入密码后
按回车键,即可开始备份指定的数据库,备份时间视数据库的大小而定。
2.3.2 还原 MySQL 数据库
通过使用 mysqldump 程序备份的文件,可以将数据库恢复到指定的状态。语法格式:
mysql -h MySQL 数据库所在的域名或 IP 地址 -u 账户名 -p 要恢复的数据库名<备份文件
的路径。
在’命令提示符’下执行该命令后,会出现提示要求输入账户名对应的密码,输入密码后
按回车键,即可开始恢复指定的数据库。
三.常用的 SQL 语句
3.1 查询语句(SELECT)
3.1.1 简单 SELECT 查询
语法格式:
SELECT 字段名[字段名,…] FROM 数据表名
WHERE 条件表达式
该语句的含义就是,从指定的数据表中,查找满足查询条件的指定字段的记录。其中,
条件表达式可以是包含‘>’(大于)、‘<’(小于) 、‘>=’(大于等于)、‘<=’(小于等
于)、‘=’(相等)、‘<>’(不等)的逻辑比较语句,也可以包含‘and’(逻辑与)、‘or’
(逻辑或)这样的组合逻辑语句.如果不使用 USE 语句指定数据库,那么在使用‘数据表
名’的时侯,应用‘数据库名.数据表名’代替。
例:查询出所有‘90 后’(即出生日期为 1990 年以后)学生的姓名:
在 SELECT 语句中,可以使用星号()来代替所有字段。
上面这条语句与下面这条语句效果一样!
上面这条语句也可以这么写!
也可以通过查找 MySQL 官方手册,查看 MySQL 的其他内置函数!
3.1.2 带结果排序的 SELECT 查询
有时我们可能希望对查询的结果按某个字段排序,这时可以在 SELECT 语句中添加
ORDER BY 子语句。语法格式如下:
SELECT 字段名[字段名,…] FROM 数据表名
WHERE 条件表达式
ORDER BY 字段名[字段名,…] [ASC|DESC];
该语句的含义就是,从指定的数据表中查找满足查询条件的指定字段的记录,然后按
照指定的字段排序。其中,‘ASC’与‘DESC’为可选参数,分别表示升序排列和降序
排列。如果不指定该参数,则默认是按照升序排列。
例:查询出所有‘90 后’(却出生日期为 1990 年以后)学生的姓名和生日,并将结果按照
他们的生日降序排列。
3.1.3 限定结果条数的 SELECT 查询
有时,满足查询条件的记录可能很多,我们只需要其中的几条记录即可,这时可以在
SELECT 语句中添加 LIMIT 子语句。语法格式如下:
SELECT 字段名[字段名,…] FROM 数据表名
WHERE 条件表达式
LIMIT [OFFSET,] row_count;
该语句的含义就是,从指定的数据表中,查找满足查询条件的指定字段的记录,
但并没有将全部查询结果返回,只是从第 offset 条记录开始,返回 row_count 条记录。
其中,offset 为可选参数,如果省略,则默认为 0。offset 和 row_count 必须为非负整
数常量。
例:查询出所有‘90 后’(即出生日期为 1990 年以后)学生的姓名和生日的前 3 条记录。
LIMIT 常常与 ORDER BY 配合使用,先对查询结果进行排序,再从中挑出指定位置的记
录。
SELECT 字段名[字段名,…] FROM 数据表名
WHERE 条件表达式
ORDER BY P 字段名[字段名,…] [ASC|DESC]
LIMIT [offset,] row_count;
3.2 插入语句(INSERT)
想要向数据表中插入记录就要使用 INSERT 语句。该语句包括 INSERT…VALUES 和
INSERT …SET 两种语法形式。
3.2.1INSERT…VALUES 语句
INSERT INTO 数据表名(字段名,…)
VALUES(字段名,…)
其中,字段名与字段值必须一一对应。字段名可以不列全,此时插入的这条记录
中,省略的字段会被默认值填充。
例:有一张 student 表,该表有 name、sid、major、tel、birthday5 个字段,其中
major 字段的默认值为‘电气工程与自动化’。
如果没有省略任何字段,则字段名可以省略,但字段值的顺序不能变。语法格式
INSERT INTO 语句可以同时插入多条记录。语法格式如下:
3.2.2INSERT…SET 语句
该语句通过‘=’来给字段赋值,其效果与 INSERT…VALUES 语句一样。常用的语法格式
如下:
INSERT INTO 数据表名
SET 字段名=字段值,
…;
如果某个字段没有被赋值,同样也会被隐含地赋默认值。
3.3 更新语句(UPDATE)
UPDATE 语句用来更新已经插入表中的记录。常与 WHERE 子语句连用,用来定位需要
修改的记录。语法格式如下:
UPDATE 数据表名
SET 字段名=新字段值,…
[WHERE 查询条件]
如果通过 WHERE 子语句查询出的记录有多条,那么还可以使用 ORDER 语句进行排序。
按照排序的结果依次更新,还可以使用 LIMIT 子语句限定更新的条数。
3.4 删除语句(DELETE)
DELETE 语句用来删除表中的记录。常与 WHERE 子语句连用,用来定位需要删除的记录。
语法格式如下:
DELETE FROM 数据表名
[WHERE 查询条件]
如果没有 WHERE 子语句,则该表中的所有数据将被删除。
如:
也可以使用 ORDER 语句进行排序,按照排序的结果依次删除记录,还可以使用 LIMIT
子语句限定删除记录的条数。
四.高级查询语句
4.1 聚合函数
许多数据库都提供一些函数来对数据进行简单的统计分析,MySQL 也不例外,如图:
函数 函数说明 函数 函数说明
COUNT 返回查询结果的条数 SUM 返回查询结果的和
MAX 返回查询结果的最大值 AVG 返回查询结果的平均值
MIN 返回查询结果的最小值
4.1.1COUNT
例:统计分数(mark 字段)大于等于 90 的学生人数。
有时需要在统计记录条数时剔除字段值重复的记录,这时就要用 DISTINCT 关键字。
例:统计分数(mark 字段)大于等于 90 的学生中不同分数的个数。
4.1.2MAX
例:统计分数(mark 字段)大于等于 90 的分数中的最高分。
4.1.3MIN
例:统计分数(mark 字段)大于等于 90 的分数中的最低分。
4.1.4SUM
统计了分数(mark 字段)大于等于 90 的所有分数的和。
4.1.5AVG
4.2 分组查询
有时需要对表中的记录按照字段进行分组,然后对每个分组分别运用聚合函数进行查
询或者计算。语法格式如下:
SELECT [聚合函数] 字段名[,字段名 … ] FROM 表名
WHERE 查询条件
GROUP BY 字段名
例:统计了 80 分及以上各个成绩的学生人数。
GROUP BY 子语句也常常有 HAVING 子语句连用。语法格式如下:
SELECT [聚合函数] 字段名[,字段名…] FROM 表名
WHERE 查询条件
GROUP BY 字段名
HAVING 过滤条件;
HAVING 子语句与 WHERE 子语句的区别在于,前者在分组前对记录进行了过滤,而后
者在分组后才对记录进行过滤。
例:先对分数在 80 分及以上的学生进行分组,然后双从中统计出 90 分及以上各个成
绩的学生人数。
分组时,也可以按照某些字段进行排序
例:先对分数在 80 分及以上的学生进行分组,然后又从中统计出 90 分及以上各个成绩
的学生人数,并按照成绩降序排列。
4.3 联合查询
所谓联合查询,就是使用 UNION 运算符,将两个或两个以上的 SELECT 语句的查询
结果合并成一个结果集合显示。语法格式如下:
SELECT 语句
UNION [ALL]
SELECT 语句
[UNION [ALL] SELECT 语句]…
如果 ALL 参数被省略,则联合查询结果集合中的重复行将只保留一行,否则将保
留所有重复行。需要提醒大家的是,在使用 UNION 运算符时,应保证每个联合查询语
句的选择字段具有相同的数据类型,或是可以自动将它们转换为相同的数据类型。
如:
Required_courses 必修课程数据表
Elective_courses 选修课程数据表
注:联合查询时,查询结果的字段标题为第一个 SELECT 语句的字段标题。如果要对联
合查询结果进行排序时,也必须使用第一个 SELECT 语句中的字段名。
4.4 连接查询
在关系型数据库系统中,一个数据库包括了多张数据表,表与表之间通过外键建立联
系。通过连接查询,可以查询出存放在多张数据表中的信息。连接类型可分为 3 种:交
叉连接、内连接和外连接。语法格式如下:
SELECT 字段名[字段名,…] FROM 数据表 1 名称
连接类型 数据表 2 名称
[ON 连接条件]
stu_info 表
major 表
4.4.1 交叉连接
交叉连接(CROSS JOIN) 返回连接表中所有数据行的笛卡尔积,其结果集合中的数据行等
于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
4.4.2 内连接
内连接(inner join)使用比较运算符进行表间某(些)字段数据的比较操作,并列出这些表
中与连接条件相匹配的数据行。根据所使用的比较方式不同,内连接又分为等值连接、
不等连接和自然连接 3 种。
当这条语句执行时,首先会逐行扫描 stu_info 表,然后根据连接条件来决定此记录是否
被检索。比如对于默默,她的 major_id 是 3,在 major 表中能找到与之相配的记录,因
此默默这条记录会被检索。而对于败类,他的 major_id 为空(值为 NULL),在 major 表中
找不到与之相匹配的项,因此败类这条记录不会被检索。
与上面这条语句等效的另一条语句如下
4.4.3 外连接
外连接包括左连接(LEFT JOIN)、右连接(RIGHT JOIN) 和全连接(FULL JOIN)3 种。与内连接
不同的是,外连接(OUTER JOIN)不只列出与连接条件相匹配的行还列出了左表(左连接
时)、右表(右连接时)或两个表(全连接时)中所有符合搜索条件的数据行。
如上图所示,这是一条左连接查询语句。对于左表中的记录,无论右表中是否有对应
的匹配项,都要被检索。因此,虽然败类这条记录的 major_id 在右表(major 表)中没有
匹配项,但也会被检索。
下图是右连接示例:
4.5 子查询
有时进行查询,需要的条件是外一个 SELECT 语句的结果,这个时侯就要使用子查
询。用于子查询的关键字主要包括 IN、NOT IN、=、!=、EXISTS、NOT EXISTS 等。
4.5.1IN 子查询
这条语句从 stu_info 表中检索记录,条件是 stu_info 表中的 major_id 在 major 中
存在。
4.5.2EXISTS 子查询
这条语句使用了 EXISTS 关键字,表示查询条件为 EXISTS 关键字后面跟的 SELECT 语句的
查询结果不为空!
五.数据可视化管理:SQLyog:
5.2SQLyog 管理工具介绍
5.2SQLyog 管理工具案例
六.小结:
在 MySQL 数据库基础这一节课上,我们依次讲解了关系型数据库的基本概念、
MySQL 数据库的基本操作、常用的 SQL 语句、高级查询语句、可视化数据库管理工具
——SQLyog。
在 MySQL 数据库的基本操作中,我们介绍了启动和停止数据库服务、连接和断开数
据库环境、创建数据库、查看数据库、选择数据库、删除数据库、创建数据表、查看
数据表、修改数据表、删除数据表以及备份和恢复数据库。在常用的 SQL 语句中,我
们介绍了 MySQL 中的查询、插入、更新、删除等常用的 SQL 语句,并在此基础上又介
绍了分组查询、联合查询、连接查询、子查询等高级查询语句。最后,我们介绍了 MySQL
的可视化管理工具 SQLyog 的安装和基本使用方法。

可爱的小海豚:MySQL 数据库相关推荐

  1. 微信小程序连接MySQL数据库

    微信小程序连接MySQL数据库 简要说明: 承接上一个商品列表页,在服务器端连接MySQL数据库,通过条件匹配查寻数据并显示在客户端 准备工作 1.node.js 2.微信开发者工具 3.MySQL数 ...

  2. js 数据写到本地记事本_微信小程序连接Mysql数据库步骤

    刚开始学小程序没多久,这么一个简单的过程整了一个礼拜,关键是没人指导啊啊啊啊啊--心累,翻阅了n个书籍,查看了m个网站,亲测可以正常连接.现在终于明白了学习效率:培训班>看视频>自学.好啦 ...

  3. 微信小程序连接MySQL数据库(读取+写入)demo

    通过php文件进行数据中转.经试验有效可行!!! 1.php 部分 1.1.连接数据库 <?php //header("Content-type: text/html; charset ...

  4. 微信小程序连接mysql_微信小程序连接MySQL数据库(读取+写入)demo

    通过php文件进行数据中转.经试验有效可行!!! 1.php 部分 1.1.连接数据库 connect_error) { echo "系统异常,连接数据库失败"; } else { ...

  5. MySQL数据库笔记-基础篇

    文章目录 MySQL概述 数据库相关概念 小总结 MySQL数据库 版本: 启动与停止 客户端连接 关系型数据库 数据模型 小总结 SQL SQL通用语法 SQL分类 DDL 数据库操作 查询 创建 ...

  6. 本地升级MySQL数据库版本为8.0.23,使用SQLyog(小海豚)无法进行连接

    问题描述:本地MySQL版本为5.5.27将其升级到8.0.23后,使用SQLyog(小海豚)进行连接出现以下提示错误: Client does not support authentication ...

  7. 计算机毕业设计Python+django 宠物领养中心小程序(源码+系统+mysql数据库+Lw文档)

    项目介绍 据世界动物保护协会统计,全世界大概有5亿只流浪狗和散养的狗和大致同样数量的流浪猫,而这些主要源于主人的弃养.同时,在很多地区,狗和猫都处于散养状态,这部分的动物,也经常会变成流浪动物.猫和狗 ...

  8. c语言连接数据库例子,c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual help).doc...

    这是精心收集的精品经典资料,值得下载保存阅读! c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual h ...

  9. mysql 常用小工具包_mssql+mysql小工具(无需环境依赖)-mysql数据库批量实体CS类导出工具下载v3.0免费版-西西软件下载...

    mysql数据库批量实体CS类导出工具是一个功能简单的数据库小工具,可以选中数据表执行查询,以及自定义sql语句,查询或者执行增删改,可以查看目标服务器对应数据库以及表和字段信息,不需要单独安装mys ...

最新文章

  1. 如何使用canvas绘图
  2. java 将换行代替_Java批量将文件中的段落替换成空格,根据指定分隔符换行(SQL示例)...
  3. 在asp.net中做视频转换,将各种视频文件转换成.flv格式
  4. java学习(17):巩固练习
  5. java web的友好页面_JavaWeb 之 由 Tomcat 展示友好的错误信息页面
  6. 2019-数学建模美赛-B题翻译
  7. 如何把电脑的计算机固定在桌面上,如何将Win7便签固定在电脑桌面上?
  8. OpenDaylight Hydrogen版本应用SampleTap研究(一)
  9. Android学习(二):Android Studio创建并运行Android项目(Hello World ~.~)
  10. c语言 文学研究助手 源程序,数据结构文学研究助手
  11. AAA和radius协议学习
  12. Android接入google地图
  13. cocos creator--DragonBones 骨骼动画入门
  14. Bug解决-RuntimeError: Sizes of tensors must match except in dimension 2. Got 320 and 160 (The offendin
  15. C++面试之Linux操作系统
  16. “华为杯”第十八届中国研究生数学建模竞赛B题参赛总结
  17. 手机屏幕常见故障_触屏不灵敏、断触怎么回事?手机触摸屏的基本原理与常见问题排查方法介绍...
  18. Mac上zip,rar,tar文件命令解压和压缩
  19. 一步一步学Silverlight 2系列(21):如何在Silverlight中调用JavaScriptjavascript
  20. .NET项目运行错误:未能加载文件或程序集“CefSharp.Core.Runtime.dll”或它的某一个依赖项。找不到指定的模块

热门文章

  1. 【调优】kafka性能调优
  2. AR玻璃纤维市场现状及未来发展趋势分析
  3. 【S0019】【素材】32套让你脱颖而出的作品集模板,人人必备
  4. 浏览器控制台错误:Strict MIME type checking is enforced for module scripts per HTML spec.
  5. 有符号右移和无符号右移
  6. CF机器码--LOL机器码-LOL黑机器(本日最新教程依旧可用)
  7. FreeRTOS 软件定时器
  8. 语音的频率、频率分辨率、采样频率、采样点数、量化、增益
  9. 转载:混淆包含SlidingMenu、gson等Android代码的proguard写法
  10. slam学习笔记七----IMU传感器