二、MySQL基礎操作

TheHypocrite發表於2024-07-05

二、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;

相關文章