SELECT a,b c,d,e,(select from where or FROM F where E=F) FROM A,B,C,D,E WHERE A=B AND B=C AND C=D AND D=E

博客访问: 44227
博文数量: 11
博客积分: 1400
博客等级: 上尉
技术积分: 125
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Oracle
1 关系代数
合并数据集合的理论基础是关系代数,它是由E.F.Codd于1970年提出的。在关系代数的形式化语言中:&&&&&&& 用表、或者数据集合表示关系或者实体。&&&&&&& 用行表示元组。&&&&&&& 用列表示属性。
关系代数包含以下8个关系运算符&&&&&&& 选取――返回满足指定条件的行。&&&&&&& 投影――从数据集合中返回指定的列。&&&&&&& 笛卡尔积――是关系的乘法,它将分别来自两个数据集合中的行以所有可能的方式进行组合。&&&&&&& 并――关系的加法和减法,它可以在行的方向上合并两个表中的数据,就像把一个表垒在另一个表之上一样。&&&&&&& 交――返回两个数据集合所共有的行。&&&&&&& 差――返回只属于一个数据集合的行。&&&&&&& 连接――在水平方向上合并两个表,其方法是:将两个表中在共同数据项上相互匹配的那些行合并起来。&&&&&&& 除――返回两个数据集之间的精确匹配。此外,作为一种实现现代关系代数运算的方法,SQL还提供了:&&&&&&& 子查询――类似于连接,但更灵活;在外部查询中,方式可以使用表达式、列表或者数据集合的地方都可以使用子查询的结果。
2 使用连接
2.1 连接类型在关系代数中,连接运算是由一个笛卡尔积运算和一个选取运算构成的。首先用笛卡尔积完成对两个数据集合的乘运算,然后对生成的结果集合进行选取运算,确保只把分别来自两个数据集合并且具有重叠部分的行合并在一起。连接的全部意义在于在水平方向上合并两个数据集合(通常是表),并产生一个新的结果集合,其方法是将一个数据源中的行于另一个数据源中和它匹配的行组合成一个新元组。SQL提供了多种类型的连接方式,它们之间的区别在于:从相互交叠的不同数据集合中选择用于连接的行时所采用的方法不同。连接类型&&&&&&& 定义内连接&&&&&&&&& 只连接匹配的行左外连接&&&&&&& 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行右外连接&&&&&&& 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行全外连接&&&&&&& 包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。(H)(theta)连接& 使用等值以外的条件来匹配左、右两个表中的行交叉连接&&&&&&& 生成笛卡尔积-它不使用任何匹配或者选取条件,而是直接将一个数据源中的每个行与另一个数据源的每个行都一一匹配在INFORMIX中连接表的查询如果FROM子句指定了多于一个表引用,则查询会连接来自多个表的行。连接条件指定各列之间(每个表至少一列)进行连接的关系。因为正在比较连接条件中的列,所以它们必须具有一致的数据类型。SELECT语句的FROM子句可以指定以下几种类型的连接FROM子句关键字&&&&&&& 相应的结果集CROSS JOIN&&&&&&&&&&& 笛卡尔乘积(所有可能的行对)INNER JOIN&&&&&&&&&&& 仅对满足连接条件的CROSS中的列LEFT OUTER JOIN&&&&&& 一个表满足条件的行,和另一个表的所有行RIGHT OUTER JOIN&&&&& 与LEFT相同,但两个表的角色互换FULL OUTER JOIN&&&&&& LEFT OUTER 和 RIGHT OUTER中所有行的超集
2.2 内连接(Inner Join)内连接是最常见的一种连接,它页被称为普通连接,而E.FCodd最早称之为自然连接。下面是ANSI SQL-92标准select *from& t_institution iinner join t_teller ton i.inst_no = t.inst_nowhere i.inst_no = "5801"其中inner可以省略。等价于早期的连接语法select *from t_institution i, t_teller twhere i.inst_no = t.inst_noand i.inst_no = "5801"
2.3 外连接2.3.1&&&&&&& 左外连接(Left Outer Jion)select *from& t_institution ileft outer join t_teller ton i.inst_no = t.inst_no其中outer可以省略。2.3.2&&&&&&& 右外连接(Rigt Outer Jion)select *from& t_institution iright outer join t_teller ton i.inst_no = t.inst_no2.3.3&&&&&&& 全外连接(Full Outer)全外连接返回参与连接的两个数据集合中的全部数据,无论它们是否具有与之相匹配的行。在功能上,它等价于对这两个数据集合分别进行左外连接和右外连接,然后再使用消去重复行的并操作将上述两个结果集合并为一个结果集。在现实生活中,参照完整性约束可以减少对于全外连接的使用,一般情况下左外连接就足够了。在数据库中没有利用清晰、规范的约束来防范错误数据情况下,全外连接就变得非常有用了,你可以使用它来清理数据库中的数据。select *from& t_institution ifull outer join t_teller ton i.inst_no = t.inst_no2.3.4&&&&&&& 外连接与条件配合使用当在内连接查询中加入条件是,无论是将它加入到join子句,还是加入到where子句,其效果是完全一样的,但对于外连接情况就不同了。当把条件加入到join子句时,SQL Server、Informix会返回外连接表的全部行,然后使用指定的条件返回第二个表的行。如果将条件放到where子句中,SQL Server将会首先进行连接操作,然后使用where子句对连接后的行进行筛选。下面的两个查询展示了条件放置位子对执行结果的影响:条件在join子句select *from& t_institution ileft outer join t_teller ton i.inst_no = t.inst_noand i.inst_no = “5801”结果是:inst_no&&& inst_name&&&&&&&&&&& inst_no&&& teller_no& teller_name5801&&&&&& 天河区&&&&&&&&&&&&&& 5801&&&&&& 0001&&&&&& tom5801&&&&&& 天河区&&&&&&&&&&&&&& 5801&&&&&& 0002&&&&&& david5802&&&&&& 越秀区5803&&&&&& 白云区条件在where子句select *from& t_institution ileft outer join t_teller ton i.inst_no = t.inst_nowhere i.inst_no = “5801”结果是:inst_no&&& inst_name&&&&&&&&&&& inst_no&&& teller_no& teller_name5801&&&&&& 天河区&&&&&&&&&&&&&& 5801&&&&&& 0001&&&&&& tom5801&&&&&& 天河区&&&&&&&&&&&&&& 5801&&&&&& 0002&&&&&& david
2.4 自身连接自身连接是指同一个表自己与自己进行连接。这种一元连接通常用于从自反关系(也称作递归关系)中抽取数据。例如人力资源数据库中雇员与老板的关系。下面例子是在机构表中查找本机构和上级机构的信息。select s.inst_no superior_inst, s.inst_name sup_inst_name, i.inst_no, i.inst_namefrom t_institution ijoin t_institution son i.superior_inst = s.inst_no
结果是:superior_inst sup_inst_name&&&&&&& inst_no&&& inst_name800&&&&&&&&&& 广州市&&&&&&&&&&&&&& 5801&&&&&& 天河区800&&&&&&&&&& 广州市&&&&&&&&&&&&&& 5802&&&&&& 越秀区800&&&&&&&&&& 广州市&&&&&&&&&&&&&& 5803&&&&&& 白云区
2.5 交叉(无限制) 连接交叉连接用于对两个源表进行纯关系代数的乘运算。它不使用连接条件来限制结果集合,而是将分别来自两个数据源中的行以所有可能的方式进行组合。数据集合中一的每个行都要与数据集合二中的每一个行分别组成一个新的行。例如,如果第一个数据源中有5个行,而第二个数据源中有4个行,那么在它们之间进行交叉连接就会产生20个行。人们将这种类型的结果集称为笛卡尔乘积。大多数交叉连接都是由于错误操作而造成的;但是它们却非常适合向数据库中填充例子数据,或者预先创建一些空行以便为程序执行期间所要填充的数据保留空间。select *from& t_institution icross join t_teller t在交叉连接中没有on条件子句
3 SELECT语句的基本句法
3.1& SELECT-FROM-WHERE句型使用实例假设已建立三个表:&&& student(sno,sname,sex,birth,height,class,address)&&& course(cno,cname,credit)&&& elective(sno,cno,grade)
下面给出J-SQL各种形式的SELECT查询语句例子。除极个别的地方要做小小改动外,这些例子也可在T-SQL中运行通过。
·在结果集中对表达式列指定列别名。SELECT sno, grade-75 AS MarjinFROM
·列出student表中所有学生的清单。SELECT *FROM
·使用DISTINCT,除去结果集中的重复行。SELECT DISTINCT sexFROM
·在WHERE子句中包含简单的条件‘grade>80’,输出表中行的子集。SELECT *FROM electiveWHERE grade>80;
·在WHERE子句中包含日期比较,本例是列出日前出生的学生。SELECT *FROM studentWHERE birth<#01-01-1982#;&&& (注:在T-SQL应为 WHERE birth<'01-01-1982')
·可用‘is null’测试null值,用‘is not null’测试非空值。SELECT *FROM electiveWHERE
·列出student表address列中以‘g’结尾的所有行。(注:T-SQL的匹配符为%和_,在J-SQL,匹配符‘*’与零个或更多的字符匹配;匹配符‘?’仅和一个字符匹配。)。SELECT *FROM studentWHERE address like '*g';
·输出elective表grade列取值在60到75之间(包括60和75)的所有行。SELECT *FROM electiveWHERE grade>= 60 and grade<=75;
使用‘BETWEEN…AND…’限定一个值的范围将更易理解,若表示一个值不在某个范围可用‘NOT BETWEEN…AND…’。因此,本例也可用下列语句实现:SELECT *FROM electiveWHERE grade between 60 and 75;
·输出student表height列取值在176,177,178之中的所有行。(注:(集合1)IN(集合2),表示集合1的每个元素均在集合2中则结果为真;把IN改成NOT IN,则意思相反。)SELECT *FROM studentWHERE height in (176,177,178);
·输出所有女生以及“身高超过175且在日以后出生”的男生。(使用逻辑运算符AND和OR)SELECT *FROM studentWHERE height>175 and birth>#01-01-1982# or sex='女';
检索选修了课程号cno为c06的学生学号与姓名。第一种查询方法(联接查询):SELECT student.sno, snameFROM student, electiveWHERE student.sno=elective.sno and cno='c06';检索选修了课程号cno为c06的学生学号要从elective表搜索,但学生的姓名却要在表student才能查到。这个语句执行时,先对FROM子句给定的两个表按WHERE的条件进行联接操作,最后按SELECT子句投影出所需的列。由于两个表都有SNO列,引用时要在SNO前用表名加以限定。第二种查询方法(嵌套查询):SELECT sno, snameFROM studentWHERE sno in&&&&&&&&&&& ( SELECT sno&&&&&&&&&&&&& FROM elective&&&&&&&&&&&&& WHERE cno='c06');这里外层WHERE子句中嵌有一个SELECT语句。执行时,先执行内层的查询,找出选修了课程号为c06的学生学号;然后再从外层查询中按学号找出相应的学生姓名。当查询涉及多个表时,使用嵌套结构可逐步求解层次分明。而且,嵌套查询的执行效率也高于需做乘积或联接运算的联接查询。本例的嵌套查询还可以写成下面的形式:SELECT sno, snameFROM studentWHERE 'c06' in&&&&&&&&&&& ( SELECT cno&&&&&&&&&&&&& FROM elective&&&&&&&&&&&&& WHERE sno=student.sno);这里的内层查询称为‘相关查询’,其查询条件依赖于外层查询中的某个值,所以要多次处理,反复求值以供外层查询使用。第三种查询方法(使用存在量词的嵌套查询):SELECT sno,snameFROM studentWHERE exists (SELECT *&&&&&&&&&&&&& FROM elective&&&&&&&&&&&&& WHERE student.sno=elective.sno and cno='c06');谓词exists即存在量词($),其语义是内层查询的结果非空(或者说,内层查询结果应包含任何行;又或者说,内层查询结果应至少有一行)时为真。
·检索选修课程名为‘english’的学生学号和姓名。SELECT sno, snameFROM studentWHERE sno in&&&&&&&&&&&&&&&&&&& ( SELECT sno&&&&&&&&&&&&&&&&&&&&& FROM elective&&&&&&&&&&&&&&&&&&&&& WHERE cno in&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ( SELECT cno&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& FROM course&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& WHERE cname='english'));本例若用联接查询方法可写成如下代码:SELECT student.sno, snameFROM& student, course, electiveWHERE student.sno=elective.sno&&&&&&&&& o&&&&&&&&& and cname='english';
·检索至少同时选修了C03和C06两门课的学生学号。SELECT A.snoFROM elective AS A, elective AS BWHERE A.sno = B.sno o='C03' o='C06';
本例中,在同一层查询内,同一个表elective出现了两次,引入表的别名A和B就是为了便于区分。若在A中找到C03的行,B中找到C06的行,且两行的SNO相同,那么这个学生就是至少同时选修了指定两门课的学生。把表的别名A和B看成是定义了两个元组变量将更容易理解。·检索出没有选修maths课程的学生学号和姓名。SELECT sno, snameFROM studentWHERE sno not in&&&&&&&&&&&&&&&&&& ( SELECT sno&&&&&&&&&&&&&&&&&&&& FROM elective&&&&&&&&&&&&&&&&&&&& WHERE cno in&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ( SELECT cno&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& FROM course&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& WHERE cname='maths'));请注意例中最外层的WHERE子句是使用了‘not in’,若改为‘not exists’则代码如下:SELECT sno, snameFROM studentWHERE not exists&&&&&&&&&&&&&&&&& ( SELECT sno&&&&&&&&&&&&&&&&&&& FROM elective&&&&&&&&&&&&&&&&&&& WHERE student.sno=elective.sno and cno in&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ( SELECT cno&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& FROM course&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& WHERE cname='maths'));
·检索出选修了全部课程的学生学号和姓名。SELECT sno, snameFROM studentWHERE not exists&&&&&&&&&&& ( SELECT *&&&&&&&&&&&&& FROM course&&&&&&&&&&&&& WHERE not exists&&&&&&&&&&&&&&&&&&&&&&&&& ( SELECT *&&&&&&&&&&&&&&&&&&&&&&&&&&& FROM elective&&&&&&&&&&&&&&&&&&&&&&&&&&& WHERE student.sno=elective.sno&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& o));本例的查询可以这样理解,在student依次指定每个学生,在course中不存在一门课程是这个学生没有学的。
·外层查询与内层查询可通过三种方式连接:表达式 [NOT] IN (内层查询)[NOT] EXISTS (内层查询)标量值 q [ANY|ALL|SOME] (内层查询)&&& [注:标量值也称为常量或字面值; q 是算术比较运算符(如=,<=,等; SQL规定ANY与SOME是同义词,后来的标准都改为SOME。]例如,检索选修了课程号为C12的学生学号和姓名可表达为:SELECT sno, snameFROM studentWHERE sno = SOME&&&&&&&&&&&&&&&&&&&&&& ( SELECT sno&&&&&&&&&&&&&&&&&&&&&&&& FROM elective&&&&&&&&&&&&&&&&&&&&&&&& WHERE cno='c12');注意,‘IN’与‘=SOME’等价,故例中的‘=SOME’可换成‘IN’。但是‘NOT IN’并不等价于‘SOME’,与‘NOT IN’等价的是‘ALL’。在使用ANY,ALL,SOME时,一定要仔细地弄清楚他们的确切含义。
·检索至少有一门成绩超过号学生某一门成绩的学生学号。SELECT DISTINCT snoFROM electiveWHERE grade>some&&&&&&&&&&&&&&&&&&&& ( SELECT grade&&&&&&&&&&&&&&&&&&&&&& FROM elective&&&&&&&&&&&&&&&&&&&&&& WHERE sno=);
·聚合函数对一组值执行计算并返回单一的值。统计student表的学生总人数以及平均身高。SELECT count(*) AS 学生总人数, avg(height) AS 平均身高FROM
·在elective表统计选修了课程的学生人数以及找出所有成绩中的最高分、最低分。/* 本例用T-SQL语句实现 */use mydbgoselect count(distinct sno) as 选课人数,max(grade) as 最高分,min(grade) as 最低分from electivego
聚合函数注意各个函数的含义: COUNT(*) 计算元组的个数COUNT(列名) 求一列中值的计算个数SUM(列名) 求一列中值的总和AVG(列名) 求一列中值的平均值MAX(列名) 求一列中值的最大值MIN(列名) 求一列中值的最小值
3.2& SELECT语句的完整句法下面,我们以T-SQL为例,按SELECT 语句执行过程的顺序介绍各个子句的语法摘要。(1) FROM子句FROM子句的功能是指定SELECT(包括DELETE,UPDATE)语句中使用的表和视图。多种联接方式
(2) WHERE子句(行条件子句)WHERE子句的功能是指定选取行子集的条件。
(3) GROUP BY子句(分组子句)GROUP BY子句的功能是指定分组的条件。/* 本例按学号分组,统计每个学生的平均分,输出时按平均分降序排列 */use mydbgoSELECT sno, AVG(grade) as 平均分, MAX(grade) as 最高分FROM electiveGROUP BY snoORDER BY 平均分 DESC
(4) HAVING子句(组条件子句)HAVING子句的功能是在分组的基础上指定选取某些组的条件。GROUP BY子句按学号SNO对ELECTIVE表中的行分组后,HAVING子句再消除选修少于两门课的组:USE mydbgoSELECT sno,avg(grade)FROM electiveGROUP BY snoHAVING COUNT(*) > 1
(5) SELECT子句
(6) ORDER BY子句(排序子句)ORDER BY子句的功能是对结果集的排序。对elective表中的行按分数降序排列。USE mydbgoSELECT sno,gradeFROM electiveORDER BY 2 desc
ORDER BY可以用来为GROUP BY子句的输出排序。下面的示例显示使用ORDER BY子句定义返回GROUP BY子句中的行的顺序:USE mydbgoSELECT cno,count(sno)FROM electiveWHERE grade is not nullGROUP BY cnoHAVING count(sno)>0ORDER BY 2 desc,cno
(7) INTO子句INTO子句的功能是创建新表并将查询结果集插入新表中。INTO子句应用举例。USE mydbgoSELECT year(birth) as age,count(sno) as s_countINTO m_studentFROM studentWHERE sex='男'GROUP BY year(birth)HAVING year(birth)>1981ORDER BY 2,year(birth) desc在这个例子中,用上了前面介绍的全部7个子句。先从student表中选出男生的行,再按出生年份分组,然后选出出生年份大于1981的那些组,计算每组的年龄及同一年龄组的人数,输出时按同一年龄组的人数升序排列,对人数相同的那些组再按出生年份降序排列,最后创建新表m_student,把结果集插入到新表中。
3.3& SQL查询其它一些子句及关系代数表达式的实现上一节介绍了SELECT语句中主要子句的语法。下面介绍如何用SQL查询语句实现关系代数表达式,并论述查询的结构及其它的一些子句:
(1) COMPUTE子句COMPUTE子句的功能是进行汇总计算,把生成的合计作为附加列放在结果集的最后面。COMPUTE子句语法格式:[ COMPUTE&&& { {AVG|COUNT|MAX|MIN|STDEV|VAR|SUM} (表达式) } [,…]&&& [ BY 表达式 [,…] ]& ]下列T-SQL SELECT语句使用COMPUTE子句生成student表中height列的和及平均值:use mydbgoSELECT sno,heightFROM studentCOMPUTE SUM(height),avg(height)下列查询在COMPUTE子句中加入可选的BY关键字,以生成每个sno的小计,即统计出每个学生修了几门课(已取得成绩的课)、总分和平均分:use mydbgoSELECT *FROM electiveWHERE grade is not nullORDER BY snoCOMPUTE count(sno),sum(grade),avg(grade) BY sno
(2) UNION运算符(并集运算符)UNION运算符的作用是将两个或更多查询的结果组合为单个结果集。T-SQL UNION运算符语法:{
| () }UNION [ALL]
| ()[ UNION [ALL]
| () […] ]下面的J-SQL例子说明了UNION的基本应用。若有多个SELECT语句参与并运算,可用UNION运算符分隔开。SELECT *FROM student_tUNIONSELECT *FROM
(3) 交集和差集的操作在一些其它的SQL,进行交集和差集的操作可使用下列语句:交:&& (SELECT查询语句1) INTERSECT [ALL] (SELECT查询语句2)差:&& (SELECT查询语句1)&& EXCEPT& [ALL] (SELECT查询语句2)&&&& 或(SELECT查询语句1)&& MINUS&& [ALL] (SELECT查询语句2)
下面是求student和student_t两个表交集的代码:SELECT student.*FROM student INNER JOIN student_t ON student.sno=student_t.利用NOT IN的性质——‘仅属于第一个表而不属于第二个表的行才能输出’,我们可以用NOT IN模拟EXCEPT差操作。下面是求student和student_t两个表差集的代码:SELECT *FROM studentWHERE sno not in&&&&&&&&&&&&&&&&&&&& ( SELECT sno&&&&&&&&&&&&&&&&&&&&&& FROM student_t);
也可以使用NOT EXISTS的形式求差集:SELECT *FROM studentWHERE not exists&&&&&&&&&&&&&&&&&&&& ( SELECT *&&&&&&&&&&&&&&&&&&&&&& FROM student_t&&&&&&&&&&&&&&&&&&&&&& WHERE student.sno=student_t.sno);
(4) 子查询子查询是一个SELECT查询,它返回单个值且嵌入在SELECT,INSERT,UPDATE,DELETE语句或其它子查询中。任何允许使用表达式的地方都可以使用子查询。下例中,T-SQL一个子查询用作SELECT语句中名为total的列表达式。use mydbSELECT ( SELECT sum(grade)&&&&&&&&&& FROM elective&&&&&&&&&& WHERE student.sno=sno) as total, *FROM studentORDER BY 1
设有两个基本表R(A,B,C)和S(D,E,F),试用SQL查询语句表达下列关系代数表达式:&&& (1)πA(R)  σB='17'(R)   (3)R×S  (4))πA,F(σC=D(R×S))(1)SELECT A FROM R(2)SELECT * FROM R WHERE B='17'(3)SELECT A,B,C,D,E,F FROM R,S(4)SELECT A,F FROM R,S WHERE R.C=S.D
设有两个基本表R(A,B,C)和S(A,B,C)试用SQL查询语句表达下列关系代数表达式:  (1)R∪S  (2)R∩S  (3)R-S  (4)πA,B(R)πB,C(S)    (1)SELECT A,B,C      FROM R      UNION      SELECT A,B,C      FROM S
    (2)SELECT A,B,C      FROM R      INTERSECT      SELECT A,B,C      FROM S
    (3)SELECT A,B,C      FROM R      WHERE NOT EXISTS       (SELECT A,B,C       FROM S       WHERE R.A=S.A AND R.B=S.B AND R.C=S.C)
    (4)SELECT R.A,R.B,S.C      FROM R,S      WHERE R.B=S.B
