天天看點

SQL學習之alter table語句參考源SQL alter table 語句示例資料SQL alter table 基本使用

目錄

  • 參考源
  • 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

語句用于向已有的表中添加、删除或修改列 ( 字段 )

  1. 向表中添加列
    ALTER TABLE table_name ADD [COLUMN] column_name data_type
               
  2. 删除表中的列
    ALTER TABLE table_name DROP [COLUMN] column_name
               
  3. 修改表中列的資料類型

    SQL Server / MS Access

    ALTER TABLE table_name ALTER COLUMN column_name data_type
               
    MySQL / Oracle
    ALTER TABLE table_name MODIFY COLUMN column_name data_type
               
    Oracle 10G 之後版本

示例資料

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 基本使用

  1. 添加列

    如果我們想給表添加一列

    varchar(128)

    用于表示課程的路徑,可以使用下面的 SQL 語句

    然後我們使用

    desc lesson;

    看一下 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  |      |
    +----+---------------------+-------+---------------------+------+
               
  2. 修改字段

    一般情況下 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    |                |
    +------------+-------------+------+-----+---------+----------------+
               
  3. 删除列

    如果要删除 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    |                |
    +------------+-------------+------+-----+---------+----------------+