数据库实验——表/视图的创建与维护(完整版)by SixInNight

实验目的

  1. 通过进行数据库表的建立操作,熟悉并掌握 SQL SERVER 数据库表的建立方法,理解关系数据库表的结构,巩固 SQL 标准中关于数据库表的建立语句;
  2. 通过进行数据库表数据的增加、删除和插入等维护操作,熟悉并掌握 SQL SERVER 数据库数据的操作方法,巩固 SQL 中关于数据维护的语句;
  3. 通过对 SQL SERVER 中建立、维护视图的实验,熟悉 SQL SERVER 中对视图的操作方法和途径,理解和掌握视图的概念。

实验平台及环境

   采用 C/S 结构的企业版 SQL Server 2016 服务器及客户端;
   数据库存储在服务器上,表和视图也存储在服务器上,同学可同时
   搭建服务器和客户端,再使用客户端连接到服务器进行操作。

实验内容

   建立相应的表并熟悉基本操作,例如建表、对表进行增、删、改、查。

实验步骤

1. 创建相应的表(以建 BOOK 表为例)

2. 将提供的数据导入各表(以 CLASS 表为例)

( 注意:1)表中空列的处理;2)表结构与数据类型的匹配 )

3. 修改 “班级”表数据,增加名为“备注”的列,数据类型为 varchar() 型,且不为空

4. 修改 “班级”表数据,将 “备注”列的数据类型改为 int

5. 修改 “班级”表数据,删除“备注”列

6. 删除“班级”数据表



Transact_SQL 语句

1. 建立学生选课数据库并创建相应的表

DROP DATABASE IF EXISTS 学生选课
CREATE DATABASE 学生选课
ON PRIMARY(
	NAME = stu_data,
	FILENAME = 'D:\DATA\stu_data.mdf',
	SIZE = 20,
	FILEGROWTH = 1
)
LOG ON(
	NAME = stu_log,
	FILENAME = 'D:\DATA\stu_log.ldf',
	SIZE = 8,
	MAXSIZE = 1GB,
	FILEGROWTH = 10%
)
GO
USE 学生选课
DROP TABLE IF EXISTS BOOK
CREATE TABLE BOOK(
	教材ID号 VARCHAR(20) NOT NULL,
	教材名 VARCHAR(30) NOT NULL,
	出版社 VARCHAR(20) NOT NULL,
	作者 VARCHAR(20) NOT NULL,
	价格 MONEY NOT NULL
)
GO
DROP TABLE IF EXISTS COURSE
CREATE TABLE COURSE(
	课程号 VARCHAR(20) NOT NULL,
	课程名称 VARCHAR(30) NOT NULL,
	书号 VARCHAR(20) NOT NULL,
	课程总学时 INT NOT NULL,
	周学时 INT NOT NULL,
	课程学分 INT NOT NULL
)
GO
DROP TABLE IF EXISTS CLASS
CREATE TABLE CLASS(
	班级号 VARCHAR(20) NOT NULL,
	班主任姓名 VARCHAR(20) NOT NULL,
	教室 VARCHAR(20) NOT NULL,
	系编号 VARCHAR(20) NOT NULL
)
GO
DROP TABLE IF EXISTS CLASS_COURSE
CREATE TABLE CLASS_COURSE(
	班级号 VARCHAR(20) NOT NULL,
	课程号 VARCHAR(20) NOT NULL
)
GO
DROP TABLE IF EXISTS  DEPARTMENT
CREATE TABLE DEPARTMENT(
	部门ID号 VARCHAR(20) NOT NULL,
	部门名称 VARCHAR(20) NOT NULL,
	部门领导 VARCHAR(20) NOT NULL,
	教师数 INT NOT NULL
)
GO
DROP TABLE IF EXISTS STUDENT
CREATE TABLE STUDENT(
	学生ID号 VARCHAR(20) NOT NULL,
	学生姓名 VARCHAR(20) NOT NULL,
	班级ID号 VARCHAR(20) NOT NULL,
	性别 VARCHAR(20) NOT NULL,
	出生时间 VARCHAR(20) NOT NULL,
	入学日期 VARCHAR(20) NOT NULL,
	家庭住址 VARCHAR(40) NOT NULL
)
GO
DROP TABLE IF EXISTS STUDENT_COURSE
CREATE TABLE STUDENT_COURSE(
	课程ID号 VARCHAR(20) NOT NULL,
	学生ID号 VARCHAR(20) NOT NULL,
	分数 INT NOT NULL,
	学分 INT NOT NULL,
	学期 INT NOT NULL,
	学年 VARCHAR(20) NOT NULL
)
GO
DROP TABLE IF EXISTS TEACHER
CREATE TABLE TEACHER(
	教师ID号 VARCHAR(20) NOT NULL,
	教师姓名 VARCHAR(20) NOT NULL,
	性别 VARCHAR(20) NOT NULL,
	出生时间 VARCHAR(20) NOT NULL,
	部门ID号 VARCHAR(20) NOT NULL,
	职称或职业 VARCHAR(20) NOT NULL,
	联系电话 VARCHAR(20) NOT NULL,
	家庭地址 VARCHAR(40) NOT NULL,
	邮政编码 VARCHAR(20) NOT NULL,
	类别编号 INT NOT NULL
)
GO
DROP TABLE IF EXISTS TEACHER_COURSE_CLASS
CREATE TABLE TEACHER_COURSE_CLASS(
	教师编号 VARCHAR(20) NOT NULL,
	课程号 VARCHAR(20) NOT NULL,
	班级号 VARCHAR(20) NOT NULL,
	学期 INT NOT NULL,
	学年 VARCHAR(20) NOT NULL,
	排课标识 VARCHAR(20) NOT NULL,
	授课地点 VARCHAR(20) NOT NULL,
	教材编号 VARCHAR(20) NOT NULL
)
GO
DROP TABLE IF EXISTS 教师类别
CREATE TABLE 教师类别(
	类别编号 INT NOT NULL,
	类别名称 VARCHAR(20) NOT NULL
)
GO

