《第8章 SQL数据库ppt课件.pdf》由会员分享,可在线阅读,更多相关《第8章 SQL数据库ppt课件.pdf(128页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、PPT模板下载: 行业PPT模板: 节日PPT模板: PPT素材下载: PPT图表下载: 优秀PPT下载: PPT教程: Word教程: Excel教程: 资料下载: PPT课件下载: 范文下载: 试卷下载: 教案下载: PPT论坛:大学计算机基础第六章 SQL数据库技术广西大学计算机与电子信息学院PPT模板下载: 行业PPT模板: 节日PPT模板: PPT素材下载: PPT图表下载: 优秀PPT下载: PPT教程: Word教程: Excel教程: 资料下载: PPT课件下载: 范文下载: 试卷下载: 教案下载: PPT论坛:目 录CONTENTS数据库技术基础6.1MySQL数据库简介6.
2、2数据库的操作6.3数据表的操作6.4表数据维护6.5单表查询6.6多表查询6.7视图、存储过程与存储函数6.8MySQL高级特性6.96.1 数据库技术基础数据库技术基础当今社会,每天都会有大量的信息数据需要处理。为了有效地管理和利用各种类型的数据,就产生了计算机的数据管理技术。随着管理数据的规模扩大,计算机的数据管理技术经历了人人工管理工管理、文件系统管理文件系统管理和数据库系统管理数据库系统管理3个阶段。在早期的人工管理阶段,数据与程序代码一起保存在程序文件中,数据不独立保存,不能共享。在随后的文件系统阶段中,程序和数据是分开存储的,虽然数据可长期独立保存,但其数据共享性、独立性仍然很差
3、。为了解决这些问题,就产生了数据库技术,进入数据库系统管理阶段。数据库技术满足了集中存储大量数据、便于众多用户使用的要求。数据库系统(DBS)的组成6.1 数据库技术基础数据库技术基础数据库系统的基本特点1 1数据结构化数据结构化2 2数据数据高共享性和低冗余性高共享性和低冗余性3 3数据数据高独立性高独立性4 4数据统一管理和控制数据统一管理和控制数据库系统的结构体系数据库系统的结构体系由模式模式、外模式外模式和内模式内模式三级结构构成。在三级结构之间提供了两级映像:外外模式模式/模式映像模式映像和模式模式/内模式映像内模式映像。6.1 数据库技术基础数据库技术基础模式模式是数据库中全体数据
4、的逻辑结构和特征的总体描述,是所有用户的公共数据视图。外模式外模式是某个或几个数据库用户能够看见和使用数据库的数据视图。内模式内模式是数据物理结构和存储方式的描述,即数据库的“内部视图”。外模式外模式/模式映像模式映像定义了外模式与模式之间的对应关系。模式模式/内模式映像内模式映像定义了数据库的全局逻辑结构与存储结构之间的对应关系。数据库的三级模式结构保证了数据的物理独立性数据库的三级模式结构保证了数据的物理独立性和逻辑独立性。和逻辑独立性。6.1 数据库技术基础数据库技术基础数据模型及数据库分类模型是人们对现实世界特征的模拟和抽象。先把客观事物抽象为某一种信息结先把客观事物抽象为某一种信息结
5、构构(概念模型概念模型,不依赖于具体的计算机不依赖于具体的计算机系统系统);再将);再将概念模型转换为计算机上概念模型转换为计算机上某一数据库管理系统支持的某一数据库管理系统支持的数据模型数据模型。6.1 数据库技术基础数据库技术基础概念模型中的几个概念:实体实体 属性属性 域域 码码 实体型实体型实体型间的联系实体型间的联系一对一一对一 一对多一对多 多对多多对多概念模型的表示E E- -R R图:图:矩形矩形 椭圆椭圆 菱形菱形6.1 数据库技术基础数据库技术基础图6-4 简单的学生成绩管理系统的E-R图数据模型层次数据模型层次数据模型:一对多(:一对多(1n1n)6.1 数据库技术基础数
6、据库技术基础网状数据模型网状数据模型:多对多(:多对多(mnmn)数据模型关系数据模型关系数据模型:二维表(关系):二维表(关系)记录(描述一个实体的信息)记录(描述一个实体的信息)字段(描述实体的一个属性)字段(描述实体的一个属性)6.1 数据库技术基础数据库技术基础数据库的分类数据库的分类根据数据模型,数据库相应分为三类:层次数据库层次数据库、网状数据库网状数据库和关系型数据库关系型数据库。第三代数据库 分布式数据库分布式数据库 并行数据库并行数据库多媒体数据库多媒体数据库模糊数据库模糊数据库时态数据库和实时数据库时态数据库和实时数据库演绎数据库、知识库和主动数据库演绎数据库、知识库和主动
7、数据库空间数据库空间数据库WebWeb数据库数据库目前,数据库技术向数据仓库数据仓库、数据挖掘数据挖掘和大数据技大数据技术术等方向发展。6.1 数据库技术基础数据库技术基础关系数据库关系数据库基本术语:关系关系 关系模式关系模式 记录记录 字段字段 主键主键 外键外键关系运算:通过对关系的运算,可构造新的关系,实现对关系数据库的查询、更新等。具体有 “并”操作“并”操作 “差”操作“差”操作 “交”操作“交”操作 “笛卡儿积”操作“笛卡儿积”操作 “选择”操作“选择”操作 “投影”操作“投影”操作 “连接”操作“连接”操作6.1 数据库技术基础数据库技术基础关系的完整性约束(1)实体完整性实体
8、完整性指关系中主键的值必须非空,而且必须是唯一的。指关系中主键的值必须非空,而且必须是唯一的。(2)参照完整性参照完整性指一个关系中外键的值必须是其他关系的主键值之一,或指一个关系中外键的值必须是其他关系的主键值之一,或者为空。者为空。关系设计的规范化用用于于消除关系模式中不合适的数据依赖,以解决关系插入消除关系模式中不合适的数据依赖,以解决关系插入异常、删除异常、更新异常和数据冗余等问题。异常、删除异常、更新异常和数据冗余等问题。在实际应用中,通常分解到在实际应用中,通常分解到第三范式(第三范式(3NF3NF)就足够了。就足够了。6.1 数据库技术基础数据库技术基础SQL简介简介结构化查询语
9、言(Structured Query Language,SQL)是关系数据库的标准语言,具有功能强功能强、高度非过高度非过程化程化和简洁易学简洁易学等特点。分为4类共9个命令:数据定义(数据定义(DDLDDL)CREAT TABLECREAT TABLE、 DROP TABLEDROP TABLE和和ALTERALTER数据操作(数据操作(DMLDML)INSERTINSERT、UPDATEUPDATE和和DELETEDELETE数据查询(数据查询(DQLDQL)SELECTSELECT数据控制(数据控制(DCLDCL)GRANTGRANT、REVOKEREVOKE使用时,即可以在终端键盘上直
10、接输入SQL命令,也可以嵌入到C、C+等程序中,实现对关系数据库的操作。6.1 数据库技术基础数据库技术基础常用数据库管理系统常用数据库管理系统(1)MySQL小型小型 开源开源、体积小、速度快、适应广泛体积小、速度快、适应广泛(2)Oracle大型大型 运行稳定、功能齐全、性能完善运行稳定、功能齐全、性能完善,支持多种平台支持多种平台(3)DB2大型大型 伸缩性伸缩性好,易移植好,易移植,可支持,可支持多种平台多种平台平台平台(4)SQL Server 大型大型 功能功能全面全面,效率高,可伸缩性与可靠性强,效率高,可伸缩性与可靠性强,而且而且界面界面友好、易学易用,但只能在友好、易学易用,
11、但只能在WindowsWindows系统下运行系统下运行(5)Sybase大型大型 性能优良,技术先进性能优良,技术先进,可支持,可支持多种平台多种平台平台平台(6)Access小型小型简单易学,界面友好,功能满足一般的数据管理及简单易学,界面友好,功能满足一般的数据管理及处理需要,处理需要,只能在只能在WindowsWindows系统下系统下使用使用6.1 数据库技术基础数据库技术基础数据库设计步骤数据库设计步骤数据库的管理数据库的管理主要由数据库管理员(DBA)完成。常见的维护工作包括以下几点:(1)数据库的建立(2)数据库安全性与完整性控制(3)数据库的重组(4)数据库的故障恢复(5)数
12、据库监控(6)数据库的调整6.1 数据库技术基础数据库技术基础MySQL数据库的特点数据库的特点开放源码、功能足够、成本低6.2 MySQL数据库简介数据库简介MySQL数据库的存储引擎数据库的存储引擎是数据库底层软件组织,以不同存储引擎存储数据,数据的处理上也会存在着差异。MySQL安装与配置安装与配置有企业版、集群版、标准版、经典版和社区版等,社区版安装与配置过程见教材。6.2 MySQL数据库简介数据库简介MySQL目录结构目录结构默认的安装目录是C:Program FilesMySQLMySQL Server 5.7默认的存放数据库的位置是C:ProgramDataMySQLMySQL
13、 Server 5.7Data使用InnoDB存储引擎独立表空间方式的MySQL数据库文件有.FRM和和.IDB两种基本类型。InnoDB存储引擎共享表空间方式的MySQL数据库文件默认文件名为ibdata1,初始大小为10MB。MySQL的使用的使用1.启动MySQL服务net start mysql572.CMD命令提示符窗口使用mysql h hostname -u username -p3.MySQL命令行客户端窗口使用所有程序MySQLMySQL Server 5.7MySQL 5.7 Command Line Client4.图形化界面工具使用MySQLMySQL Workbenc
14、h、Navicat、phpMyAdmin和SQLyog等6.2 MySQL数据库简介数据库简介MySQL Workbench 6.3.8界面界面6.2 MySQL数据库简介数据库简介MySQL的使用的使用在MySQL Workbench中执行SQL语句,每条SQL语句必须以“;”符号结束,不区分大小字母写。6.2 MySQL数据库简介数据库简介1.创建数据库(1)MySQL Workbench中创建数据库(2)SQL 语句创建数据库基本语法格式如下:CREATE DATABASE | SCHEMA IF NOT EXISTS 数据库名 选项;例如创建成绩管理系统的数据库,名为CJGL。CREA
15、TE DATABASE CJGL;6.3数据库的操作数据库的操作2.查看数据库查看所连接的MySQL服务器上的数据库列表:SHOW DATABASES;查看某个已经创建的数据库的字符集信息:SHOW CREATE DATABASES 数据库名;3.打开数据库要打开该数据库,才能对它操作。命令为:USE 数据库名;6.3数据库的操作数据库的操作4.修改数据库名称修改:InnoDB 存储引擎的数据库是无法修改数据库名称的,而 MyISAM 存储引擎的数据库只要修改 DATA 目录下的文件夹名就可以改变数据库名称。字符集修改:命令为ALTER DATABASE 数据库名 DEFAULT CHARAC
16、TER SET 字符集DEFAULT COLLATE 校对规则;5.删除数据库删除数据库的命令为DROP DATABASE IF EXISTS 数据库名;6.3数据库的操作数据库的操作表(Table)是组成数据库的基本元素,用于存储实体集和实体间联系的数据。MySQL数据库中,物理的数据是存储在表中的。没有表,数据库中其他的数据对象就都没有意义。在使用表存储数据时,不同的数据类型决定了存储数据方式的不同。以下介绍表的数据类型、表的基本操作、表的约束、表的索引。6.4数据表的操作数据表的操作创建表时,必须为表的每一列指定数据类型,必创建表时,必须为表的每一列指定数据类型,必要时还有长度,如要时还
17、有长度,如CHAR(10)等等 。列的数据类型决定了。列的数据类型决定了数据的取值、范围和存储格式。详见教材数据的取值、范围和存储格式。详见教材6.4.1表的数据类型表的数据类型表6- 10 数据类型表数据类型符号标志整数型TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT浮点型FLOAT, REAL, DOUBLE定点型DECIMAL, NUMERIC浮点型FLOAT, REAL, DOUBLE位型BIT字符型CHAR, VARCHAR, LONGTEXTUnicode 字符型 NCHAR,NVARCHAR二进制型BINARY, VARBINARY文本型TIN
18、YTEXT, TEXT,MEDIUM TEXT, LONGTEXTBLOB类型TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB日期时间类型DATE, TIME, DATETIME, TIMESTAMP, YEAR1 1、创建表创建表使用 SQL 语句创建数据表,需要指出表所在的数据库(不指定则为当前打开的数据库)、表的名称,列举出表中每个字段的字段名、字段的数据类型、字段约束等,基本语法格式如下:CREATE TABLE IF NOT EXIT 数据库名.表名(字段名 字段类型 字段约束 , ) 表的选项 ; 说明:选项IF NOT EXIT用于在创建表之前加上一个判断
19、,只有表不存在时才执行CREATE TABLE操作;表名后面是小括号,括号内定义表的各个字段;每个字段的名称、类型和约束之间使用空格隔开,而两个字段之间使用逗号“,”分隔开;表的选项用于描述存储引擎、字符集等选项。6.4.2数据表的基本操作数据表的基本操作6.4.2数据表的基本操作数据表的基本操作6.4.2数据表的基本操作数据表的基本操作6.4.2数据表的基本操作数据表的基本操作还可以直接复制数据库中现有的表的结构和内容,以这种方式创建一个表。此方式的基本语法格式如下:CREATE TABLE IF NOT EXIT 数据库名.表名LIKE 旧表 | AS 查询语句 ;说明:使用LIKE子句创
20、建一个与旧表相同结构的新表,字段名、数据类型、约束和索引都将一起复制,但是表的内容不会复制,因而产生的表是个空表;AS子句可以复制查询结果集内容,查询语句是一条SELECT语句。【例6-9】 在CJGL数据库中,用复制学生信息表结构的方式创建新表t1,再用复制学生信息表内容的方式创建新表t2。CREATE TABLE t1 LIKE 学生信息表;CREATE TABLE t2 AS (SELECT * FROM 学生信息表);6.4.2数据表的基本操作数据表的基本操作2 2. .查看表的信息查看表的信息用SQL语句要查看当前数据库中有哪些表,可以使用SHOW TABLES命令,语法格式如下:S
21、HOW TABLES;可以使用DESCRIBE命令查看指定表的结构相关信息,语法格式如下:DESCRIBE 表名;或者简写为DESC 表名;还可以使用SHOW CREATE TABLE命令查看指定表的结构创建信息,语法格式如下:SHOW CREATE TABLE 表名;6.4.2数据表的基本操作数据表的基本操作3 3. .修改表结构修改表结构用SQL语句修改表结构,都是使用ALTER TABLE语句,使用时需要指定表名、操作类型、字段名、数据类型、约束条件等信息。表示操作类型的关键字有RENAME、ADD、DROP、CHANGE和MODIFY。(1)修改表的名称要修改表的名称,可在ALTER
22、TABLE语句中使用RENAME关键字,基本语法格式如下:ALTER TABLE 旧表名 RENAME TO 新表名; 6.4.2数据表的基本操作数据表的基本操作3 3. .修改表结构修改表结构(2)添加字段要添加新的字段,可在ALTER TABLE语句中使用ADD关键字,基本语法格式如下:ALTER TABLE 表名ADD 新字段名 数据类型 约束条件FIRST | AFTER 已存在字段名; 例如,给学生信息表添加变长字符类型字段专业,代码如下:ALTER TABLE 学生信息表 ADD 专业 varchar(10);6.4.2数据表的基本操作数据表的基本操作3 3. .修改表结构修改表结
23、构(3)删除字段要删除字段,可在ALTER TABLE语句中使用DROP关键字,基本语法格式如下:ALTER TABLE 表名 DROP 字段名; (4)字段名称修改要修改字段名称,可在ALTER TABLE语句中使用CHANGE关键字,基本语法格式如下:ALTER TABLE 表名CHANGE 原字段名 新字段名 新数据类型 新约束 ; (5)字段的数据类型及约束等属性修改要修改字段的数据类型、约束等属性,可在ALTER TABLE语句中使用MODIFY关键字,基本语法格式如下:ALTER TABLE 表名 MODIFY 字段名 新数据类型 新约束 ; 6.4.3表的约束表的约束约束就是数据
24、库服务器提供的用来限制字段中的数据、记录中数据以及表之间数据的一种机制。表6- 20列举了常见的表的几种约束,下面对它们分别介绍。表6- 20 表的约束约束条件说明PRIMARY KEY主键约束,用于唯一标识对应的记录NOT NULL非空约束UNIQUE唯一性约束DEFAULT默认值约束,用于设置字段的默认值AUTO_INCREMENT自增约束FOREIGN KEY外键约束6.4.3表的约束表的约束1. 1.主键约束(主键约束(PRIMARY KEYPRIMARY KEY)一个表中可以有多个列,但作为主键的列是不允许有重复数据的。主键能够唯一地确定记录,如学生信息表,可用学号作为主键来确定不同
25、学生。主键是表中最重要的约束,一个表一定要有主键,而且一个表内只能有一个主键。主键可以由单个或多个字段组成。设置单字段主键的基本语法格式如下:字段名 数据类型 PRIMARY KEY设置复合字段主键的基本语法格式如下:PRIMARY KEY (字段名1, 字段名2, ,字段名n)6.4.3表的约束表的约束【例6-10】 创建一个数据表example_01,并设置id列为主键,SQL语句为:CREATE TABLE example_01 (stu_id INT PRIMARY KEY,name VARCHAR(15),grade FLOAT);【例6-11】 创建一个数据表example_02,
26、在表中将stu_id和course_id两个字段组合作为主键,SQL语句如下:CREATE TABLE example_02 (stu_id INT,course_id INT,grade FLOAT,PRIMARY KEY (stu_id, course_id);6.4.3表的约束表的约束2. 2.非空约束(非空约束(NOT NULLNOT NULL)非空约束指的是表中字段的值不能为空值(NULL)。被设置为非空约束的字段,在添加数据时必须要有数据,不能为空值。主键约束的列会同时定义为非空约束。非空约束是通过NOT NULL定义的,其基本的语法格式如下:字段名 数据类型 NOT NULL如果
27、允许字段的值可以为空值,可以使用NULL来定义。6.4.3表的约束表的约束3. 3.唯一性约束(唯一性约束(UNIQUEUNIQUE)唯一性约束用于保证数据表中字段的唯一性,即表中字段的值不能重复出现。唯一性约束字段通常会同时定义非空约束。唯一性约束是通过UNIQUE定义的,其基本的语法格式如下:字段名 数据类型 UNIQUE4. 4.默认值约束(默认值约束(DEFAULTDEFAULT)默认值约束用于给数据表中的字段指定默认值。通过给字段设置默认值约束,可以减轻数据添加时的负担。默认值约束是通过DEFAULT定义的,其基本的语法格式如下:字段名 数据类型 DEFAULT 默认值6.4.3表的
28、约束表的约束5. 5.自增约束(自增约束(AUTO_INCREMENTAUTO_INCREMENT)自增约束是一种由系统自动增加并填入字段数值的约束,一个表中最多只有一个字段设置自增约束。其基本的语法格式如下:字段名 整数类型 AUTO_INCREMENT【例6-12】 创建一个数据表example_03,在表中将id字段设置为自动增加,SQL语句如下:CREATE TABLE example_03 (id INT PRIMARY KEY AUTO_INCREMENT,stu_id INT UNIQUE,grade FLOAT DEFAULT 0);6.4.3表的约束表的约束6. 6.外键约束
29、(外键约束(FOREIGN KEYFOREIGN KEY)外键约束是设计在两个表的字段间的约束。要将一个表的某个字段添加外键约束(称之为外键字段),需要同时指出该字段所对应的外表字段和字段所在的外表。要注意的是,关联的两个字段的类型及长度要保持一致,而且这两个字段都必须建立起索引。外键约束选项值有4个,表明在表数据修改(ON UPDATE)或删除(ON DELETE)时各个表中关联字段数据的处理。CASCADE 外键字段值会随着外表的关联字段一起被更新或被删除。NO ACTION 不进行任何关联操作,如果外键字段有一个匹配的值在外表中,则不允许对外表的关联字段进行更新或删除操作。RESTRIC
30、T 严格检查外键约束,不进行任何关联操作。SET NULL 当外表的关联字段被修改或被删除时,外键字段的值被设置为空。6.4.3表的约束表的约束6. 6.外键约束(外键约束(FOREIGN KEYFOREIGN KEY)如果使用SQL语句添加外键,则有两种方式,一种是在创建表的时候添加外键;一种是在现有的表中添加外键约束。其基本语法格式如下:INDEX 索引名 (外键字段 ASC),CONSTRAINT 外键约束名FOREIGN KEY(外键字段)REFERENCES 外表名(外表字段)约束选项;上述代码是创建表的时候,在创建语句之后添加的语句,可以放在字段列表和主键约束定义之后。6.4.3表
31、的约束表的约束6.4.3表的约束表的约束6.4.4表的索引表的索引1.索引概述索引概述索引(Index)是一个列表,依赖于表建立并随表一起存储,它包含了表中一个字段或若干字段的集合以及这些值的记录在数据表中存储位置的物理地址。一般会根据需要在一个表中建立多个索引,以加快数据的查询速度。索引可以基于表中一个字段来建立,也可以基于表中多个字段来建立(称之为复合索引)。除了主键约束自动建立的PRIMARY索引,其他基本的索引类型有(1)普通索引:这是最基本的索引类型,由INDEX或KEY定义,可以创建在任何数据类型中。(2)唯一性索引:由UNIQUE定义。(3)全文索引:由FULLTEXT定义。(4
32、)空间索引:由SPATIAL定义。6.4.4表的索引表的索引2.创建索引创建索引用CREATE INDEX语句和ON关键字,可在一个已经存在的表上创建索引,其基本语法格式如下:CREATE 索引类型 INDEX 索引名ON 表名 (索引字段 ASC |DESC ,);说明:索引类型可以是UNIQUE、FULLTEXT和SPATIAL,用于指定类型分别是唯一性索引、全文索引和空间索引,省略时为普通索引;ASC和DESC可选参数指定索引列的排序方式是升序还是降序,省略时为ASC;有多个索引字段时为复合索引。【例6-16】 为学生信息表的姓名字段创建一个名为“索引姓名”的普通索引,SQL语句如下:C
33、REATE INDEX 索引姓名 ON 学生信息表(姓名);6.4.4表的索引表的索引2.创建索引创建索引使用ALTER TABLE语句和ADD关键字,也可以在已经存在的表上创建索引,其基本语法格式如下:ALTER TABLE 表名ADD 索引类型 INDEX 索引名 (索引字段 ASC |DESC ,);【例6-17】 为课程信息表的课程简介字段创建一个名为“索引课程简介”的全文索引,相应的SQL语句如下:ALTER TABLE 课程信息表ADD FULLTEXT INDEX 索引课程简介(课程简介);另外,使用CREATE TABLE语句在创建表时,也可以同时创建索引,其基本语法格式如下:
34、CREATE TABLE 表名 (字段名 字段类型 字段约束 , ,索引类型 INDEX 索引名 (索引字段 ASC |DESC ,);6.4.4表的索引表的索引3.删除索引删除索引删除不再使用的索引,基本语法格式如下:DROP INDEX 索引名 ON 表名;或者ALTER TABLE 表名 DROP INDEX 索引名;【例6-18】 删除课程信息表中名为“索引课程简介”的索引,相应的SQL语句如下:DROP INDEX索引课程简介ON课程信息表;或者ALTER TABLE 课程信息表 DROP INDEX 索引课程简介;6.5表数据维护表数据维护1.添加数据记录添加数据记录在SQL语句中
35、用INSERT命令添加表数据记录:使用 INTO关键字指出需要添加数据的表;使用 VALUES 关键字指出需要添加的数据。其基本语法格式如下:INSERT INTO 表名 (字段名,)VALUES(常量,);说明:省略字段名时,意思字段名为表定义时的顺序。加上字段名时,要注意值的顺序必须随字段名顺序的改变而改变。【例6-19】 给课程信息表添加如表6- 22的第一条数据记录,SQL语句如下:INSERT INTO 课程信息表(课程号,课程名称,学分,开课学期)VALUES(06001,大学计算机,3,1);6.5表数据维护表数据维护也可以同时添加多条数据记录。其基本语法格式如下:INSERT
36、INTO 表名 (字段名,) VALUES(数据记录1) ,(数据记录n);【例6-20】 给成绩表添加如表6-23的多条数据记录,语句为:INSERT INTO 成绩表 VALUES(15230101,06001,89),(15230101,06002,91),(15230102,06005,82),(15230103,06001,78),(15230106,06004,83),(15230105,06005,90),(15230106,06003,89),(15230110,06007,80);6.5表数据维护表数据维护2.更新数据更新数据更新数据常使用UPDATE语句,其基本语法格式如下
37、:UPDATE 表名SET 字段名=表达式,WHERE 条件;上述语法中,SET指定要更新的一列或多列以及相应的值,可选项WHERE指定更新条件来限制更新的记录范围,如果没有指定条件进行限制,则会对表中所有的记录进行更新。6.5表数据维护表数据维护2.更新数据更新数据【例6-21】 将学生信息表中学号为“15230109”记录的出生日期更改为“1997-10-25”,SQL语句如下:UPDATE 学生信息表SET 出生日期=1997-10-25WHERE 学号=15230109;【例6-22】 将课程信息表中的课程简介全部更改为“待输入”,SQL语句如下:UPDATE 课程信息表 SET 课程
38、简介=待输入;6.5表数据维护表数据维护3.删除数据删除数据删除数据最常使用DELETE语句,其基本语法格式如下:DELETE FROM 表名 WHERE 条件;上述语法中,可选项WHERE指定删除的条件,满足条件的记录会被删除,如果没有可选项WHERE,则会删除表中所有的记录。使用DELETE语句,仅能删除表的数据记录,不能改变表的结构,不能删除某列的数据,也不能删除表本身。同时还要注意的是,使用DELETE语句进行删除表数据时,如果该表中的某个字段有外键约束,需要先删除外键所在表的相应数据,然后再删除该表中的对应数据,否则将会出现删除异常。【例6-23】 删除成绩表中学号“15230110
39、”的记录,SQL语句为:DELETE FROM 成绩表 WHERE 学号=15230110;查询是数据库中最常用,也是最重要的功能,它为用户快速、方便地使用数据库中的数据提供了一种有效的方法。MySQL数据库提供的查询数据的基本语句是SELECT。单表查询是按照一定的条件在单一的表上进行数据查询,利用SELECT语句让服务器从数据库中按用户要求检索数据,将结果以表格的形式返回给用户。6.6单表查询单表查询6.6.1SELECT语句基本格式语句基本格式完整的SELECT语句的使用结构比较复杂,用户根据自己对数据的需求,使用SELECT语句的不同结构实现对数据的查询。SELECT语句的基本语法格式
40、如下:SELECT 重复行参数 显示列名 FROM 数据源WHERE 条件GROUP BY 分组字段名 HAVING 分组条件ORDER BY 排序字段名 ASC |DESCLIMIT 偏移量 记录数UNION 操作符;注意的是,在SELECT语句中FROM、WHERE、GROUP BY和ORDER BY子句必须按照语法中列出的次序依次执行。6.6.1SELECT语句基本格式语句基本格式先介绍SELECT语句的简单用法。【例6-24】 在成绩管理数据库CJGL中存在着课程信息表对象,要查询课程信息表的所有列,SQL语句如下:USE CJGL;SELECT * FROM 课程信息表;【例6-25
41、】 查询成绩管理数据库CJGL中的学生信息表的学号、姓名两列的前10条记录,SQL语句如下:SELECT 学号,姓名FROM 课程信息表 LIMIT 10;【例6-26】 查询成绩管理数据库CJGL中的学生信息表的学号、姓名、性别和出生日期列的前5条记录,并按出生日期的升序排序,SQL语句如下:SELECT 学号,姓名,性别,出生日期FROM 学生信息表 ORDER BY 出生日期 LIMIT 5;6.6.2为表和列取别名为表和列取别名在查询数据时,如果表或者列的名称比较长,或者为了让显示结果更加直观,那么可使用别名代替。指定别名使用AS关键字,为表或列取别名的语法基本格式如下:SELECT
42、列名1 AS 别名1,列名2 AS 别名2,FROM 表名 AS 别名其他子句;【例6-27】 查询成绩管理数据库CJGL中的学生信息表的学号、姓名和出生日期列,并将出生日期以别名“生日”显示,SQL语句如下:SELECT 学号,姓名,出生日期 AS 生日 FROM 学生信息表;或者为SELECT 学号,姓名,出生日期 生日 FROM 学生信息表;6.6.3WHERE条件查询条件查询WHERE子句中的查询条件可以是比较运算、逻辑运算符、空值比较、范围比较和模式匹配。1、比较运算条件比较运算条件比较运算符用于比较两个表达式的值,MySQL支持的比较运算符及其含义见表6- 24。表表6- 24 比
43、较运算符及其含义比较运算符及其含义运算符描述示例运算符描述示例=相等x=y=小于等于x=y不相等xy=大于等于x=y大于xy!=不等于x!=y小于xy相等或都等于空xy【例6-28】 在学生信息表查询壮族的学生信息,SQL语句如下:SELECT * FROM 学生信息表 WHERE 民族=壮族;【例6-29】 在成绩表查询成绩小于80的记录信息,SQL语句如下:SELECT * FROM 成绩表 WHERE 成绩=1997-01-01AND 出生日期=1997-12-31)AND 性别=男;或者SELECT * FROM 学生信息表WHERE YEAR(出生日期)=1997 AND 性别=男;
44、上述语句中的YEAR()是取年份的函数,用于取得日期数据的年份。6.6.3WHERE条件查询条件查询3、空值比较条件空值比较条件空值比较主要用来查询某一字段值为是否空值的记录。查询条件的格式为:表达式 IS NOT NULL空值条件用IS NULL表示,非空值用IS NOT NULL表示,注意ISNULL不能用“=NULL“代替。【例6-31】 在课程信息表中查询课程简介为空的记录信息,SQL语句如下:SELECT * FROM 课程信息表 WHERE 课程简介 IS NULL;6.6.3WHERE条件查询条件查询4、范围查询条件范围查询条件如果需要返回某一字段的值介于两个指定值之间的记录,那
45、么可以使用BETWEEN AND语句。其查询条件格式如下:表达式 NOT BETWEEN 值1 AND 值2【例6-32】 在成绩表中查询成绩在80至84之间的记录信息:SELECT * FROM 成绩表 WHERE 成绩 BETWEEN 80 AND 84;如果需要返回某一字段的值与指定列表中的任意一个值匹配的记录,那么可以使用IN语句。其查询条件格式如下:表达式 NOT IN (值1,)【例6-33】 在课程信息表中查询开课学期为2、3、4的记录信息,SQL语句如下:SELECT * FROM 课程信息表 WHERE 开课学期 IN(2,3,4);6.6.3WHERE条件查询条件查询5、模
46、式匹配条件模式匹配条件模式匹配(使用LIKE或REGEXP)常用来返回某种匹配格式的数据记录,其查询条件格式如下:表达式 NOT LIKE |REGEXP 模式LIKE关键字使用通配符来表示字符串需要匹配的模式,LIKE的通配符及其含义见表6- 26。表6- 26 Like常用通配符及其含义通配符通配符名称名称描述描述%百分号百分号匹配匹配0个或多个任意字符个或多个任意字符_下画线下画线匹配单个的任意字符匹配单个的任意字符【例6-34】 在学生信息表中查询姓张的学生信息,SQL语句如下:SELECT * FROM 学生信息表 WHERE 姓名 LIKE 张%;【例6-35】 在学生信息表中查询
47、姓名是两个字的少数民族学生信息,SQL语句如下:SELECT * FROM 学生信息表WHERE 姓名 LIKE _ AND 民族汉族;6.6.3WHERE条件查询条件查询REGEXP关键字也使用通配符来表示字符串需要匹配的模式,但比LIKE的功能更强,而且更加灵活。REGEXP的通配符及其含义见表6- 27。表6- 27 REGEXP常用通配符及其含义6.6.3WHERE条件查询条件查询【例6-36】 在学生信息表中,查询姓李的学生信息,SQL语句如下:SELECT * FROM 学生信息表WHERE 姓名 REGEXP 李;【例6-37】 在学生信息表中,查询学号里包含7、8、9的学生学号
48、和姓名,SQL语句如下SELECT 学号,姓名 FROM 学生信息表WHERE 学号 REGEXP 789;【例6-38】 在学生信息表中,查询姓名是两个字、学号最后一位在2至6之间的学生信息,SQL语句如下:SELECT * FROM 学生信息表WHERE 姓名 REGEXP .6$ AND 学号 REGEXP 2-6$;上述代码中,两个汉字需要6个句号通配符,加上开始标记和结束标记$,所以使用.6$模式才能正确匹配两个汉字的姓名。6.6.4使用计算列使用计算列SELECT语句可以对表中数值字段数据进行算术运算,并将运算结果作为结果集的数据列返回。算术运算语法格式如下:字段名 算术操作符 字
49、段名 AS 别名【例6-39】 假设某个产品表有产品号、产品名、价格、销售量等数据字段,现要在返回的结果集中还显示每种产品的销售额,则需要将价格乘以销售量。实现的SQL语句如下:SELECT 产品号,产品名,价格,销售量,价格*销售量 AS 销售额 FROM 产品表;6.6.4使用计算列使用计算列MySQL中还提供了丰富的函数,可以在SELECT语句中通过使用这些函数简化用户对数据的运算。这些函数包括数学函数、字符串函数、日期时间函数、条件判断函数等。一些常用函数详见教材表6- 28表6- 31。【例6-40】 查询成绩表的记录信息,并将学号与课程号拼接成“学号_课程号”方式显示,SQL语句如
50、下:SELECT concat(学号,_,课程号) AS 学号_课程号,成绩FROM 成绩表;【例6-41】 查询学生信息表中3月份出生的学生记录信息。使用函数month的SQL语句如下:SELECT * FROM 学生信息表 WHERE month(出生日期)=3;【例6-42】 查询学生信息表中的学号和性别两字段信息,如果性别字段的值为“男”则返回1,如果不为“男”则返回0。SQL语句如下:SELECT 学号,if(性别=男,1,0) FROM 学生信息表;6.6.5分组查询汇总数据分组查询汇总数据1、聚合函数聚合函数聚合函数常常用于SELECT语句对字段值进行汇总计算,然后返回单个值。表