MYSQL基础上机练习题(一) 数据库、表、字段的创建、修改、删除
一、实验目的:
- 创建、修改、删除数据库
- 创建、修改、删除表
- 创建、修改、删除字段
二、内容:
创建一个用于企业管理的员工管理数据库,包括员工信息(Employees)、部门信息(Departments)、员工薪水情况(Salary)三个表,并对该数据库进行增删改查
Employees表
列名 |
数据类型 |
长度 |
是否可空 |
说明 |
EmployeeID |
字符串型 |
6 |
否 |
员工编号,主键 |
Name |
字符串型 |
10 |
否 |
姓名 |
Education |
字符串型 |
4 |
否 |
学历 |
Birthday date |
日期型 |
系统默认 |
否 |
出生日期 |
Gender |
位型 |
系统默认 |
否 |
性别,默认值为1 |
Workyear |
整数型 |
系统默认 |
是 |
工作时间 |
Address |
字符串型 |
40 |
是 |
地址 |
Phonenumber |
字符串型 |
12 |
是 |
电话号码 |
DepartmentID |
字符型 |
3 |
否 |
员工部门号,外键 |
Departments表
列名 |
数据类型 |
长度 |
是否可空 |
说明 |
DepartmentID |
字符串型 |
3 |
否 |
部门编号,主键 |
DepartmentName |
字符串型 |
20 |
否 |
部门名 |
Note |
字符串型 |
100 |
是 |
备注 |
Salary表
列名 |
数据类型 |
长度 |
是否可空 |
说明 |
EmployeeID |
字符串型 |
6 |
否 |
员工编号,主键 |
InCome |
浮点型 |
(11,2) |
否 |
收入 |
OutCome |
浮点型 |
(11,2) |
否 |
支出 |
ActInCome |
浮点型 |
(11,2) |
是 |
收入-支出 |
三、题目
1. 创建、修改、删除数据库
(1)创建YGGL数据库
(2)删除该数据库
2. 创建、修改、删除表
(1)根据内容中表格的要求,创建员工信息(Employees)
(2)删除Employees表中Address字段
(3)修改Employees表中Gender字段的默认值以及备注,改为默认值为1
(4)修改Employees表中Gender字段名称,改为Sex
(5)显示Employees中字段的所有属性
(6)创建部门信息(Departments)表
(7)创建员工薪水情况(Salary)表
(8)编写触发器,使创建或修改ActIncome时,都遵循:
ActIncome = InCome - OutCome
3. 创建、修改、删除字段
四、代码及演示,以及易错点
1. 创建、修改、删除数据库
(1)创建YGGL数据库
‘CREATE DATABASE YGGL
(2)删除该数据库
‘DROP DATABASE YGGL
2. 创建、修改、删除表
(1)根据内容中表格的要求,创建员工信息(Employees)
CREATE TABLE Employees1(
EmployeeID varchar(6) NOT NULL PRIMARY KEY COMMENT '员工编号,主键',
Name varchar(10) NOT NULL COMMENT '姓名',
Education varchar(4) NOT NULL COMMENT '学历',
Birthday date NOT NULL COMMENT '出生日期',
Gender bit NOT NULL DEFAULT 0 COMMENT '性别,默认值为0' ,
WorkYear tinyint COMMENT '工作时间',
Address varchar(40) COMMENT '地址',
PhoneNumber varchar(12) COMMENT '电话号码',
DepartmentID varchar(3) NOT NULL COMMENT '员工部门号,外键'
)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
(2)删除Employees表中Address字段
ALTER TABLE Employees DROP Address
在运行了代码之后,有可能Address依然存在列表中,刷新也刷新不出来删除后的界面,可以尝试关掉数据库重新进入
(3)修改Employees表增加字段Address
ALTER TABLE Employees ADD Address varchar(40) COMMENT '地址'
(4)修改Employees表中Gender字段的默认值以及备注,改为默认值为1
ALTER TABLE Employees MODIFY COLUMN Gender bit COMMENT '性别,默认值为1
(5)修改Employees表中Gender字段名称,改为Sex(改完记得改回来哦,不然可能会影响下一次练习)
ALTER TABLE Employees CHANGE Gender Sex bit DEFAULT 1 COMMENT '性别,默认值为1'
(注意:改名称时要同时重新指定数据类型,默认值,备注等)
(6)显示Employees中字段的所有属性
首先,要进入information_schema的数据库
USE information_schema
然后选择yggl数据库中的Employees表名进行查询
select * from COLUMNS where TABLE_SCHEMA='yggl' and TABLE_NAME='Employees'
(7)创建部门信息(Departments)表
CREATE TABLE Departments(
DepartmentID varchar(3) NOT NULL PRIMARY KEY COMMENT '部门编号,主键',
DepartmentName varchar(20) NOT NULL COMMENT '部门名',
Note varchar(100) COMMENT '备注'
)
- 1
- 2
- 3
- 4
- 5
(8)增加Employees表中DepartmentID的约束,外键指向Departments表中的DepartmentID
ALTER TABLE Employees ADD CONSTRAINT department_employee FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID)
- 1
有可能遇到的错误:#1005 Errno 150
(9)员工薪水情况(Salary)表,并建立外键指向Employees表中的EmployeeID
CREATE TABLE Salary(
EmployeeID varchar(6) NOT NULL PRIMARY KEY,
InCome FLOAT(11,2) NOT NULL,
OutCome FLOAT(11,2) NOT NULL,
ActIncome FLOAT(11,2),
FOREIGN KEY(EmployeeID) references Employees(EmployeeID)
)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
(10)编写触发器,使创建或修改ActIncome时,都遵循:
ActIncome = InCome - OutCome
在插入数据时,会触发addActIncome触发器,计算ActIncome的值
CREATE TRIGGER addActIncome BEFORE INSERT ON salary
FOR EACH ROW
SET NEW.ActIncome = NEW.InCome - NEW.OutCome
在修改数据时,会触发alterActIncome触发器,重新计算ActIncome的值
CREATE TRIGGER alterActIncome BEFORE UPDATE ON salary
FOR EACH ROW
SET NEW.ActIncome=NEW.InCome-NEW.OutCome
- 1
- 2
- 3
在此操作中,注意SET后面的语法, NEW.计算列 而不是只是计算列