数据库的建立和维护

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二:数据库的建立和维护
学号:姓名:
实验目的
熟练掌握建立数据库和表,向数据库输入数据、修改数据和删除数据的操作。

实验内容
建立数据库并设计各表,输入多条实际数据,并实现数据的增、删、改操作。

实验步骤:
创建用于学生管理数据库,数据库名为XSGL,包含学生的基本信息,课程信息和选课信息。

数据库XSGL包含下列3个表:
(l)student:学生基本信息。

(2)course:课程信息表。

(3)sc:学生选课表。

各表的结构分别如表1、表2和表3所示。

表1学生信息表:student
表2课程信息表:course
表3学生选课表:sc
一.数据库的建立:
1.命令方式建立:
(a)在SQL SERVER2005中,在新建查询中使用T-SQL语句建立数据库XSGL:CREATE DATABASE XSGL
ON(NAME='XSGL_DATA',
FILENAME='D:\XSGL.MDF',
SIZE=10MB,
MAXSIZE=50MB,
FILEGROWTH=5%)
LOG ON
(NAME='XSGL_Log',
FILENAME='D:\XSGL_Log.ldf',
SIZE=2MB,
MAXSIZE=5MB,
FILEGROWTH=1MB)
2.在新建查询中使用T-SQL语句建立数据库XSGL2:
CREATE DATABASE XSGL2
3.T-SQL语句删除数据库XSGL2:
drop database XSGL2
二.表的建立:
1.命令方式建立:
在SQL SERVER2005中的”新建查询”编辑窗口中用下列SQL语句建立三个表student,course,sc:
use xsgl
create table student
(sno char(10)not null primary key,
sname varchar(10)not null,
ssex char(2)not null check(ssex='男'or ssex='女'),
sage int,
sdept char(2)not null
);
go
create table course
(cno char(3)not null primary key,
cname varchar(30)not null,
credit int check(credit>=0and credit<=10),
pcno char(3)references course(cno)
);
go
create table sc
(sno char(10)not null,
cno char(3)not null,
grade int check(grade>=0and grade<=100),
primary key(sno,cno),
foreign key(sno)references student(sno),
foreign key(cno)references course(cno)
);
2.删除表sc,再建立表sc
use xsgl
drop table sc
create table sc
(sno char(10)not null,
cno char(3)not null,
grade int check(grade>=0and grade<=100),
primary key(sno,cno),
foreign key(sno)references student(sno),
foreign key(cno)references course(cno)
);
3.添加一身份证号字段,设置其惟一性.(注:操作前应删除表中的所有记录) Alter table student add id char(18)unique(id)
4.设置学号字段只能输入数字:
alter table student add constraint CK_Sno_Format check(sno like
'[0-9][0-9][0-9][0-9][0-9]')
5.设置身份证号的输入格式:
alter table student add constraint CK_ID_Format check((id like
'[0-9][0-9][0-9][0-9][0-9][0-9][1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9][0-9][0-9][0-9]_')OR(id like'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9][0-9][0-9][0-9]'))
6.设置18位身份证号的第7位到第10位为合法的年份(1900-2050)
alter table student add constraint CK_ID_Format2check(not len(id)=18or
((convert(smallint,substring(id,7,4))>=1900)and(convert(smallint,substring(id,7,4))<=2050))) 7.设置男生的年龄必须大于22,女生的年龄必须大于20.
Alter table student add constraint CK_age check(ssex='男'and sage>=22or ssex='女'and sage>=20)
8.去掉身份证字段。

alter table student drop constraint CK_ID_Format
alter table student drop constraint CK_ID_Format2
alter table student drop constraint UQ__student__117F9D94
alter table student drop column id
三.表数据的添加:
sno sname ssex sage sdept
95001李勇男20CS
95002刘晨女19IS
95003王敏女18MA
95004张立男19IS
95005刘云女18CS
cno cname credit pcno
1数据库45
2数学6
3信息系统31
4操作系统46
5数据结构47
6数据处理3
7PASCAL语言46
sno cno grade
95001192
95001285
95001388
95002290
95002380
95003285
95004158
95004285
在SQL SERVER2005”新建查询”的编辑窗口中使用下列类似SQL语句插入数据: Select*from student(查看插入前的记录信息)
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') Select*from student(查看插入后的记录信息)
Select*from course(查看插入前的记录信息)
insert into course(cno,cname,credit,pcno)values('1','数据库',4,'5')
insert into course(cno,cname,credit,pcno)values('2','数学',6,null)
insert into course(cno,cname,credit,pcno)values('3','信息系统',3,'1')
insert into course(cno,cname,credit,pcno)values('4','操作系统',4,'6')
insert into course(cno,cname,credit,pcno)values('5','数据结构',4,'7')
insert into course(cno,cname,credit,pcno)values('6','数据处理',3,null)
insert into course(cno,cname,credit,pcno)values('7','PASCAL语言',4,'6')
Select*from course(查看插入前的记录信息)
Select*from sc(查看插入前的记录信息)
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)
insert into sc(sno,cno,grade)values('95005','2',78)
Select*from sc(查看插入后的记录信息)
四.表数据的修改:
1.命令方法:在SQL SERVER2005”新建查询”的编辑窗口中使用下列SQL语句修改数据。

1)将所有学生的年龄增加一岁:
Select*from student(查看更新前的记录)
update student set sage=sage+1
Select*from student(查看更新后的记录)
2)将4号课程的学分改为4:
Select*from course(查看更新前的记录)
update course set credit=4where cno=4
Select*from course(查看更新后的记录)
3)设置7号课程没有先行课:
Select*from course(查看更新前的记录)
update course set pcno=null where cno=7
Select*from course(查看更新后的记录)
4)将95001号学生的1号课程的成绩增加3分:
Select*from sc(查看更新前的记录)
update sc set grade=grade+3where sno=’95001’and cno=’1’
Select*from sc(查看更新后的记录)
五.表数据的删除:
1.命令方法:在SQL SERVER2005”新建查询”的编辑窗口中使用下列SQL语句删除数据。

1)删除学号为95005的学生的记录:
Select*from student(查看删除前的记录)
delete from student where sno=’95005’
Select*from student(查看删除后的记录)
2)删除所有的课程记录:
Select*from course(查看删除前的记录)
delete from course
Select*from course(查看删除后的记录)
3)删除成绩为不及格(少于60分)的学生的选课记录:
Select*from sc(查看删除前的记录)
delete from sc where grade<60
Select*from sc(查看删除后的记录)
4)删除女生的所有记录
select*from student
delete from student where ssex='女'
select*from student
问题:SQL和普通的编程语言,如C有何区别?
SQL是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

C语言是一种计算机程序设计语言,是编程语言。

一个是管理数据库,一个是编写程序的。

实验小结:
在向表中添加数据时,如果表中某字段数据与另一表中某字段数据相关联或者与本表中的另一字段数据相关联,一定要注意添加的先后顺序,不能引用一个数据库中还没有的数据。

相关文档
最新文档