第八章 创建和管理表
发布时间:2022-11-30 11:23:32 所属栏目:MySql教程 来源:
导读: 1. 基础知识 1.1 一条数据存储的过程
存储数据是处理数据的第一步 。只有正确地把数据存储起来,我们才能进行有效的处理和分析。否则,只能是一团乱麻,无从下手。那么,怎样才能把用户各种经营相关的、
存储数据是处理数据的第一步 。只有正确地把数据存储起来,我们才能进行有效的处理和分析。否则,只能是一团乱麻,无从下手。那么,怎样才能把用户各种经营相关的、
1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数据的第一步 。只有正确地把数据存储起来,我们才能进行有效的处理和分析。否则,只能是一团乱麻,无从下手。那么,怎样才能把用户各种经营相关的、纷繁复杂的数据,有序、高效地存储起来呢? 在 MySQL 中,一个完整的数据存储过程总共有 4 步,分别是创建数据库、确认字段、创建数据表、插入数据。 在这里插入图片描述 我们要先创建一个数据库,而不是直接创建数据表呢? 因为从系统架构的层次上看,MySQL 数据库系统从大到小依次是 数据库服务器 、 数据库 、 数据表 、数据表的行与列 。 MySQL 数据库服务器之前已经安装。所以,我们就从创建数据库开始。 1.2 标识符命名规则 1.3 MySQL中的数据类型 在这里插入图片描述 在这里插入图片描述 2. 创建和管理数据库 CREATE DATABASE 数据库名; CREATE DATABASE 数据库名 CHARACTER SET 字符集; CREATE DATABASE IF NOT EXISTS 数据库名; 注意:DATABASE 不能改名。一些可视化工具可以改名,它是建新库,把所有表复制到新库,再删旧库完成的。 2.2 使用数据库 查看当前所有的数据库 SHOW DATABASES;#有一个S,代表多个数据库 SELECT DATABASE();#使用的一个 mysql 中的全局函数 查看指定库下所有的表 SHOW TABLES FROM 数据库名; 查看数据库的创建信息 SHOW CREATE DATABASE 数据库名; 或者 SHOW CTREATE DATABASE 数据库名\G 使用/切换数据库 注意:要操作表格和数据之前必须先说明是对哪个数据库进行操作,否则就要对所有对象加上“数 据库名.”。 2.3 修改数据库 ALTER DATABASE database_name CHARACTER SET 字符集 ; DROP DATABASE 数据库名; DROP DATABASE IF NOT EXISTS 数据库名; 3. 创建表 3.1 创建方式1 CREATE TABLE [IF NOT EXISTS] 表名( 字段1,数据类型 [约束条件], [默认值], 字段2,数据类型 [约束条件], [默认值], 字段3,数据类型 [约束条件], [默认值] ........ [约束条件] ) 加上了IF NOT EXISTS关键字,则表示:如果当前数据库中不存在要创建的数据表,则创建数据表;如果当前数据库中已经存在要创建的数据表,则忽略建表语句,不再创建数据表。 CREATE TABLE emp( emp_id int, emp_name VARCHAR(20), salary DOUBLE, birthday DATE );- DESC emp; CREATE TABLE dept( -- int类型, 自增 deptno int(2) AUTO_INCREMENE, -- 主键 PRIMARY KEY (deptno) ); 3.2 创建方式2 CREATE TABLE emp1 AS SELECT * FROM employees; CREATE TABLE emp2 AS SELECT * FROM employees WHERE 1=2; -- 创建的emp2是空表 CREATE TABLE dept80 AS SELECT employee_id, last_name, salary*12 ANNSAL, hire_date FROM employees WHERE department_id = 80; DESCRIBE dept80; 3.3 查看数据表结构 在MySQL中创建好数据表之后,可以查看数据表的结构。MySQL支持使用 DESCRIBE/DESC 语句查看数据表结构MySQL 创建数据表,也支持使用 SHOW CREATE TABLE 语句查看数据表结构。 语法格式如下: SHOW CREATE TABLE 表名\G 使用SHOW CREATE TABLE语句不仅可以查看表创建时的详细语句,还可以查看存储引擎和字符编码。 4. 修改表 修改表指的是修改数据库中已经存在的数据表的结构。 4.1 追加一个列 语法格式如下: ALTER TABLE 表名 ADD [COLUMN] 字段名 字段类型 【FIRST|AFTER 字段名】; ALTER TABLE dept80 ADD job_id VARCHAR(15); 4.2 修改一个列 ALTER TABLE 表名 MODIFY [COLUMN] 字段名 字段类型 【FIRST|AFTER 字段名】; ALTER TABLE dept80 MODIFY last_name VARCHAR(80); ALTER TABLE dept80 MODIFY salary double(9,2) default 1000; 4.3 重命名一个列 ALTER TABLE dept80 CHANGE depatment_name dept_name VARCHAR(15); 4.4 删除一个列 ALTER TABLE 表名 DROP 【COLUMN】字段名 ALTER TABLE dept80 DROP COLUMN job_id; 5.修改表名 RENAME TABLE emp TO myemp; ALTER table dept RENAME [TO] detail_dept; -- [TO]可以省略 6. 删除表 DROP TABLE [IF EXISTS] 数据表1 [, 数据表2, …, 数据表n]; IF EXISTS 的含义为:如果当前数据库中存在相应的数据表,则删除数据表;如果当前数据库中不存在相应的数据表,则忽略删除语句,不再执行删除数据表的操作。 举例: DROP TABLE dept80; 7. 清空表 TRUNCATE TABALE detail_dept; 对比: DELETE FROM emp2; #TRUNCATE TABLE emp2; SELECT * FROM emp2; ROLLBACK; SELECT * FROM emp2; 阿里开发规范: 【参考】TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少,但 TRUNCATE 无事务且不触发 TRIGGER,有可能造成事故,故不建议在开发代码中使用此语句。 说明:TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同。 (编辑:开发网_新乡站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