1.1使用SQL Server工具(Microsoft SQL Server Management Studio Express)管理数据库
(1) 加入jwgl(教务管理)数据库。
create database jwgl
(2) 建立student 、course、sc 表。
use jwgl
-- 创建student表
create table student(
SNO char(10) not null,
SNAME char(20) UNIQUE,
SSEX char(2),
SAGE smallint,
SDEPART char(20)
)
-- 创建course表
create table course(
CNO char(4) PRIMARY KEY,
CNAME char(40) not null,
CPNO char(4),
CCREDIT smallint,
foreign key(CPNO) references course(CNO)
)
-- 创建sc表
create table sc(
SNO char(10),
CNO char(4),
GRADE smallint,
primary key(SNO,CNO),
foreign key(SNO) references student(SNO),
foreign key(CNO) references course(CNO)
)
(3) 在数据库中建立学生基本信息表student(SNO,SNAME,SSEX,SAGE , SDEPART )。更改表设置SNO为主键,增加属性Ptype(类型是CHAR,长度是10)。
-- 为student表中的SNO添加主键
alter table student add primary key(SNO)
-- 为student表添加一个属性Ptype,数值类型为char
alter table student add Ptype char(10)
-- 修改student表中的SSEX属性的数值类型长度为9
alter table student alter column SSEX char(9)
(4)在建立的表中录入数据;再修改第二条记录;删除第二条记录。
-- 为student表添加两条记录
insert student(SNO,SNAME,SSEX,SAGE,SDEPART,Ptype) values('20220101','Mary','female','19','CS','145')
insert student(SNO,SNAME,SSEX,SAGE,SDEPART,Ptype) values('20220102','Tom','male','21','IS','121')
-- 修改第二条记录
select * from student where SNO = '20220102'
update student
set SDEPART = 'CS'
where SNO = '20220102'
(5) 备份数据库。
BACKUP DATABASE jwgl
TO DISK='E:\ClassesNotes\DatabaseExperiment\Demo\jwgl.bak'
(6) 删除表student。
drop table student
select fk.name,fk.object_id,OBJECT_NAME(fk.parent_object_id) as referenceTableName
from sys.foreign_keys as fk
join sys.objects as o on fk.referenced_object_id=o.object_id
where o.name='student'
ALTER TABLE sc DROP CONSTRAINT FK__sc__SNO__1B0907CE
(7) 恢复jwgl数据库。
RESTORE DATABASE jwgl
FROM DISK='E:\ClassesNotes\DatabaseExperiment\Demo\jwgl.bak'
WITH
MOVE 'jwgl' TO 'D:\SqlServer2014\Root\MSSQL12.MSSQLSERVER\MSSQL\DATA\jwgl.mdf',
MOVE 'jwgl_log' TO 'D:\SqlServer2014\Root\MSSQL12.MSSQLSERVER\MSSQL\DATA\jwgl_log.ldf',
STATS = 10,REPLACE
(8) 分离jwgl数据库。
EXEC sp_detach_db @dbname = 'jwgl'
(9) 附加jwgl数据库。
EXEC sp_attach_db @dbname = 'jwgl', @filename1 = 'D:\SqlServer2014\Root\MSSQL12.MSSQLSERVER\MSSQL\DATA\jwgl.mdf',@filename2= 'D:\SqlServer2014\Root\MSSQL12.MSSQLSERVER\MSSQL\DATA\jwgl_log.ldf'
(10) 删除Test数据库。
create database Test
drop database Test
1.2 数据定义
(1) 使用SQL语句创建关系数据库表:学生基本信息表student、课程表course、课程选修表sc。其中:sno是表student的主键,具有唯一性的约束;sage具有约束“大于18”,ssex,只能是男或女;cno是表course的主键,具有唯一性约束。表sc中的sno cno是外键。
-- 创建数据库SDB
create database SDB
use SDB
-- 创建三张表student,course,sc
create table student(
sno char(9) primary key,
sname char(20) not null,
ssex char(2) check(ssex = '男' or ssex = '女'),
sage smallint check (sage > 18),
sdept char(40)
)
insert into student(sno,sname,ssex,sage,sdept) values ('20119023','王志刚','男',20,'CS')
insert into student(sno,sname,ssex,sage,sdept) values ('20119029','张国伟','男',29,'IS')
insert into student(sno,sname,ssex,sage,sdept) values ('20119030','王芳','女',32,'CS')
insert into student(sno,sname,ssex,sage,sdept) values ('20119031','Test','女',29,'CS')
insert into student(sno,sname,ssex,sage,sdept) values ('20119032','Test1','女',12,'CS')
select * from student
create table course(
cno char(10) primary key,
cname char(20) not null,
ccredit smallint
)
create table sc(
sno char(9),
cno char(10),
grade smallint,
primary key(sno,cno),
foreign key(sno) references student(sno),
foreign key(cno) references course(cno)
)
(2) 更改表student增加属性lxfs(联系方式)(类型是CHAR,长度是10),取消sage大于18的约束。把表ROOM中的属性lxfs数据长度改成15。
-- (2) 更改表student增加属性lxfs(联系方式)(类型是CHAR,长度是10),
alter table student add lxfs char(10)
-- 取消sage大于18的约束。把表ROOM中的属性lxfs数据长度改成15。
alter table student nocheck constraint CK__student__sage__117F9D94
select * from student
-- 查询约束
sp_helpconstraint student
create table ROOM(
rno char(9),
lxfs char(10),
foreign key(rno) references student(sno)
)
alter table ROOM alter column lxfs char(15)
(3) 删除表course中的一个属性。
-- (3) 删除表course中的一个属性。
select * from course
alter table course drop column ccredit
(4) 取消表sc的外键。
-- (4) 取消表sc的外键。
sp_helpconstraint sc
alter table sc drop constraint FK__sc__cno__173876EA
alter table sc drop constraint FK__sc__sno__164452B1
alter table sc drop constraint PK__sc__905C0533346139CC
(5) 为表course创建按cno降序排列的索引。
-- (5) 为表course创建按cno降序排列的索引。
create index coucno on course(cno asc)
drop index coucno on course
(6) 为表student创建按sno升序排列的索引。
-- (6) 为表student创建按sno升序排列的索引。
create index stusno on student(sno desc)
drop index stusno on student
(7) 创建表student的按sname升序排列的唯一性索引。
-- (7) 创建表student的按sname升序排列的唯一性索引。
create unique index stuname on student(sname asc)
(8) 取消表PERSON的P#升序索引。
-- (8) 取消表PERSON的P#升序索引。
create table PRESON(
P# smallint primary key
)
create index PERP# on PRESON(P# asc)
drop index PERP# on PRESON