Mac安装使用Mysql教程(从零开始)
- 第一章 Mac安装MySQL
- 第二章 安装数据库管理软件DBeaver
- 第三章 DBeaver创建MySQL数据库
- 第四章 终端管理MySQL
- 第五章 MySQL基本操作之查询
- 第六章 MySQL基本操作之插入
- 第七章 MySQL基本操作之更新与删除
- 第八章 创建和操纵表
- 第九章 使用视图
- 第十章 使用存储过程
- 第十一章 管理事务处理
- 第十二章 游标
- 第十三章 MySQL学习问题及解决记录
第八章 创建和操纵表
第八章 创建和操纵表
8.1 创建表
创建表有两种方法,第一种是通过DBMS工具创建,第二种是通过SQL语句创建。
- 创建基础表
使用CREATE TABLE语句创建表,其中包含如下三个要素:
-
表名,在CREATE TABLE语句之后;
-
列名及其定义,用逗号分隔;
-
有的DBMS还要求指定表的位置;
CREATE TABLE MyFirstTable (my_id char(10) NOT NULL, my_name char(10) NOT NULL, my_age char(10) NOT NULL, my_note char(10) NOT NULL );
- 使用NULL
- 在不指定NOT NUUL时,多数DBMS默认指定的是NULL,但有的DBMS要求指定NULL,否则报错;
- 只有NOT NULL的列允许指定为主键;
- NULL与空字符串不同,空字符串是一个有效的值,而NULL是无值;
- 使用默认值
在CREATE TABLE语句的列定义中用关键字DEFAULT指定默认值,默认值一般用于时间日期列,而不同DBMS获取系统日期的命令往往不同,下表列出了不同DBMS的用法:
DBMS | 函数 |
---|---|
MySQL | CURRENT_DATE() |
SQL Server | GETDATE() |
Oracle | SYSDATE |
Acess | NOW |
DB2 | CURRENT_DATE() |
PostgreSQL | CURRENT_DATE() |
SQLite | date(‘now’) |
在MySQL中获取系统日期的具体操作如下:
CREATE TABLE MyFirstTable
(my_id char(10) NOT NULL,
my_name char(10) NOT NULL,
my_date char(10) DEFAULT CURRENT_DATE,
my_note char(10) NOT NULL
);
8.2 更新表
- 注意事项:
- 理想情况下,不要在表中包含数据时对其进行更新。应该在表的设 计过程中充分考虑未来可能的需求,避免今后对表的结构做大 改动。
- 所有的 DBMS 都允许给现有的表增加列,不过对所增加列的数据类型 (以及 NULL 和 DEFAULT 的使用)有所限制。
- 许多 DBMS 不允许删除或更改表中的列。
- 多数 DBMS 允许重新命名表中的列。
- 许多 DBMS 限制对已经填有数据的列进行更改,对未填有数据的列几乎没有限制。
- 语法:
更新表的语法与创建表的语法比较相似:
-
表名,在ALTER TABLE语句之后;
-
说明列要做出哪些修改。
# 添加列 ALTER TABLE Vendors ADD vend_phone CHAR(20); # 删除列 ALTER TABLE Vendors DROP COLUMN vend_phone;
- 复杂更新:
复杂的表结构更新,一般需要手动删除过程,具体如下:
(1) 用新的列布局创建一个新表;
(2) 使用 INSERT SELECT 语句(关于这条语句的详细介绍,请参阅第 15课)从旧表复制数据到新表。有必要的话,可以使用转换函数和计算字段;
(3) 检验包含所需数据的新表;
(4) 重命名旧表(如果确定,可以删除它);
(5) 用旧表原来的名字重命名新表;
(6) 根据需要,重新创建触发器、存储过程、索引和外键。
8.3 删除表
使用 DROP TABLE 语句就可以直接删除表(整个表而不是其内容):DROP TABLE MySecondTable;
注意事项:
- 删除表没有确认,也不能撤销,执行这条语句将永久删除该表;
- 许多DBMS不允许删除于其它表相关联的表;
8.4 重命名表
重命名操作不存在严格标准:
- DB2、MariaDB、MySQL、Oracle 和 PostgreSQL 用户使用 RENAME 语句;
- SQL Server 用户使用 sp_rename 存储过程;
- SQLite 用户使用 ALTER TABLE 语句。
具体语法可参见相应的DBMS文档。
8.5 参考
[1] Ben Forta.SQL必知必会-中文-第4版
[2] .MySQL 8.0参考手册(pdf)
[3] .MySQL 8.0参考手册(web)