2. 将提供的数据导入各表

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1;
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1;
GO

INSERT INTO 学生选课.dbo.BOOK SELECT * FROM OPENROWSET(
	'MICROSOFT.ACE.OLEDB.12.0', 'Excel 5.0; User ID=Admin; Password=; HDR=YES; Database=D:\Downloads\实验平台\BOOK.xls', Sheet1$
)
GO
INSERT INTO 学生选课.dbo.COURSE SELECT * FROM OPENROWSET(
	'MICROSOFT.ACE.OLEDB.12.0', 'Excel 5.0; User ID=Admin; Password=; HDR=YES; Database=D:\Downloads\实验平台\COURSE.xls', Sheet1$
)
GO
INSERT INTO 学生选课.dbo.CLASS SELECT * FROM OPENROWSET(
	'MICROSOFT.ACE.OLEDB.12.0', 'Excel 5.0; User ID=Admin; Password=; HDR=YES; Database=D:\Downloads\实验平台\CLASS.xls', Sheet1$
)
GO
INSERT INTO 学生选课.dbo.CLASS_COURSE SELECT * FROM OPENROWSET(
	'MICROSOFT.ACE.OLEDB.12.0', 'Excel 5.0; User ID=Admin; Password=; HDR=YES; Database=D:\Downloads\实验平台\CLASS_COURSE.xls', Sheet1$
)
GO
INSERT INTO 学生选课.dbo.DEPARTMENT SELECT * FROM OPENROWSET(
	'MICROSOFT.ACE.OLEDB.12.0', 'Excel 5.0; User ID=Admin; Password=; HDR=YES; Database=D:\Downloads\实验平台\DEPARTMENT.xls', Sheet1$
)
GO
INSERT INTO 学生选课.dbo.STUDENT SELECT * FROM OPENROWSET(
	'MICROSOFT.ACE.OLEDB.12.0', 'Excel 5.0; User ID=Admin; Password=; HDR=YES; Database=D:\Downloads\实验平台\STUDENT.xls', Sheet1$
)
GO
INSERT INTO 学生选课.dbo.STUDENT_COURSE SELECT * FROM OPENROWSET(
	'MICROSOFT.ACE.OLEDB.12.0', 'Excel 5.0; User ID=Admin; Password=; HDR=YES; Database=D:\Downloads\实验平台\STUDENT_COURSE.xls', Sheet1$
)
GO
INSERT INTO 学生选课.dbo.TEACHER SELECT * FROM OPENROWSET(
	'MICROSOFT.ACE.OLEDB.12.0', 'Excel 5.0; User ID=Admin; Password=; HDR=YES; Database=D:\Downloads\实验平台\TEACHER.xls', Sheet1$
)
GO
INSERT INTO 学生选课.dbo.TEACHER_COURSE_CLASS SELECT * FROM OPENROWSET(
	'MICROSOFT.ACE.OLEDB.12.0', 'Excel 5.0; User ID=Admin; Password=; HDR=YES; Database=D:\Downloads\实验平台\TEACHER_COURSE_CLASS.xls', Sheet1$
)
GO
INSERT INTO 学生选课.dbo.教师类别 SELECT * FROM OPENROWSET(
	'MICROSOFT.ACE.OLEDB.12.0', 'Excel 5.0; User ID=Admin; Password=; HDR=YES; Database=D:\Downloads\实验平台\教师类别.xls', Sheet1$
)
GO

