MYSQL基础上机练习题(一) 数据库、表、字段的创建、修改、删除

来源:互联网 发布:淘宝邮寄国外多少费用 编辑:程序博客网 时间:2024/05/02 08:34

写这些MYSQL基础上机练习题的文章的目的主要是因为,在某一次碰见一家公司的数据分析师,希望能转行到做SQL上面,然而当我看到她对SQL的认知只是仅仅在背语句、甚至是不太清楚语句真正的意义的时候,发现很多人其实都缺少实际操作的能力。
而且很多教材中,很少有关于某一个数据库的从基础到综合应用的练习,所以在这里,从SQL SERVER的一本书中模仿了一些数据的格式,同时添加一些自己觉得比较重要的知识点,从基础做起,把日常能用到的数据库语句用一遍,让有需要的小白可以多练练手,以免纸上谈兵。

一、实验目的:

  1. 创建、修改、删除数据库
  2. 创建、修改、删除表
  3. 创建、修改、删除字段

二、内容:

创建一个用于企业管理的员工管理数据库,包括员工信息(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
Mysql新建数据库

(2)删除该数据库
DROP DATABASE YGGL
Mysql删除数据库

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 '员工部门号,外键')

Mysql 创建表

(2)删除Employees表中Address字段
ALTER TABLE Employees DROP Address

Mysql 删除字段
在运行了代码之后,有可能Address依然存在列表中,刷新也刷新不出来删除后的界面,可以尝试关掉数据库重新进入

(3)修改Employees表增加字段Address
ALTER TABLE Employees ADD Address varchar(40) COMMENT '地址'
Mysql 增加字段

(4)修改Employees表中Gender字段的默认值以及备注,改为默认值为1
ALTER TABLE Employees MODIFY COLUMN Gender bit COMMENT '性别,默认值为1
Mysql 修改默认值以及备注

(5)修改Employees表中Gender字段名称,改为Sex(改完记得改回来哦,不然可能会影响下一次练习)
ALTER TABLE Employees CHANGE Gender Sex bit DEFAULT 1 COMMENT '性别,默认值为1'

Mysql 修改字段名称
(注意:改名称时要同时重新指定数据类型,默认值,备注等)

(6)显示Employees中字段的所有属性
首先,要进入information_schema的数据库
USE information_schema
然后选择yggl数据库中的Employees表名进行查询
select * from COLUMNS where TABLE_SCHEMA='yggl' and TABLE_NAME='Employees'

Mysql显示表中字段属性

(7)创建部门信息(Departments)表

CREATE TABLE Departments(DepartmentID varchar(3) NOT NULL PRIMARY KEY COMMENT '部门编号,主键',DepartmentName varchar(20) NOT NULL COMMENT '部门名',Note varchar(100) COMMENT '备注')

Mysql创建表

(8)增加Employees表中DepartmentID的约束,外键指向Departments表中的DepartmentID

ALTER TABLE Employees ADD CONSTRAINT department_employee FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID)

有可能遇到的错误:#1005 Errno 150

Mysql 增加约束

(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))

Mysql创建表建立外键
(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

在此操作中,注意SET后面的语法, NEW.计算列 而不是只是计算列

1 0
原创粉丝点击