1. 什麼是數據表?¶
在數據庫中,數據表就像一個Excel表格,用來存儲結構化的數據。它由多個列(字段)組成,每列定義了數據的類型(如整數、文本、日期等),而每一行代表一條具體的記錄。比如,一個“學生表”可能包含“學號”“姓名”“年齡”“班級”等列,每行對應一個學生的信息。
2. 創建數據表(CREATE TABLE)¶
要創建數據表,需使用 CREATE TABLE 語句,語法結構如下:
CREATE TABLE 表名 (
列名1 數據類型 [約束條件],
列名2 數據類型 [約束條件],
...
);
關鍵要素說明:
- 表名:自定義,建議見名知意(如 students)。
- 列名:自定義,避免與關鍵字衝突(如不要用 name 作爲列名?不,name 是合法的,但需注意:MySQL 關鍵字需用反引號 ` 包裹,非關鍵字建議小寫)。
- 數據類型:決定列能存儲的數據類型(如整數 INT、字符串 VARCHAR、日期 DATE 等)。
- 約束條件:限制數據的規則(如主鍵 PRIMARY KEY、非空 NOT NULL、默認值 DEFAULT 等)。
常用數據類型示例:¶
| 數據類型 | 用途 | 示例 |
|---|---|---|
INT |
整數 | age INT(年齡) |
VARCHAR(長度) |
可變長度字符串(需指定長度) | name VARCHAR(50)(姓名,最大長度50) |
DATE |
日期(格式:YYYY-MM-DD) | birth_date DATE(出生日期) |
DATETIME |
日期時間(格式:YYYY-MM-DD HH:MM:SS) | create_time DATETIME(創建時間) |
約束條件示例:¶
- 主鍵(PRIMARY KEY):唯一標識一條記錄(不能重複,不能爲空),通常用
INT AUTO_INCREMENT實現自增(插入數據時無需手動指定,數據庫自動分配唯一值)。 - 非空(NOT NULL):列的值必須填寫(如姓名不能爲空)。
- 默認值(DEFAULT):插入數據時若未指定該列,自動使用默認值(如年齡默認18歲)。
實戰案例:創建“學生表”¶
-- 創建學生表,包含id(自增主鍵)、name(非空姓名)、age(默認18歲)、gender(默認男)、birth_date(日期)
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT, -- 主鍵,自增整數,唯一標識學生
name VARCHAR(50) NOT NULL, -- 姓名,非空,最多50個字符
age INT DEFAULT 18, -- 年齡,默認值18(若插入時不填age則用18)
gender VARCHAR(10) DEFAULT '男', -- 性別,默認值'男'
birth_date DATE -- 出生日期,格式:YYYY-MM-DD
);
小貼士:
- 自增列(AUTO_INCREMENT)只能用於整數類型,且必須是主鍵或唯一鍵。
- 字符串類型(VARCHAR)需指定長度(如 VARCHAR(50)),否則會報錯。
- 列定義之間用逗號分隔,最後一列後無逗號。
3. 查看數據表結構¶
創建表後,可通過 DESCRIBE 或 SHOW COLUMNS 查看錶的詳細結構:
-- 查看students表結構
DESCRIBE students;
-- 或簡寫:
SHOW COLUMNS FROM students;
輸出結果:
會顯示列名、數據類型、是否允許空(NULL/NO)、鍵類型(PRI 爲主鍵)、默認值等信息。
4. 操作數據表(增刪改查)¶
4.1 插入數據(INSERT INTO)¶
向表中添加新記錄,語法:
INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...);
示例:插入一條學生數據(僅指定部分列,其他列用默認值):
INSERT INTO students (name, birth_date) VALUES ('張三', '2003-05-10');
-- 注意:
-- 1. 字符串類型(如name、birth_date)需用單引號包裹,數值類型(如age)不需要。
-- 2. 因id是自增主鍵,插入時無需指定,數據庫會自動生成id=1。
-- 3. 若省略列名列表(列順序與表定義一致),需填寫所有列的值:
INSERT INTO students VALUES (NULL, '李四', 19, '女', '2004-03-15'); -- 不推薦,易出錯
4.2 查詢數據(SELECT)¶
從表中獲取數據,語法:
SELECT 列名1, 列名2, ... FROM 表名 [WHERE 條件];
示例:
- 查詢所有學生信息:
SELECT * FROM students; -- * 表示“所有列”
- 查詢年齡大於18歲的學生姓名和年齡:
SELECT name, age FROM students WHERE age > 18;
4.3 更新數據(UPDATE)¶
修改表中已有記錄,語法:
UPDATE 表名 SET 列名1=值1, 列名2=值2, ... [WHERE 條件];
關鍵:必須加 WHERE 條件,否則會修改表中所有記錄!
示例:將“張三”的年齡改爲20歲:
UPDATE students SET age = 20 WHERE name = '張三';
-- 錯誤示例(無WHERE,危險!):UPDATE students SET age = 20; (會把所有學生的age都改爲20)
4.4 刪除數據(DELETE)¶
刪除表中記錄,語法:
DELETE FROM 表名 [WHERE 條件];
關鍵:必須加 WHERE 條件,否則會刪除整個表的數據!
示例:刪除id=1的學生記錄:
DELETE FROM students WHERE id = 1;
-- 錯誤示例(無WHERE,危險!):DELETE FROM students; (會清空整個表)
5. 注意事項¶
-
語法正確性:
- 字符串需用單引號(如'張三'),數值/日期無需(如20、'2003-05-10')。
- 列名和表名建議小寫,避免與關鍵字衝突(如name合法,若用date需加反引號`date`)。 -
數據類型匹配:
- 插入數據時,值的類型必須與列定義一致(如VARCHAR列不能插入數字,否則報錯)。 -
主鍵唯一性:
- 自增主鍵(AUTO_INCREMENT)會自動生成唯一值,無需手動插入,但需避免手動插入重複主鍵。 -
避免誤操作:
-UPDATE和DELETE務必加WHERE條件,否則後果嚴重!
總結¶
創建和操作數據表是 SQL 入門的核心技能,需掌握 CREATE TABLE 定義表結構、INSERT/SELECT/UPDATE/DELETE 增刪改查,以及約束條件(主鍵、非空等)的使用。多練習簡單示例,注意語法細節,就能快速上手!後續可進一步學習複雜查詢、索引等進階內容。