SQLSERVER上机实验.docx
《SQLSERVER上机实验.docx》由会员分享,可在线阅读,更多相关《SQLSERVER上机实验.docx(21页珍藏版)》请在冰豆网上搜索。
SQLSERVER上机实验
实验1数据库操作
1.创建数据库:
操作1.1:
创建一个test数据库,其主数据文件逻辑名test_data,物理文件名test_data.mdf,初始大小10MB,最大尺寸为无限大,增长速度1MB;数据库日志文件逻辑名称为test_log,物理文件名为test_log.ldf,初始大小为1MB,最大尺寸为5MB,增长速度为10%。
参考答案:
createdatabaseTest
ONprimary
name=test_data,
='d:
\test\test_data.mdf',
size=5MB,
maxsize=unlimited,
=1MB
LOGON
name=test_log,
='d:
\test\test_log.ldf',
size=1MB,
maxsize=5MB,
=10%
GO
2.查看数据库属性:
操作1.2:
使用T-SQL语句查看数据库test属性
参考答案:
EXECsp_helpdbtest
3.删除数据库:
操作1.3:
使用T-SQL语句删除数据库test
参考答案:
dropdatabaseTest
实验2表操作
1.创建表:
操作2.1:
创建学生表:
表名:
student
说明:
学生基本信息表
属性列
数据类型
长度
空值
列约束
说明
st_id
nVarChar
9
NotNull
PK
学生学号
st_nm
nVarChar
8
NotNull
学生姓名
st_sex
nVarChar
2
Null
学生性别
st_birth
datetime
Null
出生日期
st_score
int
Null
入学成绩
st_date
datetime
Null
入学日期
st_from
nChar
20
Null
学生来源
st_dpid
nVarChar
2
Null
所在系编号
st_mnt
tinyint
Null
学生职务
参考答案:
USEtest
GO
CREATETABLEstudent
st_idnVarChar(9)primarykeyNOTNULL,
st_nmnVarChar(8)NOTNULL,
st_sexnVarChar
(2)NULL,
st_birthdatetimeNULL,
st_scoreintNULL,
st_datedatetimeNULL,
st_fromnVarChar(20)NULL,
st_dpidnVarChar
(2)NULL,
st_mnttinyintNULL
GO
操作2.2:
创建课程信息表:
表名:
couse
说明:
课程信息表
属性列
数据类型
长度
空值
列约束
说明
cs_id
nVarChar
4
NotNull
PK
课程编号
cs_nm
nVarChar
20
NotNull
课程名称
cs_tm
int
Null
课程学时
cs_sc
int
Null
课程学分
参考答案:
USEtest
GO
CREATETABLEcouse
cs_idnVarChar(4)primarykeyNOTNULL,
cs_nmnVarChar(20)NOTNULL,
cs_tmintNULL,
cs_scintNULL
GO
操作2.3:
创建选课表:
表名:
slt_couse
说明:
选课表
属性列
数据类型
长度
空值
列约束
说明
cs_id
nVarChar
4
NotNull
FK
课程编号
st_id
nVarChar
9
NotNull
FK
学生编号
score
int
Null
课程成绩
sltdate
datetime
Null
选课日期
参考答案:
USEtest
GO
CREATETABLEcouse
cs_idnVarChar(4)NOTNULL,
st_idnVarChar(9)NOTNULL,
scoreintNULL,
sltdatedatetimeNULL
GO
操作2.4:
创建院系信息表:
表名:
dept
说明:
院系信息表
属性列
数据类型
长度
空值
列约束
说明
dp_id
nVarChar
2
NotNull
系编号
dp_nm
nVarChar
20
NotNull
院系名称
dp_drt
nVarChar
8
Null
院系主任
dt_tel
nVarChar
12
Null
联系
参考答案:
USEtest
GO
CREATETABLEdept
dp_idnVarChar
(2)NOTNULL,
dp_nmnVarChar(20)NOTNULL,
dp_drtnVarChar(8)NULL,
dp_telnVarChar(12)NULL
GO
2.修改表结构:
(1)向表中添加列:
操作2.5:
为“dept”表添加“dp_count”列(数据类型为nvarchar,长度为3,允许为空)
参考答案:
ALTERTABLEdeptADDdp_countnvarchar(3)NULL
(2)修改列数据类型:
操作2.6:
修改“dept”表的“dp_count”列数据类型为int
参考答案:
ALTERTABLEdeptALTERCOLUMNdp_countintNULL
(3)删除表中指定列:
操作2.7:
删除“dept”表的“dp_count”列
参考答案:
ALTERTABLEdeptDROPCOLUMNdp_count
3.删除表
操作2.8:
删除“dept”表
参考答案:
DROPTABLEstudent
4.向表中输入数据记录
操作2.9:
分别向“student”表、“couse”表、“slt_couse”表、“dept”表中输入数据记录
实验3数据完整性
1.空值约束(NULL)
操作3.1:
将student表中的st_sex列属性更改为NOTNULL
参考答案:
ALTERTABLEstudentALTERCOLUMEst_nmnVarChar(8)NOTNULL
2.默认值约束(DEFAULT)
操作3.2:
将student表中的st_from列默认值设置为“陕西省”
参考答案:
ALTERTABLEstudentADDDEFAULT'陕西省'FORst_from
3.默认值对象
操作3.3:
创建默认值对象df_today为当前日期,并将其绑定到slt_couse表中的sltdate列,然后取消绑定,最后删除默认值对象df_today。
参考答案:
CREATEDEFAULTdf_todayASGetdate()
GO
EXECsp_bindefaultdf_today,'slt_couse.sltdate'
GO
EXECsp_unbindefault'slt_couse.sltdate'
GO
DROPDEFAULTdf_today
GO
4.检查约束(CHECK)
操作3.4:
将slt_couse表中的score列的检查约束设置为>=0且<=100
参考答案:
ALTERTABLEslt_couseADDCHECK(score>=0ANDscore<=100)
5.规则约束对象
操作3.5:
创建规则约束对象rl_sex,用于检查性别的取值仅限于“男”与“女”,并将其绑定到student表中的st_sex列,然后取消绑定,最后删除规则约束对象rl_sex。
参考答案:
CREATERULErl_sexAS@chksex’男’OR@chksex=’女’
或
CREATERULErl_sexAS@chksexIN(’男’,’女’)
GO
EXECsp_bindrulerl_sex,'student.st_sex'
GO
EXECsp_unbindrule'student.st_sex'
GO
DROPRULErl_sex
GO
6.主键
操作3.6:
将dept表中的dp_id列设置为主键
参考答案:
ALTERTABLEdeptADDPRIMARYKEY(dp_id)
7.唯一性约束(UNIQUE)
操作3.7:
将dept表中的dp_nm列设置为唯一性约束
参考答案:
ALTERTABLEdeptADDUNIQUE(dp_nm)
8.标识列
操作3.8:
向slt_couse表中添加标识列id,第1行默认值为1,相邻两个标识列间的增量为1
参考答案:
ALTERTABLEslt_couseADDidINTIDENTITY(1,1)NOTNULL
9.外键(FOREIGNKEY)
操作3.9:
被参照表为dept,参照表为student
参考答案:
ALTERTABLEstudent
ADDFOREIGNKEY(st_dpid)REFERENCESdept(dp_id)
实验4数据更新
1.表中插入数据
操作4.1:
向dept表插入一条记录,系号11,系名自动控制系,系主任为李其余,81234567
INSERTINTOdeptVALUES('11','自动控制系','李其余','')
操作4.2:
向student表插入一条记录,学号070201001,姓名为王小五,性别为男,出生日期为1990年9月9日,系号为11,其余字段为NULL或默认值
INSERTINTOstudent(st_id,st_nm,st_sex,st_birth,st_dpid)
VALUES('070201001','王小五','男','1990.9.9','11')
操作4.3:
向couse表插入一条记录,课程号1234,课程名为操作系统,其余字段为NULL或默认值
INSERTINTOcouse(cs_id,cs_nm)VALUES('1234','操作系统')
操作4.4:
向slt_couse表插入一条记录,课程号1234,学名070201001,其余字段为NULL或默认值
INSERTINTOslt_couse(cs_id,st_id)VALUES('1234','070201001')
2.修改表中数据
操作4.5:
修改student表记录,将王小五的入学成绩改为88
UPDATEstudentSETst_score=88WHEREst_nm='王小五'
操作4.6:
修改couse表记录,将所有记录的学分改为4,学时改为64
UPDATEcouseSETcs_tm=64,cs_s