數據庫原理實驗二:SQL定義語言

實驗目的

能夠使用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 首先建立服務器的連接

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 表

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章