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

MySQL 基礎 SQL 語句速查手冊:庫、表、用戶、約束、欄位操作

     編輯:MySQL 綜合教學

MySQL 基礎 SQL 語句速查手冊:庫、表、用戶、約束、欄位操作

整理 MySQL 日常開發運維最高頻的 DDL/DCL/DML 語句,採用標準語法與最佳實務命名慣例,適合離線速查。

1. 資料庫操作

-- 查看所有庫
SHOW DATABASES;

-- 切換庫
USE db_name;

-- 建庫 (指定字元集/排序規則)
CREATE DATABASE db_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

-- 刪庫
DROP DATABASE db_name;

-- 查詢版本/用戶/當前庫
SELECT VERSION(), USER(), DATABASE();

2. 用戶與權限

-- 建立用戶 (MySQL 5.7+)
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongP@ssw0rd!';

-- 授權 (生產環境建議最小權限原則)
GRANT SELECT, INSERT, UPDATE, DELETE ON app_db.* TO 'app_user'@'%';
-- 超級管理員
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'StrongP@ssw0rd!' WITH GRANT OPTION;

-- 刷新權限
FLUSH PRIVILEGES;

-- 查看用戶權限
SHOW GRANTS FOR 'app_user'@'%';

-- 回收權限
REVOKE INSERT ON app_db.* FROM 'app_user'@'%';

-- 刪除用戶
DROP USER 'app_user'@'%';

3. 資料表操作

-- 建表範例 (InnoDB + utf8mb4 + 註解)
CREATE TABLE `user_account` (
  `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主鍵ID',
  `username` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '用戶名',
  `password_hash` CHAR(128) NOT NULL DEFAULT '' COMMENT '密碼雜湊',
  `email` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '信箱',
  `status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '1啟用 0停用',
  `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '建立時間',
  `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_username` (`username`),
  KEY `idx_email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用戶帳號表';

-- 查看表結構
DESCRIBE user_account;
-- 或
SHOW CREATE TABLE user_account\G

-- 刪表
DROP TABLE user_account;
-- 級聯刪除約束 (外鍵場景)
DROP TABLE user_account CASCADE CONSTRAINTS;

4. 約束管理 (ALTER TABLE)

-- 主鍵
ALTER TABLE goods ADD CONSTRAINT pk_goods PRIMARY KEY (id);
ALTER TABLE goods DROP PRIMARY KEY;

-- 外鍵
ALTER TABLE goods ADD CONSTRAINT fk_goods_type FOREIGN KEY (type_id) REFERENCES goods_type(id);
ALTER TABLE goods DROP FOREIGN KEY fk_goods_type;

-- 唯一約束
ALTER TABLE item_detail ADD CONSTRAINT uk_item_order UNIQUE (goods_id, order_id);
ALTER TABLE item_detail DROP INDEX uk_item_order;  -- 唯一約束本質是唯一索引

5. 欄位操作

-- 新增欄位
ALTER TABLE file_info ADD COLUMN convert_status VARCHAR(50) DEFAULT 'pending' COMMENT '轉換狀態';

-- 刪除欄位
ALTER TABLE file_info DROP COLUMN convert_status;

-- 修改欄位 (型別/預設值/註解/重命名)
ALTER TABLE file_info CHANGE COLUMN convert_status convert_status2 INT(11) DEFAULT 0 COMMENT '狀態碼';
-- 僅修改型別
ALTER TABLE file_info MODIFY COLUMN convert_status2 BIGINT(20) DEFAULT 0;

6. 索引操作補充

-- 建立普通索引
CREATE INDEX idx_user_email ON user_account(email);
ALTER TABLE user_account ADD INDEX idx_user_email (email);

-- 建立唯一索引
CREATE UNIQUE INDEX uk_user_phone ON user_account(phone);

-- 刪除索引
DROP INDEX idx_user_email ON user_account;
ALTER TABLE user_account DROP INDEX idx_user_email;

命名慣例建議

物件前綴範例
主鍵pk_pk_user_account
外鍵fk_fk_order_user
唯一索引/約束uk_uk_user_email
普通索引idx_idx_user_created_at
檢查約束ck_ck_user_status

遵循統一命名慣例,能大幅降低維護成本,並讓 SHOW CREATE TABLE、EXPLAIN 輸出一目瞭然。

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