一、实验目的
1.熟知机房用机安全规则。
2.通过上机操作,加深对数据库系统理论知识的理解;通过使用具体的DBMS,了解一种实际的数据库管理系统,并掌握其操作技术;通过对实际题目的上机实验,提高手动能力,提高分析问题和解决问题的能力。
3.先用ACCESS创建数据库,体会数据库的功能。[选作]
4.熟悉SQL Server企业版的安装过程。掌握SQL Server 相关服务的启动、退出。
5.熟悉SQL Server Management Studio环境,掌握数据库服务器的注册、配置、连接等操作。
6.掌握SQL图形用户界面创建、修改、删除数据库、表;根据要求用SQL SERVER 创建数据库。
7.了解表的结构特点;掌握在SSMS(SQL Server Management Studio)中修改表的定义。
注意:实验过程中创建的各种数据库及其他一切档案,建议同学们都保存好,以备接下来的实验课中继续使用。每次上课前,请也请带上之前实验课的数据备份。
二、实验内容及要求
1. MySQL基本操作
1.上网搜索能够正常安装的SQL Server的软件。有条件的同学,课后可在个人电脑上安装SQL Server。
2.了解数据库的相关概念。通过实践初步了解使用SQL Server Management的使用。
3.掌握SQL Server的启动、退出、暂停,组成配置,基本工具及常用操作。
4.请根据联机丛书查询如何“创建数据库”,内容包括:创建数据库前的准备工作,创建数据库的命令,以及数据库文件的组成。请把你的结果写在下面。(联机丛书机房可能没有安装,可以在自己机器上试试)
5.查看本机上有哪些数据库(包括系统数据库和用户数据库),请记录下来。
2. 用Management Studio创建数据库
1. 了解数据库的文件目录
(1)使用Management Studio创建数据库bookdb
,各项参数采用默认设置。
- MySQL 使用
Navicat
替代 Management Studio
(2)请完成“三、实验要求”中的“一”后,删除bookdb数据库,观察数据库服务器中是否还存在bookdb数据库。(“删除数据库”操作慎用,此处设置删除操作纯粹为了练习)。
2. 创建数据库EDUC
- 建表
🔔提示:学生表中的 Address 和 Class_id 设置允许为空,不然后续插入数据会失败
USE EDUC;
-- 检查并删除已存在的表
DROP TABLE IF EXISTS StudentGrade;
DROP TABLE IF EXISTS Student;
DROP TABLE IF EXISTS Course;
-- 创建 Student 表
CREATE TABLE Student (
Stu_id VARCHAR(10) NOT NULL,
Stu_name VARCHAR(10) NOT NULL,
Stu_sex VARCHAR(2) DEFAULT '男',
Birthdate DATETIME,
Address VARCHAR(100) DEFAULT NULL,
Phone VARCHAR(8) DEFAULT NULL,
Class_id VARCHAR(4) DEFAULT NULL,
PRIMARY KEY (Stu_id)
);
-- 创建 Course 表
CREATE TABLE Course (
Course_id VARCHAR(4) NOT NULL,
Course_name VARCHAR(20) NOT NULL,
Course_hour INT DEFAULT 60,
Introduce VARCHAR(200),
PRIMARY KEY (Course_id)
);
-- 创建 StudentGrade 表
CREATE TABLE StudentGrade (
Stu_id VARCHAR(10) NOT NULL,
Course_id VARCHAR(4) NOT NULL,
Grade DECIMAL(9, 2),
PRIMARY KEY (Stu_id, Course_id),
FOREIGN KEY (Stu_id) REFERENCES Student(Stu_id),
FOREIGN KEY (Course_id) REFERENCES Course(Course_id)
);
- 请在各表中添加数据。对于Student表,请输入如下数据,Course、StudentGrade自行输入合理数据。
-- 插入 Student 表数据
INSERT INTO Student (Stu_id, Stu_name, Stu_sex, Birthdate, Address, Phone, Class_id) VALUES
('1107505001', '刘晨', '男', '1990-01-16 00:00:00', '广药宿舍10栋203', '39352201', '0101'),
('1107505002', '王丽', '女', '1989-03-20 00:00:00', '广药宿舍8栋607', '39351023', '0101'),
('1107505003', '冯锋', '男', '1991-01-09 00:00:00', '广药宿舍10栋203', NULL, '0102'),
('1107505004', '张晓红', '女', '1990-08-21 00:00:00', '广药宿舍8栋607', '39353021', '0204'),
('1107505005', '张力', '男', NULL, '广药宿舍10栋203', NULL, '0103'),
('1107505006', '马凤励', '女', '1989-04-24 00:00:00', '广药宿舍8栋607', NULL, NULL);
-- 插入 Course 表数据
INSERT INTO Course (Course_id, Course_name, Course_hour, Introduce) VALUES
('C001', '数据库原理', 60, '介绍数据库的基本概念和原理'),
('C002', '数据结构', 60, '介绍数据结构的基本概念和算法'),
('C003', '操作系统', 60, '介绍操作系统的基本概念和原理'),
('C004', '计算机网络', 60, '介绍计算机网络的基本概念和协议');
-- 插入 StudentGrade 表数据
INSERT INTO StudentGrade (Stu_id, Course_id, Grade) VALUES
('1107505001', 'C001', 85.50),
('1107505001', 'C002', 92.00),
('1107505002', 'C001', 78.25),
('1107505002', 'C003', 84.75),
('1107505003', 'C002', 88.00),
('1107505003', 'C004', 90.00),
('1107505004', 'C003', 76.50),
('1107505004', 'C004', 82.25),
('1107505005', 'C001', 91.00),
('1107505006', 'C002', 85.75),
('1107505006', 'C003', 89.00);
3. 基于 EDUC 进行各种操作
-- 修改 Student 表中特定学生的地址
UPDATE Student
SET Address = '广药宿舍9栋304'
WHERE Stu_id = '1107505005';
-- 删除学号为 '1107505003' 的学生信息
-- 删除 StudentGrade 表中引用的学生记录(先删外键)
DELETE FROM StudentGrade
WHERE Stu_id = '1107505003';
-- 然后删除 Student 表中的记录
DELETE FROM Student
WHERE Stu_id = '1107505003';
-- 修改列属性
-- 将 Student 表中的 Stu_sex 字段设为不能为空
ALTER TABLE Student
MODIFY Stu_sex VARCHAR(2) NOT NULL;
-- 将 Student 表中的 Stu_name 字段类型从 VARCHAR(10) 改为 CHAR(12)
ALTER TABLE Student
MODIFY Stu_name CHAR(12);
-- 添加列
-- 在 Course 表中添加一列 year,类型为 INT,字段设置为允许空
ALTER TABLE Course
ADD year INT NULL;
-- 为 year 字段添加约束,确保 year 的字段值在 2006 到 2013 之间
ALTER TABLE Course
ADD CONSTRAINT CHK_Year CHECK (year BETWEEN 2006 AND 2013);
-- 删除 Course 表中的 year 字段
ALTER TABLE Course
DROP COLUMN year;
三、实验要求
1. 数据库、表的创建及删除
1.将数据库bookdb的相关属性,填入下表:
👨🏫 MySQL 的文件目录结构
项目 | 内容 |
---|---|
数据库所有者 | root |
数据库名称 | bookdb |
数据文件 | |
逻辑文件名 | bookdb |
文件组 | /var/lib/mysql/bookdb ? |
物理文件名 (即数据库文件存放的物理路径) | /var/lib/mysql/bookdb |
文件初始大小 | |
数据文件最大值 (最大文件大小) | 由系统管理,通常是无限制或基于磁盘空间 |
数据文件增长量 | 64MB |
日志文件 | |
逻辑文件名 | ib_logfile0 |
物理文件名 (即日志文件存放的物理路径) | /var/lib/mysql/ib_logfile0 |
文件初始大小 | 50331648字节 ≈ 48MB |
数据文件最大值 (最大文件大小) | 48MB ,或者根据磁盘空间自动增长 |
数据文件增长量 |
示例:
-
首先连接上数据库,然后执行命令
-
查询数据文件增长量
SHOW VARIABLES LIKE 'innodb_autoextend_increment';
项目 | 内容 |
---|---|
数据库所有者 | 当前登录的MySQL用户(通过 SELECT USER(); 查询) |
数据库名称 | bookdb |
数据文件 | |
逻辑文件名 | bookdb |
文件组(表空间?) | 无 |
物理文件名 (即数据库文件存放的物理路径) | 通过 SHOW VARIABLES LIKE 'datadir'; 获得 |
文件初始大小 | 无 |
数据文件最大值 (最大文件大小) | 由系统管理,通常是无限制或基于磁盘空间 |
数据文件增长量 | 通过 SHOW VARIABLES LIKE 'innodb_autoextend_increment'; 获得,默认 64 MB |
日志文件 | |
逻辑文件名 | ib_logfile0 (InnoDB 默认日志文件) |
物理文件名 (即日志文件存放的物理路径) | /var/lib/mysql/ib_logfile0 (InnoDB 默认日志文件) |
文件初始大小 | 通过 SHOW VARIABLES LIKE 'innodb_log_file_size'; 查询 |
数据文件最大值 (最大文件大小) | 根据磁盘空间自动增长 |
数据文件增长量 |
四、实验小结
-
比较分析 ACCESS、SQL SERVER、ORACLE 数据库:
-
ACCESS:
- 特点: Microsoft Access 是一个桌面数据库管理系统,适合小型应用和单用户环境。它提供了一个用户友好的界面,易于学习和使用。Access 支持表、查询、报表和宏等数据库对象。
- 适用情况: 适用于小型企业、个人开发者或小型项目,其中数据量不是非常大,且对性能和并发要求不高。
-
SQL SERVER:
- 特点: Microsoft SQL Server 是一个企业级的数据库管理系统,支持大规模的数据存储、管理和分析。它提供了高级的数据安全性、可靠性和可扩展性。SQL Server 支持多种编程语言和应用程序接口。
- 适用情况: 适用于中到大型企业,需要处理大量数据和高并发访问的情况,以及需要复杂查询和数据分析的场景。
-
ORACLE:
- 特点: Oracle Database 是一个高性能、可靠性强的企业级数据库管理系统。它支持多种操作系统和硬件平台,提供高级的安全性、自动化管理工具和强大的数据仓库功能。
- 适用情况: 适用于大型企业和关键任务应用,需要处理大规模数据、高并发访问和复杂的事务处理。
-
-
常用的数据库管理系统及当下流行的:
- 常用的数据库管理系统: MySQL, PostgreSQL, IBM DB2, SQLite, Sybase 等。
- 当下比较流行的: 除了上述提到的 SQL Server 和 Oracle 外,还有 MySQL 和 PostgreSQL,它们因其开源、成本效益高和社区支持强大而受到广泛欢迎。
五、作业
-
数据模型的概念、作用和三个要素:
- 概念: 数据模型是现实世界数据特征的抽象,用于描述数据元素、数据元素之间的关系以及数据元素的属性和特性。
- 作用: 数据模型用于指导数据库的设计和实现,帮助组织和存储数据,以及支持数据的查询和更新。
- 三个要素: 实体、关系和属性。实体是现实世界中的对象;关系定义了实体之间的联系;属性是实体所具有的性质或特征。
-
数据库系统三级模式结构及优点:
- 三级模式结构: 外模式(子模式)、概念模式(逻辑模式)、内模式(存储模式)。
- 优点: 提高数据的逻辑独立性和物理独立性,使得数据结构的修改不影响应用程序;简化了用户和数据库的交互;提供了数据的逻辑抽象和物理抽象,便于数据的管理和维护。
-
术语解释:
- DDL (Data Definition Language): 用于定义和创建数据库结构的语言,如 CREATE、ALTER、DROP 等。
- DML (Data Manipulation Language): 用于操作和查询数据库中数据的语言,如 SELECT、INSERT、UPDATE、DELETE 等。
-
数据与程序的物理独立性和逻辑独立性:
- 物理独立性: 数据的存储方式和位置的改变不会影响到依赖于该数据的应用程序。
- 逻辑独立性: 数据的逻辑结构或模式的改变(如表的增加或删除)不会影响到应用程序。
-
DBA (Database Administrator) 的职责:
- 负责数据库的设计、实现、维护和管理。
- 确保数据的安全性、完整性和可用性。
- 监控数据库的性能,优化查询和存储过程。
- 备份和恢复数据,处理数据库故障。
- 管理用户权限和数据库访问控制。