练习要求:
学生表:Student (Sno, Sname, Ssex , Sage, Sdept)
学号,姓名,性别,年龄,所在系 Sno为主键
课程表:Course (Cno, Cname,)
课程号,课程名 Cno为主键
学生选课表:SC (Sno, Cno, Score)
学号,课程号,成绩 Sno,Cno为主键
INSERT INTO Student2 (Sno, Sname, Ssex, Sage, Sdept) VALUES
(1, '张三', '男', 20, '计算机'),
(2, '李四', '女', 21, '数学'),
(3, '王五', '男', 22, '物理');
INSERT INTO Course (Cno, Cname) VALUES
(101, '数据库原理'),
(102, '微积分'),
(103, '量子力学');
INSERT INTO SC (Sno, Cno, Score) VALUES
(1, 101, 90),
(1, 102, 85),
(2, 102, 92),
(3, 103, 88);
1.用SQL语句创建学生表student,定义主键,姓名不能重名,性别只能输入男或女,所在系的默认值是 “计算机”。
CREATE TABLE Student2 (
Sno INT PRIMARY KEY,
Sname VARCHAR(50) UNIQUE NOT NULL,
Ssex CHAR(1) CHECK (Ssex IN ('男', '女')),
Sage INT,
Sdept VARCHAR(50) DEFAULT '计算机'
);
创建课程表
CREATE TABLE Course (
Cno INT PRIMARY KEY,
Cname VARCHAR(255) NOT NULL
);
创建学生选课表
CREATE TABLE SC (
Sno INT,
Cno INT,
Score INT,
PRIMARY KEY (Sno, Cno),
FOREIGN KEY (Sno) REFERENCES Student2(Sno),
FOREIGN KEY (Cno) REFERENCES Course(Cno)
);
效果展示:
![](https://img-blog.csdnimg.cn/direct/6756c589130b45a29499ebc1905a7474.png)
2.修改student 表中年龄(age)字段属性,数据类型由int 改变为smallint。
ALTER TABLE Student2
MODIFY Sage SMALLINT;
效果展示:
![](https://img-blog.csdnimg.cn/direct/fee89536c512492ba23134cec86cccad.png)
3.为SC表建立按学号(sno)和课程号(cno)组合的升序的主键索引,索引名为SC_INDEX 。
CREATE UNIQUE INDEX SC_INDEX ON SC (Sno, Cno);
4.创建一视图 stu_info,查询全体学生的姓名,性别,课程名,成绩。
CREATE VIEW stu_info AS
SELECT Student2.Sname, Student2.Ssex, Course.Cname, SC.Score
FROM Student2
JOIN SC ON Student2.Sno = SC.Sno
JOIN Course ON SC.Cno = Course.Cno;
效果展示: