记一次数据库实验 -- 数据库的基本使用

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
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值