前面我們已經學習了如何查詢數據(SELECT
)、篩選數據(WHERE
)等操作。現在我們要進入數據庫的另一個重要領域 —— 表結構管理與分區設計。
本文帶你快速認識以下關鍵字:
- ??
ALTER
- ??
MODIFY
- ??
CHANGE
- ??
DEFAULT
- ??
VALUES
- ??
LESS THAN
- ??
RANGE
一、ALTER:修改表結構的核心命令
?基本作用
用于修改已有表的結構,比如添加字段、刪除字段、重命名表等。
?示例:
-- 添加新列
ALTER TABLE users ADD COLUMN birth_date DATE;-- 刪除列
ALTER TABLE users DROP COLUMN phone;-- 重命名表
ALTER TABLE users RENAME TO user_accounts;
?二、MODIFY:修改列的定義
?基本作用
用于更改某個字段的數據類型或屬性,但不能重命名字段名。
?示例:
-- 修改 email 字段為 VARCHAR(150),并設置非空
ALTER TABLE users MODIFY email VARCHAR(150) NOT NULL;
?三、CHANGE:修改列名和定義
?基本作用
與 MODIFY
類似,但它還可以重命名字段名。
?示例:
-- 將字段 old_name 改名為 new_name,并改變類型
ALTER TABLE users CHANGE old_name new_name VARCHAR(100);
?四、DEFAULT:設定默認值
?基本作用
為字段設置一個默認值,當插入數據時未指定該字段值時,自動使用默認值。
?示例:
-- 創建表時設置默認值
CREATE TABLE orders (id INT AUTO_INCREMENT PRIMARY KEY,status VARCHAR(20) DEFAULT 'pending'
);-- 修改現有字段的默認值
ALTER TABLE orders MODIFY status VARCHAR(20) DEFAULT 'completed';
?五、VALUES:插入數據的核心語法
?基本作用
用于 INSERT INTO
語句中,指定要插入的具體值。
?示例:
-- 插入一行數據
INSERT INTO users (name, email) VALUES ('張三', 'zhangsan@example.com');-- 插入多行數據
INSERT INTO users (name, email) VALUES
('李四', 'lisi@example.com'),
('王五', 'wangwu@example.com');
?六、LESS THAN:常用于范圍分區
?基本作用
用于定義分區規則中的“小于某值”的邊界條件,常見于 RANGE
分區。
?示例:
CREATE TABLE sales (id INT,amount DECIMAL(10,2)
) PARTITION BY RANGE (amount) (PARTITION p0 VALUES LESS THAN (1000),PARTITION p1 VALUES LESS THAN (5000),PARTITION p2 VALUES LESS THAN MAXVALUE
);
在這個例子中,銷售金額小于1000的數據會存儲在 p0
分區中,以此類推。
?七、RANGE:按范圍進行分區
?基本作用
用于創建按某一字段值的范圍進行分區的邏輯,提升大數據量下的查詢效率。
?示例:
CREATE TABLE employees (id INT,salary INT
) PARTITION BY RANGE (salary) (PARTITION low_salary VALUES LESS THAN (3000),PARTITION mid_salary VALUES LESS THAN (8000),PARTITION high_salary VALUES LESS THAN MAXVALUE
);
這樣,工資不同范圍的員工會被分配到不同的分區中,便于管理與查詢優化。
八、總結對比表
關鍵字 | 用途 | 是否影響數據 | 示例 |
---|---|---|---|
ALTER | 修改表結構 | 否 | ALTER TABLE users ADD COLUMN... |
MODIFY | 修改字段定義(不改名) | 否 | MODIFY email VARCHAR(150) |
CHANGE | 修改字段定義 + 可以重命名字段名 | 否 | CHANGE old_name new_name ... |
DEFAULT | 設置字段默認值 | 否 | VARCHAR(100) DEFAULT 'abc' |
VALUES | 插入具體數據 | 是 | VALUES ('A', 'B') |
LESS THAN | 定義分區的范圍邊界 | 否 | VALUES LESS THAN (1000) |
RANGE | 按字段值范圍劃分分區 | 否 | PARTITION BY RANGE (salary) |