目錄
- 參考源
- SQL alter table 語句
- 示例資料
- SQL alter table 基本使用
參考源
- 簡單教程
- https://www.twle.cn/l/yufei/sql/sql-basic-alter.html
- 菜鳥教程
- https://www.twle.cn/l/yufei/sql/sql-basic-alter.html
SQL alter table 語句
SQL
alter talbe
語句用于向已有的表中添加、删除或修改列 ( 字段 )
- 向表中添加列
ALTER TABLE table_name ADD [COLUMN] column_name data_type
- 删除表中的列
ALTER TABLE table_name DROP [COLUMN] column_name
-
修改表中列的資料類型
SQL Server / MS Access
MySQL / OracleALTER TABLE table_name ALTER COLUMN column_name data_type
Oracle 10G 之後版本ALTER TABLE table_name MODIFY COLUMN column_name data_type
示例資料
CREATE DATABASE IF NOT EXISTS hardy_db default character set utf8mb4 collate utf8mb4_0900_ai_ci;
USE hardy_db;
DROP TABLE IF EXISTS lesson;
CREATE TABLE lesson (
id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
name varchar(32) default '',
views int(11) NOT NULL default '0',
created_at TIMESTAMP
);
INSERT INTO lesson(id,name,views,created_at) VALUES
(1, 'Python 基礎教程',981,'2017-04-18 13:52:03'),
(2, 'Scala 基礎教程',73,'2017-04-18 16:03:32'),
(3, 'Ruby 基礎教程',199,'2017-05-01 06:16:14');
SQL alter table 基本使用
-
添加列
如果我們想給表添加一列
varchar(128)
用于表示課程的路徑,可以使用下面的 SQL 語句
然後我們使用
看一下 lesson 的表結構desc lesson;
順帶看一下資料mysql> desc lesson; +------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(32) | YES | | | | | views | int(11) | NO | | 0 | | | created_at | datetime | YES | | NULL | | | slug | varchar(128) | NO | | | | +------------+--------------+------+-----+---------+----------------+
mysql> SELECT * FROM lesson; +----+---------------------+-------+---------------------+------+ | id | name | views | created_at | slug | +----+---------------------+-------+---------------------+------+ | 1 | Python 基礎教程 | 981 | 2017-04-18 13:52:03 | | | 2 | Scala 基礎教程 | 73 | 2017-04-18 16:03:32 | | | 3 | Ruby 基礎教程 | 199 | 2017-05-01 06:16:14 | | +----+---------------------+-------+---------------------+------+
-
修改字段
一般情況下 slug 32 個字元足夠了,是以我們可以使用下面的 SQL 語句更改下
然後使用
看一下表結構desc lesson;
mysql> desc lesson; +------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(32) | YES | | | | | views | int(11) | NO | | 0 | | | created_at | datetime | YES | | NULL | | | slug | varchar(32) | NO | | | | +------------+-------------+------+-----+---------+----------------+
如果我們少定義了一些項,它會使用資料庫系統的預設設定,而不是表中的原先定義
使用
可以看到這點不同desc lesson;
mysql> desc lesson; +------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(32) | YES | | | | | views | int(11) | NO | | 0 | | | created_at | datetime | YES | | NULL | | | slug | varchar(16) | YES | | NULL | | +------------+-------------+------+-----+---------+----------------+
-
删除列
如果要删除 slug 列,可以使用下面的 SQL 語句
使用
指令可以看到結果如下desc lesson;
mysql> desc lesson; +------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(32) | YES | | | | | views | int(11) | NO | | 0 | | | created_at | datetime | YES | | NULL | | +------------+-------------+------+-----+---------+----------------+