EXEC sp_configure 'Ad Hoc Distributed Queries', 0;
RECONFIGURE;
EXEC sp_configure 'show advanced options', 0;
RECONFIGURE;
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 0;
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 0;
GO

3. 修改 “班级”表数据,增加名为“备注”的列

USE 学生选课
ALTER TABLE CLASS ADD 备注 VARCHAR(40) NOT NULL DEFAULT 0;
GO

4. 修改 “班级”表数据,将 “备注”列的数据类型改为 int

USE 学生选课
ALTER TABLE CLASS DROP CONSTRAINT DF_CLASS_备注_2B3F6F97;
ALTER TABLE CLASS ALTER COLUMN 备注 INT;
GO

5. 修改 “班级”表数据,删除“备注”列

USE 学生选课
ALTER TABLE CLASS DROP COLUMN 备注;
GO

6. 删除“班级”数据表

USE 学生选课
DROP TABLE CLASS;
GO

实验结果及分析

  1. 分布式查询:使用(Transact-SQL)OPENROWSET 或 OPENDATASOURCE 函数直接从 Excel 文件导入 SQL Server
  2. 先启用 ad hoc distributed queries 服务器配置选项,然后再运行分布式查询:
    在这里插入图片描述
  3. 允许在进程中使用 ACE.OLEDB.12:
    在这里插入图片描述

本文后续内容查看方法

本文后续内容点击此处跳转 查看

  1. 从 Excel 文件导入 SQL Server 语句:
  2. 建表语句:
  3. 向表中添加列:
  4. 修改表中某列属性:
  5. 删除表中某列:

实验小结

本文后续内容点击此处跳转 查看

1. 开始→服务→右键 SQL SEVER(MSSQLSEVER)→属性→登录→本地系统账户

2. 卸载 32 位 Office

3. 设置 Microsoft.ACE.OLEDB.12.0 属性→所有访问接口选项均不启用

4. 到官网下载 AccessDatabaseEngine_X64.exe→安装

5. 执行导入表之前,务必关闭源数据所在的 Excel 表格

6. 修改表的某列属性时,需要先 DROP 影响该列的约束

猜你喜欢

转载自blog.csdn.net/hongwangdb/article/details/106868383