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. 查看數據表結構

創建表後,可通過 DESCRIBESHOW 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. 注意事項

  1. 語法正確性
    - 字符串需用單引號(如 '張三'),數值/日期無需(如 20'2003-05-10')。
    - 列名和表名建議小寫,避免與關鍵字衝突(如 name 合法,若用 date 需加反引號 `date`)。

  2. 數據類型匹配
    - 插入數據時,值的類型必須與列定義一致(如 VARCHAR 列不能插入數字,否則報錯)。

  3. 主鍵唯一性
    - 自增主鍵(AUTO_INCREMENT)會自動生成唯一值,無需手動插入,但需避免手動插入重複主鍵。

  4. 避免誤操作
    - UPDATEDELETE 務必加 WHERE 條件,否則後果嚴重!

總結

創建和操作數據表是 SQL 入門的核心技能,需掌握 CREATE TABLE 定義表結構、INSERT/SELECT/UPDATE/DELETE 增刪改查,以及約束條件(主鍵、非空等)的使用。多練習簡單示例,注意語法細節,就能快速上手!後續可進一步學習複雜查詢、索引等進階內容。

小夜