數據庫實驗——表/視圖的創建與維護(完整版)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 影響該列的約束

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章