二、MySQL基礎操作 1. 資料庫操作 顯示所有資料庫 SHOW DATABASES; 創建資料庫 CREATE DATABASE MyDb; 刪除資料庫 -- 直接刪除庫,不檢查是否存在 DROP DATABASE MyDb; -- 或檢查是否存在 DROP DATABASE [IF EXIST ...
二、MySQL基礎操作
1. 資料庫操作
顯示所有資料庫
SHOW DATABASES;
創建資料庫
CREATE DATABASE MyDb;
刪除資料庫
-- 直接刪除庫,不檢查是否存在
DROP DATABASE MyDb;
-- 或檢查是否存在
DROP DATABASE [IF EXISTS] MyDb;
2. 表操作
選擇資料庫
USE MyDb;
創建表
CREATE TABLE Tb ( id INT(11), name VARCHAR(32), weigh FLOAT );
查看表結構
DESC Tb;
刪除表
-- 直接刪除表,不檢查是否存在
DROP TABLE Tb ;
-- 或檢查是否存在
DROP TABLE [IF EXISTS] Tb;
設置主鍵
-- 直接在創建表時設置主鍵
CREATE TABLE Tb ( id INT(11) PRIMARY KEY, name VARCHAR(32), weigh FLOAT );
-- 或者在創建表後設置主鍵
ALTER TABLE Tb ADD PRIMARY KEY (id);
聯合主鍵
CREATE TABLE Tb ( id INT(11), name VARCHAR(32), weigh FLOAT, PRIMARY KEY (id, name) );
設置外鍵
ALTER TABLE 表名 ADD CONSTRAINT 外鍵名 FOREIGN KEY (欄位名) REFERENCES 主表名 (主鍵名);
添加約束
-- 唯一約束
ALTER TABLE Tb ADD UNIQUE (欄位名);
-- 非空約束
ALTER TABLE Tb MODIFY 欄位名 數據類型 NOT NULL;
-- 預設約束
ALTER TABLE Tb MODIFY 欄位名 數據類型 DEFAULT 預設值;
設置自動增加
ALTER TABLE Tb MODIFY id INT(11) AUTO_INCREMENT;
查看表詳細結構
SHOW CREATE TABLE Tb;
修改表結構
-- 更改表名
ALTER TABLE 舊表名 RENAME TO 新表名;
-- 修改欄位名
ALTER TABLE 表名 CHANGE 舊欄位名 新欄位名 新數據類型;
-- 修改欄位數據類型
ALTER TABLE 表名 MODIFY 欄位名 新數據類型;
-- 添加欄位
ALTER TABLE 表名 ADD 新欄位名 新數據類型 約束條件;
-- 在第一列添加欄位
ALTER TABLE 表名 ADD 新欄位名 新數據類型 約束條件 FIRST;
-- 在指定列後面添加欄位
ALTER TABLE 表名 ADD 新欄位名 新數據類型 約束條件 AFTER 指定列;
修改欄位排列位置
-- 修改為表的第一個欄位
ALTER TABLE 表名 MODIFY 欄位名 新數據類型 FIRST;
-- 修改為指定列後
ALTER TABLE 表名 MODIFY 欄位名 新數據類型 AFTER 指定列;
刪除表的外鍵約束
ALTER TABLE 表名 DROP FOREIGN KEY 外鍵名;
3. 數據操作
插入數據
INSERT INTO 表名 (欄位1, 欄位2, 欄位3, 欄位n) VALUES (數據1, 數據2, 數據3, 數據n), (數據1, 數據2, 數據3, 數據n), ...;
更新數據
UPDATE 表名 SET 欄位1 = "值", 欄位2 = 數值 WHERE 過濾條件;
刪除數據
-- 根據條件刪除
DELETE FROM 表名 WHERE 條件語句;
-- 刪除所有行
DELETE FROM 表名;
4. 查詢操作
基本查詢語句
-- 查詢某欄位
SELECT 欄位1, 欄位2 FROM 表名;
-- 查詢全部欄位
SELECT * FROM 表名;
條件查詢
-- 帶IN關鍵字查詢
SELECT 欄位1, 欄位2 FROM 表名 WHERE 欄位 IN (值1, 值2, 值3, ...);
SELECT 欄位1, 欄位2 FROM 表名 WHERE 欄位 NOT IN (值1, 值2, 值3, ...);
-- 帶BETWEEN AND的範圍查詢
SELECT 欄位1, 欄位2 FROM 表名 WHERE 欄位 BETWEEN 值1 AND 值2;
SELECT 欄位1, 欄位2 FROM 表名 WHERE 欄位 NOT BETWEEN 值1 AND 值2
;
-- 帶LIKE的字元匹配查詢
SELECT 欄位1, 欄位2 FROM 表名 WHERE 欄位 LIKE '%字元%';
SELECT 欄位1, 欄位2 FROM 表名 WHERE 欄位 LIKE '______字元';
-- 查詢空值
SELECT 欄位1, 欄位2 FROM 表名 WHERE 欄位 IS NULL;
-- 去除重覆項
SELECT DISTINCT 欄位 FROM 表名;
-- 帶AND與OR的多條件查詢
SELECT 欄位1, 欄位2 FROM 表名 WHERE 欄位1 條件語句 AND 欄位2 條件語句;
SELECT 欄位1, 欄位2 FROM 表名 WHERE 欄位1 條件語句 OR 欄位2 條件語句;
( 雖然兩種寫法功能一樣,但是我們更推薦使用 IN 關鍵字。因為它不僅邏輯清晰,執行的速度也會快於 OR 關鍵字。更重要的是,使用 IN 關鍵字,我們以後可以執行更加複雜的嵌套語句。)
排序與分組
-- 對查詢結果進行排序
SELECT 欄位1, 欄位2 FROM 表名 ORDER BY 欄位 [ASC|DESC];
-- 分組查詢
SELECT 欄位1, 欄位2 FROM 表名 GROUP BY 欄位;
查詢的是每個分組中 首次出現的一條記錄。
限制查詢結果
-- 查詢前x條數據
SELECT 欄位1, 欄位2 FROM 表名 LIMIT x;
查詢表中前x條數據。
-- 從a往後查詢b條數據,不包含a
SELECT 欄位1, 欄位2 FROM 表名 LIMIT a, b;