当前位置: 首页 > news >正文

建设网站备案与不备案区别软件开发需要用什么软件

建设网站备案与不备案区别,软件开发需要用什么软件,广州白云区,做一个个人网站的步骤教材为数据库系统概论第五版#xff08;王珊#xff09; 最重量级的一章。从后续的学习#xff0c;基本所有实验#xff0c;大作业和考试都会涉及SQL#xff0c;SQL实际上是有很多变化的#xff0c;书上讲的只是最基本的#xff08;做了大作业才知道SQL能有这么多变化王珊 最重量级的一章。从后续的学习基本所有实验大作业和考试都会涉及SQLSQL实际上是有很多变化的书上讲的只是最基本的做了大作业才知道SQL能有这么多变化。最重要的当属数据查询这部分。当然增删改也要会。还要注意drop和alter和delete这些作用的对象是什么都有很多坑。学会这章最好的办法就是做实验然后一条一条SQL手动打然后运行。本书的前6个实验我已上传到博客上了可以点我主页查看。 3.1 SQL概述 SQLStructured Query Language结构化查询语言是关系数据库的标准语言SQL是一个通用的、功能极强的关系数据库语言。 3.1.1 SQL的产生与发展 3.1.2 SQL的特点 综合统一 高度非过程化 面向集合的操作方式 以同一种语法结构提供多种使用方式 语言简捷易学易用 SQL功能极强完成核心功能只用了9个动词 3.1.3 SQL的基本概念 SQL支持关系数据库三级模式结构。 3.2 学生-课程数据库 学生表Student(Sno,Sname,Ssex,Sage,Sdept)学生表Student(S_{no},S_{name},S_{sex},S_{age},S_{dept}) 学生表Student(Sno​,Sname​,Ssex​,Sage​,Sdept​) 课程表Course(Cno,Cname,Cpno,Ccredit)课程表Course(C_{no},C_{name},C_{pno},C_{credit}) 课程表Course(Cno​,Cname​,Cpno​,Ccredit​) 学生选课表SC(Sno,Cno,Grade)学生选课表SC(S_{no},C_{no},Grade) 学生选课表SC(Sno​,Cno​,Grade) 3.3 数据定义 SQL的数据定义功能: 模式定义、表定义、视图和索引的定义 3.3.1 模式的定义与删除 定义模式一般不考 语句格式如下 CREATE SCHEMA 模式名 AUTHORIZATION 用户名;[例1] 定义一个学生-课程模式S-T CREATE SCHEMA “S-T” AUTHORIZATION WANG;为用户WANG定义了一个模式S-T CREATE SCHEMA 模式名 AUTHORIZATION 用户名[例2] CREATE SCHEMA AUTHORIZATION WANG如果没有指定模式名那么模式名隐含为用户名 在这个空间中可以定义该模式包含的数据库对象例如基本表、视图、索引等。在CREATE SCHEMA中可以接受CREATE TABLE(表)CREATE VIEW视图和GRANT授权子句。格式如下 CREATE SCHEMA 模式名 AUTHORIZATION 用户名[表定义子句|视图定义子句|授权定义子句][例3]为用户ZHANG创建了一个模式TEST并在其中定义了一个表TAB1 CREATE SCHEMA TEST AUTHORIZATION ZHANG CREATE TABLE TAB1(COL1 SMALLINT COL2 INTCOL3 CHAR(20)COL4 NUMERIC(103)COL5 DECIMAL(52));执行创建模式语句必须拥有DBA权限或者DBA授予在CREATE SCHEMA的权限。 删除模式 语句格式 DROP SCHEMA 模式名 CASCADE|RESTRICT说明 CASCADE和RESTRICT必须二选一CASCADE(级联) 定义删除模式的同时把该模式中所有的数据库对象全部删除 RESTRICT(限制) 如果该模式中定义了下属的数据库对象如表、视图等则拒绝该删除语句的执行。当该模式中没有任何下属的对象时 才能执行。举例拆除一个房子必须先把房子里面的家具清空了才能拆除 [例4] DROP SCHEMA ZHANG CASCADE删除模式ZHANG同时该模式中定义的表TAB1也被删除 3.3.2 基本表的定义、删除与修改 定义基本表 CREATE TABLE 表名列名 数据类型[ 列级完整性约束条件 ][列名 数据类型[ 列级完整性约束条件] ] …[表级完整性约束条件 ] 如果完整性约束条件涉及到该表的多个属性列则必须定义在表级上否则既可以定义在列级也可以定义在表级。 [例5] 建立“学生”表Student学号是主码姓名取值唯一。 CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY /* 列级完整性约束条件*/ Sname CHAR(20) UNIQUE /* Sname取唯一值*/Ssex CHAR(2)Sage SMALLINTSdept CHAR(20));/*CHAR是数据类型后面会讲*/[例6] 建立一个“课程”表Course CREATE TABLE Course( Cno CHAR(4) PRIMARY KEYCname CHAR(40) Cpno CHAR(4) /*先导课*/ Ccredit SMALLINTFOREIGN KEY (Cpno) REFERENCES Course(Cno) ); Cpno是外码被参照表是Course被参照列是Cno [例7] 建立一个“学生选课”表SC CREATE TABLE SC(Sno CHAR(9) Cno CHAR(4) Grade SMALLINTPRIMARY KEY (SnoCno) /* 主码由两个属性构成必须作为表级完整性进行定义*/FOREIGN KEY (Sno) REFERENCES Student(Sno)/* 表级完整性约束条件Sno是外码被参照表是Student */FOREIGN KEY (Cno) REFERENCES Course(Cno)/* 表级完整性约束条件 Cno是外码被参照表是Course*/); 数据类型 模式与表 每一个基本表都属于某一个模式一个模式包含多个基本表 定义基本表所属模式有以下三种方式 方法一在表名中明显地给出模式名 Create table “S-T”.Student…; /模式名为 S-T/Create table “S-T”.Cource…;Create table “S-T”.SC…; 方法二在创建模式语句中同时创建表方法三设置所属的模式 创建基本表其他数据库对象也一样时若没有指定模式系统根据搜索路径来确定该对象所属的模式 显示当前的搜索路径 SHOW search_path; 搜索路径的当前默认值是 $user PUBLIC DBA用户可以设置搜索路径然后定义基本表 SET search_path TO “S-T”PUBLIC;若搜索路径中的模式名都不存在系统将给出错误 RDBMS会使用模式列表中第一个存在的模式作为数据库对象的模式名 [例8] DBA用户设置搜索路径然后定义基本表 SET search_path TO “S-T”PUBLICCreate table Student......; 结果建立了S-T.Student基本表。 小总结:数据库可以有多个模式相当于仓库里面有多个房间每个模式下面可以有多个表相当于一个房间里面可以放很多零件。数据库会把模式授权给一个管理员由其对模式下面的数据进行操作相当于每个房间有个管理员由其管理房间内的物品。 修改基本表 语法格式 ALTER TABLE 表名 [ ADD [ COLUMN ] 新列名 数据类型 [ 完整性约束 ] ] [ ADD 表级完整性约束] [ DROP [ COLUMN ] 列名 [CASCADE| RESTRICT] ] [ DROP CONSTRAINT 完整性约束名 [ RESTRICT | CASCADE ] ] [ ALTER COLUMN 列名数据类型 ] ;说明 表名是要修改的基本表。ADD子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件。DROP COLUMN子句用于删除表中的列。如果指定了CASCADE短语则自动删除引用了该列的其他对象。如果指定了RESTRICT短语则如果该列被其他对象引用关系数据库管理系统将拒绝删除该列。DROP CONSTRAINT子句用于删除指定的完整性约束条件。ALTER COLUMN子句用于修改原有的列定义包括修改列名和数据类型。 [例9] 向Student表增加“入学时间”列其数据类型为日期型。 ALTER TABLE Student ADD S_entrance DATE不论基本表中原来是否已有数据新增加的列一律为空值。 [例10] 将年龄的数据类型由字符型假设原来的数据类型是字符型改为整数。 ALTER TABLE Student ALTER COLUMN Sage INT;[例11] 增加课程名称必须取唯一值的约束条件。 ALTER TABLE Course ADD UNIQUE(Cname); 删除基本表 语句格式 DROP TABLE 表名RESTRICT| CASCADERESTRICT删除表是有限制的。 欲删除的基本表不能被其他表的约束所引用如果存在依赖该表的对象则此表不能被删除 CASCADE删除该表没有限制。 在删除基本表的同时相关的依赖对象一起删除 [例12] 删除Student表 DROP TABLE Student CASCADE ;DROP TABLE时SQL99 与 3个RDBMS的处理策略比较: DROP TABLE时SQL2011 与 3个RDBMS的处理策略比较 3.3.3 索引的建立与删除 建立索引的目的加快查询速度(相当于书的目录) 谁可以建立索引 DBA 或 表的属主即建立表的人DBMS一般会自动建立以下列上的索引 PRIMARY KEYUNIQUE 谁维护索引 DBMS自动完成 使用索引 DBMS自动选择是否使用索引以及使用哪些索引 RDBMS关系数据库管理系统中索引一般采用B树、HASH索引来实现 B树索引具有动态平衡的优点HASH索引具有查找速度快的特点 采用B树还是HASH索引 则由具体的RDBMS来决定 索引是关系数据库的内部实现技术属于内模式的范畴 CREATE INDEX语句定义索引时可以定义索引是唯一索引、非唯一索引或聚簇索引 一、建立索引 语句格式 CREATE [UNIQUE] [CLUSTER] INDEX 索引名 ON 表名(列名[次序][,列名[次序] ]…)UNIQUE表明此索引每一个索引值只对应唯一的数据CLUSTER表示要建立的索引是聚簇索引。聚簇索引是指索引顺序与表中记录的物理顺序一致的索引组织。 [例13] 为学生-课程数据库中的StudentCourseSC三个表建立索引。 CREATE UNIQUE INDEX Stusno ON Student(Sno) CREATE UNIQUE INDEX Coucno ON Course(Cno) CREATE UNIQUE INDEX SCno ON SC(Sno ASCCno DESC)Student表按学号升序建唯一索引 Course表按课程号升序建唯一索引 SC表按学号升序和课程号降序建唯一索引 [例14] 在Student表的Sname姓名列上建立一个聚簇索引 CREATE CLUSTER INDEX Stusname ON Student(Sname)在最经常查询的列上建立聚簇索引以提高查询效率一个基本表上最多只能建立一个聚簇索引经常更新的列不宜建立聚簇索引 **二、删除索引 ** 语句格式 DROP INDEX 索引名删除索引时系统会从数据字典中删去有关该索引的描述。 [例15] 删除Student表的Stusname索引 DROP INDEX Stusname三、修改索引 语句格式 ALTER INDEX 旧索引名 RENAME TO 新索引名;3.3.4 数据字典 数据字典是关系数据库管理系统内部的一组系统表它记录了数据库中所有的定义信息,包括关系模式定义、视图定义、索引定义、完整性约束定义、各类用户对数据库的操作权限、统计信息等。关系数据库管理系统在执行SQL 的数据定义语句时实际上就是在更新数据字典表中的相应信息。 3.4 数据查询重要 语句格式 SELECT [ALL|DISTINCT] 目标列表达式[目标列表达式] … FROM 表名或视图名[ 表名或视图名 ] …[ WHERE 条件表达式 ][ GROUP BY 列名1 [ HAVING 条件表达式 ] ][ ORDER BY 列名2 [ ASC|DESC ] ]3.4.1 单表查询 功能查询仅涉及一个表的内容 一选择表中若干列 查询指定列 格式:在SELECT后面指定列名,FROM后面列所在的表名 [例1] 查询全体学生的学号与姓名 SELECT Sno,Sname FROM Student; [例2] 查询全体学生的姓名、学号、所在系。 SELECT Sname,Sno,Sdept FROM Student查询全部列 功能选出所有属性列格式在SELECT关键字后面列出所有列名或将目标列表达式指定为 * [例3] 查询全体学生的详细记录。 SELECT SnoSnameSsexSageSdept FROM Student 或 SELECT * FROM Student查询经过计算的值 功能:选出表中指定的属性列,并经过计算后输出。格式SELECT子句的目标列表达式可以为 算术表达式字符串常量函数列别名 ​ [例4] 查全体学生的姓名及其出生年份。 SELECT Sname2004-Sage /*假定当年的年份为2004年*/ FROM Student输出结果 [例5] 查询全体学生的姓名、出生年份和所有系要求用小写字母表示所有系名 SELECT Sname,Year of Birth:,2004-Sage,LOWER(Sdept) FROM Student;输出结果 [例6] 使用列别名改变查询结果的列标题: SELECT Sname NAME,Year of Birth: BIRTH,2000-Sage BIRTHDAY,LOWER(Sdept) DEPARTMENT FROM Student;加一个空格即可用后面的名字当做列别名 输出结果 二选择表中若干元组 消除取值重复的行 如果没有指定DISTINCT关键词则缺省为ALL SELECT Sno FROM SC 等价于 SELECT ALL Sno FROM SC 如果要消除重复行则加上DISTINCT SELECT DISTINCT Sno FROM SC 2. 查询满足条件的元组 查询满足条件的元组可以通过where子句实现where常用的询条件如下: 1比较查询 例查询计算机科学系全体学生的名单。 SELECT Sname FROM Student WHERE SdeptCS;例查询所有年龄在20岁以下的学生姓名及其年龄。 SELECT SnameSage FROM Student WHERE Sage 20;例查询考试成绩有不及格的学生的学号。 SELECT DISTINCT Sno FROM SC WHERE Grade60;注意要用distinct去重复 补充一个在c也会犯的错误比如题目要求年龄在10到12岁之间包括如果在where后面使用10age12是错误的用法应该是10age AND age12这个用法在c也是错误的在python里面可以使用 2确定范围 谓词 BETWEEN … AND …NOT BETWEEN … AND … 例查询年龄在20~23岁包括20岁和23岁之间的学生的姓名、系别和年龄 SELECT SnameSdeptSage FROM Student WHERE Sage BETWEEN 20 AND 23不在这个范围内只需在between前加个not 3确定集合 谓词 IN 值表NOT IN 值表 例查询信息系IS、数学系MA和计算机科学系CS学生的姓名和性别。 SELECT Sname,Ssex FROM Student WHERE Sdept IN ( ISMACS );不在这个集合只需在in前加个not即可 4)字符匹配 谓词 [NOT] LIKE ‘匹配串’ [ESCAPE ‘ 换码字符’] 1.匹配串为固定字符串 例查询学号为200215121的学生的详细情况。 SELECT * FROM Student WHERE Sno LIKE 200215121;等价于 SELECT * FROM Student WHERE Sno 200215121;2.匹配串为含通配符的字符串 例查询所有姓刘学生的姓名、学号和性别。 SELECT SnameSnoSsex FROM Student WHERE Sname LIKE 刘%;%代表任意长度字符串 如果要查指定长度的 例查询姓欧阳且全名为三个汉字的学生的姓名。 SELECT Sname FROM Student WHERE Sname LIKE 欧阳_;一个_代表一个字符 3.使用换码字符将通配符转义为普通字符 例查询DB_Design课程的课程号和学分。 SELECT CnoCcredit FROM Course WHERE Cname LIKE DB\_Design ESCAPE \ESCAPE后跟的符号在在like中有实际的意义所以在这里_并不是单个字符 例查询以DB_开头且倒数第3个字符为i的课程的详细情况。 SELECT * FROM Course WHERE Cname LIKE DB\_%i_ _ ESCAPE \ 说明ESCAPE ‘’ 表示“” 为换码字符 5涉及空值的查询 谓词 IS NULL IS NOT NULL “IS” 不能用 “” 代替 例某些学生选修课程后没有参加考试所以有选课记录但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。 SELECT SnoCno FROM SC WHERE Grade IS NULL要查有成绩的就在NULL前加not 6) 多重条件查询 逻辑运算符AND和OR来联结多个查询条件 AND的优先级高于OR可以用括号改变优先级 可用来实现多种其他谓词 [NOT] IN[NOT] BETWEEN … AND … 例查询计算机系年龄在20岁以下的学生姓名。 SELECT Sname FROM Student WHERE Sdept CS AND Sage20;三ORDER BY子句 ORDER BY子句 可以按一个或多个属性列排序升序ASC降序DESC缺省值为升序 当排序列含空值时默认空值是最大值 ASC排序列为空值的元组最后显示DESC排序列为空值的元组最先显示 例查询选修了3号课程的学生的学号及其成绩查询结果按分数降序排列。 SELECT Sno,Grade FROM SC WHERE Cno3 ORDER BY Grade DESC;例查询全体学生情况查询结果按所在系的系号升序排列同一系中的学生按年龄降序排列。 SELECT * FROM Student ORDER BY Sdept ASC可缺省,Sage DESC四聚集函数 计数 COUNT[DISTINCT|ALL] *统计元组个数COUNT[DISTINCT|ALL] 列名统计一列中值的个数 计算总和 SUM[DISTINCT|ALL] 列名 计算一列值的总和为数值 计算平均值 AVG[DISTINCT|ALL] 列名计算一列值的平均值为数值 最大最小值 MAX[DISTINCT|ALL] 列名求一列值的最大值为数值MIN[DISTINCT|ALL] 列名求一列值的最小值为数值 例查询学生总人数 SELECT COUNT(*) FROM Student;例查询选修了课程的学生人数。 SELECT COUNT(DISTINCT Sno) FROM SC;例计算1号课程的学生平均成绩。 SELECT AVG(Grade) FROM SC WHERE Cno 1 ;例查询选修1号课程的学生最高分数。 SELECT MAX(Grade) FROM SC WHER Cno ‘ 1 ’;例查询学生200215012选修课程的总学分数。 SELECT SUM(Ccredit) FROM SC,Course WHERE Sno200215012 AND SC.CnoCourse.Cno; 自然连接后面讲 当聚集函数遇到空值时除COUNT(*)外都跳过空值而处理非空值。 注意聚集函数不能写在where语句中只能写在select后和group by的having子句 五、GROUP BY子句 按指定的一列或多列值分组值相等的为一组细化聚集函数的作用对象 未对查询结果分组聚集函数将作用于整个查询结果对查询结果分组后聚集函数将分别作用于每个组作用对象是查询的中间结果表 注意使用group by时select后面跟的可以是聚集函数或者group by后面的值不能为第三中情况比如下面这个例子不能在select后加Sno 例求各个课程号及相应的选课人数。 SELECT Cno,COUNT(Sno) FROM SC GROUP BY Cno;例查询选修了3门以上课程的学生学号。 SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*) 3;WHERE子句作用于基表或视图从中选择满足条件的元组; where语句不能有聚集函数 HAVING短语作用于组从中选择满足条件的组。 3.4.2 连接查询 一、等值与非等值连接查询 格式 [表名1.]列名1 比较运算符 [表名2.]列名2 比较运算符有,,, [表名1.]列名1 BETWEEN [表名2.]列名2 AND [表名2.]列名3 连接字段连接谓词中的列名称 连接条件中的各连接字段类型必须是可比的但名字不必是相同的 等值连接 连接运算符为 例查询每个学生及其选修课程的情况 SELECT Student.*SC.* FROM StudentSC WHERE Student.Sno SC.Sno;去掉重复列相当于自然连接 二、自身连接 一个表与其自己进行连接需要给表起别名以示区别由于所有属性名都是同名属性因此必须使用别名前缀 例查询每一门课的间接先修课即先修课的先修课 SELECT FIRST.Cno,SECOND.Cpno FROM Course FIRST,Course SECOND WHERE FIRST.Cpno SECOND.Cno;三、外连接 外连接与普通连接的区别 普通连接操作只输出满足连接条件的元组外连接操作以指定表为连接主体将主体表中不满足连接条件的元组一并输出 外连接分为 左外连接:列出左边关系中所有的元组。LEFT OUT JOIN SC ON右外连接:列出右边关系中所有的元组。RIGHT OUT JOIN SC ON 四多表连接 连接操作是两个以上的表进行连接。 五、复合条件连接 复合条件连接WHERE子句中含多个连接条件 例查询选修2号课程且成绩在90分以上的所有学生 SELECT Student.Sno, Sname FROM Student, SC WHERE Student.Sno SC.Sno AND /* 连接谓词*/ SC.Cno ‘2’ AND SC.Grade 90 /* 其他限定条件 */3.4.3 嵌套查询 一个SELECT-FROM-WHERE语句称为一个查询块将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询 说明 子查询不能使用ORDER BY子句层层嵌套方式反映了SQL语言的结构化有些嵌套查询可以用连接运算替代 一、带有IN谓词的子查询 在嵌套查询中子查询的结果往往是个集合,用IN谓词表示父查询的条件在子查询结果的集合中。 例 查询与“刘晨”在同一个系学习的学生。 ① 确定“刘晨”所在系名 SELECT Sdept FROM Student WHERE Sname刘晨;② 查找所有在CS系学习的学生。 SELECT Sno,Sname,Sdept FROM Student WHERE SdeptCS;将第一步查询嵌入到第二步查询的条件中 SELECT Sno,Sname,Sdept FROM Student WHERE Sdept IN(SELECT SdeptFROM StudentWHERE Sname 刘晨);也可以用用自身连接完成 SELECT S1.SnoS1.SnameS1.Sdept FROM Student S1Student S2 WHERE S1.Sdept S2.Sdept AND S2.Sname 刘晨不相关子查询 子查询的查询条件不依赖于父查询 相关子查询 子查询的查询条件依赖于父查询 二、 带有比较运算符的子查询 当能确切知道内层查询返回单值时可用比较运算符!或 。与ANY或ALL谓词配合使用 例找出每个学生超过他选修课程平均成绩的课程号。这里有点绕多看会(期中考了这道原题印象深刻) SELECT Sno,Cno FROM SC x WHERE Grade (SELECT AVG(Grade) FROM SC yWHERE y.Snox.Sno);三、 带有ANYSOME或ALL谓词的子查询 谓词语义 ANY任意一个值ALL所有值 例查询其他系中比计算机科学某一学生年龄小的学生姓名和年龄 SELECT Sname,Sage FROM Student WHERE SageANY (SELECT max(sage)FROM StudentWHERE Sdept CS )AND Sdept CS ; /*父查询块中的条件 */例查询其他系中比计算机科学系所有学生年龄都小的学生姓名及年龄。 SELECT SnameSage FROM Student WHERE Sage ALL(SELECT sageFROM StudentWHERE Sdept CS ) AND Sdept CS ’;用聚集函数实现子查询要比直接用ANY、ALL效率更高。ANY或SOMEALL谓词与聚集函数、IN谓词的等价转换关系 四、 带有EXISTS谓词的子查询 EXISTS谓词 存在量词 ∃带有EXISTS谓词的子查询不返回任何数据只产生逻辑真值“true”或逻辑假值“false”。 若内层查询结果非空则外层的WHERE子句返回真值若内层查询结果为空则外层的WHERE子句返回假值 由EXISTS引出的子查询其目标列表达式通常都用* 因为带EXISTS的子查询只返回真值或假值给出列名无实际意义 NOT EXISTS谓词 若内层查询结果非空则外层的WHERE子句返回假值若内层查询结果为空则外层的WHERE子句返回真值 不同形式的查询间的替换 一些带EXISTS或NOT EXISTS谓词的子查询不能被其他形式的子查询等价替换所有带IN谓词、比较运算符、ANY和ALL谓词的子查询都能用带EXISTS谓词的子查询等价替换 用EXISTS/NOT EXISTS实现全称量词(难点) SQL语言中没有全称量词 ∀ For all 可以把带有全称量词的谓词转换为等价的带有存在量词的谓词 (∀x)P≡﹁(∃x(﹁P))(∀ x)P ≡ ﹁ (∃ x(﹁ P)) (∀x)P≡﹁(∃x(﹁P)) 用EXISTS/NOT EXISTS实现逻辑蕴函(难点) SQL语言中没有蕴函(Implication)逻辑运算 可以利用谓词演算将逻辑蕴函谓词等价转换为 p→q≡﹁p∨qp \rightarrow q ≡ ﹁ p∨q p→q≡﹁p∨q 3.4.4 集合查询 集合操作的种类期中考试考过一种 并操作UNION UNION将多个查询结果合并起来时系统自动去掉重复元组。UNION ALL将多个查询结果合并起来时保留重复元组 交操作INTERSECT差操作EXCEPT 参加集合操作的各查询结果的列数必须相同对应项的数据类型也必须相同 例查询计算机科学系的学生及年龄不大于19岁的学生。 SELECT * FROM Student WHERE Sdept CS UNION SELECT * FROM Student WHERE Sage19方法2 SELECT DISTINCT * FROM Student WHERE Sdept CS OR Sage19例查询计算机科学系的学生与年龄不大于19岁的学生的交集 SELECT * FROM Student WHERE SdeptCS INTERSECT SELECT * FROM Student WHERE Sage19 例 查询计算机科学系的学生与年龄不大于19岁的学生的差集。 SELECT * FROM Student WHERE SdeptCS EXCEPT SELECT * FROM Student WHERE Sage 19;3.4.5 SELECT语句的一般格式 SELECT [ALL|DISTINCT] 目标列表达式 [别名] [ 目标列表达式 [别名]] … FROM 表名或视图名 [别名] [ 表名或视图名 [别名]] … [WHERE 条件表达式] [GROUP BY 列名1 [HAVING 条件表达式]] [ORDER BY 列名2 [ASC|DESC] 3.5 数据更新 3.5.1 插入数据 两种插入数据方式 插入元组 插入子查询结果 一、插入元组 语句格式 INSERT INTO 表名 [(属性列1[属性列2 …)] VALUES (常量1 [常量2] … )功能将新元组插入指定表中 INTO子句 属性列的顺序可与表定义中的顺序不一致没有指定属性列默认插入全部指定部分属性列 VALUES子句 提供的值必须与INTO子句匹配值的个数值的类型要与属性列一致 例将一个新学生元组学号200215128姓名陈冬性别男所在系IS年龄18岁插入到Student表中。 INSERT INTO Student (SnoSnameSsexSdeptSage) VALUES (200215128陈冬男IS18)例 将学生张成民的信息插入到Student表中。 INSERT INTO Student VALUES (200215126 张成民 男18CS); 例插入一条选课记录( ‘200215128’1 )。 INSERT INTO SC(SnoCno) VALUES (2002151281)RDBMS将在新插入记录的Grade列上自动地赋空值。 二、插入子查询结果 语句格式 INSERT INTO 表名 [(属性列1 [属性列2… )] 子查询功能将子查询结果插入指定表中 SELECT子句目标列必须与INTO子句匹配 例对每一个系求学生的平均年龄并把结果存入数据库。 第一步建表 CREATE TABLE Dept_age(Sdept CHAR(15) /* 系名*/Avg_age SMALLINT) /*学生平均年龄*/第二步插入数据 INSERT INTO Dept_age(SdeptAvg_age)SELECT SdeptAVG(Sage)FROM StudentGROUP BY SdeptRDBMS在执行插入语句时会检查所插元组是否破坏表上已定义的完整性规则 3.5.2 修改数据 语句格式 UPDATE 表名 SET 列名表达式[列名表达式]… [WHERE 条件];功能修改指定表中满足WHERE子句条件的元组 SET子句 指定修改方式要修改的列修改后取值 WHERE子句 指定要修改的元组缺省表示要修改表中的所有元组 1. 修改某一个元组的值 例将学生200215121的年龄改为22岁 UPDATE Student SET Sage22 WHERE Sno 200215121 2. 修改多个元组的值 例将所有学生的年龄增加1岁 UPDATE Student SET Sage Sage13. 带子查询的修改语句 例将计算机科学系全体学生的成绩置零。 UPDATE SC SET Grade0 WHERE CS(SELETE SdeptFROM StudentWHERE Student.Sno SC.Sno)3.5.3 删除数据 语句格式 DELETE FROM 表名 [WHERE 条件]功能删除指定表中满足WHERE子句条件的元组 WHERE子句 指定要删除的元组缺省表示要删除表中的全部元组表的定义仍在字典中 1. 删除某一个元组的值 例删除学号为200215128的学生记录。 DELETE FROM Student WHERE Sno 2002151282. 删除多个元组的值 例删除所有的学生选课记录。 DELETE FROM SC3. 带子查询的删除语句 例删除计算机科学系所有学生的选课记录。 DELETE FROM SC WHERE CS(SELETE SdeptFROM StudentWHERE Student.SnoSC.Sno)3.6 空值的处理 空值的存在是因为取值有不确定性,对关系运算带来特殊的问 题,所以需要做特殊的处理。 SQL语言中允许某些元组的某些属性取空值一般有以下三种情况: 该属性有值但当前不知道它的具体值。该属性不应该有值。由于某种原因不便于填写。 判断一个属性的值是否为空值用IS NULL或IS NOT NULL来表示 属性定义中有NOT NULL约束条件的不能取空值加了UNIQUE限制的属性不能取空值码不能取空值 算术运算:空值与另一个值包括另一个空值)的算术运算的结果为空值; 比较运算:空值与另一个值包括另一个空值)的比较结果为UNKNOWN; 3.7 视图 视图的特点 虚表是从一个或几个基本表或视图导出的表只存放视图的定义不存放视图对应的数据基表中的数据发生变化从视图中查询出的数据也随之改变 3.7.1 定义视图 一、建立视图 语句格式: CREATE VIEW 视图名 [(列名 [列名]…)]AS 子查询[WITH CHECK OPTION]WITH CHECK OPTION表示对视图进行UPDATE,INSERT和DELETE操作时要保证更新插入或删除的行满足视图定义中的谓词条件 组成视图的属性列名全部省略或全部指定 子查询不允许含有ORDER BY子句和DISTINCT短语 RDBMS执行CREATE VIEW语句时只是把视图定义存入数据字典并不执行其中的SELECT语句。 在对视图查询时按视图的定义从基本表中将数据查出。 例建立信息系学生的视图 CREATE VIEW IS_StudentAS SELECT SnoSnameSageFROM StudentWHERE Sdept IS例建立信息系学生的视图并要求进行修改和插入操作时仍需保证该视图只有信息系的学生 CREATE VIEW IS_StudentAS SELECT SnoSnameSageFROM StudentWHERE Sdept ISWITH CHECK OPTION;对IS_Student视图的更新操作 修改操作自动加上Sdept IS’的条件删除操作自动加上Sdept IS’的条件插入操作自动检查Sdept属性值是否为’IS’ 如果不是则拒绝该插入操作如果没有提供Sdept属性值则自动定义Sdept为’IS’ 例建立信息系选修了1号课程的学生视图。基于多个表 CREATE VIEW IS_S1(SnoSnameGrade)AS SELECT Student.SnoSnameGradeFROM StudentSCWHERE Sdept IS ANDStudent.SnoSC.Sno ANDSC.Cno 1二、删除视图 语句的格式 DROP VIEW 视图名该语句从数据字典中删除指定的视图定义如果该视图上还导出了其他视图使用CASCADE级联删除语句把该视图和由它导出的所有视图一起删除删除基表时由该基表导出的所有视图定义都必须显式地使用DROP VIEW语句删除 删除视图IS_S1 DROP VIEW IS_S1会报错因为IS_S1视图上还导出了IS_S2视图使用级联删除 DROP VIEW IS_S1 CASCADE; 3.7.2 查询视图 用户角度查询视图与查询基本表相同 视图消解关系数据库管理系统执行对视图的查询时首先进行有效性检查检查查询中涉及的表、视图等是否存在。如果存在则从数据字典中取出视图的定义把定义中的子查询和用户的查询结合起来转换成等价的对基本表的查询然后再执行修正了的查询。这一转换过程称为视图消解view resolution)。 例在信息系学生的视图中找出年龄小于20岁的学生 SELECT SnoSage FROM IS_Student WHERE Sage20视图消解转换后的查询语句为 SELECT SnoSage FROM Student WHERE Sdept IS AND Sage20视图消解法的局限有些情况下视图消解法不能生成正确查询。 3.7.3 更新视图 例将信息系学生视图IS_Student中学号200215122的学生姓名改为“刘辰” UPDATE IS_Student SET Sname 刘辰 WHERE Sno 200215122 转换后的语句 UPDATE Student SET Sname 刘辰 WHERE Sno 200215122 AND Sdept IS更新视图的限制一些视图是不可更新的因为对这些视图的更新不能唯一地有意义地转换成对相应基本表的更新 3.7.4 视图的作用 视图能够简化用户的操作 视图使用户能以多种角度看待同一数据 图对重构数据库提供了一定程度的逻辑独立性 视图能够对机密数据提供安全保护 适当的利用视图可以更清晰的表达查询
http://www.hkea.cn/news/14482694/

