数据库实验—DDL
-
使用SQL语句,在D盘的Data文件夹下,创建一个名为jxdb+学号后2位的教学管理数据库(如:学号后两位为01,则数据库名为jxdb01)。把教学管理数据库文件增长参数设置为4MB,文件最大大小参数设置为20MB,存储文件的文件名可自定义,其它参数均使用默认值。
- name为存储文件的文件名
- filename为真实的物理地址
- 记得加on关键字
create database jxdb29 on ( name='jxdb29', filename='D:\Data\jxdb29.mdf', maxsize=20MB, filegrowth=4MB )
-
使用SQL语句,在教学管理数据库中,创建Department学院基本表,只定义属性和表的主键。
表结构如下:
create table Department( Dno char(2) primary key, Dname varchar(15) not null )
-
使用SQL语句,在教学管理数据库中,创建Major专业基本表,只定义属性和表的主键。
表结构如下:
create table Major( Mno char(4) primary key, Mname varchar(15) not null, Dno char(2) )
-
使用SQL语句,在教学管理数据库中,创建Students学生基本表,只定义属性和表的主键。
表结构如下:
create table Students( Sno char(10) primary key, Sname varchar(4) no null, Sgender nchar(1), Sage int, Dno char(2), Sclass char(8), Mno char(4) )
-
使用SQL语句,在教学管理数据库中,创建Teachers教师基本表,只定义属性和表的主键。
表结构如下:
create table Teachers( Tno char(4) primary key, Tname varchar(4) not null, Tgender nchar(1), Tbirth smalldatetime, Dno char(2) )
-
使用SQL语句,在教学管理数据库中,创建Courses课程基本表,只定义属性和表的主键。
表结构如下:create table Courses( Cno char(8) primary key, Cname varchar(20) not null, Chours int, Ccredit int )
-
使用SQL语句,在教学管理数据库中,创建Reports选课基本表,只定义属性和表的主键。
表结构如下:
create table Reports( Sno char(10), Cno char(7), Racademicyear int, Rterm int, Grade int, primary key(Sno,Cno) )
-
使用SQL语句,在教学管理数据库中,创建Tutors授课基本表,只定义属性和表的主键。
表结构如下:
create table Tutors( Tno char(4) not null, Cno char(8) not null, Tacademicyear int, Tterm int, Sclass char(8) )
-
使用SQL语句修改Department表结构:
增加“学院院长”字段Dheader,类型为CHAR(4)。alter table Department add Dheader char(4)
-
使用SQL语句修改Students表结构:
(1)将“年龄”字段Sage改为“出生日期”字段Sbirth,类型为SMALLDATETIME;alter table Students drop column Sage alter table Students add Sbirth smalldatetime
(2)增加一个“生源地”字段Snative,类型为NVARCHAR(20)
alter table Students add Snative varchar(20)
-
使用SQL语句修改Courses表结构:
增加“先序课程编号”字段Pre_Cno,类型为CHAR(8)alter table Courses add Pre_Cno char(8)
-
使用SQL语句修改Reports表结构:
将“成绩”字段Grade的类型改为DECIMAL(4,1)alter table Reports alter column Grade decimal(4,1)
-
使用SQL语句修改Tutors表结构
增加以下字段内容 :
“课程评分”(Tevaluation) DECIMAL(4,2),
“学生评价”(Tmemo) NVARCHAR(150)alter table Tutors add Tevaluation decimal(4,2) alter table Tmemo varchar(150)
-
使用SQL语句,对各基本表中的外键进行声明,包括:
(1)学院表Department:Dheaderalter table Department add constraint FK_Dheader foreign key(Dheader) references Teachers
(2)专业表Major:Dno
alter table Major add constraint FK_Dno foreign key(Dno) references Department
(3)学生表Students:Mno
alter table Students add constraint FK_Mno foreign key(Mno) references Major
(4)教师表Teachers:Dno
alter table Teachers add constraint FK_Dno foreign key(Dno) references Department
(5)选课表Reports:Sno, Cno
alter table Reports add constraint FK_Sno foreign key(Sno) references Students alter table Reports add constraint FK_Cno foreign key(Cno) references Courses
(6)课程表Courses:Pre_Cno
alter table Courses add constraint FK_Pre_Cno foreign key(Pre_Cno) references Courses(Cno) -- 因为同一个表,不指名参照Cno可能会导致参照到Pre_Cno,因为外键一般都是和另一表主键同名
(7)授课表Tutors:Tno, Cno
alter table Tutors add constraint FK_Tno foreign key(Tno) references Teachers alter table Courses add constraint FK_Cno foreign key(Cno) references Courses
-
使用SQL语句,创建各基本表的索引,包括:
(1)在表Students的Mno列上按降序创建索引IDX_Stu_Mnocreate index IDX_Stu_Mno on Students(Mno desc)
(2)在表Courses的Cname列上按升序创建唯一索引IDX_Cou_Cname
create unique index IDX_Cou_Cname on Courses(Cname asc)
(3)在表Reports的学年列上按降序,同时在学期列上按升序创建索引
create index IDX_Rep_Year_Term on Reports(Racademicyear desc, Rterm asc)
(4)在表Teachers的职称列上按升序,同时在出生日期列上按降序创建索引
create index IDX_Prof_Birth ON Teachers(Dno asc, Tbirth desc)
(5)在表Tutors的Tno列上按升序创建索引
create index IDX_Tno ON Tutors(Tno asc)
(6)在表Tutors的Sclass列上按降序创建索引
create index IDX_Sclass ON Tutors(Sclass desc)
-
用SQL语句删除表Teachers中在职称列和出生日期列上创建的索引
drop index IDX_Prof_Birth on Teachers
本文来自博客园,作者:竹等寒,转载请注明原文链接。