五、 创建和管理表
大约 3 分钟
五、 创建和管理表
一个完整的数据存储过程总共有 4 步,分别是创建数据库、确认字段、创建数据表、插入数据。
5.1 标识符命名规则
数据库名、表名不得超过30个字符,变量名限制为29个
必须只能包含 A–Z, a–z, 0–9, _共63个字符
数据库名、表名、字段名等对象名中间不要包含空格
同一个MySQL软件中,数据库不能同名;同一个库中,表不能重名;同一个表中,字段不能重名
必须保证你的字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用,请在SQL语句中使 用`(着重号)引起来
保持字段名和类型的一致性:在命名字段并为其指定数据类型的时候一定要保证一致性,假如数据 类型在一个表里是整数,那在另一个表里可就别变成字符型了
5.2 创建和管理数据库
5.2.1 创建数据库
CREATE DATABASE 数据库名;
# 创建数据库并指定字符集
CREATE DATABASE 数据库名 CHARACTER SET '字符集';
# 查看系统内使用的字符集
SHOW VARIABLES LIKE 'CHARACTER_%'
# 判断数据库是否已经存在,不存在则创建数据库
CREATE DATABASE IF NOT EXISTS 数据库名;
5.2.2 管理数据库
-- 查看所有的数据库
SHOW DATABASES
-- 切换数据库
USE boot_gm
-- 查看当前数据库中有哪些表
SHOW TABLES
-- 查看数据库的创建信息
show CREATE DATABASE testdatabase
-- 更改数据库字符集
ALTER DATABASE testdatabase CHARACTER SET 'utf8'
-- 如果存在则删除数据库
DROP DATABASE IF EXISTS 数据库名;
5.2.3 创建表
-- 创建方式一
CREATE TABLE [IF NOT EXISTS] 表名(
字段1, 数据类型 [约束条件] [默认值],
字段2, 数据类型 [约束条件] [默认值],
字段3, 数据类型 [约束条件] [默认值],
……
[表约束条件]
);
-- 创建方式二
-- 基于 employees 表创建 dept80 新表。
-- 不仅会创建 employee_id, last_name,ANNSAL,hire_date 字段,还会将其值复制过去
CREATE TABLE dept80
AS
SELECT employee_id, last_name, salary*12 ANNSAL, hire_date
FROM
employees
WHERE department_id = 80;
-- 如果不想要数据,可通过WHERE条件控制
CREATE TABLE dept80
AS
SELECT employee_id, last_name, salary*12 ANNSAL, hire_date
FROM
employees
WHERE 1 = 2;
5.2.4 修改表
# 增加字段
ALTER TABLE 表名 ADD 【COLUMN】 字段类型 ;
# 修改字段数据类型、长度、默认值、位置的语法格式如下
ALTER TABLE 表名 MODIFY 【COLUMN】 字段类型 【DEFAULT 默认值】
# 重命名字段
ALTER TABLE 表名 CHANGE 【column】 列名 新列名 新数据类型;
# 删除某个字段的语法格式
ALTER TABLE 表名 DROP 【COLUMN】字段名
# 重命名表
RENAME TABLE 表名 to 新表名
# 删除表
DROP TABLE [IF EXISTS] 数据表1 [, 数据表2, …, 数据表n];
# 清空表
TRUNCATE TABLE 表名;
5.2.5 TRUNCATE 与 DELETE 对比
相同点:
都可以实现对表中的所有数据进行删除,同时保留表的结构
不同点:
DELETE 属于 DML 语句,执行操作后可以进行回滚(前提是提交前设置 SET autocommit = false)
TRUNCATE 属于 DDL 语句,执行操作后不可回滚
TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少,但 TRUNCATE 无 事务且不触发 TRIGGER,有可能造成事故,故不建议在开发代码中使用此语句。
Powered by Waline v3.1.3