
数据库实验
创建数据库 创建表 打开SQL编辑器,输入以下命令并执行: 创建各表:
发布日期:2021-05-07 15:59:16
浏览次数:36
分类:精选文章
本文共 2552 字,大约阅读时间需要 8 分钟。
实验一:创建数据库和表
1. 创建学生管理数据库
在企业管理器中创建数据库XSGL,包含以下表:学院信息表dept
、学生信息表student
、课程信息表course
及学生选课表sc
。
2. 表结构定义
dept
(学院信息表)- 列名 | 数据类型 | 长度 | 是否允许NULL | 说明
- DNO | Char | 4 | √ |学院编号
- DNAME | Char | 30 | × |学院名称
- DEAN | Char | 20 | √ |院长姓名
student
(学生信息表)- 列名 | 数据类型 | 长度 | 是否允许NULL | 说明
- SNO | Char | 8 | √ |学号
- SNAME | Char | 20 | × |姓名
- AGE | smallint | 2 | √ |年龄
- SEX | Char | 2 | √ |性别(男/女)
- DNO | Char | 4 | √ |学院编号
- BIRTHDAY | datetime | 8 | √ |出生日期
course
(课程信息表)- 列名 | 数据类型 | 长度 | 是否允许NULL | 说明
- CNO | Char | 8 | √ |课程编号
- CNAME | Char | 30 | × |课程名称
- TNAME | Char | 20 | √ |教师姓名
- CREDIT | float | 4 | √ |课程学分
- ROOM | Char | 30 | √ |上课教室
sc
(学生选课表)- 列名 | 数据类型 | 长度 | 是否允许NULL | 说明
- SNO | Char | 8 | √ |学号
- CNO | Char | 8 | √ |课程编号
- GRADE | float | 2 | √ |课程成绩
3. 创建数据库和表的方法
使用企业管理器创建数据库和表
- 右键点击数据库,选择“新建数据库”,输入数据库名
XSGL
。
- 右键点击数据库,选择“新建”,然后选择“表”。
- 输入表名和字段信息,填写数据类型、长度和允许NULL属性,点击保存。
使用T-SQL创建表
CREATE DATABASE XSGL
CREATE TABLE dept( DNO CHAR(4) UNIQUE NOT NULL, DNAME CHAR(30) NOT NULL, DEAN CHAR(20));CREATE TABLE student( SNO CHAR(8) UNIQUE NOT NULL, SNAME CHAR(20) NOT NULL, AGE smallint , SEX CHAR(2) CHECK(SEX IN('男','女')) , DNO CHAR(4) NOT NULL, BIRTHDAY DATETIME );CREATE TABLE course( CNO CHAR(8) PRIMARY KEY NOT NULL, CNAME CHAR(30) NOT NULL, TNAME CHAR(20) , CREDIT FLOAT(4) , ROOM CHAR(30));CREATE TABLE sc( SNO CHAR(8) NOT NULL, CNO CHAR(8) NOT NULL, GRADE FLOAT(2));
4. 数据库管理
数据库分离与附加
- 分离数据库
- 右键点击
XSGL
,选择“所有任务”,然后选择“分离数据库”。
- 右键点击
- 附加数据库
- 右键点击“数据库”,选择“附加数据库”,选择
XSGL_Data.mdf
和XSGL_log.ldf
文件,完成附加。
- 右键点击“数据库”,选择“附加数据库”,选择
实验二:表的查询
1. 单表查询
示例:
查询分数在70和90之间的学生学号
SELECT distinct SNOFROM scWHERE GRADE between 70 AND 90
查询少于10名同学选修的授课班号
SELECT CNOFROM scGROUP BY CNOHAVING COUNT(SNO) < 10
2. 多表查询
示例:
查询所有选课学生的姓名
SELECT distinct SNAMEFROM student, scWHERE student.SNO = sc.SNO
查询所有未选课的学生的姓名
SELECT SNAMEFROM studentWHERE SNO NOT IN( SELECT SNO FROM sc)
实验三:数据库的更新操作
1. 数据库数据维护
插入数据
使用企业管理器或T-SQL在表中插入新数据。INSERT INTO student (SNO, SNAME, AGE, DNO)VALUES ('20067027', '张三', 20, '0002')
修改数据
更新student
表中某学生的信息:UPDATE studentSET AGE = 18WHERE SNO = '20069011'
删除数据
删除学院编号为空的学生记录及选课记录:DELETE FROM scWHERE SNO IN( SELECT SNO FROM student WHERE DNO = '0')DELETE FROM studentWHERE DNO = '0'
2. 数据更新操作
计算出生年份
SELECT 2018 - AGE AS "出生年份"FROM student
课程地点修改
更新course
表中特定课程的教室:UPDATE courseSET ROOM = 'D109'WHERE ROOM = 'A209'
课程成绩调整
更新sc
表中“线性代数”课程的成绩:UPDATE scSET GRADE = GRADE - 4WHERE CNO IN( SELECT cno FROM course WHERE CNAME = '线性代数')
实验总结
通过本次实验,掌握了SQL Server数据库的创建、表结构设计、数据查询、数据维护等核心技能,能够熟练使用企业管理器和查询分析器完成数据库操作。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月05日 15时11分55秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
架构师入门:搭建基本的Eureka架构(从项目里抽取)
2019-03-05
MongoDB 快速扫盲贴
2019-03-05
one + two = 3
2019-03-05
sctf_2019_easy_heap
2019-03-06
PyQt5之音乐播放器
2019-03-06
Redis进阶实践之十八 使用管道模式提高Redis查询的速度
2019-03-06
SQL注入
2019-03-06
MPI Maelstrom POJ - 1502 ⭐⭐ 【Dijkstra裸题】
2019-03-06
Problem 330A - Cakeminator (思维)
2019-03-06
LeetCode75 颜色分类 (三路快排C++实现与应用)
2019-03-06
C语言+easyX图形库的推箱子实现
2019-03-06
调试vs2019代码的流程
2019-03-06
脱壳与加壳-加壳-6-代码实现加密导入表
2019-03-06
Typora配置PicGo时,提示Failed to fetch
2019-03-06
bcolz的新操作
2019-03-06
zmq的send
2019-03-06
阿里钉钉面试题
2019-03-06
C++中找资源或者函数的方法
2019-03-06
delete对象时会自动调用类的析构函数
2019-03-06
POD类型
2019-03-06