阅读(1685) | 评论(1) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
谓词exists即存在量词($),其语义是内层查询的结果非空(或者说,内层查询结果应包含任何行;又或者说,内层查询结果应至少有一行)时为真。
·检索选修课程名为‘english’的学生学号和姓名。
SELECT sno, sname
FROM student
WHERE sno in
不错,谢谢你的分享,
炎炎夏日福网首次推出15G全能空间,有惊喜!
3五计划:5GWEB+5G邮箱+5G数据库
仅售500元/年支持月付 可免费自行绑定5个域名、500个解析、500个子域名500GB/月流量
IIS连接数据 500 个、500GB/月流量限制、共享日志文件空间
企业邮箱功能:
赠送5GB 超大企业邮箱,500个Email企业邮箱用户
自动回复、自动转发、POP3、SMTP收发信、SMTP发信认证
邮件过滤、邮件拒收、邮件夹管理、邮件域管理、定制邮件数
主机功能支持:
采用安全稳定的Win2003 .net2.0 架构
支持ASP、PHP、JSP.NET、PERL等脚本、支持自定义CGI
全面支持.net2.0版本,独立的Application应用池,支持
请登录后评论。> &若有关系R(A,B,C,D,E)和S(B,C,F,G),则R与S自然
&若有关系R(A,B,C,D,E)和S(B,C,F,G),则R与S自然
master & &
发布时间: & &
浏览:5 & &
回复:6 & &
悬赏:0.0希赛币
&若有关系R(A,B,C,D,E)和S(B,C,F,G),则R与S自然联结运算后的属性列有( )个,与表达式&1,3,6,7(&3&6(R&S))等价的SQL语句如下:
SELECT ( ) FROM ( ) WHERE ( );
A.5& &&&&&&&& &&&&&&
B.6& &&&&&&&&& &&&&&&
C.7 &&&&&&&&&& &&&&&&
A.A,R.C,F,G&&&&&&&&&&&&&&&&&&&&& &&&&&&
B.A,C,S.B,S.F
C.A,C,S.B,S.C&&&&&&&&&&&&&&&&&&& &&&&&&
D.R.A,R.C,S.B,S.C
A.R&&&&&&&&&&&&&&&&&&&&&&
B.S&&&&&&&&&&&&&&&&&&&
C.RS&&&&&&&&&&&&&&&&&
A.R.B= S.B AND R.C = S.C AND R.C&S.B
B.R.B= S.B AND R.C = S.C AND R.C&S.F
C.R.B= S.B OR R.C = S.C OR R.C&S.B
D.R.B= S.B OR R.C = S.C OR R.C&S.F
所属试卷:
为什么要R.B=S.B?spe & &
12:05:33 & &
& & (3)(0)引用R和S两个表,要相互连接,当然要共有属性相同时才能表明是同一元组,R和S的共有属性为B和C,R.B=S.B、R.C=S.C & &
20:17:28 & &
& & (0)(0)引用问题3答案为什么不是C选项,from是从R和S做自然连接后的表里查询,所以是RSlming08 & &
19:09:53 & &
& & (0)(0)引用要从所有的表中查询,你还是没理解前面一问的意思,多理解题目的意思R和S自然连接R和S中有部分元组是没能放入表中的,查询时要查询所有的表 & &
16:16:54 & &
& & (2)(0)引用条件之间为什么是and的关系?而不是or的关系。似乎没有看到过这个知识点啊haochangyu & &
16:52:23 & &
& & (0)(0)引用题目中是把一个自然连接分解开来,两者直接的关系是且,即两者都成立才行。 & &
20:25:34 & &
& & (0)(0)引用
本问题标题:
本问题地址:
温馨提示:本问答中心的任何言论仅代表发言者个人的观点,与希赛网立场无关。请对您的言论负责,遵守中华人民共和国有关法律、法规。如果您的言论违反希赛网问答中心的规则,将会被删除。
最佳答案:104
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&京ICP证号&&
京网文[3号&&
Copyright (C) 2017 Baidu

我要回帖

更多关于 select 1 from where 的文章

 

随机推荐