• 数据库——SQL-SERVER练习(3)数据更新 视图


    (1).  将一个新学生记录(学号:95020;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。(注意, 学号是主码不允许重复,一个学号只能插入一次,学号是5位数,不要用书上的8位数的学号)

    INSERT
    INTO STUDENT(SNO,SNAME,SSEX,SDEPT,SAGE)
    VALUES ('95020','陈冬','','IS',18)

    (2).  插入一条选课记录( 95004,2),  插入部分值必须指定列名。
    语句执行截图:

    INSERT
    INTO SC(SNO,CNO)
    VALUES ('95004','2')

    (3).  在SC表中插入学号为95004选3号课成绩为80的数据。

    INSERT
    INTO SC(SNO,CNO,GRADE)
    VALUES ('95004','3',80)


    (4). 将学生95001的年龄改为22岁, 系名改为’MA’

    UPDATE STUDENT
    SET SAGE ='22',SDEPT='MA'
    WHERE SNO='95001'


    (5). 将所有学生的年龄增加1岁

    UPDATE STUDENT
    SET SAGE=SAGE+1


    (6). 把2号课程的成绩提高5分.

    UPDATE SC
    SET GRADE=GRADE+5
    WHERE CNO=2


    (7). 把’信息系统’ 课程的成绩提高10%.  (SET GRADE=GRADE*1.1)

    UPDATE SC
    SET GRADE=GRADE*1.1
    WHERE CNO IN
    (SELECT CNO
    FROM COURSE
    WHERE CNAME='信息系统'
    )

    (8). 删除2号课程的所有选课记录。

    DELETE
    FROM SC
    WHERE CNO=2

    (9).  删除计算机科学系所有学生的选课记录。

    DELETE        
    FROM SC        
    WHERE SNO IN            
    (SELECT SNO             
    FROM STUDENT       
    WHERE SDEPT='CS'
    )


    (10). 在SC表中删除课程名为’数据结构’所对应的元组。

    DELETE
    FROM SC
    WHERE CNO IN
    (  SELECT CNO
       FROM COURSE
       WHERE CNAME='数据结构'
    )

    (11).  建立信息系学生的视图IS_Student.

    CREATE VIEW IS_Student
    AS
    (
    SELECT SNO,SNAME,SAGE
    FROM STUDENT
    WHERE SDEPT='IS'
    )


    (12).  定义一个反映学生出生年份的视图BT_S, 属性为汉字(学号,姓名,出生年份)

    CREATE VIEW BT_S(SNO,SNAME,SBRITH)
    AS
    (
    SELECT SNO,SNAME,2019-SAGE
    FROM STUDENT
    )


    (13). 将学生的学号及他的平均成绩定义为一个视图

    CREATE VIEW S_G(SNO,GRAVG)
    AS
    (
    SELECT SNO,AVG(GRADE)
    FROM SC
    GROUP BY SNO
    )

    (14). 建立男生学生的视图,属性包括学号,姓名,选修课程名和成绩。

    CREATE VIEW M_STUDENT(SNO,SNAME,CNAME,GRADE)
    AS
    (
    SELECT STUDENT.SNO,SNAME,CNAME,GRADE
    FROM STUDENT,SC,COURSE
    WHERE STUDENT.SNO=SC.SNO AND SC.CNO=COURSE.CNO AND SSEX=''
    )

    查询这个视图平均成绩大于80分的学生学号和姓名

    SELECT SNO,SNAME
    FROM  M_STUDENT
    GROUP BY SNO,SNAME
    HAVING AVG(GRADE)>80

    (15). 建立视图,有系名,人数,平均成绩( 外连接, 分组,  人数是COUNT(DISTINCT STUDENT.SNO)   )
         思考1:人数用COUNT(*) 是否可以?
         思考2:用普通连接是否可以?
    查询这个视图中人数>1的系名

    CREATE VIEW S_SDEPT(SDEPT,COUNTS,AVG)
    AS
    (
    SELECT SDEPT,COUNT(DISTINCT STUDENT.SNO),AVG(GRADE)
    FROM SC,STUDENT
    WHERE STUDENT.SNO*=SC.SNO
    GROUP BY SDEPT
    )

     查询这个视图中人数>1的系名.

    SELECT SDEPT
    FROM S_SDEPT
    WHERE COUNTS>1

  • 相关阅读:
    ZOJ Problem Set–2781 Rounders
    ZOJ Problem Set 3418 Binary Number
    ZOJ Problem Set 1090 The Circumference of the Circle
    ZOJ Problem Set 2932 The Seven Percent Solution
    java的反射应用
    C++指针之数据成员指针
    为了实现相同账号不能重复登录功能做的努力
    我对设计模式的理解
    ZOJ Problem Set – 1045 HangOver
    好久不见
  • 原文地址:https://www.cnblogs.com/wkfvawl/p/10843953.html
Copyright © 2020-2023  润新知