学生表:Student (Sno, Sname, Ssex , Sage, Sdept) 学号,姓名,性别,年龄,所在系 Sno为主键
课程表:Course (Cno, Cname) 课程号,课程名 Cno为主键
学生选课表:SC (Sno, Cno, Score) 学号,课程号,成绩 Sno,Cno为主键
1.用SQL语句创建学生表Student,定义主键,姓名不能重名,性别只能输入男或女,所在系的默认值是 “计算机”。
CREATE TABLE Student (
Sno INT PRIMARY KEY,
Sname VARCHAR(50) NOT NULL UNIQUE,
Ssex ENUM('男', '女') NOT NULL,
Sage INT,
Sdept VARCHAR(50) DEFAULT '计算机'
);
2.修改student 表中年龄(age)字段属性,数据类型由int 改变为smallint。
alter table student modify column sage smallint;
3.为SC表建立按学号(sno)和课程号(cno)组合的升序的主键索引,索引名为SC_INDEX 。
创建一个SC表:
CREATE TABLE SC (
Sno INT,
Cno INT,
Score FLOAT,
PRIMARY KEY (Sno, Cno)
);
为SC表创建索引:
create index SC_INDEX on SC (Sno asc, Cno asc);
索引创建成功。
4.创建一视图 stu_info,查询全体学生的姓名,性别,课程名,成绩。
创建还没创建的课程表Course:
CREATE TABLE Course (
Cno INT PRIMARY KEY,
Cname VARCHAR(100)
);
创建视图stu_info:
create view stu_info as
select s.sname, s.ssex, c.cname, sc.score
from student s
join sc on s.sno = sc.sno
join course c on sc.cno = c.cno;
插入测试数据:
INSERT INTO Student (Sno, Sname, Ssex, Sage, Sdept) VALUES (1, '张三', '男', 20, '计算机'), (2, '李四', '女', 19, '数学'), (3, '王五', '男', 21, '物理');
INSERT INTO Course (Cno, Cname) VALUES (1, '数据库'), (2, '计算机网络'), (3, '操作系统');
INSERT INTO SC (Sno, Cno, Score) VALUES (1, 1, 85), (1, 2, 78), (1, 3, 90), (2, 1, 92), (2, 2, 88), (2, 3, 84), (3, 1, 76), (3, 2, 81), (3, 3, 89);
通过视图查询全体学生的姓名,性别,课程名,成绩:
select * from stu_info;