整理自實戰筆記,涵蓋建表語法、支援的資料型別、表結構修改、刪除、重命名,以及五大約束(NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK)的建立與修改範例,適合開發快速查閱。
CREATE TABLE test (
test_id INT,
test_price DECIMAL,
test_name VARCHAR(255) DEFAULT 'Xxx',
test_desc TEXT,
test_img BLOB,
test_date DATETIME
);
| 類別 | 型別 |
|---|---|
| 整數 | TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT |
| 浮點/定點 | FLOAT, DOUBLE, DECIMAL(DEC) |
| 日期時間 | DATE, TIME, DATETIME, TIMESTAMP, YEAR |
| 字串 | CHAR, VARCHAR, BINARY, VARBINARY |
| 大物件 | TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT |
| 集合/枚舉 | ENUM('v1','v2'...), SET('v1','v2'...) |
CREATE TABLE hehe AS SELECT * FROM user_info;
-- 新增欄位
ALTER TABLE hehe ADD hehe_id INT;
ALTER TABLE hehe ADD aaa VARCHAR(25), bbb VARCHAR(25);
-- 修改欄位型別
ALTER TABLE hehe MODIFY hehe_id VARCHAR(255);
ALTER TABLE hehe MODIFY bbb INT;
-- 刪除欄位
ALTER TABLE hehe DROP COLUMN column_name;
-- 重命名表
ALTER TABLE hehe RENAME TO wawa;
-- 重命名欄位並修改型別
ALTER TABLE wawa CHANGE bbb ddd INT;
DROP TABLE 表名;
CREATE TABLE hehe (
hehe_id INT NOT NULL,
hehe_name VARCHAR(25) DEFAULT 'xyz' NOT NULL,
hehe_gender VARCHAR(28) NULL
);
-- 增加/移除 NOT NULL
ALTER TABLE hehe MODIFY hehe_gender VARCHAR(30) NOT NULL;
ALTER TABLE hehe MODIFY hehe_name VARCHAR(3) NULL;
-- 列級
CREATE TABLE unique_test (test_id INT NOT NULL, test_name VARCHAR(30) UNIQUE);
-- 表級
CREATE TABLE unique_test (
test_id INT NOT NULL,
test_name VARCHAR(30),
test_pass VARCHAR(30),
UNIQUE(test_name),
CONSTRAINT test_uk UNIQUE(test_pass)
);
-- 修改
ALTER TABLE unique_test ADD UNIQUE(test_name, test_pass);
CREATE TABLE pk_test (pk_id INT PRIMARY KEY, name VARCHAR(255));
CREATE TABLE pk_test2 (id INT NOT NULL, name VARCHAR(29), CONSTRAINT pk_test PRIMARY KEY(id));
-- 刪除/新增
ALTER TABLE test DROP PRIMARY KEY;
ALTER TABLE test ADD PRIMARY KEY(test_id, test_name);
CREATE TABLE teacher (
teacher_id INT AUTO_INCREMENT PRIMARY KEY,
teacher_name VARCHAR(255)
);
CREATE TABLE student (
student_id INT AUTO_INCREMENT PRIMARY KEY,
student_name VARCHAR(255),
java_teacher INT REFERENCES teacher(teacher_id)
);
CREATE TABLE test (
test_id INT AUTO_INCREMENT PRIMARY KEY,
test_age INT NOT NULL,
CHECK (test_age > 0 AND test_age < 120)
);
SHOW DATABASES; / SHOW TABLES; / DESCRIBE 表名;SELECT DATABASE(); 查看當前庫USE db_name; 切換庫