精华内容
下载资源
问答
  • 1、有两个关系S(A,B,C,D)和T(C,D,E,F),写出与下列查询等价的SQL表达式: (1)σA=10(S)\sigma_{A=10}(S)σA=10​(S) select * from S where A=10; (2)ΠA,B(S)\Pi_{A, B}(S)ΠA,B​(S) select A,B from S; ...

    1、有两个关系S(A,B,C,D)和T(C,D,E,F),写出与下列查询等价的SQL表达式:
    (1) σ A = 10 ( S ) \sigma_{A=10}(S) σA=10(S)

    //选择
    select *
    from S
    where A=10;

    (2) Π A , B ( S ) \Pi_{A, B}(S) ΠA,B(S)

    //投影
    select A,B
    from S;

    (3) S ⋈ T S \bowtie T ST

    //自然连接
    select S.*,T.*
    from S,T;

    (4) S ⋈ S . C = T . C T S \underset{S . C=T . C}{\bowtie} T SS.C=T.CT

    //等值连接
    select S.*,T.*
    from S,T
    where S.C=T.C;

    (5) S ⋈ A < E T S \underset{A<E}{\bowtie} T SA<ET

    //非等值连接
    select S.*,T.*
    from S,T
    where A<E;
    

    (6) Π C , D ( S ) × T \Pi_{C, D}(S) \times T ΠC,D(S)×T

    //S在cd上的投影与T的笛卡尔积
    //方法一:
    select C,D
    from S
    union 
    select *
    from T;
    //方法二:
    select S.C,S.D,T.*
    from S,T

    2、用SQL语句建立以下的4个表;针对建立的4个表用SQL完成第二章习题6中的查询。在这里插入图片描述
    S表:

    create table S(sno char(10),
        sname char(10),
        status smallint,
        city char(10)
        );
    insert into S 
    values('s1','精益',20,'天津');
    insert into S 
    values('s2','盛锡',10,'北京');
    insert into S 
    values('s3','东方红',30,'北京');
    insert into S 
    values('s4','丰泰盛',20,'天津');
    insert into S 
    values('s5','为民',30,'上海');

    P表:

    create table P(pno char(10),
        pname char(10),
        color char(10),
        weight smallint
        );
    insert into P
    values('P1','螺母','红',12);
    insert into P
    values('P2','螺栓','绿',17);
    insert into P 
    values('P3','螺丝刀','蓝',14);
    insert into P 
    values('P4','螺丝刀','红',14);
    insert into P 
    values('P5','凸轮','蓝',40);
    insert into P
    values('P6','齿轮','红',30);

    J表:

    create table J(jno char(10),
        jname char(10),
        city char(10)
        );
    insert into J
    values('J1','三建','北京');
    insert into J
    values('J2','一汽','长春');
    insert into J 
    values('J3','弹簧厂','天津');
    insert into J 
    values('J4','造船厂','天津');
    insert into J 
    values('J5','机车厂','唐山');
    insert into J
    values('J6','无线电厂','常州');
    insert into J
    values('J7','半导体厂','南京');

    SPJ:

    
    CREATE TABLE SPJ(SNO CHAR(4),
                  PNO CHAR(4),
                  JNO CHAR(4),
                  QTY SMALLINT
                  );
    INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S1','P1','J1',200);
    INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S1','P1','J3',100);
    INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S1','P1','J4',700);
    INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S1','P2','J2',100);
    INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S2','P3','J1',400);
    INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S2','P3','J2',200);
    INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S2','P3','J4',500);
    INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S2','P3','J5',400);
    INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S2','P5','J1',400);
    INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S2','P5','J2',100);
    INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S3','P1','J1',200);
    INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S3','P3','J1',200);
    INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S4','P5','J1',100);
    INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S4','P6','J3',300);
    INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S4','P6','J4',200);
    INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S5','P2','J4',100);
    INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S5','P3','J1',200);
    INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S5','P6','J2',200);
    INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S5','P6','J4',500);
    

    最终结果:
    在这里插入图片描述

    (1)求供应工程J1零件的供应商号码SNO;

    select sno
    from spj
    where jno='j1'

    在这里插入图片描述

    (2)求供应工程J1零件P1的供应商号码SNO;

    select sno
    from spj
    where jno='j1' and pno='p1';

    在这里插入图片描述
    (3)求供应工程J1零件为红色的供应商号码SNO;

    select sno
    from spj,p
    where jno='j1' and p.pno=spj.pno and color='红';

    在这里插入图片描述

    (4)求没有使用天津供应商生产的红色零件的工程号JNO;

    select jno
    from j
    where not exists(
    select * 
    from spj,s,p
    where s.city='天津' and p.color='红' 
    and spj.jno=j.jno and spj.pno=p.pno);

    在这里插入图片描述

    (5)求至少用了供应商S1所供应的全部零件的工程号JNO。

    select distinct jno
    from spj x
    where not exists(
      select *
      from spj y
      where y.sno='s1'
      and not exists(
      select *
      from spj z
      where z.pno=y.pno 
      and z.jno= x.jno)
    );

    在这里插入图片描述
    3、针对习题4中的4个表使用SQL完成以下各项操作:
    (1)找出所有供应商的姓名和所在城市;

    select jname,city
    from j;

    在这里插入图片描述

    (2)找出所有零件的名称、颜色、重量;

    select pname,color,weight
    from p;

    在这里插入图片描述

    (3)找出使用供应商S1所供应零件的工程号码;

    select jno
    from spj
    where sno='s1';

    在这里插入图片描述

    (4)找出工程项目J2使用的各种零件的名称及其数量;

    select pname,qty
    from spj,p
    where jno='j2' and spj.pno=p.pno;

    在这里插入图片描述

    (5)找出上海厂商供应的所有零件号码;

    select distinct pno
    from spj,s
    where city='上海' and spj.sno=s.sno;

    在这里插入图片描述
    (6)找出使用上海产的零件的工程项目;

    select distinct jname
    from spj,s,j
    where s.sno=spj.sno 
    and s.city='上海'
    and j.jno=spj.jno;

    在这里插入图片描述
    (7)找出没有使用天津产的零件的工程号码;

    select jno
    from j
    where not exists(
       select *
       from spj,s
       where spj.jno=j.jno
       and spj.sno=s.sno
       and s.city='天津');

    在这里插入图片描述
    (8)把全部红色零件的颜色改成蓝色;

    update p
    set color='蓝'
    where color='红';

    (9)由S5供给J4的零件P6改为由S3供应,请作必要的修改;

    update spj
    set sno='s3'
    where sno='s5'
    and jno='j4'
    and pno='p6';

    (10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录;

    delete 
    from spj
    where sno='s2'
    delete 
    from s
    where sno='s2';

    (11)请将(S2,J6,P4,200)插入供应情况关系;

    insert into spj
    values('s2','p4','j6',200);

    4、请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应商数量(QTY)。针对该视图完成下列查询:

    create view view_s
    as
    select sno,pno,qty
    from spj
    where jno=(select jno
       from j
       where jname='三建');

    (1)找出三建工程项目使用的各种零件代码及其数量;

    select pno,qty
    from view_s

    在这里插入图片描述
    (2)找出供应商S1的供应情况;

    select *
    from view_s
    where sno='s1'

    在这里插入图片描述

    展开全文
  • 关系代数表达式总结-数据库关系代数表达式总结-数据库关系代数表达式总结-数据库
  • SQL语句的执行一般是先翻译为关系代数再被执行的(能有效提高执行速度),所以我们有必要了解关系代数SQL语句间的对应关系。就像高中代数由+-*/和数字组成,关系代数是由union、intersection、join等运算符和关系...

    SQL语句的执行一般是先翻译为关系代数再被执行的(能有效提高执行速度),所以我们有必要

    了解关系代数与SQL语句间的对应关系。

    就像高中代数由+-*/和数字组成,关系代数是由union、intersection、join等运算符和关系实例

    组成的。

    关系代数有五个基础运算符,这五个基础运算符能派生出其他组合运算符。它们分别是:

    选择(σ, selection)、投影(π, projection)、叉乘(x, cross-product)、

    差(-, set-difference)和并(υ, union)

    它们和SQL语句的对应关系为:

    选择(σ, selection)相当于SQL语句中的where,表示选出满足一定条件的行。

    如:σ rating>8 (S2)相当于 select * from S2 where rating>8;

    投影(π, projection)相当于SQL语句中的select。。。distinct, 表示选择哪些列。注意:投影是会去重的!

    如:π sname,rating (σ rating>8 (S2))相当于 select sname, rating from S2 where rating>8;

    叉乘(x, cross-product)相当于SQL语句中的from,表示穷举所有集合两边元素的组合量

    如: AxB 相当于 select * from A, B;  注意:叉乘时两个集合不能有重名列

    差(-, set-difference)R-S返回所有在R中而不在S中的元组

    并(υ, union)RυS返回包含在R中或在S中的所有元组

    注意:并、交、差都要求两个关系实例是并相容的。 并相容指:1. 两个关系实例字段数相同 2. 对应字段类型、取值范围相同

    合成运算符:

    合成运算符是由基础运算符组合派生而来的,算是一种速记标志。

    交(∩, intersection) R∩S返回既在R中又在S中的元组。

    自然连接(⋈, natural join)相当于先做叉乘,再选择公共属性一样的关系实例。如果没有公共属性的话,那么结果就是叉乘

    除(÷, division)r÷s, 返回r中包含与s共有列但其他列不同的关系实例。

    例如:

    6eb6a593ac53fc3ab11d706efb45a4d9.png

    r的上下蓝色和金黄色部分包含s,而中间橙色部分仅部分包含s,白色部分完全不包含s,所以r÷s=

    9697c5126742fe9f1eae4da591a8acff.png

    展开全文
  • 关系代数sql语句

    万次阅读 多人点赞 2019-04-25 06:54:57
    关系代数定义: 关系代数是以关系为运算对象的一组高级运算的集合。关系代数的运算有集合运算(集合<表>与集合<表>之间的运算)和关系运算(集合<表>内部的运算) 集合运算: 并运算: R U S...

    关系代数定义:

              关系代数是以关系为运算对象的一组高级运算的集合。关系代数的运算有集合运算(集合<表>与集合<表>之间的运算)和关系运算(集合<表>内部的运算)

    集合运算:

           并运算:  R U S              差运算:  R - S                 交运算:   R  ∩ B            笛卡儿积: R  x  S  (组合运算)

           并,交,差(是对各集合元组的重新组合;要求:参加集合操作的各结果表的列数必须相同,对应项的数据类型也必须相同)

     

    关系运算:

              选择  {\color{Blue} \sigma },       σF(R)={t|t∈R∧F(t)=True}σF(R)={t|t∈R∧F(t)=True}                ------水平分割表

              投影  {\color{Blue} \pi },       πA(R)={t[A]|t∈R}πA(R)={t[A]|t∈R}                                         -------垂直分割表

              连接 【/* {\color{Blue} \theta }这里是比较运算符 */,{\color{Blue} \theta }为大于,小于的连接叫比较连接,{\color{Blue} \theta }为等于的连接叫等值连接,自然连接 /*它是等值连接的特殊情况,结果集中公共的属性只保留一个------去除重复列。两表关联,外键主建出现在同一集合里(外键和主键就是重复的列,要去除一列),2*/自然theta链接   =   σ XθY(R×S),扩展的还有外连接 】

             等值连接和自然连接的区别

    sql语句的*使用的是等值连接:

    sql语句要使用自然连接,需要自己手动指定列(去除重复列):自然连接的例子:

     

          自然连接和外连接的区别:(d:左外连接,f:全连接)

        除运算 ÷

    下面以电力抢修工程数据库为例:

    抢修工程计划表Salvaging,配电物资库存记录表Stock,配电抢修物资领料出库表Out_stock

    查询说明: 

    结果:

    关系代数总结:(先选择运算,再笛卡尔积,最后投影,选择)

     

    sql语句连接查询:

            1.连接查询主要包括

                   等值连接查询(比较运算符为“ = ”),自然连接查询,非等值连接查询(比较运算符为其他的连接查询),自身连接查  询,外连接查询和复合条件连接查询 (多个连接条件)

            2.连接查询执行过程:

                从概念上讲,DBMS,执行连接操作的过程是:首先在表1中找到第一个元组,然后从头开始扫描表2,逐一查找满足连接条件的元组,找到后将表一中的第一个=元组与该元祖拼接起来,形成结果表中的一个元组,表2全部查找完后再找表1中的第2个元组,然后重头开始扫描表2,逐一查找满足连接条件的元组,找到后将表1中的第2个元组与该元组拼接起来,形成结果表中的一个元组,重复上述操作,直到表1中的全部元组都处理完毕为止

             3.外连接查询:

                 左外连接:为右边的表(副表)增加一个万能的行,该行全部由空值组成,它可以和左边的表(主表)中不满足连接条件的元组进行连接,由于这个万能行的各列全部是空值,因此在本例中的连接结果中有一行来自副表的属性值全部是空值【left join.. on是left outer join...on的缩写】

                 

          4.自身连接查询:

              为要自身查询的表取两个别名就OK了

             查询领取了部门1的物资又领取了部门2的物资的员工姓名

            

         5.集合查询:(mysql,支持UNION  关键字,不支持INTERSECT----用 INNER JOIN ...ON() 和 EXCEPT关键字-----用where..not in(),where exists(select *.....)查的是内层查询是否有返回值,列明用*,给出具体的列明无意义)

             SELECT Emp_name FROM employee WHERE supplies_id='D02'
             UNION  |  INTERSECT  |  EXCEPT
             SELECT Emp_name FROM employee WHERE supplies_id='D01'

     

                        

             

    展开全文
  • 关系代数表达式优化步骤

    千次阅读 2021-06-26 12:39:22
    关系代数表达式优化步骤 本篇主要讲解怎么画查询语法树并对其优化,因为我在学关系代数的语法树的时候,在网上找不到比较详细的教法或者技巧,最后通过答案反推原理,所以想写一篇技巧来描述一下这类题的解题方法。 ...

    关系代数表达式优化步骤

    本篇主要讲解怎么画查询语法树并对其优化,因为我在学关系代数的语法树的时候,在网上找不到比较详细的教法或者技巧,最后通过答案反推原理,所以想写一篇技巧来描述一下这类题的解题方法。

    先上书内讲解

    1、构造查询树

    第一步:把用高级语言定义的查询转换为关系代数表达式
    ★ 以 SELECT子向对应投影操作,以FROM字向对应笛卡尔积以 WHERE子句对应选择操作,生成原始查询树
    ★ SQL语句转化为原始查询树
    第二步:把关系代数表达式转换为查询树。

    注: 查询树是一种表示关系代数表达式的树形结构。在一个查询树中,叶子结点表示关系,内结点表示关系代数操作。查询树以自底向上的方式执行:当一个内结点的操作分量可用时,这个内结点所表示的操作启动执行,执行结束后用结果关系代替这个内结点。

    2、利用等价转换规则反复地对查询表达式进行尝试性转换,将原始的语法树转換成“优化”的形式(方式的等价变换规则查书)

    1. 对每一个选择,利用等价变换规则4~9尽可能把它移到树的叶端。目的是使选择操作尽早执行
    2. 对每一个投影利用等价变换规则3,9等的一般形式尽可能把它移向树的叶端。目的是使投影操作尽早执行
    3. 对每个叶节点加必要的投影操作,以消除对查询无用的属性。
    4. 如果笛卡尔乘积后还须按连接条件进行选择操作,可将两者组合成连接操作
      选择下沉,投影随后

    题目举例

    对学生-课程数据库,查询信息系学生选修了的所有课程名称。

    ​ SELECT Cname FROM Student,Course,SC WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno AND Student.Sdept=’IS’;

    ​ 试画出查询树图、关系代数语法树图、优化后的查询树。

    具体的技巧就是 先选择,后投影,按照查询语句的顺序 先写Project(Cname),也就是最终查询结果,然后按照条件语句where从后面往前写,遇到两个表相关联的字段时,可以看看是否这个表后面还有查询,如果没有,则表作为叶端,有的话,就继续连接(join)条件,直到所有的查询条件都连接完毕,剩下的叶端就是表了。
    例如下图的查询树,到join(SC.Cno=Course.Cno)的时候,条件的Course从后往前都没有下一个查询条件了,也就是说这是最后一个关于Course的查询条件,那表名就出来了。
    进行优化语法树的时候,要全部都转为选择σ和投影∏来表示,σ一般表示除了父节点以外的结点,∏ 表示父节点。遇到两个表相关联的情况,下面要用X表示,比查询多这一步而已,读者看图应该能看懂。下一步就是变成优化后的语法树,做法也很简单,就是把那些单表的查询语句移到下面来,移到等值运算后面作为新的查询条件,然后再出结果的表。

    1.构造查询树
    查询语句转关系代数表达式为:∏Cname(σStudent.Sdept=’IS’(Student ⋈ Course ⋈ SC))

    在这里插入图片描述

    2.利用等价代换原则进行优化

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 除法在SQL中的应用讲解 题目 找到通过所有住在New York的代理商下订单的顾客的cid 上面是说,SQL语句中没有除法操作。 除法查询的意思是: 对于结果集中的顾客,对于每个住在NewYork的代理商,我们可以在orders表中...
  • 本数据库系列专栏,文章的重心将会是总结SQL语句的使用,而不会涉及到太多数据库本身或大数据的内容。除此以外,使用的SQL语句会因为MySQL或Oracle的不同,导致一些使用上的差异,这部分具体的区别将不作区分。在...
  • 利用SQL语言实现关系代数操作 (1)并-交-差的处理 Union Intersect Except ALL是对子查询结果的的操作 SQL并运算 SQL交运算 SQL差运算 (2)用SQL处理空值 (3)内连接、外连接 SQL内外连接的区别 .....
  • 1. 关系代数 选择 投影 并:R ∪ S 差:R - S 交:R ∩ S = R - (R - S) 重命名:将E重命名为S 连接操作: Theta join – θ 连接 等值连接:Theta连接中,谓词使用等号时,就是等值连接 ...
  • 数据库关系代数表达式

    千次阅读 2017-08-13 12:32:41
    关系代数的9种操作包括了:并、交、差、乘、选择、投影、联接、除、自然联接等操作。五个基本操作: 并(∪)、差(-)、笛卡尔积(×)、投影(σ)、选择(π)四个组合操作: 交(∩)、联接(等值联接)、自然联接(RcrossS...
  • 怎样用关系代数表达式表示查询要求? 用一个例子来讲述一下 题目:查询至少选修了全部课程的学生学号和姓名? 题目:查询至少选修了全部课程的学生学号和姓名? ① 找出题目中暗含属性、以及它们所在的表 ...
  • 行的选择 列的选择
  • Take an input in SQL query, lexically analyze it, parse it and produce a relational algebric expression. Please answer as soon as possible.解决方案To get to that level of question I would have assumed...
  • RA(关系代数)运算符将关系作为输入并将它们作为输出返回.通常,RA查询语言是对运算符的嵌套调用的表达式.嵌套必须以表示关系值的叶子表达式结束.它们可以是用各部分来描述关系的文字.或者它们可以是给定关系常数或...
  • 关系代数sql语句对应关系

    千次阅读 2019-04-26 21:20:59
    warning:学习sql时,犯得最大错误往往就是投影对应的是sql中的select语句 参考:https://www.cnblogs.com/jiangfeilong/p/10567567.html
  • 数据库理论:关系代数SQL

    千次阅读 2021-01-13 23:29:44
    目录前言关系代数选择语句投影语句连接语句除法(重要⚠)关系代数例题SQL视图模式匹配聚合,分组与HAVING子查询SQL 例题 前言 关系代数通过符号化的语言,来描述数据库的行为关系,相当于简化版的 SQL。比如并,交...
  • 1.关系代数表达式 参考答案 2.请写出同时选修了C语言程序与数据库系统原理的同学。
  • 前段时间用MySQL实现过的,但是由于种种原因得使用sql server, 有关用MySQL实现的方法...有关两者的安装大家也可以参照我之前的博文,下面来看看实现关系代数: 显示所有数据库: select * from sys.databases; -...
  • 数据库关系代数中除运算讲解和SQL语句的实现

    万次阅读 多人点赞 2016-12-21 18:35:14
    【数据库原理】关系代数篇——除法讲解  
  • SQL关系代数

    千次阅读 2019-03-22 17:37:00
    Table of Contents ...SQL 是基于关系代数的查询语言,假如学习过 SQL关系代数,你就会发现,在 SQL 的查询语句中你会发现很多关系代数的影子。 然而,虽然知道 SQL关系代数密切相关,但...
  • MySQL实现关系代数运算MySQL实现关系代数运算MySQL实现关系代数运算[var1]两表的所有元组select * from department;select * from instructor;笛卡尔积结果select * from instructor, department;[var1]两表的所有...
  • 关系代数SQL实现

    千次阅读 2015-04-30 13:05:43
    一、传统的集合运算与SQL语句实现  传统的集合运算包括四种运算:并(∪)、交(∩)、差(—)、广义笛卡尔(X)。 并运算(Union) 对应的SQL语句: Select * from R Union Select * from S; 交...
  • SQL里最难理解的就是最前面的基础概念,万丈起于平原。本博文将所有的关系代数sql里用到的,都用例子做到一一对应,希望大家都能体会明白概念的重要性。
  • SQL 形式化语言——关系代数

    万次阅读 多人点赞 2017-04-25 19:43:12
    关系代数是一种过程化查询语言。它包括一个运算的集合,这些运算以一个或两个关系为输入,产生一个新的关系作为结果。关系代数的基本运算有: 选择 select σ 投影 project Π 并 union ∪ 集合差 set-...
  • (1)试写出该查询的关系代数表达式;(2)试写出查询优化的关系代数表达式。 (1)πCNAME,TEACHER(σSEX=女(SSCC)) (2)优化为:πCNAME,TEACHER(CπC#(πS#,C#(SC)πS#(σSEX=女(S)))) (基本思路:尽量提前做选择操作;...
  • 扩展资料: 设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的差由属于R而不属于S的所有元组组成。其结果关系仍为n目关系。记作: R-S={t|t∈R∧t∉S} 设关系R和关系S具有相同的目n,且...
  • 关系代数表达式实现下列数据查询: 检索"英语"专业学生所学课程的信息,包括学号、姓名、课程名和分数。 ∏sno,sname,cname,grade(σmajor=’英语’(S) ⋈ C ⋈ SC) SELECT S.sno,S.sname,C.cname,C.grade ...
  • 对初学这深入理解sql语法和有帮助,里面有一些sql的基本语法题目

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,382
精华内容 2,552
关键字:

sql语句关系代数表达式