• SQL语句(十六)实现集合运算、对数据修改、数据表复制


    (一)、集合运算(交、并、补)

    --(1)Union 并运算
    select Sname
    from Student
    UNION
    select Tname
    From Teacher
    
    --(2)INTERSECT 交运算
    --查询学校中与老师重名的学生姓名
    select Sname
    From Student
    INTERSECT       --不会重复出现
    Select Tname
    From Teacher
    
    --另解
    select Sname
    From Student
    Where Sname IN
        (Select Distinct Tname
         From Teacher)
    
    --(3)找出不选3号课的学生
    select distinct Sno
    From SC
    where Sno not IN 
            ( select Sno
              From SC
              Where Cno = '3'
            )
    
    -- 另解 使用EXCEPT
    Select Sno
    From SC
    EXCEPT
    Select Sno
    From SC
    Where Cno = '3'

    二、 数据修改

    1. 数据增加

    • INSERT INTO <表名> ([列名])

    • VALUES (<值列表>)

    • 实例

    -- (1). 插入一条学生记录 (2017005, 张三, 男,21,数学系)
    INSERT INTO Student
    Values ('2017005', '张三', '', 21, 'MA')
    
    --没有说明的列,插入NULL
    --说明的列数要等于值的个数
    --如果在指定了某列不允许为空,则必须插入数据
    --例2 出错, Sno is NOT NULL
    INSERT INTO Student(Sname)
    VALUES ('刘帅')
    • 创建表

        SELECT *

        INTO newTable

          From oldTable

    • 实例

    --例1 创建与Student同结构的表 
    Select * 
    Into Stu_tmp
    From Student --注意: new Table 不能存在 --但是有附加命令
    • 拷贝表 (新表 已经创建)

        Insert  Into newTable  

        Select *

        From OldTable

    • 多行插入

      INSERT INTO <表名> [(<​> [, <​>....] ) ]

      子查询

    • 实例

    --例1 拷贝表
    --先在Student表中插入一条数据
    INSERT INTO Student
    Values ('2017008', '豆子', '', 20, 'CS', '1997-07-22')
    select * from Student
    --拷贝表全部数据 到 新表 (已经创建了新表) Insert Into Stu_tmp Select * From Student --删除 Stu_tmp delete From Stu_tmp --插入, 子查询 Insert Into Stu_tmp(Sno, Sname, Sex, Sage, Sdept) select Sno, Sname, Sex, Sage, Sdept From Student

    2. 数据修改

    --将学生95001的年龄改成22岁
    
    --将所有学生的年龄增加1岁
    UPDATE Student
    Set Sage = Sage + 1
    
    
    -- 修改计算机全体人员成绩 为0
    Update SC
    Set Grade = 0
    where Sno in
        (Select distinct SC.Sno
         From Student, SC
         Where Student.Sno = SC.Sno and Sdept = 'CS')
  • 相关阅读:
    事件对象阻止默认行为
    事件对象的属性和方法
    [MySQL] 中 Schema和Database的区别
    MyBatis-session-SqlSession
    Setting the Java Class Path
    MySQL Connector/J
    Backup and Recovery Types
    The MySQL Server
    Server SQL Modes
    MySQL Server and Server-Startup Programs
  • 原文地址:https://www.cnblogs.com/douzujun/p/6656311.html
Copyright © 2020-2023  润新知