实验七:索引和视图的操作

1、将选了数据库课程的同学提高10%。

UPDATE sc SET grade=grade*1.1 WHERE cno=(SELECT cno FROM course WHERE cname="数据库");

2、把是空值的学生成绩改为0。

UPDATE sc SET grade=0 WHERE grade IS NULL;

3、把是空值的学生成绩改为0。

DELETE FROM teacher WHERE tname='张娜';

4、插入一个新的学生记录(李兰, 1995-7-5,男, 20,46478291@qq.com)。

INSERT INTO student VALUES( NULL ,'李兰','1995-7-5','男','20','46478291@qq.com');

5、将张天同学的学号改为2011010。(注意student和sc表中都是张天的学号)

SET FOREIGN_KEY_CHECKS=0;
UPDATE student INNER JOIN sc ON student.sno=sc.sno SET  student.sno='2011010',sc.sno='2011010' WHERE sname='张天';

6、插入一个新的学生记录(2011006,张丽娜, 1994-12-23,女,20,46478291@qq.com)


7、创建一个新表stu,包含三个字段:学号、姓名和系别。然后将student表中信息工程系的学生插入到新表stu中。

方法一:
CREATE TABLE stu(sno INT PRIMARY KEY,sname VARCHAR(5),deptno TINYINT);
INSERT INTO stu SELECT sno,sname,student.deptno FROM student INNER JOIN dept ON student.deptno=dept.deptno WHERE dname='信息工程';
方法二:
 DELETE FROM stu;
 SELECT sno,sname,student.deptno into outfile 'd:\ccc' FROM student INNER JOIN dept ON student.deptno=dept.deptno WHERE dname='信息工程';
 LOAD DATA INFILE 'd:\ccc' into table stu;

8、在sc表中删除成绩最差的2条记录。

 DELETE FROM sc ORDER BY grade ASC LIMIT 2;

9、在student表中删除刘茜同学信息,以及在sc表中其所有选课信息。

 DELETE student,sc FROM student INNER JOIN sc ON student.sno=sc.no WHERE student.sname='刘茜';

10、删除张天同学的选课信息。

 DELETE FROM sc WHERE sno IN(SELECT sno FROM student WHERE sname='张天');

11、建立男学生的视图schoolboy,属性包括学号、姓名、性别和出生日期。

CREATE VIEW schoolboy(sno,sname,birth,sex)AS SELECT sno,sname,birth,sex FROM student WHERE sex=1 WITH CHECK OPTION;

12、在视图schoolboy中查询2009年出生的学生学号、姓名、性别。

 SELECT sno,sname,sex FROM schoolboy WHERE YEAR(birth)=2009;

13、在视图schoolboy中插入一个新的学生记录,其中学号为2011011,姓名为jack。

INSERT INTO schoolboy SET sno=2011011,sname='jack', sex=1;

14、在schoolboy视图中删除jack的信息。

DELETE FROM schoolboy WHERE sname='jack';

15、创建一个视图s_view,求平均成绩大于80的学生学号和平均成绩。

CREATE VIEW s_view(sno,avg_grade) AS SELECT sno,AVG(grade) FROM sc GROUP BY sno HAVING AVG(grade)>=80;

16、在s_view视图中查询平均成绩大于90分的学生信息。

SELECT * FROM s_view WHERE avg_grade >=90;

17、删除s_view视图中平均成绩大于90分的信息。

DELETE FROM s_view WHERE avg_grade>=90;

18、为student表的sname字段创建名为index_name,长度为4的普通索引。

CREATE INDEX index_name ON student(sname(4));

19、在student表中,为deptno和birth创建名为index_t的索引。deptno为升序,birth为降序。

CREATE INDEX index_t ON student(deptno ASC,birth DESC);

20、为course表中的课程名字段前5个字节建立唯一索引,降序排列。

CREATE UNIQUE INDEX nindex ON course( cname(5) DESC);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值