实验目的

能够使用SQL语言进行基本表的结构的定义、修改、删除,会建立与删除索引;

实验内容

用SQL语言进行基本表结构的定义、修改、删除,索引的建立和删除

实验步骤

1 在SQL SERVER 中新建查询,建立到服务器的连接

2 用SQL语言CREATE TABLE语句创建实验一中学生表student、课程表course和选课表sc及其相应约束

   具体约束如下:

表1 学生信息表:student

列名

数据类型

长度

完整性约束

sno

字符(文本)型

8

主键

sname

字符(文本)型

4

不为空

ssex

字符(文本)型

2

默认值为’男’

取值为’男’或’女’

sage

整数(数值)型

 

 

sdept

字符型

10

 

表2 课程信息表:course

列名

数据类型

长度

完整性约束

cno

字符(文本)型

2

主键

cname

字符(文本)型

30

 

credit

整数(数值)型

 

 

cpno

字符(文本)型

3

 

表3 学生选课表:sc

列名

数据类型

长度

完整性约束

sno

字符(文本)型

8

主属性,外键

cno

字符(文本)型

2

主属性,外键

grade

整数(数值)型

 

取值在0-100之间

3 向创建的表中输入数据,测试所创建的完整性约束是否起作用

4 用SQL语言ALTER语句修改表结构;

  1. STUDENT表中增加一个字段入学时间scome,
  2. 删除STUDENT表中sdept字段;
  3. 删除创建的SC表中cno字段和COURSE表cno字段之间的外键约束;
  4. 重建(3)中删除的约束

5 重新定义一个简单表,然后用SQL语言DROP语句删除该表结构;

6 用SQL语言CREATE INDEX语句定义表STUDENT的SNAME字段的降序唯一索引;

7 用SQL语言DROP语句删除索引;

实验过程及分析

1 首先建立服务器的连接

sql server创建课程管理数据库 sql创建课程表_实验

2 创建一个数据库XSGL和需要的表

create database XSGL
go
use XSGL
go
create table student
	(sno char(8) primary key,        
	 sname char(4) not null unique, 
	 ssex char(2) default '男' check(ssex='男' or ssex='女'), 	
	 sage tinyint,
	 sdept char(10)
	)

create table course
	(cno char(2) primary key,
	 cname char(30) not null unique,
	 cpno char(3),
	 ccredit tinyint
	)

create table sc
	(sno char(8),         
	 cno char(2),         
	 grade tinyint,       
	 constraint pk_grade primary key(sno,cno),
	 constraint fk_stuid foreign key(sno) references student(sno),
	 constraint fk_course foreign key(cno) references course(cno),
	 constraint ck_grade check(grade>=0 and grade<=100) 
	)

3 输入数据检查完整性约束是否起作用

insert into student(sno,sname, ssex,sage,sdept) values('95001', '李勇', '男', 20, 'CS')
insert into student(sno,sname, ssex,sage,sdept) values('95002', '刘晨', '女', 19, 'IS')
insert into student(sno,sname, ssex,sage,sdept) values('95003', '王敏', '女', 18, 'MA')
insert into student(sno,sname, ssex,sage,sdept) values('95004', '张立', '男', 19, 'IS')
insert into student(sno,sname, ssex,sage,sdept) values('95005', '刘云', '女', 18, 'CS ')
insert into course(cno, cname,ccredit,cpno) values('1', '数据库', 4, '5')
insert into course(cno, cname,ccredit,cpno) values('2', '数学', 6, null)
insert into course(cno, cname,ccredit,cpno) values('3', '信息系统', 3, '1')
insert into course(cno, cname,ccredit,cpno) values('4', '操作系统', 4, '6')
insert into course(cno, cname,ccredit,cpno) values('5', '数据结构', 4, '7')
insert into course(cno, cname,ccredit,cpno) values('6', '数据处理', 3, null)
insert into course(cno, cname,ccredit,cpno) values('7', 'PASCAL语言', 4, '6')
insert into sc(sno,cno,grade) values('95001', '1' ,92)
insert into sc(sno,cno,grade) values('95001', '2' ,85)
insert into sc(sno,cno,grade) values('95001', '3' ,88)
insert into sc(sno,cno,grade) values('95002', '2' ,90)
insert into sc(sno,cno,grade) values('95002', '3' ,80)
insert into sc(sno,cno,grade) values('95003', '2' ,85)
insert into sc(sno,cno,grade) values('95004', '1' ,58)
insert into sc(sno,cno,grade) values('95004', '2' ,85)

4 alter语句练习

--1)向STUDENT表中增加“入学时间”scome列,其数据类型为日期型
alter table student 
add scome date;

--2)删除STUDENT表中sdept字段
alter table student
drop column sdept

--3)删除创建的SC表中cno字段和COURSE表cno字段之间的外键约束
alter table sc
drop fk_course

--4)重建3)中删除的约束
alter table sc
add constraint fk_course foreign key(cno) references course(cno)

5 重新定义一个简单表,然后用SQL语言DROP语句删除该表结构

drop table sc

6 用SQL语言CREATE INDEX语句定义表STUDENT的SNAME字段的降序唯一索引

create index index_sname
on student(sname desc)

7 用SQL语言DROP语句删除索引

drop index index_sname on student

实验总结

1 可以使用外键来限制取值范围
2 使用alter添加,修改列;alter还可以删除表中约束如索引 index
3 使用DROP 可以直接删除表 删除的时候先要删除外键表后才可以删除主键表
4 删除外键
      alter table 表
      drop constraint 约束名
5 删除索引
      drop index 索引
      on 表