首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 基礎 SQL 語句大全:建表、增刪改查、約束與進階查詢

     編輯:MySQL 綜合教學

MySQL 基礎 SQL 語句大全:從入門到進階的速查手冊

本文匯總 MySQL 最常用的 DDL、DML、DQL 語句,涵蓋建表、約束、增刪改查、排序、分組、連接、子查詢等核心知識點,適合初學者速查與開發者備忘。

一、庫表管理(DDL)

-- 建表(帶主鍵、自增、非空、唯一、外鍵、檢查約束)
CREATE TABLE stu (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name CHAR(6) NOT NULL,
    sex CHAR(1) NOT NULL CHECK (sex IN ('男','女')),
    age INT CHECK (age > 0 AND age < 120)
);

-- 刪除表
DROP TABLE stu;

-- 修改表結構
ALTER TABLE user ADD COLUMN new1 VARCHAR(20) DEFAULT NULL;      -- 新增字段
ALTER TABLE user ADD COLUMN new2 VARCHAR(20) NOT NULL;           -- 新增非空字段
ALTER TABLE user DROP COLUMN new2;                                -- 刪除字段
ALTER TABLE user MODIFY new1 VARCHAR(10);                         -- 修改類型
ALTER TABLE user CHANGE new1 new4 INT;                            -- 重命名並修改類型

-- 外鍵約束
ALTER TABLE president ADD CONSTRAINT fk_country 
    FOREIGN KEY (f_country_name) REFERENCES country(name) ON DELETE CASCADE;

二、數據操作(DML)

-- 插入
INSERT INTO stu (id, name, age) VALUES (1, '小明', 20);
INSERT INTO stu (name, sex, age) VALUES ('小五', '女', 20);  -- 自增 id 可省略

-- 刪除
DELETE FROM stu;                              -- 清空表(保留自增值)
DELETE FROM stu WHERE id > 3 AND age = 40;    -- 條件刪除
DELETE FROM stu WHERE name = '小明' OR age = 21;

-- 更新
UPDATE stu SET name = 'mmmm';
UPDATE stu SET name = 'xxx' WHERE id > 3;
UPDATE stu SET name = 'yyy', age = 100 WHERE name = 'mmmm';

三、查詢進階(DQL)

-- 基礎查詢
SELECT * FROM stu;
SELECT id, age FROM stu;
SELECT id, age, name FROM stu WHERE id > 2 AND id < 5;

-- 排序
SELECT * FROM stu ORDER BY id;           -- 升序
SELECT * FROM stu ORDER BY age DESC;     -- 降序

-- 分組聚合
SELECT sex, COUNT(*) AS 性別人數 FROM stu GROUP BY sex;
SELECT sex, AVG(age) FROM stu GROUP BY sex;
SELECT sex, MAX(age) FROM stu GROUP BY sex;

-- IN / NOT IN
SELECT * FROM stu WHERE id IN (19, 25, 23);
SELECT * FROM stu WHERE id NOT IN (19, 25, 23);

-- 多條件組合
SELECT * FROM stu WHERE sex = 'M' AND id NOT IN (19, 30);

四、常用約束類型速查

約束關鍵字示例
主鍵PRIMARY KEYid INT PRIMARY KEY AUTO_INCREMENT
非空NOT NULLname CHAR(6) NOT NULL
唯一UNIQUEIdCardNo CHAR(20) UNIQUE
外鍵FOREIGN KEY ... REFERENCESREFERENCES class(classname) ON DELETE CASCADE
檢查CHECKCHECK (age > 0 AND age < 120)
默認值DEFAULTstatus INT DEFAULT 1

五、日期時間類型示例

CREATE TABLE people (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name CHAR(10),
    sex CHAR(1),
    myyear YEAR,
    mydate DATE,
    mytime TIME
);

六、MySQL 不區分大小寫說明

表名在 Windows 下不區分大小寫,Linux 下區分(受 lower_case_table_names 參數控制)。關鍵字、函數名、列名均不區分大小寫。

七、清空表數據的兩種方式差異

  • DELETE FROM stu;:逐行刪除,觸發 Trigger,自增計數器不歸零,可回滾。
  • TRUNCATE TABLE stu;:直接釋放數據頁,重置自增計數器,不可回滾,速度極快。

建議收藏本文作為日常開發速查表,熟練掌握上述語句可覆蓋 90% 以上的業務開發場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved