「 数据更新 」

CREATE DATABASE EDUC;
USE EDUC;
--创建STUDENT表
CREATE TABLE STUDENT(
  sno CHAR(8) PRIMARY KEY,
  sname CHAR(8) NOT NULL,
  ssex CHAR(2)  CHECK (ssex ='男'OR ssex ='女') DEFAULT ('男'),
  sage    INT,
  sdept    CHAR(10)
);
--创建COURSE表
CREATE TABLE COURSE(
    cno    CHAR(2) PRIMARY KEY,
    cname CHAR(30),
    credit INT,    
    cpno CHAR(3)
);


--创建SC表
CREATE TABLE SC(
    sno CHAR(8),
    cno    CHAR(2),
    grade INT,
    PRIMARY KEY (sno,cno),
    FOREIGN KEY(sno)REFERENCES STUDENT(sno),
    FOREIGN KEY(cno)REFERENCES COURSE(cno),
    CHECK (grade BETWEEN 0 AND 100)
);
INSERT INTO STUDENT VALUES ('95001','李勇','男',20,'CS'),
                           ('95002','刘晨','女',19,'IS '),
                           ('95003','王敏','女',18,'MA'),
                           ('95004','张立','男',19,'IS '),
                           ('95005','刘云云','女',18,'CS');
INSERT INTO COURSE VALUES ('1','数据库',4,'5'),
                          ('2','数学',6,NULL),
                          ('3','信息系统',3,'1'),
                          ('4','操作系统',4,'6'),
                          ('5','数据结构',4,'7'),
                          ('6','数据处理',3,NULL),
                          ('7','PASCAL语言',4,'6');                          
INSERT INTO SC VALUES ('95001','1',0),
                      ('95001','2',69),
                      ('95001','3',88),
                      ('95002','2',10),
                      ('95002','3',80),
                      ('95003','2',15),
                      ('95004','1',58),
                      ('95004','2',85),
                      ('95004','3',NULL);
                      ('95030','1',NULL)        
--1.插入学生记录(学号:95030,姓名:李莉,年龄:18)
--因sno为95030的学生记录在STUDENT中已存在,sno为主键,不能出现重复且STUDENT表中学号sno为SC表中的外键,,故现将之前插入的sno为95030的学生记录删除,插入题目要求的记录
DELETE FROM  SC WHERE sno = '95030';
DELETE FROM  STUDENT WHERE sno = '95030';
INSERT INTO STUDENT (sno,sname,sage) VALUES('95030','李莉',18);
--2.插入选课记录(95030,1)
INSERT INTO SC (sno,cno) VALUES ('95030','1');
--3.将CS学院的学生年龄改成17
UPDATE  STUDENT SET sage = 17 WHERE sdept = 'CS';
--4.将MA学院所有学生成绩改成0
UPDATE  SC SET grade = 0 WHERE sno IN
    (SELECT sno FROM STUDENT WHERE sdept = 'MA');
--5.把低于总平均成绩的女同学成绩提高5分
UPDATE SC SET grade = grade + 5
    WHERE sno IN (SELECT sno FROM STUDENT WHERE ssex='女')
    AND grade<(SELECT * FROM (SELECT Avg(grade) AS grade FROM SC) AS a);
--6.修改2号课程的成绩,若成绩小于75分则提高5%
UPDATE SC SET grade =grade*(1+0.05) WHERE grade < 75 AND cno = '2';
--7.删除95030学生信息
--sno是SC表中的外键,如需在student表中删除则需要先在sc表中删除
DELETE FROM SC WHERE sno = '95030';
DELETE FROM STUDENT WHERE sno = '95030';
--8.删除SC表中无成绩的记录
DELETE FROM SC WHERE grade IS NULL;
--9.删除王敏的选课记录
DELETE FROM SC WHERE sno IN(SELECT sno FROM STUDENT WHERE sname = '王敏');
--10.删除不及格的学生选课记录
DELETE FROM SC WHERE grade < 60;
--11.删除IS系所有学生选课记录
DELETE FROM SC WHERE sno IN(SELECT sno FROM STUDENT WHERE sdept = 'IS');
--12.删除所有未被选修的课程
DELETE FROM COURSE WHERE cno NOT IN(SELECT cno FROM SC);
--13.查询每一门课程成绩都大于等于80分的学生学号、姓名和性别,把值送往另一个以及存在的基本表STU(SNO,SNAME,SSEX)中
CREATE TABLE STU(    
    sno CHAR(8), 
    sname CHAR(8), 
    ssex CHAR(2) 
);
INSERT INTO STU(sno,sname,ssex)
    SELECT STUDENT.sno,sname,ssex FROM STUDENT,SC 
    WHERE STUDENT.sno NOT IN
        (SELECT sno FROM sc WHERE grade<80) AND STUDENT.sno=SC.sno;

--14.建立一个sdeptgrade表,包含(sdept,avggrade)字段,对每一个系,求学生的成绩,并把结果存入sdeptgrade
CREATE TABLE sdeptgrade(
    sdept CHAR(10),
    avggrade INT
);
INSERT INTO sdeptgrade(sdept,avggrade)
    SELECT STUDENT.sdept, AVG(SC.grade) FROM STUDENT,SC 
        WHERE STUDENT.sno = SC.sno GROUP BY STUDENT.sdept;

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aღ凣辰᭄ꦿ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值