相关文章:

  • 海口网站建设平台网站弹窗页面是谁做的
  • 关系营销案例东莞网站优化中易
  • 东莞常平做网站公司wordpress数据库修改登陆密码
  • 做网站字号多大房产政策最新消息
  • 建设银行办信用卡网站山东泰润建设集团网站
  • 如何做泰国网站海南住房建设厅网站
  • 西宁专业做网站东莞松山湖邮编
  • 广州网站开发创意设计广东省建设安全中心网站
  • 全球购物官方网站有哪些刚建的网站百度搜不到
  • 网站引用优酷长沙室内设计学校
  • 泰安高新区建设局网站网站托管服务商查询
  • 建立什么网站做网站推销手表
  • 网站建设技术保证怎么写专业精准网络营销推广
  • app设计网站有哪些功能装修报价单明细表
  • 装修网站论坛昆山做百度网站
  • 装修网站怎么做的外贸网站自我建设与优化
  • 帮人家做网站能赚多少钱wordpress主题dooplay
  • 中国化工网官网 网站建设爱战网关键词挖掘机
  • 丰台网站建设公司电话商业设计方案
  • 展示型网站系统wordpress后台无法登陆
  • 中国建设银行网站官网下载安装抚州南城网站建设
  • 做服装广告素材网站合肥企业网站制作
  • 宿州网站建设公司哪家好吉林文明网设计专门页面
  • 网站中弹出广告怎么做的个人网站可以做论坛
  • 大连里程科技做网站angular网站模板下载
  • 工艺品网站怎么做横琴网站建设
  • 网站设计基本步骤wordpress国外插件速度慢
  • 合肥建站网站平台企业网站策划方案网站建设方案
  • 网站建设8万属于资产吗网络营销具有哪些特点
  • 什么网站对护肤品测评做的很好图书馆门户网站建设总结