MySQL第九章(创建管理表)

一.基础知识

1.1一条数据的存储过程

在这里插入图片描述

1.2标识符命名规则

1.表名和库名不能超过30个字符
2.必须包含A-Z, a-z, 0-9, 和下划线 共63个字符
3.表名, 库名, 字段名等对象名中间不要包含空格
4.同一个MySQL软件中, 数据库不能同名, 同一个库中, 表不能同名, 同一个表中, 字段不能重名, 如果坚持要用就要用``着重号引起来
5.保持字段名和类型的一致性: 在命名字段并为其指定数据类型的时候一定要保持一致性, 假如数据类型在一个表里是整数, 在另一个表里可就别变成字符型了

二.创建和管理数据库

2.1创建数据库

#方式一:
CREATE DATABASE myemp1
#方式二: 可以指定要创建数据库的字符集
CREATE DATABASE myemp2 CHARACTER SET 'gbk'
#方式三(推荐):数据库如果已存在,则不会报错, 不存在则创建
CREATE DATABASE IF NOT EXISTS myemp3 CHARACTER SET 'utf8'
#建议后面都加'utf8'

2.2使用数据库

#查看当前连接中的数据库有哪些
SHOW DATABASES 

#切换数据库
USE +数据库名

#查看当前数据库中保存的数据表
SHOW tables 

#查看当前使用的数据库
SELECT DATABASE()
FROM DUAL 

#查看指定数据库下保存的数据表
SHOW TABLES FROM +数据库名

2.3修改数据库

#虽说有这个功能, 但很少去改, 有也只是修改字符集
ALTER DATABASE +数据库名 CHARACTER SET 'utf8'

2.4删除数据库

#方式1
DROP DATABASE +数据库名

#方式2, 若存在则删除, 不存在则不会报错
DROP DATABASE IF EXISTS +数据库名

三.创建表

3.1创建方式一(白手起家)

#需要用户具备创建表的权限
举例:
CREATE TABLE IF NOT EXISTS mytable(
id INT,
emp_name VARCHAR(15), #使用varchar来定义字符串,必须指明长度
hire_date DATE
)

如果创建表时没有指明使用的字符集, 则默认使用表所在的数据库的字符集

3.2创建方式二(富二代)

基于现有的表, 同时导入数据

#例题1
CREATE TABLE myemp2
AS 
SELECT e.employee_id, e.last_name, e.salary 
FROM employees e 

#例题2
CREATE TABLE myemp22
AS
SELECT e.employee_id AS emp_id, e.last_name AS lname, d.department_name 
FROM employees e JOIN departments d 
ON e.department_id = d.department_name 
#说明1:查询语句中字段的别名, 可以作为新创建的表的字段的名称
#说明2:此时的查询语句结构比较丰富, 使用前面章节的各种SELECT


#例题3: 复制employees表里所有的数据
CREATE TABLE employees_copy
AS
SELECT *
FROM employees e 


#例题4: 只复制dpartment表的字段
CREATE TABLE departments_copy
AS 
SELECT *
FROM employees e 
WHERE 0

3.3管理表

#查看表结构
DESC +表名

#查看创建表的语句结构
SHOW CREATE TABLE +表名

#查看表数据
SELECT * FROM +表名

四.修改表

4.1追加一个列

ALTER TABLE myemp3 
ADD salary double(10,2); #默认添加到表中的最后一个字段的位置
#这里的10,表示共10, 2表示精确到两位小数


ALTER TABLE myemp3 
ADD phone_number varchar(20) FIRST #添加到第一个位置


ALTER TABLE myemp3 
ADD email varchar(45) AFTER emp_name #添加到emp_name的后面

4.2修改一个列

#可以修改数据类型, 但一般很少修改数据类型, 大都修改长度
ALTER TABLE myemp3 
MODIFY emp_name varchar(25)

4.3重命名一个列

ALTER TABLE myemp3 
CHANGE salary monthly_salary double(10,2)

ALTER TABLE myemp3 
CHANGE email my_email varchar(50)
#也能实现修改数据类型的长度

4.4删除一个列

ALTER TABLE myemp3 
DROP COLUMN my_email

五.重命名表

RENAME TABLE myemp11 
TO myemp1

六.删除表(谨慎操作,回滚不了)

DROP TABLE IF EXISTS myemp1

七.清空表

TRUNCATE TABLE myemp1

八.内容拓展

拓展一: 阿里巴巴《JAVA开发手册》之MySQL字段命名
在这里插入图片描述
拓展二:
在这里插入图片描述

九.删除表数据与清空表数据的区别

9.1 DCL中的COMMIT 和 ROLLBACK

COMMIT: 提交数据, 一旦执行COMMIT, 则数据就被永久的保存在数据库中, 意味着数据不可以回滚
ROLLBACK: 回滚数据, 执行ROLLBACK, 则可以实现数据的回滚, 回滚到最近一次COMMIT之后

9.2 对比TRUNCATE TABLE 和 DELETE FROM

相同点: 都可以实现对表中所有数据的删除, 同时保留表结构
不同点:
TRUNCATE TABLE: 一旦执行, 表数据全部清除,并且数据不能回滚
DELETE FROM: 执行此操作, 表数据可以全部清除(不带WHERE), 数据是可以实现回滚

9.3 DDL 和 DML的说明

(1)DDL一旦执行, 就不可回滚, 指令SET autocommit = FALSE 对DDL失效
(2)DML一旦执行, 默认情况下也是不能回滚, 但是, 在执行DML之前, 执行了SET autocommit = FALSE, 则执行的DML操作就可以实现回滚

#不能回滚
COMMIT 

SELECT *
FROM myemp3 

SET autocommit = FALSE

TRUNCATE TABLE myemp3

SELECT *
FROM myemp3

ROLLBACK

SELECT *
FROM myemp3
可以回滚
COMMIT 

SELECT *
FROM myemp3 

SET autocommit = FALSE

DELETE FROM myemp3

SELECT *
FROM myemp3

ROLLBACK

SELECT *
FROM myemp3

十. MySQL8.0的新特性: DDL的原子化

若myemp1存在, myemp2不存在

DROP TABLE myemp1,myemp2
#在MySQL8.0中myemp1删除不成功
#在MySQL5.7中myemp1删除成功
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值