数据库系统概论第四 知识点整理.docx
数据库系统概论 第四 知识点整理第一章:绪论 1、数据库系统相关概念 1、数据:描述事物的符号记录,包括数据的表现形式和数据解释两个部分。如数字、音频、图形、文本、图像、语言、视频等多种表现形式。经过数字化处理后存入计算机。 数据是信息的符号表示或载体。信息是数据的内涵是对数据的语义解释。 2、数据库:长期存储在计算机内、有组织、可共享的大量数据的集合。数据库中的数据按照一定的数据模型组织、描述和存储,具有娇小的冗余度、交稿的数据独立性和易扩展性,并可为各种用户共享。 3、数据库管理系统:位于用户和操作系统间的数据管理系统的一层数据管理软件。用途:科学地组织和存储数据,高效地获取和维护数据。包括数据定义功能,数据组织、存储和管理,数据库的事物管理和运行管理,数据库的建立和维护功能,其他功能。 4、数据库系统:在计算机系统中引入数据库后的系统,一般由数据库。数据库管理系统、应用系统、数据库管理员构成。目的:存储信息并支持用户检索和更新所需的信息。 2、数据模型概念,作用及其3要素 模型:对现实世界中某个对象特征的模拟和抽象。 数据模型:是数据库中用来对现实世界数据特征的抽象的工具,是数据库中用于提供信息表示和操作手段的形式架构。 三要素: 数据结构:是所研究的对象类型的集合,是对系统静态特性的描述。 数据操作:对数据库中各种对象的实例所允许进行的操作的集合,包括操作及有关的操作规则,是对系统动态特性的描述。 数据的约束条件:是完整性规则的集合。完整性规则是给订的数据库模型中数据及其联系所具有的制约和依存规则,用一限定符合数据模型的数据库状态及其变化,以保证数据库的正确、有效、相容。 3、概念模型的作用? 概念模型实际上是显示世界到机器世界的一个中间层次。概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流所试用的语言。 4、概念模型中ER图的设计 E-R图提供了表示实体型、属性和联系的方法: 实体型:用矩形表示,矩形框内写明实体名。 属性:用椭圆形表示,并用无向边将其与相应的实体型连接起来。 5、数据库系统三级模式结构和二级映像功能,这种结构的优点? 三级模式结构: 模式:数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。一个数据库只有一个模式。 模式的地位:是数据库系统模式结构的中间层,与数据的物理存储细节和硬件环境无关,与具体的应用程序、开发工具及高级程序设计语言无关。 模式定义的内容:数据的逻辑结构,数据之间的联系,数据有关的安全性、完整性要求 外模式:数据库用户能够看见和使用的局部数据库和逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的系统的逻辑表示。一个数据库可以有多个外模式。 外模式的地位:介于模式与应用之间 模式与外模式的关系:一对多。外模式通常是模式的子集。一个数据库可以有多个外模式。反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求。对模式中同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同。 外模式与应用的关系:一对多。同一外模式也可以为某一用户的多个应用系统所使用 但一个应用程序只能使用一个外模式 内模式:存储模式或内视图)是数据物理结构和存储方式的描述,是数据在数据库内部实际存储的表示方式: 记录的存储方式,索引的组织方式,数据是否压缩存储,数据是否加密。数据存储记录结构的规定,一个数据库只有一个内模式 三级模式的优点: 保证数据的独立性 简化用户窗口 有利于数据共享 利于数据的安全保密 数据存储由DBMS管理 二级映像功能: 外模式/模式映像 定义外模式(局部逻辑结构)与模式(全局逻辑结构)之间的对应关系,映象定义通常包含在各自外模式的描述中,每一个外模式,数据库系统都有一个外模式模式映象。 用途:保证数据的逻辑独立性 当模式改变时,数据库管理员修改有关的外模式模式映象,使外模式保持不变 应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。 模式/内模式映像 模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关。数据库中模式内模式映象是唯一的。该映象定义通常包含在模式描述中。 用途:保证数据的物理独立性 当数据库的存储结构改变了,数据库管理员修改模式内模式映象,使模式保持不变。应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。 优点: 保证了数据库外模式的稳定性。 从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改。 数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出去。 6、什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性? 为什么数据库系统具有数据与程序的独立性? 1、数据与程序的逻辑独立性:当模式改变时,数据库管理员修改有关的外模式模式映象,使外模式保持不变。从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。 2、数据与程序的物理独立性:当数据库的存储结构改变了,数据库管理员修改模式内模式映象,使模式保持不变。应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。 数据库管理系统在三级模式之间错提供的二层影响保证了数据系统中的数据具有较高的逻辑独立性和物理独立性。 第二章:关系数据库 1、关系模型的3个组成部分及各部分所包括的主要内容。 1、关系数据结构:描述现实世界的实体以及实体间的各种联系。只包含单一的数据结构关系。 2、关系操作 查询操作:选择、投影、连接、除、并、差、交、笛卡尔积等。 插入、删除、修改操作。 3、关系的完整性约束 实体完整性和参照完整性:关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持。 用户定义的完整性:应用领域需要遵循的约束条件,体现了具体领域中的语义约束。 2、关系数据结构的形式化定义 域:一组具有想通数据类型的值的集合。域中所包含的值的个数称为域的基数。 例:整数、实数等。 笛卡尔积:域上面的一个集合运算。给定一组域D1,D2Dn (可以是相同的域) D1,D2Dn的笛卡尔积为:D1×D2××Dn diÎDi,i1,2,n所有域的所有取值的一个组合。有序组的取值不能完全重复。 元组:笛卡尔积中每一个元素叫作一个n元组或简称元组(Tuple)(张清玫,计算机专业,李勇)、(张清玫,计算机专业,刘晨)等都是元组。 分量:笛卡尔积元素中的每一个值di叫作一个分量。张清玫、计算机专业、李勇、刘晨等都是分量。 基数:若Di为有限集, Di中的集合元素个数称为Di的基数,用mi表示,则D1×D2××Dn的基数M 为为所有域的基数的累乘之积。 例:A=a,b B=1,2,0 A与B的笛卡尔积=<a,0>,<a,1>,<a,2>,<b,0>,<b,1>,<b,2> B与A的笛卡尔积=<0,a>,<0,b>,<1,a>,<1,b>,<2,a>,<2,b> 期中<0,a>等都是元祖,a、b、0、1、2都是分量,基数M=2*3=6,一共有六个元组。 关系:是笛卡尔积的有限子集,无限关系在数据库系统中是无意义的。D1×D2××Dn的子集叫作在域D1,D2,Dn上的n元关系,表示为R R:关系名 n:关系的目或度 元组:关系中的每个元素是关系中的元组,通常用t表示。 单元关系与二元关系:当n=1时,称该关系为单元关系或一元关系;当n=2时,称该关系为二元关系 关系的表示:关系也是二维表,表的每行对应一个元组,表的每列对应一个域。 属性:由于笛卡尔积不满足交换律,即(d1,d2,dn)(d2 , d1 ,dn) 但关系满足交换律,即 (d1,d2,di ,dj , dn )= 解决方法:为关系的每个列附加一个属性名以取消关系元组的有序性;关系中不同列可以对应相同的域;为了加以区分,必须对每列起一个名字,称为属性;n目关系必有n个属性。 码: 候选码:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。 主属性:候选码的诸属性称为主属性,不包含在任何侯选码中的属性称为非主属性或非码属性。 超码:关系中能唯一标识元组的属性集,超码的任意超级仍是超码 候选码:任意真子集都不能成为超码的“最小”超码,即在候选码中,若要再删除属性,就不是超码了。 3、外码,主码,候选码的概念 候选码:若关系中的某一属性组的职能唯一地标识一个元组,则称该属性组为候选码。 主码:若一个关系有多个候选码,则选定期中一个为主码。 外部码:设F是基本关系R的一个或一组属性。但不是关系R的码,如果F与基本关系S的主码K想对应,则称F是基本关系R的外部码,简称外码。 4、关系的3类完整性约束概念 实体完整性:若属性A是基本关系R的主属性, A不能取空值。 参照完整性:若属性F是基本关系R的外码,它是基本关系S的主码K相对应,则对于R中每个元组在F上的值必须为:或者取空值;或者等于S中某个元组的主码值。 用户定义的完整性:针对某一具体关系数据库的约束条件。反映某一具体应用所设计的数据必须满足的语义要求。 5、关系操作的特点,关系代数中的各种运算 关系操作的特点是集合操作方式,即操作的对象和结果是集合。 关系代数: 1、并仍为n目关系,由属于R或属于S的元组组成。RS = t|t Î Rt ÎS 2、差仍为n目关系,由属于R而不属于S的所有元组组成。R -S = t|tÎRtÎS 3、交仍为n目关系,由既属于R又属于S的元组组成。RS = t|t Î Rt ÎS RS = R (R-S) 4、笛卡尔积R: n目关系,k1个元组;S: m目关系,k2个元组;R×S。 5、R,tÎR,tAi 设关系模式为R(A1,A2,An),它的一个关系设为R,tÎR表示t是R的一个元组,tAi则表示元组t中相应于属性Ai的一个分量。 6、A,tA, A 若A=Ai1,Ai2,Aik,其中Ai1,Ai2,Aik是A1,A2,An中的一部分,则A称为属性列或属性组;tA=(tAi1,tAi2,tAik)表示元组t在属性列A上诸分量的集合;A则表示A1,A2,An中去掉Ai1,Ai2,Aik后剩余的属性组。 7、tr ts R为n目关系,S为m目关系。tr ÎR,tsÎS, tr ts称为元组的连接。tr ts是一个n + m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。 8、象集Zx 给定一个关系R,X和Z为属性组。当tX=x时,x在R中的象集为:Zx=tZ|t ÎR,tX=x。 它表示R中属性组X上的分量值为x的诸元组在Z上分量的集合 9、选择:选择又称为限制:对元组按照条件进行筛选。在关系R中选择满足给定条件的诸元组F(R) = t|tÎRF(t)= '真'。 10、投影:投影运算符的含义:从R中选择出若干属性列组成新的关系A(R) = tA | t ÎR A:R中的属性列 投影操作主要是从列的角度进行运算。但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组。 11、连接:连接也称为连接:两张表中的元组有条件的串接。 S = | tr Î Rts 从两个关系的笛卡尔积中选取属性间满足一定条件的元组R ÎStrAtsB A和B:分别为R和S上度数相等且可比的属性组 :比较运算符 连接运算从R和S的广义笛卡尔积R×S中选取在A属性组上的值与在B属性组上值满足比较关系的元组。 等值连接:为“”的连接运算称为等值连接。 从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为: R S = tr ts | tr ÎRts ÎStrA = tsB 自然连接是一种特殊的等值连接:两个关系中进行比较的分量必须是相同的属性组,在结果中把重复的属性列去掉。 自然连接的含义:R和S具有相同的属性组B。 RS = tr ts| tr ÎRts ÎStrB = tsB 外连接:如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接。 左外连接:如果只把左边关系R中要舍弃的元组保留就叫做左外连接(LEFT OUTER JOIN或LEFT JOIN)。 右外连接:如果只把右边关系S中要舍弃的元组保留就叫做右外连接(RIGHT OUTER JOIN或RIGHT JOIN)。 12、除÷ :给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组;R中的Y与S 中的Y可以有不同的属性名,但必须出自相同的域集;R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在 X 属性列上的投影: (若)元组在X上分量值x的象集Yx包含S在Y上投影的集合,记作: R÷S = tr X | tr Î RY (S) Î Yx Yx:x在R中的象集,x =trX 第三章:关系数据库标准语言SQL 1、SQL语言的特点 1、综合统一。 2、高度非过程化。 3、面向集合的操作方式。 4、以同一种语法结构提供多种使用方式 5、语言简洁、易学易用。 2、SQL语言的数据查询,数据定义,数据操纵功能,这些分别有哪些SQL语句? 1、数据定义:定义数据库中的基本对象、模式(架构)定义、表定义、视图和索引。 注意:SQL(Oracle除外)一般不提供修改视图定义和索引定义的操作,需要先删除再重建 模式: 定义模式:CREATE SCHEMA <模式名> AUTHORIZATION <用户名><表定义子句>|<视图定义子句>|<授权定义子句> 例:CREATE SCHEMA TEST AUTHORIZATION ZHANG CREATE TABLE TAB1(COL1 SMALLINT, COL2 INT,COL3 CHAR(20),COL4 NUMERIC(10,3),COL5 DECIMAL(5,2); 为用户ZHANG创建了一个模式TEST,并在其中定义了一个表TAB1。 删除模式:DROP SCHEMA <模式名> <CASCADE|RESTRICT> CASCADE(级联):删除模式的同时把该模式中所有的数据库对象全部删除 RESTRICT(限制);没有任何下属的对象时 才能执行。 表: 定义基本表:CREATE TABLE <表名> ; 列级完整性约束-涉及到该表的一个属性 § § § § § § § § § NOT NULL :非空值约束 UNIQUE:唯一性约束 PRIMARY KEY:主码约束 DEFAULT <默认值>:默认约束 Check < (逻辑表达式) >:核查约束,定义校验条件 NOT NULL :非空值约束 UNIQUE:唯一性约束 PRIMARY KEY:主码约束 DEFAULT <默认值>:默认约束 § Check < (逻辑表达式) >:核查约束,定义校验条件 表级完整性约束-涉及到该表的一个或多个属性。 § § § § § UNIQUE(属性列列表) :限定各列取值唯一 PRIMARY KEY (属性列列表) :指定主码 FOREIGN KEY (属性列列表) REFERENCES <表名> (属性列列表) Check(<逻辑表达式>) :检查约束 PRIMARY KEY与 UNIQUE的区别? 例:建立学生表Student,学号是主码,姓名取值唯一 CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY,/*主码*/ Sname CHAR(20) UNIQUE, /* Sname取唯一值*/ Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20); 数据类型 修改基本表:ALTER TABLE <表名> ADD <新列名> <数据类型> 完整性约束 DROP <列名> |<完整性约束名> ALTER COLUMN<列名> <数据类型> ; 例:向Student表增加入学时间列,其数据类型为日期型 ALTER TABLE Student ADD S_entrance DATE; 不论基本表中原来是否已有数据,新增加的列一律为空值 将年龄的数据类型由字符型改为整数 ALTER TABLE Student ALTER COLUMN Sage INT; 注:修改原有的列定义有可能会破坏已有数据 增加课程名称必须取唯一值的约束条件。 ALTER TABLE Course ADD UNIQUE(Cname); 直接删除属性列:(新标准) 例: ALTER TABLE Student Drop Sage; 删除基本表 :DROP TABLE <表名>RESTRICT| CASCADE; RESTRICT:(受限) 欲删除的基本表不能被其他表的约束所引用,如果存在依赖该表的对象,则此表不能被删除。 CASCADE:在删除基本表的同时,相关的依赖对象一起删除。 例:删除Student表 DROP TABLE Student CASCADE ; 基本表定义被删除,数据被删除;表上建立的索引、视图、触发器等一般也将被删除 。 索引: 建立索引的目的:加快查询速度。 DBA 或 表的属主;DBMS一般会自动建立以下约束列上的索引PRIMARY KEY UNIQUE 建立索引。 CREATE UNIQUE CLUSTER INDEX <索引名> ON <表名> (<列名><次序>,<列名><次序> ); 用<次序>指定索引值的排列次序,升序:ASC,降序:DESC。默认:ASC。 UNIQUE表明此索引的每一个索引值只对应唯一的数据记录 CLUSTER表示要建立的索引是聚簇索引。索引项顺序与表中记录的物理顺序一致。 聚簇索引 CLUSTER 例:CREATE CLUSTER INDEX Stusname ON Student(Sname); 在Student表的Sname列上建立一个聚簇索引,而 且Student表中的记录将按照Sname值的升序存放。 一个基本表上最多只能建立一个聚簇索引;在最经常查询的列上建立聚簇索引以提高查询效率;经常更新的列不宜建立聚簇索引。 唯一值索引 UNIQUE 例:为学生-课程数据库中的Student,Course,SC三个表建 立索引 CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC); 对于已含重复值的属性列不能建UNIQUE索引 。对某个列建立UNIQUE索引后,插入新记录时DBMS会自动检查新记录在该列上是否取了重复值。这相当于增加了一个UNIQUE约束。 删除索引 :DROP INDEX <索引名>; 删除索引时,系统会从数据字典中删去有关该索引的描述。 例: 删除Student表的Stusname索引:DROP INDEX Stusname 2、数据查询:基本格式 Select A1,A2,An From R1,R2,., Rm Where F 单表查询 选择表中的若干列 查询指定列 例;查询全体学生的学号与姓名 SELECT Sno,Sname FROM Student; 选出所有属性列:在SELECT关键字后面列出所有列名按用户指定顺序显示。 将<目标列表达式>指定为 *按关系模式中的属性顺序显示。 例:查询全体学生的详细记录 SELECT Sno,Sname,Ssex,Sdept , Sage FROM Student; 或 SELECT * FROM Student; P.S: SELECT子句的<目标列表达式>可以为: 算术表达式: 例:查全体学生的姓名及其出生年份 SELECT Sname,2011-Sage /*假定当年的年份为XX年*/ FROM Student; 输出结果: Sname 2011-Sage 李勇 1991 刘晨 1992 字符串常量、函数 例:查询全体学生的姓名、出生年份和所有系,要求用小写字母 表示所有系名 SELECT Sname,Year of Birth: ',2004-Sage,ISLOWER(Sdept) FROM Student; 输出结果: Sname 'Year of Birth:' 2004-Sage ISLOWER(Sdept) 李勇 Year of Birth: 1984 cs 刘晨 Year of Birth: 1985 is 列别名 SELECT Sname as NAME,'Year of Birth: ' as BIRTH, 2011-Sage as BIRTHDAY,LOWER(Sdept) as DEPARTMENT FROM Student; 输出结果: NAME BIRTH BIRTHDAY DEPARTMENT - - - - 李勇 Year of Birth: 1991 cs 刘晨 Year of Birth: 1992 is 选择表中的若干元组 消除重复性: 指定DISTINCT关键词,去掉表中重复的行 SELECT DISTINCT Sno FROM SC; 注意 DISTINCT短语的作用范围是所有目标列 错误的写法 SELECT DISTINCT Cno,DISTINCT Grade FROM SC; 正确的写法 SELECT DISTINCT Cno,Grade FROM SC; SELECT 子句缺省情况是保留重复元组(ALL), 例:查询选修了课程的学生学号。SELECT Sno FROM SC;等价于: SELECT ALL Sno FROM SC; WHERE子句常用的查询条件 使用比较运算符 或逻辑运算符NOT + 比较运算符 例:查询计算机科学系全体学生的名单 SELECT Sname FROM Student WHERE Sdept=CS; 例:查询所有年龄在20岁以下的学生姓名及其年龄 SELECT Sname,Sage FROM Student WHERE Sage < 20; /NOT Sage>=20 谓词: BETWEEN AND NOT BETWEEN AND 例;查询年龄在2023岁之间的学生的姓名、系别和年龄 SELECT Sname,Sdept,Sage FROM Student WHERE Sage BETWEEN 20 AND 23;/Sage>=20 and Sage<=23 例:查询年龄不在2023岁之间的学生姓名、系别和年龄 SELECT Sname,Sdept,Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23;/Sage<20 or Sage>23 IN <值表>, NOT IN <值表> 例:查询信息系、数学系和计算机科学系学生的姓名和性别 SELECT Sname,Ssex FROM Student WHERE Sdept IN ( 'IS','MA','CS' ); 例:查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别 SELECT Sname,Ssex FROM Student WHERE Sdept NOT IN ( 'IS','MA','CS' ); NOT LIKE <匹配串> ESCAPE <换码字符> 匹配串为固定字符串 例:查询学号为200215121的学生的详细情况。 SELECT * SELECT * FROM Student 等价于: FROM Student WHERE Sno LIKE 200215121'; WHERE Sno = ' 200215121 '; 匹配串为含通配符的字符串 %:代表任意长度的字符串 _:代表任意单个字符 字符串本身就含有 % 或 _ 时,在% 或 _ 之前加上转义符“”要使用ESCAPE <换码字符>将通配符转义为普通字符。如果 要作为一个普通字符,用连续两个 表示一个真正的。 例:查询以"DB_"开头,且倒数第3个字符为 i的课程的详细情况。 SELECT * FROM Course WHERE Cname LIKE 'DB_%i_ _' ESCAPE ' ; IS NULL 或 IS NOT NULL “IS” 不能用 “=” 代替 例:查所有有成绩的学生学号和课程号 SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL; 逻辑运算符:AND和 OR来联结多个查询条件,AND的优先级高于OR,可以用括号改变优先级,可用来实现多种其他谓词。 NOT IN NOT BETWEEN AND 改写 例:查询信息系、数学系和计算机科学系学生的姓名和性别 SELECT Sname,Ssex FROM Student WHERE Sdept IN ( 'IS','MA','CS' ) 可改写为: SELECT Sname,Ssex FROM Student WHERE Sdept= ' IS ' OR Sdept= ' MA' OR Sdept= ' CS ' ORDER BY子句:对查询结果排序 可以按一个或多个属性列排序:升序:ASC;降序:DESC;缺省值为升序。 当排序列含空值时:空值最大 ASC:排序列为空值的元组最后显示;DESC:排序列为空值的元组最先显示。 例:查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列 SELECT Sno,Grade FROM SC WHERE Cno= ' 3 ' ORDER BY Grade DESC; 聚集函数:对查询结果集中的某列进行计算或统计。 计数 COUNT COUNT 计算总和SUM 计算平均值 AVG 最大最小值 MAX MIN 例:查询学生200215012选修课程的总学分数 SELECT SUM(Ccredit) FROM SC, Course WHER Sno='200215012' AND SC.Cno=Course.Cno; 注:除Count,都要跳过空值;Where子句不能使用聚集函数。 GROUP BY子句:对查询结果分组。 用途细化聚集函数的作用对象 未对查询结果分组,聚集函数将作用于整个查询结果 对查询结果分组后,聚集函数将分别作用于每个组 使用GROUP BY 后:其SELECT子句的列名列表中只能出现分组属性和集函数。 如果分组后还要按照条件对这些组进行筛选,可使用having 短语指定筛选条件 例: 查询选修了3门以上课程的学生学号 SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*) >3; 例:查询有3门以上课程是90分以上学生的学号及课程数 SELECT Sno, COUNT(*) FROM SC Where Grade >90 GROUP BY Sno HAVING COUNT(*) >3; HAVING短语与WHERE子句的区别:作用对象不同 WHERE子句作用于基表或视图,从中选择满足条件的元组 HAVING短语作用于组,从中选择满足条件的组。 3、数据更新 插入数据 插入元组 INSERT INTO <表名> (<属性列1>,<属性列2 >) VALUES (<常量1> ,<常量2> ) 功能:将新元组插入指定表中;新元组的属性列1的值为常量1,属性列2的值为常量2,。 INTO子句:属性列的顺序可与表定义中的顺序不一致,但须指定列名;没有指定属性列,表示要插入的是一条完整的元组;指定部分属性列,未指定的属性列取空值,具有NOT NULL的属性列除外。 VALUES子句:提供的值必须与INTO子句匹配,值的个数,值的类型。 例:将一个新学生元组插入到Student表中 INSERT INTO Student (Sno,Sname,Ssex,Sdept,Sage) VALUES ('200215128','陈冬','男','IS',18); 例: 将学生张成民的信息插入到Student表中 INSERT INTO Student VALUES (200215126, 张成民, 男,18,'CS'); 例:插入一条选课记录( '200215128','1 ')。 INSERT INTO SC(Sno,Cno) VALUES ( 200215128 , 1 ); RDBMS将在新插入记录的Grade列上自动地赋空值。或者: INSERT INTO SC VALUES ( 200215128 , 1 ,NULL); 因为没有指出SC的属性名,在GRADE列上要明确给出空值 修改数据 UPDATE <表名> SET <列名>=<表达式>,<列名>=<表达式> WHERE <条件>; SET子句:指定修改方式,要修改的列,修改后取值:<表达式>。 WHERE子句:指定要修改的元组,缺省表示要修改表中的所有元组。 功能:修改指定表中满足WHERE子句条件的元组。 修改某一个元组的值 例:将学生200215121的年龄改为22岁 UPDATE Student SET Sage=22 WHERE Sno=' 200215121 '; 修改多个元组的值 例:将所有学生的年龄增加1岁 UPDATE Student SET Sage= Sage+1; 带子查询的修改语句 子查询须放在比较运算符之后 例:将计算机科学系全体学生的成绩置零。 UPDATE SC SET Grade=0 WHERE 'CS'= (SELETE Sdept FROM Student WHERE Student.Sno = SC.Sno); 删除数据 DELETE FROM <表名> WHERE <条件>; 功能:删除指定表中满足WHERE子句条件的元组。 WHERE子句:指定要删除的元组;缺省表示要删除表中的全部元组,表的定义仍在数据字典中。 删除某一个元组的值 例:删除学号为200215128的学生记录 DELETE FROM Student WHERE Sno= 200215128 '; 删除多个元组的值 例:删除所有的学生选课记录 DELETE FROM SC; 带子查询的删除语句 例:删除计算机科学系所有学生的选课记录 DELETE FROM SC WHERE 'CS'= (SELETE Sdept FROM Student WHERE Student.Sno=SC.Sno); 4、视 图 特点:虚表,是从一个或几个基本表导出的表;只存放视图的定义,不存放视图对应的数据;基表中的数据发生变化,从视图中查询出的数据也随之改变。 基于视图的操作: 查询、删除、受限更新、定义基于该视图的新视图。 定义视图 建立视图 CREATE VIEW <视图名> (<列名> ,<列名>) AS <子查询>