實驗目的
能夠使用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語句修改表結構;
- STUDENT表中增加一個字段入學時間scome,
- 刪除STUDENT表中sdept字段;
- 刪除創建的SC表中cno字段和COURSE表cno字段之間的外鍵約束;
- 重建(3)中刪除的約束
5 重新定義一個簡單表,然後用SQL語言DROP語句刪除該表結構;
6 用SQL語言CREATE INDEX語句定義表STUDENT的SNAME字段的降序唯一索引;
7 用SQL語言DROP語句刪除索引;
實驗過程及分析
1 首先建立服務器的連接
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 表