1、 2.DatabaseDB 3.Database Management SystemDBMS 4.database systemDBS数据库管理员(database administrator,简称DBA)。5.Data Model数据模型是用来描述数据的一组概念和定义。一般来说,数据的描述包括两个方面:(1)数据的静态特性它包括数据的基本结构、数据间的联系和数据中的约束。(2)数据的动态特性它指定义在数据上的操作。如文件系统。数据模型要面向现实世界,面向用户。数据模型要面向实现,面向计算机。1)conceptual data model如ER模型、面向对象数据模型等。2)logical da
2、ta model如关系数据模型、层次模型、网状模型等。3)physical data model概念数据模型只用于数据库的设计,逻辑数据模型和物理数据模型用于DBMS的实现。6.Data Schematype:型是该数据所属数据类型的说明。v a l u e:值 是 型 的 一 个 实 例(i n s t a n c e 或occurrence)。对某一类数据的结构、联系和约束的描述是型的 描 述,型 的 描 述 称 为 数 据 模 式(D a t a Schema)。在同一数据模式下,可以有很多的值,即实例。例如,学生记录可以定义为图1-3(a)的形式,这是数据模式。而图1-3(b)是其一个
3、实例。数据模型是描述数据的手段而数据模式是用给定数据模型对具体数据的描述。美国国家标准协会(ANSI)的ANSIX3SPARC报告把数据模式分为三级(见图1-4)。1)conceptual schema/logical schema 2)external schema 3)internal schema 7.Database Instance数据模式是相对稳定的,而实例是相对变动的。数据模式反映一个单位的各种事物的结构、属性、联系和约束,实质上是用数据模型对一个单位的模拟。而实例反映数据库的某一时刻的状态,也就是这一单位在此时的状态。1.1.2数据库技术的产生与发展数据库技术的产生与发展 1.
4、人工管理阶段 人工管理数据具有如下特点:1)数据不保存。2)数据需要由应用程序自己管理,没有相应的软件系统负责数据的管理工作。3)数据不共享。4)数据不具有独立性。人工管理阶段应用程序与数据之间的对应关系可用图l-3表示。2.文件系统阶段用文件系统管理数据具有如下特点:1)数据可以长期保存。2)由专门的软件即文件系统进行数据管理。3)数据共享性差。4)数据独立性低。文件系统阶段应用程序与数据之间的关系如图1-4所示。3.数据库系统阶段用数据库系统来管理数据具有如下特点:1)数据结构化学生人事记录学号姓名性别系别年龄政治面貌家庭出身籍贯家庭成员奖惩情况图1-5 2)数据的共享性好,冗余度低 3)
5、数据独立性高 4)数据由DBMS统一管理和控制 l数据的安全性(security)l数据的完整性(integrity)l 并发(concurrency)控制 l数据库恢复(recovery)量大 持久 共享 1.1.3数据库技术的研究领域数据库技术的研究领域 1.数据库管理系统软件的研制 2.数据库设计 3.数据库理论1.2数据库工程与应用数据库工程与应用 1.2.1数据库设计的目标与特点数据库设计的目标与特点图1-101.2.2数据库设计方法数据库设计方法新奥尔良方法:需求分析(分析用户要求)、概念设计(信息分析和定义)、逻辑设计(设计实现)和物理设计(物理数据库设计)。SBYao:需求分析
6、、模式构成、模式汇总、模式重构、模式分析和物理数据库设计。IRPalmer则主张把数据库设计当成一步接一步的过程,并采用一些辅助手段实现每一过程。此外,基于ER模型的数据库设计方法,基于3NF(第三范式)的设计方法,基于抽象语法规范的设计方法等。规范设计法在具体使用中又可以分为两类:手工设计和计算机辅助数据库设计。ORACLEDesigner20001.2.3数据库设计步骤数据库设计步骤1.需求分析2.概念结构设计3.逻辑结构设计图1-114.数据库物理设计5.数据库实施6.数据库运行和维护在数据库设计过程中必须注意以下问题。1.数据库设计过程中要注意充分调动用户的积极性。2.应用环境的改变、
7、新技术的出现等都会导致应用需求的变化,因此设计人员在设计数据库时必须充分考虑到系统的可扩充性,使设计易于变动。3.系统的可扩充性最终都是有一定限度的。1.2.4Database Application各种用户的数据视图DBA主要职责包括:1.设计与定义数据库系统2.帮助最终用户使用数据库系统3.监督与控制数据库系统的使用和运行4.改进和重组数据库系统,调优数据库系统的性能5.转储与恢复数据库6.重构数据库 第二章第二章Data Model数据模型应满足三方面要求:一是能比较真实地模拟现实世界;二是容易为人所理解;三是便于在计算机上实现。两类:概念模型也称信息模型,数据模型包括网状模型、层次模型
8、、关系模型。2.1数据模型的要素数据模型的要素 2.1.1数据结构数据结构 2.1.2数据操作数据操作 2.1.3数据的约束条件数据的约束条件2.2概念模型概念模型E-RDataModel2.2.1ConceptsE-R数据模型(Entity-Relationship Data Model)EER数据模型(Extended Entity-Relationship Data Model)1实体(entity)、实体集(entity set)entity set与entity是型(type)与值(value)的关系(类似于前述data schema与database instance)2属性(at
9、tribute)值集(value set)实体键(entity key)实体主键(entity primary key)3联系(relationship)基数比约束(基数比约束(cardinalityratioconstraint)参与约束(参与约束(participationconstraint):部分参与、):部分参与、全参与全参与结构约束(结构约束(structuralconstraint)两个实体之间的联系可以分为三类:l一对一联系(1:1)l一对多联系(1:m)l多对多联系(m:n)所有(所有(ownershipownership)关系)关系弱实体(弱实体(weak entitywe
10、ak entity)2.2.2E-R diagram用E-R数据模型对某一单位进行模拟,可以得到ER数据模式,ER数据模式可以ER图来直观地表示。entity:weak entity:relationship:attribute:示例:教职工研究生班级职工编号姓名出生年月职称是否博导是否硕导学号姓名出生年月学位类型是否在职课程课程号名称开课学期学时上课地点学分班级号信箱教职工班级研究生课程班主任C_G导师任课可担任选课MN1NNNMMNMMN止起时间止起时间类型性质成绩类型类型专业方向说明:1学位类型:硕士/博士2导师类型:主要指导老师、协助指导3研究生可能换导师,换专业、方向4选课性质:学位
11、课/非学位课5任课类型:主讲/辅讲6可担任描述有哪些老师可以上哪些课7任课是指目前该课程的任课老师8开课学期:春/秋季9上课地点:目前该课程的上课教室问题:1课性质属性为什么不属于课程实体,而属于选课联系?2专业、方向可不可以属于研究生?2.2.3EER data model1 特 殊 化(s p e c i a l i z a t i o n)和 普 遍 化(generalization)全特殊化(total specialization)/部分特殊化(partial specialization)不相交特殊化(disjoint specialization)/重叠特殊化(overlappi
12、ng specialization)2聚集(aggregation)3范畴(category)2.3HierarchyDataModel 2.3.1层次数据模型的数据结构层次数据模型的数据结构 1层次模型的基本结构图TS数据模式图TS数据模式的一个值2多对多联系在层次模型中的表示2.3.2层次数据模型的操纵与完整性约束层次数据模型的操纵与完整性约束2.3.3层次数据模型的存储结构层次数据模型的存储结构2.3.4层次数据模型的优缺点层次数据模型的优缺点层次数据模型的优点主要有:l层次数据模型本身比较简单,只需很少几条命令就能操纵数据库,比较容易使用。l对于实体间联系是固定的,且预先定义好的应用系
13、统,采用层次模型来实现,其性能优于关系模型,不次于网状模型。l层次数据模型提供了良好的完整性支持。层次数据模型的缺点主要有:l现实世界中很多联系是非层次性的,如多对多联系、一个结点具有多个双亲等,层次模型表示这类联系的方法很笨拙,只能通过引入冗余数据(易产生不一致性)或创建非自然的数据组织(引入虚拟结点)来解决。l对插入和删除操作的限制比较多。l查询子女结点必须通过双亲结点。l由于结构严密,层次命令趋于程序化。2.4网状数据模型网状数据模型 2.4.1网状数据模型的数据结构网状数据模型的数据结构2.4.2网状数据模型的操纵与完整性约束网状数据模型的操纵与完整性约束2.4.3网状数据模型的存储结
14、构网状数据模型的存储结构2.4.4网状数据模型的优缺点网状数据模型的优缺点网状数据模型的优点主要有:l能够更为直接地描述现实世界,如一个结点可以有多个双亲、允许结点之间为多对多的联系等。l具有良好的性能,存取效率较高。网状数据模型的缺点主要有:l其DDL语言极其复杂。l数据独立性较差。由于实体问的联系本质上是通过存取路径指示的,因此应用程序在访问数据时要指定存取路径。2.5RelationDataModel 2.5.1Concepts 1.Attribute and DomainDomain:第一范式1NF(first nomal form)atomic data非第一范式(Non-First
15、 Nomal Form)NF2空值:NULL 2.relation and tuple设有一命名为R的关系,它有属性A1、A2、An,其对应的城分别为Dl、D2、Dn则关系R可表示为:R(D1/Al,D2/A2,Dn/An)或 R(A1,A2,An)或 R(A1A2An)R.A1表示关系R的属性A1。degree(arity):nR的值:r r(R)r=t1,t2,tmt=,viDi,1in笛卡尔乘积 A B ABDEFGDEFG125612563478127890=1290345634783490关系模式:SUDENT(姓名,学号,性别,出生年份籍贯,系别,入学年份)投影:RX tX STU
16、DENT姓名,性别3.key定义:定义:如果关系的某一属性或属性组的值唯一地决定其他所有属性的值,也就是唯一地决定一个元组,而其任何真子集无此性质,则这个属性或属性组称为该关系的候选键(candidate key),或简称为键。superkey primary keyprimary key alternate key all key(SUPPLY(供应商,零件名,工程名)prime attribute non-prime attributeforeign keyCOURSE(课程名,课程号,学分,开课时间,先修课程号)GRADE(学号,课程号,成绩)2.5.2ConstraintR(D1/Al
17、,D2/A2,Dn/An)1.Domain integrity constraint2.Entity integrity constraint3.Referential integrity constraint4.General integrity constraint2.5.3Operationrelational algebra operations1.Select operation()2.Project operation()性别,籍贯、出生年份(STUDENT)若包含则:(R)=(R)姓名(性别=女(STUDENT)3.Set operationABA-(A-B)union comp
18、atibility课程号(COURSE)-先修课程号(COURSE)系别=计算机系(STUDENT)系别=电子系(STUDENT)RS=|tR AND gS4Join operationR S=(RS)连接条件:ANDANDAND 连接:AiBj等连接(equijoin)自然连接(natural join)例:GRADE GRADE.课程号=COURSE.课程号(课程名,课程号,学分(COURSE)关系代数操作集,-,是完备的操作集。,-,relationally complete5.Outer join operation6.Outer union operation2.5.4Relatio
19、nal Calculus1.Tuple Relational Calculus2.Domain Relational Calculus 第三章第三章Database Language SQL结构化查询语言结构化查询语言(structured query language(structured query language,简,简称称SQL)SQL)3.1IntroductionSQLSQL语言是语言是19741974年由年由BoyceBoyce和和ChamberlinChamberlin提出的。提出的。19751975年至年至19791979年年IBM System RIBM System R
20、实现了这种语言。实现了这种语言。19861986年年1010月月 美国国家标准局美国国家标准局(简称简称ANSI)SQL-86ANSI)SQL-8619871987年国际标准化组织(简称年国际标准化组织(简称ISOISO)也通过了这)也通过了这一标准。一标准。ANSI 1989ANSI 1989年第二次公布年第二次公布SQLSQL标准标准(SQL-89)(SQL-89)19921992年年 SQL-92SQL-92标准标准目前目前ANSIANSI正在酝酿新的正在酝酿新的SQLSQL标准:标准:SQL3SQL3。现在现在SQLSQL已被重新解释成为:已被重新解释成为:Standard Query
21、 Standard Query LanguageLanguageSQLSQL按其功能可分为四大部分:按其功能可分为四大部分:1.1.数据定义语言数据定义语言(Data Definition Language(Data Definition Language,简称,简称DDL)DDL)2.2.查询语言查询语言(Query Language(Query Language,简称,简称QL)QL)3.3.数据操纵语言数据操纵语言(Data Manipulation Language(Data Manipulation Language,简称简称DML)DML)4.4.数据控制语言数据控制语言(Data
22、 Control Language(Data Control Language,简称,简称DCL)DCL)3.1.1SQL的特点的特点1.1.综合统一综合统一2.2.高度非过程化高度非过程化3.3.面向集合的操作方式面向集合的操作方式4.4.以同一种语法结构提供两种使用方式以同一种语法结构提供两种使用方式5.5.语言简洁,易学易用语言简洁,易学易用表表3-1 SQL3-1 SQL语言的动词语言的动词3.1.2SQL语言的基本概念语言的基本概念3.2数据定义数据定义表表3-2 SQL3-2 SQL的数据定义语句的数据定义语句 3.2.1定义、删除与修改基表定义、删除与修改基表 1.1.定义基表定
23、义基表CREATE TABLE CREATE TABLE 表名表名 (列名数据类型列名数据类型 列级完整件约束条件列级完整件约束条件,列名数据类型列名数据类型 列级完整性约束条件列级完整性约束条件 表级完整性约束条件表级完整性约束条件););列级完整性约束条件格式:列级完整性约束条件格式:NOT NULL UNIQUE DEFAULT NOT NULL UNIQUE DEFAULT 字值字值|USER|NULL|USER|NULL表级完整性约束条件有三个任选项。用于定义主表级完整性约束条件有三个任选项。用于定义主键的键的PRIMARY KEYPRIMARY KEY子句,用于定义外键的子句,用于
24、定义外键的FOREIGN KEYFOREIGN KEY子句和用于定义列值限制条件的子句和用于定义列值限制条件的CHECKCHECK子句。格式:子句。格式:,PRIMARY KEY PRIMARY KEY(),FOREIGN KEY FOREIGN KEY 外键名外键名 ()REFERENCES REFERENCES ON DELETE ON DELETE RESTRICT RESTRICT|CASCADE|SET NULL|CASCADE|SET NULL,CHECK CHECK(条件)(条件)IBM DB2 SQLIBM DB2 SQL主要支持以下数据类型:主要支持以下数据类型:SMALLI
25、NT SMALLINT 半字长二进制整数。半字长二进制整数。INTEGERINTEGER或或INT INT 全字长二进制整数。全字长二进制整数。DECIMAL(p,q)DECIMAL(p,q)或或DEC(p,q)DEC(p,q)压缩十进制数,共压缩十进制数,共p p位,其中小数点后有位,其中小数点后有q q位。位。0qp15,q0qp15,q0 0时可以时可以省略。省略。FLOAT FLOAT 双字长浮点数。双字长浮点数。CHARTER(n)CHARTER(n)或或CHAR(n)CHAR(n)长度为长度为n n的定长字符串。的定长字符串。VARCHAR(n)VARCHAR(n)最大长度为最大长
26、度为n n的变长字符串。的变长字符串。GRAPHIC(n)GRAPHIC(n)长度为长度为n n的定长图形字符串。的定长图形字符串。VARGRAPHIC(n)VARGRAPHIC(n)最大长度为最大长度为n n的变长图形字符的变长图形字符串。串。DATE DATE 日期型,格式为日期型,格式为YYYYMMDDYYYYMMDD。TIME TIME 时间型,格式为时间型,格式为HH.MM.SSHH.MM.SS。TIMESTAMP TIMESTAMP 日期加时间。日期加时间。例例1 1 建立建立Student(Student(学生学生)、CourseCourse(课程)、(课程)、SCSC(选课)表
27、。(选课)表。1 1“学生学生”表表studentstudent由学号由学号(Sno)(Sno)、姓名、姓名(Sname)(Sname)、性别性别(Ssex)(Ssex)、年龄、年龄SageSage、所在系、所在系(Sdept)5(Sdept)5个个属性组成,可记为属性组成,可记为Student(SnoStudent(Sno,SnameSname,SsexSsex,SageSage,Sdept)Sdept)其中其中snosno为主键。为主键。2 2 “课程课程”表表coursecourse由课程号由课程号(Cno)(Cno)、课程名、课程名(Cname)(Cname)、先修课号、先修课号(Cp
28、no)(Cpno)、学分、学分(Ccredit)4(Ccredit)4个属个属性组成,可记为:性组成,可记为:Course(CnoCourse(Cno,CnameCname,CpnoCpno,Ccredit)Ccredit)其中其中CnoCno为主键。为主键。3 3“学生选课学生选课”表表SCSC由学号由学号(Sno)(Sno)、课程号、课程号(Cno)(Cno)、成绩成绩(Grade)3(Grade)3个属性组成,其中个属性组成,其中(Sno(Sno,Cno)Cno)为主为主键。键。CREATE TABLE StudentCREATE TABLE Student (Sno CHAR(5)NO
29、T NULL UNIQUE,(Sno CHAR(5)NOT NULL UNIQUE,Sname VARCHAR(20)NOT NULL,Sname VARCHAR(20)NOT NULL,Ssex CHAR(1)Ssex CHAR(1),Sage INT,Sage INT,Sdept CHAR(15),Sdept CHAR(15),PRIMARY KEY(Sno)PRIMARY KEY(Sno);CREATE TABLE CourseCREATE TABLE Course (Cno CHAR(1)NOT NULL,(Cno CHAR(1)NOT NULL,Cname VARCHAR(20),C
30、name VARCHAR(20),Cpno CHAR(1)Cpno CHAR(1)Ccredit DEC(2,1),Ccredit DEC(2,1),PRIMARY KEY(Cno),PRIMARY KEY(Cno),FOREIGN KEY(Cpno)REFERENCES Course FOREIGN KEY(Cpno)REFERENCES Course ON DELETE RESTRICT)ON DELETE RESTRICT);CREATE TABLE SCCREATE TABLE SC (Sno CHAR(5)NOT NULL,(Sno CHAR(5)NOT NULL,Cno CHAR(
31、1)NOT NULL,Cno CHAR(1)NOT NULL,Grade DEC(4,1)DEFAULT NULL,Grade DEC(4,1)DEFAULT NULL,PRIMARY KEY(Sno,Cno),PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno)REFERENCES Student FOREIGN KEY(Sno)REFERENCES Student ON DELETE CASCADE,ON DELETE CASCADE,FOREIGN KEY(Cno)REFERENCES Course FOREIGN KEY(Cno)REFERENCES Course
32、 ON DELETE RESTRICT);ON DELETE RESTRICT);2.2.修改基表修改基表 ALTER TABLEALTER TABLE表名表名 ADDADD新列名数据类型新列名数据类型 完整性约束完整性约束 DROP DROP完整性约束名完整性约束名 MODIFY MODIFY列名数据类型列名数据类型;例例2 2 向向studentstudent表增加表增加“入学时间入学时间”列,其数据类型列,其数据类型为日期型。为日期型。ALTER TABLE Student ADD Scome DATEALTER TABLE Student ADD Scome DATE;例例3 3 将年
33、龄的数据类型改为半字长整数。将年龄的数据类型改为半字长整数。ALTER TABLE Student MODIFY Sage ALTER TABLE Student MODIFY Sage SMALLINT;SMALLINT;例例4 4 删除(撤消)删除(撤消)StudentStudent表主键定义。表主键定义。ALTER TABLE Student DROP PRIMARY KEYALTER TABLE Student DROP PRIMARY KEY;3.3.删除基表删除基表DROP TABLE DROP TABLE 表名;表名;例例5 5删除删除StudentStudent表。表。DROP
34、 TABLE StudentDROP TABLE Student;3.2.2建立与删除索引建立与删除索引 1.1.建立索引建立索引CREATE UNIQUE CLUSTER INDEX CREATE UNIQUE CLUSTER INDEX ON ON(次序次序 ,次序次序);排列次序,包括排列次序,包括ASC(ASC(升序升序)和和DESC(DESC(降序降序)两种,两种,缺省值为缺省值为ASCASC。CREATE CLUSTER INDEX Stusname ON CREATE CLUSTER INDEX Stusname ON Student(Sname);Student(Sname);
35、例例6 6 为学生为学生课程数据库中的课程数据库中的StudentStudent,CourseCourse,SC 3SC 3个表建立索引。其中个表建立索引。其中StudentStudent表按学号升序建表按学号升序建立唯一索引,立唯一索引,coursecourse表按课程号升序建立唯一索表按课程号升序建立唯一索引,引,SCSC表按学号升序和课程号降序建唯一索引。表按学号升序和课程号降序建唯一索引。CREATE UNIQUE INDEX Stusno ON CREATE UNIQUE INDEX Stusno ON Student(Sno);Student(Sno);CREATE UNIQUE
36、INDEX Coucno ON CREATE UNIQUE INDEX Coucno ON Course(Cno);Course(Cno);CREATE UNIQUE INDEX SCno ON SC(Sno CREATE UNIQUE INDEX SCno ON SC(Sno ASCASC,Cno DESC);Cno DESC);2.2.删除索引删除索引DROP INDEXDROP INDEX索引名;索引名;例例7 7 删除删除StudentStudent表的表的StusnameStusname索引。索引。DROP INDEX Stusname;DROP INDEX Stusname;3.3
37、查询查询SELECT ALL|DISTINCT SELECT ALL|DISTINCT 目标列表达式目标列表达式,目标列表达式目标列表达式 FROM FROM 表名或视图名表名或视图名,表名或视图名,表名或视图名 WHEREWHERE条件表达式条件表达式 GROUP BYGROUP BY列名列名1 1HAVINGHAVING条件表达式条件表达式 ORDER BYORDER BY列名列名2 2ASC|DESCASC|DESC;3.3.1单表查询单表查询1.1.选择表中的若干列选择表中的若干列1)1)查询指定列查询指定列例例1 1 查询全体学生的学号与姓名。查询全体学生的学号与姓名。SELECT
38、SnoSELECT Sno,SnameSnameFROM Student;FROM Student;例例2 2 查询全体学生的姓名、学号、所在系。查询全体学生的姓名、学号、所在系。SELECT SnameSELECT Sname,SnoSno,SdeptSdeptFROM StudentFROM Student;2)2)查询全部列查询全部列例例3 3 查询全体学生的详细记录查询全体学生的详细记录SELECT SELECT*FROM StudentFROM Student;3)3)查询经过计算的值查询经过计算的值例例4 4 查询全体学生的姓名及其出生年份。查询全体学生的姓名及其出生年份。SELE
39、CT SnameSELECT Sname,2004-Sage2004-SageFROM StudentFROM Student;例例5 5 查询全体学生的姓名、出生年份和所在系,查询全体学生的姓名、出生年份和所在系,要求用小写字母表示所在系名要求用小写字母表示所在系名SELECT SnameSELECT Sname,Year of BirthYear of Birth:,2004-2004-SageSage,ISLOWER(Sdept)ISLOWER(Sdept)FROM Student;FROM Student;SELECT Sname NAMESELECT Sname NAME,Year
40、of BirthYear of Birth:B I R T HB I R T H,2 0 0 4-S a g c B I R T H D A Y2 0 0 4-S a g c B I R T H D A Y,ISLOWER(Sdept)DEPARTMENTISLOWER(Sdept)DEPARTMENTFROM StudentFROM Student;结果为:结果为:NAME BIRTH BIRTHDAY DEPARTMENTNAME BIRTH BIRTHDAY DEPARTMENT 李勇李勇 Year of BirthYear of Birth:1976 cs1976 cs 刘晨刘晨 Ye
41、ar of BirthYear of Birth:1977 if1977 if 王名王名 Year of BirthYear of Birth:1978 ma1978 ma 张立张立 Year of BirthYear of Birth:1978 if1978 if 2.2.选择表中的若干元组选择表中的若干元组 1)1)消除取值重复的行消除取值重复的行例例6 6 查询所有选修过课的学生的学号。查询所有选修过课的学生的学号。SELECT SnoSELECT SnoFROM SCFROM SC;假设假设SCSC表中有下列数据:表中有下列数据:Sno Cno GradeSno Cno Grade95
42、001 1 9295001 1 9295001 2 8595001 2 8595001 3 8895001 3 8895002 2 9095002 2 9095002 3 8095002 3 80执行上面的执行上面的SELECTSELECT语句后,结果为:语句后,结果为:SnoSno95001950019500195001950019500195002950029500295002SELECT DISTINCT SnoSELECT DISTINCT SnoFROM SCFROM SC;执行结果为:执行结果为:SnoSno95001950019500295002 SELECT SnoSELECT
43、 SnoFROM SCFROM SC;与与SELECT ALL SnoSELECT ALL SnoFROM SCFROM SC;完全等价。完全等价。2)2)查询满足条件的元组查询满足条件的元组表表3-5 3-5 常用的查询条件常用的查询条件比较大小比较大小 等于等于 大于大于 小于小于 大于等于大于等于 小于等于小于等于!或!或 不等于不等于有些产品中还包括:有些产品中还包括:!不大于不大于!不小于不小于逻辑运算符逻辑运算符NOTNOT可与比较运算符同用,对条件求可与比较运算符同用,对条件求非。非。例例7 7 查计算机系全体学生的名单。查计算机系全体学生的名单。SELECT SnameSELE
44、CT SnameFROM StudentFROM StudentWHERE SdeptWHERE SdeptCSCS;例例8 8 查所有年龄在查所有年龄在2020岁以下的学生姓名及其年龄。岁以下的学生姓名及其年龄。SELECT SnameSELECT Sname,SageSageFROM studentFROM studentWHERE SageWHERE Sage2020;或或SELECT SnameSELECT Sname,SageSageFROM studentFROM studentWHERE NOT Sage=20WHERE NOT Sage=20;例例9 9 查考试成绩有不及格的学
45、生的学号。查考试成绩有不及格的学生的学号。SELECT DISTINCT SnoSELECT DISTINCT SnoFROM SCFROM SCWHERE GradeWHERE Grade6060;确定范围确定范围谓词谓词BETWEENBETWEENANDAND和和NOT NOT BETWEENBETWEENANDAND可以用来查找属性可以用来查找属性值在值在(或不在或不在)指定范围内的元组,其中指定范围内的元组,其中BETWEENBETWEEN后是范围的下限后是范围的下限(即低值即低值),ANDAND后是范围的上限后是范围的上限(即高值即高值)。例例10 10 查询年龄在查询年龄在2020
46、至至2323岁之间的学生的姓名、岁之间的学生的姓名、系别和年龄。系别和年龄。SELECT SnameSELECT Sname,SdeptSdept,SageSageFROM StudentFROM StudentWHERE Sage BETWEEN 20 AND 23WHERE Sage BETWEEN 20 AND 23;与与BETWEENBETWEENANDAND相对的谓词是相对的谓词是NOT BETWEENNOT BETWEENANDAND。例例11 11 查询年龄不在查询年龄不在2020至至2323岁之间的学生姓名、岁之间的学生姓名、系别和年龄。系别和年龄。SELECT SnameSE
47、LECT Sname,SdeptSdept,SageSageFROM StudentFROM StudentWHERE Sage NOT BETWEEN 20 AND 23WHERE Sage NOT BETWEEN 20 AND 23;确定集合确定集合谓词谓词ININ可以用来查找属性值属于指定集合的元组。可以用来查找属性值属于指定集合的元组。例例12 12 查信息系查信息系(IS)(IS)、数学系、数学系(MA)(MA)和计算机科学系和计算机科学系(CS)(CS)的学生的姓名和性别。的学生的姓名和性别。SELECT SnameSELECT SnameSsexSsexFROM StudentF
48、ROM StudentWHERE Sdept IN(WHERE Sdept IN(ISIS,MAMA,CSCS);与与ININ相对的谓词是相对的谓词是NOT INNOT IN,用于查找属性值不属,用于查找属性值不属于指定集合的元组。于指定集合的元组。例例13 13 查既不是信息系、数学系,也不是计算机科查既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。学系的学生的姓名和性别。SELECT SnameSELECT SnameSsexSsexFROM StudentFROM StudentWHERE Sdept NOT IN(WHERE Sdept NOT IN(ISIS,MAMA,C
49、SCS);字符匹配字符匹配谓词谓词LIKELIKE可以用来进行字符串的匹配。其一般语可以用来进行字符串的匹配。其一般语法格式如下:法格式如下:NOT LIKE NOT LIKE 匹配串匹配串 其含义是查找指定的属性列值与匹配串相匹其含义是查找指定的属性列值与匹配串相匹配的元组,匹配串可以是一个完整的字符串,配的元组,匹配串可以是一个完整的字符串,也可以含有通配符和也可以含有通配符和_ _。其中:。其中:(百分号百分号)代表任意长度代表任意长度(长度可以为长度可以为0)0)的字符串。的字符串。例如例如a%ba%b表示以表示以a a开头,以开头,以b b结尾的任意长度的字结尾的任意长度的字符串,符
50、串,acb,adefb,abacb,adefb,ab等都满足该匹配串。等都满足该匹配串。_(_(下划线下划线)代表任意单个宁符。例如代表任意单个宁符。例如a_ba_b表示以表示以a a开头开头,以以b b结尾,长度为结尾,长度为3 3的字符串,的字符串,acb,adbacb,adb等都等都满足该匹配串。满足该匹配串。例例14 14 查询学号为查询学号为9500195001的学生的详细情况的学生的详细情况SELECT SELECT*FROM StudentFROM StudentWHERE Sno LIKE WHERE Sno LIKE 9500l9500l;该语句实际上与下面的语句完全等价:该