实验一 创建、修改数据库和表结构
1、用create建立教学数据库的五个基本表: (1)
学生表(学号,姓名,性别,年龄),student((Sno, sname, ssex,sage) ;
(2)课程表(课程号,课程名,学分),Course (Cno, Cname, credit) ; (3)选课表(学号,课程号,成绩),SC (Sno,, Cno, grade ) ; (4) 教师表(教师号,姓名,性别,出生年月,系部,职称,地址),
T(Tno,Tname,ssex,birthday,dept,title,address) ;
(5) 工资表(教师号,基本工资,职务工资,合计),Salary(Tno,jbgz,zwgz,hj);
Create Database Student default character set utf8 default COLLATE utf8_bin; Use Student;
Create Table Student( SNo char(20) primary key, SName char(20) , SSex char(4) default '男', SAge int ) ENGINE=InnoDB; Create Table Course( CNo char(20) primary key, CName char(20) NOT NULL, CRedit float ) ENGINE=InnoDB; Create Table SC( SNo char(20) NOT NULL, CNo char(20) NOT NULL, Grade float, Primary Key(SNo, CNo), Foreign Key(SNo) References Student(SNo) On Delete Cascade, Foreign Key(CNo) References Course(CNo) ) ENGINE=InnoDB; Create Table T( TNo char(20) Primary Key, TName char(20) NOT NULL, TSex char(4) default '男',
1
birthday DateTime, dept char(20), title char(20), address char(20) ) ENGINE=InnoDB; Create Table Salary( TNo char(20) NOT NULL, jbgz float, zwgz float, hj float, Foreign Key(TNo) References T(TNo) On Delete Cascade ) ENGINE=InnoDB; 2、用alter修改基本表
(1)在已存在的学生表student中增加一个sdept(系)的新的属性列; alter table Student add Dept char(20);
(2)将学生表student中sname属性列的数据类型修改为变长字符串varchar(10)。
alter able Student modify colum sname varchar(10) 3、建立一个临时表,然后将其删除
Create Table temp ( ANo char(20) NOT NULL,B float, C char(10) ) Drop table temp
实验二 建立与删除索引
1、用create index在学生表student的学号sno上建立聚簇索引。
Create Clustered Index SNo_Index On Student(SNo); 2、在学生表student中,为姓名sname建立非聚簇索引。 Create Index SName_Index On Student(SName); 3、在课程表的课程号Cno上建立唯一索引。 Create Unique Index CNo_Index On Course(CNo);
4、在选课表的学号sno、成绩Grade上建立复合索引,要求学号为升序,学号相同时成绩为
2
降序。
Create Index SCNo_Index On SC(SNo ASC, Grade DESC); 5、用drop删除学生表student的索引。 Drop Index Student.SNo_Index; 6、增加学生表student中姓名唯一约束。 Alter Table Student Add Unique(SName);
7、增加学生表student中性别‘男’、‘女’唯一约束。
Alter Table Student Add Constraint:SSex check(SSex = '男' or SSex = '女'); 8、增加学生表student中年龄18~25岁约束。
Alter Table Student Add Constraint:SAge check(SAge >= 18 And SAge <= 25); 9、增加选课表SC中学号sno的外码约束。
Alter Table SC Add Foreign Key(SNo) references Student(SNo);
-
实验三 数据的插入、更新及删除操作
1、用insert输入数据。 学生表student的数据
991201 张三 22 男 计算机系 991202 21 李四 男 信息系 991101 23 王五 男 数学系 991102 19 陈六 男 计算机系 991103 24 吴七 女 数学系 000101 22 刘八 女 信息系 Insert Into Student Values('991201', '张三', '男', 22, '计算机科学与技术系'); Insert Into Student Values('991202', '李四', '男', 21, '信息科学系'); Insert Into Student Values('991101', '王五', '男', 23, '数理系');
Insert Into Student Values('991102', '陈六', '男', 19, '计算机科学与技术系'); Insert Into Student Values('991103', '吴七', '女', 24, '数理系');
Insert Into Student Values('000101', '刘八', '女', 22, '信息科学系'); 课程表course的数据
3
1 数学 2 数据结构 3 程序设计 4 数据库原理 5 操 作系统 5 4 2 3 3 Insert Into Course Values('1', '数学', 5);
Insert Into Course Values('2', '数据结构', 4); Insert Into Course Values('3', '程序设计', 2); Insert Into Course Values('4', '数据库原理', 3); Insert Into Course Values('5', '操作系统', 3); 选课表SC的数据
991201 1 90 991201 5 80 991201 3 85 991201 4 90 991102 1 85 991102 2 98 000101 2 91 Insert Into SC Values('991201', '1', 90); Insert Into SC Values('991201', '5', 80); Insert Into SC Values('991201', '3', 85); Insert Into SC Values('991201', '4', 90); Insert Into SC Values('991102', '1', 85); Insert Into SC Values('991102', '2', 98); Insert Into SC Values('000101', '2', 91); 基本表T的数据 0001 0002 1001 1008 1968-10 张三 男 信息 副教授 湘潭 1956-11 李四 女 信息 教授 长沙 1973-07 王五 男 计算机 讲师 湘潭 1970-08 陈六 男 计算机 副教授 北京 Insert Into T Values('0001', '张三', '男', '1968-10-10', '信息科学系', '副教授', '湘潭'); Insert Into T Values('0002', '李四', '女', '1956-11-10', '信息科学系', '教授', '长沙');
Insert Into T Values('1001', '王五', '男', '1973-07-20', '计算机科学与技术系', '讲师', '湘潭'); Insert Into T Values('1008', '陈六', '男', '1970-08-20', '计算机科学与技术系', '副教授', '北京');
基本表Salary的数据
0001 1000 300 1300 0002 1500 500 2000 1001 800 200 1000 Insert Into Salary Values('0001', 1000, 300, 1300);
4
Insert Into Salary Values('0002', 1500, 500, 2000); Insert Into Salary Values('1001', 800, 200, 1000);*/ 2、用delete删除数据记录
(1)删除教师表T中教师号为0001的元组。 (2)删除教师表T中的全部数据。
update t set birthday='1961-10-04' where Tno ='0001' Delete From T;
3、用 update更新数据记录
(1) 把0001号教师的基本工资加100。 (2) 把所有教师的基本工资都加100。
Update Salary Set jbgz = jbgz + 100 Where TNo = '0001'
Update Salary Set jbgz = jbgz + 100
实验四 数据的查询
1、简单查询,用select检索 (1)查询所有学生的基本情况。
select * from student;
(2)查询教师每月应交纳的个人所得税。
select hj*0.005 as monthshui from Salary;
(3)查询张三与李四两位同学的基本情况。
select * from student where sname='张三' or sname='李四';
(4)查询9911班学生的基本信息(规定学生学号的前四位是班级号)。 select * from student where sno like '9911%'; (5)查询所有年龄在20岁以下的学生姓名及其年龄。 select sname,sage from student where sage<20; (6)查询选修了2门以上课程的学生学号。 select sno from SC group by sno
having count(*)>2;
2、多表查询,用select检索
5