1、17.1 SQL和和PL/SQL7.1.1 SQL语言语言SQL语言是应用于数据库的结构化查询语言,是一种非过程性语言,本身不能脱离数据库而存在。一般高级语言存取数据库时要按照程序顺序处理许多动作,使用SQL语言只需简单的几行命令,由数据库系统来完成具体的内部操作。1.SQL语言分类语言分类通常将SQL语言分为以下4类。(1)数据定义语言(Data Definition Language,DDL)用于定义数据库对象,对数据库、数据库中的表、视图、索引等数据库对象进行建立和删除,DDL包括CREATE、ALTER、DROP等语句。(2)数据操纵语言(Data Manipulation Langu
2、age,DML)用于对数据库中的数据进行插入、修改、删除等操作,DML包括INSERT、UPDATE、DELETE等语句。数据库原理与应用教程 (Oracle 12c 版)27.1 SQL和和PL/SQL(3)数据查询语言(Data Query Language,DQL)用于对数据库中的数据进行查询操作,例如用 SELECT语句进行查询操作。(4)数据控制语言(Data Control Language,DCL)用于控制用户对数据库的操作权限,DCL包括GRANT、REVOKE等语句。2.SQL语言的特点语言的特点SQL语言具有高度非过程化、应用于数据库的语言、面向集合的操作方式、既是自含式语
3、言又是嵌入式语言、综合统一、语言简洁和易学易用等特点。(1)高度非过程化SQL语言是非过程化语言,进行数据操作,只要提出“做什么”,而无须指明“怎么做”,因此无需说明具体处理过程和存取路径,处理过程和存取路径由系统自动完成。数据库原理与应用教程 (Oracle 12c 版)37.1 SQL和和PL/SQL(2)应用于数据库的语言SQL语言本身不能独立于数据库而存在,它是应用于数据库和表的语言,使用SQL语言,应熟悉数据库中的表结构和样本数据。(3)面向集合的操作方式SQL语言采用集合操作方式,不仅操作对象、查找结果可以是记录的集合,而且一次插入、删除、更新操作的对象也可以是记录的集合。(4)既
4、是自含式语言、又是嵌入式语言SQL语言作为自含式语言,它能够用于联机交互的使用方式,用户可以在终端键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言(例如C,C+,Java)程序中,供程序员设计程序时使用。在两种不同的使用方式下,SQL语言的语法结构基本上是一致的,提供了极大的灵活性与方便性。数据库原理与应用教程 (Oracle 12c 版)47.1 SQL和和PL/SQL(5)综合统一SQL语言集数据查询(Data Query)、数据操纵(Data Manipulation)、数据定义(Data Definition)和数据控制(Data Control)
5、功能于一体。(6)语言简洁,易学易用SQL语言接近英语口语,易学使用,功能很强,由于设计巧妙,语言简洁,完成核心功能只用了9个动词,如表7.1所示。数据库原理与应用教程 (Oracle 12c 版)表7.1 SQL语言的动词57.1 SQL和和PL/SQL7.1.2 PL/SQL预备知识预备知识1.PL/SQL的语法约定的语法约定PL/SQL的语法约定如表7.2所示,在PL/SQL不区分大写和小写。数据库原理与应用教程 (Oracle 12c 版)表7.2 PL/SQL的基本语法约定67.1 SQL和和PL/SQL2在在SQL Developer中执行中执行PL/SQL语句语句在SQL Dev
6、eloper中执行PL/SQL语句的步骤如下:(1)选 择“开 始”“所 有 程 序”“O r a c l e -OraDB12Home1”“应用程序开发”“SQL Developer”命令,启动SQL Developer。(2)在主界面中展开”system_stsys”连接,单击工具栏的 按钮,主界面弹出SQL工作表窗口,在窗口中输入或粘贴要运行的PL/SQL语句,这里输入SELECT*FROM student;数据库原理与应用教程 (Oracle 12c 版)77.1 SQL和和PL/SQL(3)选中所有语句并单击工具栏的 按钮或直接单击 按钮,即执行语句,在“结果”窗口显示PL/SQL语
7、句执行结果,如图7.1所示。数据库原理与应用教程 (Oracle 12c 版)87.2 在在PL/SQL中的数据定义语言中的数据定义语言7.2.1 数据库操作语句数据库操作语句1.创建数据库创建数据库使用PL/SQL语句创建数据库步骤简介如下:(1)设定实例标识符建立数据库之前,必须先指定数据库实例的系统标识符,即SID,在SQL*Plus中使用以下命令设定SID:SET ORACLE_SID=stdb(2)设定数据库管理员的验证方法创建Oracle数据库必须经过数据库的验证手续,且被赋予适当系统权限后才可以建立。可以使用密码文件或操作系统的验证方法,下面是密码文件验证方法。orapwd fi
8、le=D:apptaooradataDATABASEPWDstdb.oraPassword=123456 entries=5 数据库原理与应用教程 (Oracle 12c 版)97.2 在在PL/SQL中的数据定义语言中的数据定义语言(3)创建初始化参数创建新数据库之前必须新增或编辑的初始化参数如下:全局数据库名称。控制文件名称与路径。数据块大小。影响SGA容量的初始化参数。设定处理程序最大数目。设定空间撤销(Undo)管理方法。(4)启动SQL*Plus并以SYSDBA连接到Oracle实例sqlplus/nologconnect system/Ora123456 as sysdba 数据库
9、原理与应用教程 (Oracle 12c 版)107.2 在在PL/SQL中的数据定义语言中的数据定义语言(5)启动实例在没有装载数据库情况下启动实例,通常只有在数据库创建期间或在数据库上实施维护操作时才会这么做,使用带有NOMOUNT选项的STARTUP命令STARTUP NOMOUNT pfile=D:apptaostdbpfileinitstdb.ora(6)使用CREATE DATABASE语句创建数据库在Oracle中创建数据库,使用CREATE DATABASE语句,其语法格式如下语法格式:语法格式:CREATE DATABASE USER SYS IDENTIFIED BY|USE
10、R SYSTEM IDENTIFIED BY|CONTROLFILE REUSE|MAXDATAFILES 数据库原理与应用教程 (Oracle 12c 版)117.2 在在PL/SQL中的数据定义语言中的数据定义语言|MAXINSTANCES|ARCHIVELOGNO ARCHIVELOG|CHARACTER SET|NATIONAL CHARACTER SET|SET DEFAULT BIGFILE|SMALLFILE TABLESPACE|LOGFILE GROUP|MAXLOGFILES|MAXLOGMEMBERS|MAXLOGHISTORY|FORCE LOGGING|DATAFIL
11、E AUTOEXTEND OFFON NEXT K M|G|T 数据库原理与应用教程 (Oracle 12c 版)127.2 在在PL/SQL中的数据定义语言中的数据定义语言MAXSIZE UNLIMITED K M|G|T|DEFAULT TABLESPACE DATAFILE|BIGFILE|SMALL UNDO TABLESPACE DATAFILE|SET TIME_ZONE=.;其中::=()SIZE K M|G|T REUSE,n2.修改数据库修改数据库 修改数据库使用ALTER DATABASE语句,其语法格式如下。数据库原理与应用教程 (Oracle 12c 版)137.2 在
12、在PL/SQL中的数据定义语言中的数据定义语言语法格式:语法格式:ALTER DATABASE ARCHIVELOG|NOARCHIVELOGNO FORCE LOGGINGRENAME FILE,n TO ,n CREATE DATAFILE AS SIZE K M|G|T REUSE,n|NEW DATAFILE ONLINE OFFLINE FOR DROP RESIZE K M|G|T|END BACKUP AUTOEXTEND OFF ON NEXT K|M MAXSIZE UMLIMITED K M ADD LOGFILE SIZE K M|G|T REUSE,nDROP LOGF
13、ILE;数据库原理与应用教程 (Oracle 12c 版)147.2 在在PL/SQL中的数据定义语言中的数据定义语言3.删除数据库删除数据库删除数据库使用DROP语句。语法格式:语法格式:DROP DATABASE database_name其中,database_name是要删除的数据库名称。7.2.2 表空间操作语句表空间操作语句1创建表空间创建表空间创建表空间在SQL*Plus中使用CREATE TABLESPACE语句,创建的用户必须拥有CREATE TABLESPACE系统权限,在创建之前必须创建包含表空间的数据库。数据库原理与应用教程 (Oracle 12c 版)157.2 在在
14、PL/SQL中的数据定义语言中的数据定义语言语法格式:语法格式:CREATE TABLESPACE DATAFILE/SIZE K M REUSE AUTOEXTEND OFF ON NEXT K M MAXSIZE UMLIMITED K M MINMUM EXTENT K|M DEFAULT ONLINE OFFLINE LOGGING NOLOGGING PERMANENT TEMPORARY E X T E N T M A N A G E M E N T D I C T I O N A R Y L O C A L AUTOALLOCATE UNIFORM SIZE K M 数据库原理与
15、应用教程 (Oracle 12c 版)167.2 在在PL/SQL中的数据定义语言中的数据定义语言【例7.1】创建表空间testspace,大小为40MB,禁止自动扩展数据文件。CREATE TABLESPACE testspace LOGGING DATAFILE I:apporaoradataorcltestspace01.DBF SIZE 40M REUSE AUTOEXTEND OFF;该语句运行结果如图7.2所示 数据库原理与应用教程 (Oracle 12c 版)177.2 在在PL/SQL中的数据定义语言中的数据定义语言【例7.2】创建表空间newspace,允许自动扩展数据文件。
16、CREATE TABLESPACE newspaceLOGGINGDATAFILE I:apporaoradataorcl newspace01.DBF SIZE 40MREUSE AUTOEXTEND ON NEXT 10M MAXSIZE 300MEXTENT MANAGEMENT LOCAL;该语句运行结果如图7.3所示 数据库原理与应用教程 (Oracle 12c 版)187.2 在在PL/SQL中的数据定义语言中的数据定义语言2.管理表空间管理表空间在SQL*Plus中使用ALTER TABLESPACE命令可以修改表空间或它的一个或多个数据文件、或为数据库中每一个数据文件指定各自的
17、存储扩展参数值,其语法格式如下。语法格式:语法格式:ALTER TABLESPACE ADD DATAFILE TEMPFILE /SIZE K M REUSE AUTOEXTEND OFF ON NEXT K M MAXSIZE UNLIMITED K M RENAME DATAFILE/,n TO/,n DEFAULT STORAGE ONLINE OFFLINE NORMAL TEMPORARY IMMEDIATE 数据库原理与应用教程 (Oracle 12c 版)197.2 在在PL/SQL中的数据定义语言中的数据定义语言 LOGGING NOLOGGING READ ONLY WRI
18、TE PERMANENT TEMPORARY【例7.3】通过ALTER TABLESPACE命令把一个新的数据文件添加到newspace表空间,并指定了AUTOEXTEND ON和 MAXSIZE 300M。ALTER TABLESPACE newspace ADD DATAFILE I:apporaoradataorclDATA02.DBF SIZE 40M REUSE AUTOEXTEND ON NEXT 50M MAXSIZE 300M;数据库原理与应用教程 (Oracle 12c 版)207.2 在在PL/SQL中的数据定义语言中的数据定义语言3.删除表空间删除表空间在SQL*Plus
19、中使用DROP TABLESPACE语句删除已经创建的表空间,其语法格式如下。语法格式:语法格式:DROP TABLESPACE INCLUDING CONTENTS AND|KEEP DATAFILES CASCADE CONSTRAINTS ;数据库原理与应用教程 (Oracle 12c 版)217.2 在在PL/SQL中的数据定义语言中的数据定义语言【例7.4】删除表空间newspace和及其对应的数据文件。DROP TABLESPACE newspace INCLUDING CONTENTS AND DATAFILES;该语句运行结果如图7.4所示 数据库原理与应用教程 (Oracle
20、 12c 版)227.2 在在PL/SQL中的数据定义语言中的数据定义语言7.2.3 表操作语句表操作语句1.创建表创建表使用CREATE TABLE语句创建表,其语法格式如下。语法格式:语法格式:CREATE TABLE.(DEFAULT DEFAULT ,n ,n)PCTFREE PCTUSED INITRANS MAXTRANS 数据库原理与应用教程 (Oracle 12c 版)237.2 在在PL/SQL中的数据定义语言中的数据定义语言 TABLESPACE STORGE AS【例7.5】使用PL/SQL语句,在stsys数据库中创建student表。在stsys数据库中创建stude
21、nt表语句如下:CREATE TABLE student(sno char(6)NOT NULL PRIMARY KEY,sname char(12)NOT NULL,ssex char(3)NOT NULL,sbirthday date NOT NULL,speciality char(18)NULL,sclass char(6)NULL,tc number NULL);数据库原理与应用教程 (Oracle 12c 版)247.2 在在PL/SQL中的数据定义语言中的数据定义语言启动SQL Developer,在主界面中展开”system_stsys”连接,单击工具栏的 按按钮,主界面弹出S
22、QL工作表窗口,在窗口中输入上述语句,单击 按钮,在“结果”窗口显示”CREATE TABLE成功”,如图7.5所示。数据库原理与应用教程 (Oracle 12c 版)257.2 在在PL/SQL中的数据定义语言中的数据定义语言2.修改表修改表使用ALTER TABLE语句用来修改表的结构,其语法格式如下:语法格式:语法格式:ALTER TABLE.ADD(DEFAULT 列约束,n)/*增加新列*/MODIFY(DEFAULT 列约束,n)/*修改已有列的属性*/STORAGE /*修改存储特征*/*删除列或约束条件*/其中,用于从表中删除列或约束。数据库原理与应用教程 (Oracle 12
23、c 版)267.2 在在PL/SQL中的数据定义语言中的数据定义语言语法格式:语法格式::=DROP COLUMN PRIMARY KEY UNIQUE(,n)CONSTRAINT CASCADE【例7.6】使用ALTER TABLE语句修改Stsys数据库中的student表。(1)在student表中增加一列remarks(备注)。ALTER TABLE student ADD remarks varchar(100);数据库原理与应用教程 (Oracle 12c 版)277.2 在在PL/SQL中的数据定义语言中的数据定义语言(2)在student表中删除列remarks。ALTER T
24、ABLE student DROP COLUMN remarks;3.删除表删除表使用DROP TABLE语言删除表。语法格式:语法格式:DROP TABLE table_name其中,table_name是要删除的表的名称。【例7.7】删除Stsys数据库中newstudent表(已创建)。DROP TABLE newstudent;数据库原理与应用教程 (Oracle 12c 版)287.3 在在PL/SQL中的数据操纵语言中的数据操纵语言7.3.1 插入语句插入语句INSERT语句用于向数据库的表插入一行,由VALUES给定该行各列的值,其语法格式如下:语法格式:语法格式:INSERT
25、INTO(,n)VALUES(,n)其中,列值表必须与列名表一一对应,且数据类型相同。向表的所有列添加数据时,可以省略列名表,但列值表必须与列名表顺序和数据类型一致。数据库原理与应用教程 (Oracle 12c 版)297.3 在在PL/SQL中的数据操纵语言中的数据操纵语言【例7.8】向student表插入表6.1各行数据。向student表插入表6.1各行数据的语句如下 I N S E R T I N T O s t u d e n t V A L U E S(1 8 1 0 0 1 ,宋 德 成 ,男,TO_DATE(19971105,YYYYMMDD),计算机,201805,52);I
26、 N S E R T I N T O s t u d e n t V A L U E S(1 8 1 0 0 2 ,何 静 ,女,TO_DATE(19980427,YYYYMMDD),计算机,201805,50);I N S E R T I N T O s t u d e n t V A L U E S(1 8 1 0 0 4 ,刘 文 韬 ,男,TO_DATE(19980513,YYYYMMDD),计算机,201805,52);I N S E R T I N T O s t u d e n t V A L U E S(1 8 4 0 0 1 ,李 浩 宇 ,男,TO_DATE(1997102
27、4,YYYYMMDD),通信,201836,50);I N S E R T I N T O s t u d e n t V A L U E S(1 8 4 0 0 2 ,谢 丽 君 ,女,TO_DATE(19980116,YYYYMMDD),通信,201836,48);I N S E R T I N T O s t u d e n t V A L U E S(1 8 4 0 0 3 ,陈 春 玉 ,女,TO_DATE(19970809,YYYYMMDD),通信,201836,52);数据库原理与应用教程 (Oracle 12c 版)307.3 在在PL/SQL中的数据操纵语言中的数据操纵语言使
28、用SELECT语句查询插入的数据:SELECT*FROM student;查询查询结果:结果:SNO SNAME SSEX SBIRTHDAY SPECIALITY SCLASS TC -181001 宋德成 男 1997-11-05 计算机 201805 52181002 何静 女 1998-04-27 计算机 201805 50181004 刘文韬 男 1998-05-13 计算机 201805 52184001 李浩宇 男 1997-10-24 通信 201836 50184002 谢丽君 女 1998-01-16 通信 201836 48184003 陈春玉 女 1997-08-09
29、通信 201836 52 数据库原理与应用教程 (Oracle 12c 版)317.3 在在PL/SQL中的数据操纵语言中的数据操纵语言7.3.2 修改语句修改语句UPDATE语句用于修改表中指定记录的列值,它的基本语法格式如下:语法格式:语法格式:UPDATE SET=|,n WHERE 其中,在满足WHERE子句条件的行中,将SET子句指定的各列的列值设置为SET指定的新值,如果省略WHERE子句,则更新所有行的指定列值。注意:注意:UPDATE语句修改的是一行或多行中的列。【例7.9】在student表中,将所有学生的学分增加2分。UPDATE student SET tc=tc+2;数
30、据库原理与应用教程 (Oracle 12c 版)327.3 在在PL/SQL中的数据操纵语言中的数据操纵语言7.3.3 删除语句删除语句1.DELETE语句语句DELETE语句用于删除表中的一行或多行记录,它的基本语法格式如下:语法格式:语法格式:DELETE FROM WHERE 该语句的功能为从指定的表或中删除满足WHERE子句条件行,若省略WHERE子句,则删除所有行。数据库原理与应用教程 (Oracle 12c 版)337.3 在在PL/SQL中的数据操纵语言中的数据操纵语言【例7.10】在student表中,删除学号为184003的行。DELETE FROM student WHER
31、E sno=184003;2TRANCATE TABLE语句语句当需要删除一个表里的全部记录,使用TRUNCATE TABLE语句,它可以释放表的存储空间,但此操作不可回退,其语法格式如下:语法格式:语法格式:TRUNCATE TABLE 数据库原理与应用教程 (Oracle 12c 版)347.4 在在PL/SQL中的数据查询语言中的数据查询语言PL/SQL语言中最重要的部分是它的查询功能,PL/SQL的SELECT语句具有灵活的使用方式和强大的功能,能够实现选择、投影和连接等操作,SELECT语句的基本语法格式如下:语法格式:语法格式:SELECT /*SELECT子句,指定列*/FROM
32、 /*FROM子句,指定表或视图*/WHERE /*WHERE子句,指定行*/GROUP BY /*GROUP BY子句,指定分组表达式*/HAVING /*HAVING子句,指定分组统计条件*/ORDER BY ASC|DESC /*ORDER子句,指定排序表达式和顺序*/数据库原理与应用教程 (Oracle 12c 版)357.4 在在PL/SQL中的数据查询语言中的数据查询语言7.4.1 投影查询投影查询投影查询用于选择列,投影查询通过SELECT语句的SELECT子句来表示,SELECT子句的语法格式如下:语法格式:语法格式:SELECT ALL|DISTINCT 其中,指出了查询结果
33、的形式,其格式为:*/*选择当前表或视图的所有列*/|.*/*选择指定的表或视图的所有列*/|AS /*选择指定的列,为列指定别名*/|=/*选择指定的列并更改列标题,为列指定别名*/,n 数据库原理与应用教程 (Oracle 12c 版)367.4 在在PL/SQL中的数据查询语言中的数据查询语言1投影指定的列投影指定的列使用SELECT语句可选择表中的一个列或多个列,如果是多个列,各列名中间要用逗号分开。语法格式语法格式SELECT ,n FROM WHERE 该语句的功能为在FROM子句指定表中检索符合条件的列。数据库原理与应用教程 (Oracle 12c 版)377.4 在在PL/SQ
34、L中的数据查询语言中的数据查询语言【例7.11】查询student表中所有学生的学号、姓名和班号。SELECT sno,sname,sclass FROM student;数据库原理与应用教程 (Oracle 12c 版)查询结果:查询结果:SNO SNAME SCLASS -181001 宋德成 201805 181002 何静 201805 181004 刘文韬 201805 184001 李浩宇 201836 184002 谢丽君 201836 184003 陈春玉 201836 387.4 在在PL/SQL中的数据查询语言中的数据查询语言2投影全部列投影全部列在SELECT子句指定列的
35、位置上使用*号时,则为查询表中所有列。【例7.12】查询student表中所有列。SELECT*FROM student;该语句与下面语句等价SELECT sno,sname,ssex,sbirthday,speciality,sclass,tc FROM student;数据库原理与应用教程 (Oracle 12c 版)397.4 在在PL/SQL中的数据查询语言中的数据查询语言查询结果:查询结果:SNO SNAME SSEX SBIRTHDAY SPECIALITY SCLASS TC -181001 宋德成 男 1997-11-05 计算机 201805 52181002 何静 女 19
36、98-04-27 计算机 201805 50181004 刘文韬 男 1998-05-13 计算机 201805 52184001 李浩宇 男 1997-10-24 通信 201836 50184002 谢丽君 女 1998-01-16 通信 201836 48184003 陈春玉 女 1997-08-09 通信 201836 52 数据库原理与应用教程 (Oracle 12c 版)407.4 在在PL/SQL中的数据查询语言中的数据查询语言3修改查询结果的列标题修改查询结果的列标题为了改变查询结果中显示的列标题,可以在列名后使用AS。【例7.13】查询student表中所有学生的学生的sno
37、、sname、speciality,并将结果中各列的标题分别修改为学号,姓名,专业。SELECT sno AS 学号,sname AS 姓名,speciality AS 专业 FROM student;数据库原理与应用教程 (Oracle 12c 版)查询结果:查询结果:学号 姓名 专业 -181001 宋德成 计算机 181002 何静 计算机 181004 刘文韬 计算机 184001 李浩宇 通信 184002 谢丽君 通信 184003 陈春玉 通信 417.4 在在PL/SQL中的数据查询语言中的数据查询语言4计算列值计算列值使用SELECT子句对列进行查询时,可以对数字类型的列进行
38、计算,可以使用加()、减()、乘(*)、除(/)等算术运送符,SELECT子句可使用表达式,其语法格式如下:语法格式:语法格式:SELECT ,5去掉重复行去掉重复行去掉结果集中的重复行可使用DISTINCT关键字,其语法格式是:语法格式:语法格式:SELECT DISTINCT ,数据库原理与应用教程 (Oracle 12c 版)427.4 在在PL/SQL中的数据查询语言中的数据查询语言【例7.14】查询student表中sclass列,消除结果中的重复行。SELECT DISTINCT sclassFROM student;数据库原理与应用教程 (Oracle 12c 版)查询结果:查询
39、结果:SCLASS-201836201805437.4 在在PL/SQL中的数据查询语言中的数据查询语言7.4.2 选择查询选择查询投影查询用于选择行,选择查询通过WHERE子句实现,WHERE子句通过条件表达式给出查询条件,该子句必须紧跟FROM子句之后。语法格式:语法格式:WHERE 其中,为查询条件,格式为::=NOT|()AND|OR NOT|(),n 其中,的结果为TRUE、FALSE或UNKNOWN,其格式为:数据库原理与应用教程 (Oracle 12c 版)447.4 在在PL/SQL中的数据查询语言中的数据查询语言:=|=|!=/*比较运算*/|NOT LIKE ESCAPE
40、/*字符串模式匹配*/|NOT BETWEEN AND /*指定范围*/|IS NOT NULL/*是否空值判断*/|NOT IN(|,n)/*IN子句*/|EXIST()/*EXIST子查询*/说明:说明:(1)判定运算包括比较运算、模式匹配、指定范围、空值判断、子查询等,判定运算的结果为TRUE、FALSE或UNKNOWN。数据库原理与应用教程 (Oracle 12c 版)457.4 在在PL/SQL中的数据查询语言中的数据查询语言(2)逻辑运算符包括.AND(与)、OR(或)、NOT(非),NOT、AND和OR的使用是有优先级的,三者之中,NOT优先级最高,AND次之,OR优先级最低。(
41、3)条件表达式可以使用多个判定运算通过逻辑运算符成复杂的查询条件。(4)字符串和日期必须用单引号括起来。1表达式比较表达式比较比较运算符用于比较两个表达式值,共有7个运算符:=(等于)、(小于)、(大于)、=(大于等于)、(不等于)、!=(不等于),其语法格式如下。语法格式:语法格式:=|=|!=数据库原理与应用教程 (Oracle 12c 版)467.4 在在PL/SQL中的数据查询语言中的数据查询语言【例7.15】查询student表中班号为201205或性别为女的学生。SELECT*FROM student WHERE sclass=201205 or ssex=女;数据库原理与应用教程
42、 (Oracle 12c 版)查询结果:查询结果:SNO SNAME SSEX SBIRTHDAY SPECIALITY SCLASS TC-181002 何静 女 1998-04-27 计算机 201805 50184002 谢丽君 女 1998-01-16 通信 201836 48184003 陈春玉 女 1997-08-09 通信 201836 52477.4 在在PL/SQL中的数据查询语言中的数据查询语言2指定范围指定范围 BETWEEN、NOT BETWEEN、IN是用于指定范围的三个关键字,用于查找字段值在(或不在)指定范围的行。当要查询的条件是某个值的范围时,可以使用BETWE
43、EN关键字。BETWEEN关键字指出查询范围。语法格式:语法格式:NOT BETWEEN AND 数据库原理与应用教程 (Oracle 12c 版)487.4 在在PL/SQL中的数据查询语言中的数据查询语言【例7.16】查询score表成绩为86、92、95的记录。SELECT*FROM score WHERE grade in(86,92,95);数据库原理与应用教程 (Oracle 12c 版)查询结果:查询结果:SNO CNO GRADE -181002 1004 86184001 4002 92184001 8001 86184003 8001 95181004 1201 92 49
44、7.4 在在PL/SQL中的数据查询语言中的数据查询语言【例7.17】查询student表中不在1998年出生的学生情况。SELECT*FROM student WHERE sbirthday NOT BETWEEN TO_DATE(19980101,YYYYMMDD)AND TO_DATE(19981231,YYYYMMDD);数据库原理与应用教程 (Oracle 12c 版)查询结果:查询结果:SNO SNAME SSEX SBIRTHDAY SPECIALITY SCLASS TC-181001 宋德成 男 1997-11-05 计算机 201805 52184001 李浩宇 男 199
45、7-10-24 通信 201836 50184003 陈春玉 女 1997-08-09 通信 201836 52 507.4 在在PL/SQL中的数据查询语言中的数据查询语言3模式匹配模式匹配模式匹配使用LIKE谓词,LIKE谓词用于指出一个字符串是否与指定的字符串相匹配,其运算对象可以是char、varchar2和date类型的数据,返回逻辑值TRUE或FALSE。语法格式:语法格式:NOT LIKE ESCAPE 在使用LIKE谓词时,可以含有通配符,通配符有以下两种:%:代表0或多个字符。_:代表一个字符。LIKE匹配中使用通配符的查询也称模糊查询。数据库原理与应用教程 (Oracle
46、12c 版)517.4 在在PL/SQL中的数据查询语言中的数据查询语言【例7.18】查询student表中姓谢的学生情况。SELECT*FROM student WHERE sname LIKE 谢%;数据库原理与应用教程 (Oracle 12c 版)查询结果:查询结果:SNO SNAME SSEX SBIRTHDAY SPECIALITY SCLASS TC-184002 谢丽君 女 1998-01-16 通信 201836 48527.4 在在PL/SQL中的数据查询语言中的数据查询语言4空值判断空值判断判定一个表达式的值是否为空值时,使用IS NULL关键字。语法格式:语法格式:IS
47、NOT NULL【例7.19】查询已选课但未参加考试的学生情况。SELECT*FROM score WHERE grade IS null;数据库原理与应用教程 (Oracle 12c 版)查询结果:查询结果:SNO CNO GRADE -184002 8001 537.4 在在PL/SQL中的数据查询语言中的数据查询语言7.4.3 分组查询和统计计算分组查询和统计计算1聚合函数聚合函数聚合函数实现数据的统计计算,用于计算表中的数据,返回单个计算结果。聚合函数包括COUNT、SUM、AVG、MAX、MIN等函数,下面分别介绍。(1)COUNT函数COUNT函数用于计算组中满足条件的行数或总行数
48、。语法格式:语法格式:COUNT(ALL|DISTINCT|*)其中,ALL表示对所有值进行计算,ALL为默认值,DISTINCT指去掉重复值,COUNT函数用于计算时忽略NULL值。数据库原理与应用教程 (Oracle 12c 版)547.4 在在PL/SQL中的数据查询语言中的数据查询语言【例7.20】求学生的总人数。SELECT COUNT(*)AS 总人数 FROM student;该语句采用COUNT(*)计算总行数,总人数与总行数一致。数据库原理与应用教程 (Oracle 12c 版)查询结果:查询结果:总人数 -6 557.4 在在PL/SQL中的数据查询语言中的数据查询语言【例
49、7.21】查询201836班学生的总人数。SELECT COUNT(*)AS 总人数 FROM student WHERE sclass=201836;该语句采用COUNT(*)计算总人数,并用WHERE子句指定的条件进行限定为201836。数据库原理与应用教程 (Oracle 12c 版)查询结果:查询结果:总人数 -3567.4 在在PL/SQL中的数据查询语言中的数据查询语言(2)SUM和AVG函数SUM函数用于求出一组数据的总和,AVG函数用于求出一组数据的平均值,这两个函数只能针对数值类型的数据。语法格式:语法格式:SUM/AVG(ALL|DISTINCT )其中,ALL表示对所有值
50、进行计算,ALL为默认值,DISTINCT指去掉重复值,SUM/AVG函数用于计算时忽略NULL值。数据库原理与应用教程 (Oracle 12c 版)577.4 在在PL/SQL中的数据查询语言中的数据查询语言【例7.22】查询1201课程总分。SELECT SUM(stockqt)AS课程1201总分 FROM score WHERE cno=1201;该语句采用SUM()计算课程总分,并用WHERE子句指定的条件进行限定为1201课程。数据库原理与应用教程 (Oracle 12c 版)查询结果:查询结果:课程1201总分-509587.4 在在PL/SQL中的数据查询语言中的数据查询语言(
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。