• 关系数据库 第二瓣


    多表连接查询

      连接查询是关系数据库中最主要的查询,主要包括内连接、外连接和交叉连接等。

    1.内连接

      使用内连接时,如果两个表的相关字段满足连接条件,则从这两个表中提取数据并组合成新的记录。

      在非ANSI标准的实现中,连接操作时在WHERE子句中执行的,在ANSI SQL-92中,连接是在JOIN子句中执行的。这些连接方式分别称为theta连接和ANSI连接。

      内连接格式为:FROM 表1 [INNER] JOIN 表2 ON 连接条件

      形如:

      SELECT * FROM Student INNER JOIN SC ON Student.Sno = SC.Sno;

      SELECT Student.Sno, Sname, Ssex, Sage, Sdept, Cno, Grade, FROM Student JOIN SC ON Student.Sno = SC.Sno;

          SELECT Sname, Cname, Grade FROM Student S JOIN SC ON S.Sno = SC.Sno

      注:当为表指定了别名后,在查询语句中的其他地方都要使用别名。

    2.自连接

      自连接是一种特殊的内连接,它是指相互连接的表在物理上为同一张表,但在逻辑上分为两张表。使用自连接时,必须为两张表取别名,使之在逻辑上成为两张表。

      SELECT S2.Sname, S2.Sdept FROM Student S1 JOIN Student S2 ON S1.Sdept = S2.Sdept WHERE S1.Sname= '王智博' AND S2.Sname!='王智博'

    3.外连接

      内连接中只有满足连接条件的元组才能作为结果输出,但有时我们也希望输出那些不满足连接条件的元组的信息,这是就需使用外连接。

      外连接只限制一张表中的数据必须满足连接条件,二另一张表中的数据可以不满足连接条件。

      ANSI方式的外连接语法格式为:

      FROM 表1 LEFT|RIGHT [OUTER] JOIN 表2 ON 连接条件

      左外连接:限制表2中的数据必须满足连接条件,而不管表1中的数据是否满足连接条件,均输出表1中的内容。

      右外连接:限制表1中的数据必须满足连接条件,而不管表2中的数据是否满足连接条件,均输出表2中的内容。

      SELECT Student.Sno, Sname, Cno, Grade FROM Student LEFT OUTER JOIN SC ON Student.Sno = SC.Sno

    4.子查询

      在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。

      1.使用子查询进行基于集合的测试

        SELECT Sno,Sname,Sdept FROM Student WHERE Sdept IN (SELECT Sdept FROM Student WHERE Sname='王智博') AND Sname!='王智博'

      2.使用子查询进行比较测试

        SELECT Sno,Grade FROM SC WHERE Cno='C02' and Grade>(SELECT AVG(Grade) FROM SC WHERE Cno='C02')

      3.使用子查询进行存在性测试

        SELECT Sname FROM Student WHERE EXISTS (SELECT * FROM SC JOIN Student ON Sno = Student.Sno AND Cno='C01')

    数据更改功能

      1.插入数据

        INSERT [INTO] 表名 [(列名列表)] VALUES (值列表)

        例如:

        INSERT INTO SC (Sno, Cno, XKLB) VALUES ('9521105', 'C01', '必修');

        INSERT INTO SC VALUES ('9521105', 'C01', '必修'); --如果全部赋值,则不必写列名列表  

      2.更新数据

        UPDATE 表名 SET 列名=表达式 [,…n] [WHERE 更新条件]

        例如:

        UPDATE Student SET Sage = Sage +1

        UPDATE Student SET Sage = 21 WHERE Sno='950101'

        UPDATE Student SET Sage = 21 WHERE Sno IN (SELECT Sno FROM Student WHERE Sdept = '计算机系')

        UPDATE Student SET Grade =21 FROM SC JOIN Student ON SC.Sno = Student.Sno WHERE Sdept='计算机系'

      3.删除数据

        DELETE [FROM] 表名 [WHERE 删除条件]

        DELETE FROM SC;

        DELETE FROM SC FROM SC JOIN Student ON SC.Sno = Student.Sno WHERE Sdept='计算机系' AND Grade<60;

        

        

      

      

  • 相关阅读:
    npm 发包流程
    iframe嵌入第三方视频链接自动播放
    微信小程序 接入腾讯地图的两种写法
    微信小程序 生命周期
    css 传送阵
    微信小程序 音频播放器
    微信小程序 mpvue 使用vant-weapp
    微信小程序 使用mpvue
    ajax
    布局问题
  • 原文地址:https://www.cnblogs.com/CanWork/p/3355723.html
Copyright © 2020-2023  润新知