MySQL 語法與基礎完全指南

MySQL 是最流行的開源關系型數據庫管理系統之一,廣泛應用于 Web 應用程序開發。本文將全面介紹 MySQL 的基礎知識和完整語法結構。

一、MySQL 基礎概念

1. 數據庫基本術語

  • 數據庫(Database): 存儲數據的集合

  • 表(Table): 數據以表格形式組織

  • 列(Column): 表中的一個字段

  • 行(Row): 表中的一條記錄

  • 主鍵(Primary Key): 唯一標識表中每一行的列

  • 外鍵(Foreign Key): 建立表之間關系的列

2. MySQL 數據類型

數值類型

TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
FLOAT, DOUBLE
DECIMAL(M,D) - 精確小數

字符串類型

CHAR(M) - 固定長度
VARCHAR(M) - 可變長度
TEXT - 長文本
BLOB - 二進制數據

日期時間類型

DATE - YYYY-MM-DD
TIME - HH:MM:SS
DATETIME - YYYY-MM-DD HH:MM:SS
TIMESTAMP - 時間戳
YEAR - 年份

二、數據庫操作

1. 創建數據庫

CREATE DATABASE database_name;
CREATE DATABASE IF NOT EXISTS database_name;

2. 選擇數據庫

USE database_name;

3. 刪除數據庫

DROP DATABASE database_name;
DROP DATABASE IF EXISTS database_name;

4. 查看數據庫

SHOW DATABASES;

三、表操作

1. 創建表

CREATE TABLE table_name (
column1 datatype constraints,
column2 datatype constraints,
...,
PRIMARY KEY (one_or_more_columns)
);

示例:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
is_active BOOLEAN DEFAULT TRUE
);

2. 查看表結構

DESCRIBE table_name;
DESC table_name; -- 簡寫
SHOW COLUMNS FROM table_name;

3. 修改表

添加列

ALTER TABLE table_name
ADD column_name datatype constraints;

修改列

ALTER TABLE table_name
MODIFY COLUMN column_name new_datatype new_constraints;

刪除列

ALTER TABLE table_name
DROP COLUMN column_name;

重命名表

RENAME TABLE old_name TO new_name;
ALTER TABLE old_name RENAME TO new_name;

4. 刪除表

DROP TABLE table_name;
DROP TABLE IF EXISTS table_name;

5. 查看所有表

SHOW TABLES;

四、數據操作語言(DML)

1. 插入數據

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

多行插入:
INSERT INTO table_name (column1, column2, ...)
VALUES
(value1, value2, ...),
(value1, value2, ...),
...;

2. 查詢數據

基本查詢:
SELECT column1, column2, ...
FROM table_name;

查詢所有列:
SELECT * FROM table_name;

條件查詢:
SELECT column1, column2, ...
FROM table_name
WHERE condition;

3. 更新數據

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

4. 刪除數據

DELETE FROM table_name WHERE condition;

刪除所有數據但保留表結構:
DELETE FROM table_name;

TRUNCATE TABLE table_name;

五、數據查詢進階

1. 排序

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;

2. 限制結果

SELECT column1, column2, ...
FROM table_name
LIMIT number;

分頁查詢:
SELECT column1, column2, ...
FROM table_name
LIMIT offset, count;

3. 去重

SELECT DISTINCT column1, column2, ...
FROM table_name;

4. 聚合函數

COUNT(), SUM(), AVG(), MAX(), MIN()

示例:
SELECT COUNT(*) FROM table_name;
SELECT AVG(price) FROM products;

5. 分組

SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1;

6. 過濾分組

SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1
HAVING condition;

7. 連接查詢

內連接

SELECT a.column1, b.column2
FROM table1 a
INNER JOIN table2 b ON a.common_field = b.common_field;

左連接

SELECT a.column1, b.column2
FROM table1 a
LEFT JOIN table2 b ON a.common_field = b.common_field;

右連接

SELECT a.column1, b.column2
FROM table1 a
RIGHT JOIN table2 b ON a.common_field = b.common_field;

全連接

SELECT a.column1, b.column2
FROM table1 a
FULL JOIN table2 b ON a.common_field = b.common_field;

8. 子查詢

SELECT column1, column2
FROM table1
WHERE column1 IN (SELECT column1 FROM table2 WHERE condition);

六、約束

1. 主鍵約束

CREATE TABLE table_name (
id INT PRIMARY KEY,
...
);


CREATE TABLE table_name (
id INT,
...,
PRIMARY KEY (id)
);

2. 外鍵約束

CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
...,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

3. 唯一約束

CREATE TABLE table_name (
email VARCHAR(100) UNIQUE,
...
);

4. 非空約束

CREATE TABLE table_name (
username VARCHAR(50) NOT NULL,
...
);

5. 默認值

CREATE TABLE table_name (
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
...
);

6. 檢查約束

CREATE TABLE table_name (
age INT CHECK (age >= 18),
...
);

七、索引

1. 創建索引

CREATE INDEX index_name
ON table_name (column1, column2, ...);

2. 唯一索引

CREATE UNIQUE INDEX index_name
ON table_name (column_name);

3. 刪除索引

DROP INDEX index_name ON table_name;

八、視圖

1. 創建視圖

CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

2. 使用視圖

SELECT * FROM view_name;

3. 修改視圖

ALTER VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE new_condition;

4. 刪除視圖

DROP VIEW IF EXISTS view_name;

九、存儲過程和函數

1. 創建存儲過程

DELIMITER //
CREATE PROCEDURE procedure_name(parameters)
BEGIN
-- SQL語句
END //
DELIMITER ;

2. 調用存儲過程

CALL procedure_name(arguments);

3. 創建函數

DELIMITER //
CREATE FUNCTION function_name(parameters)
RETURNS datatype
BEGIN
-- SQL語句
RETURN value;
END //
DELIMITER ;

4. 調用函數

SELECT function_name(arguments);

十、觸發器

1. 創建觸發器

DELIMITER //
CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE
ON table_name FOR EACH ROW
BEGIN
-- 觸發器邏輯
END //
DELIMITER ;

2. 刪除觸發器

DROP TRIGGER IF EXISTS trigger_name;

十一、事務控制

1. 開始事務

START TRANSACTION;

2. 提交事務

COMMIT;

3. 回滾事務

ROLLBACK;

4. 設置保存點

SAVEPOINT savepoint_name;

5. 回滾到保存點

ROLLBACK TO savepoint_name;

十二、用戶和權限管理

1. 創建用戶

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

2. 授予權限

GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';
GRANT SELECT, INSERT ON database_name.table_name TO 'username'@'host';

3. 撤銷權限

REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'host';

4. 刷新權限

FLUSH PRIVILEGES;

5. 刪除用戶

DROP USER 'username'@'host';

十三、備份與恢復

1. 備份數據庫

mysqldump -u username -p database_name > backup.sql

2. 恢復數據庫

mysql -u username -p database_name < backup.sql

十四、常用函數

1. 字符串函數

CONCAT(), SUBSTRING(), TRIM(), UPPER(), LOWER(), LENGTH()

2. 數值函數

ROUND(), CEIL(), FLOOR(), ABS(), MOD()

3. 日期函數

NOW(), CURDATE(), CURTIME(), DATE_FORMAT(), DATEDIFF()

4. 條件函數

IF(), CASE WHEN THEN ELSE END, COALESCE(), NULLIF()

總結

本文涵蓋了 MySQL 的基礎知識和完整語法結構,從數據庫和表的創建、數據操作到高級查詢、事務控制和用戶管理。MySQL 是一個功能強大且靈活的關系型數據庫系統,掌握這些基礎知識將為您開發數據庫驅動的應用程序打下堅實基礎。

在實際應用中,還需要根據具體業務需求設計合理的數據庫結構,創建適當的索引以提高查詢性能,并使用事務來保證數據的一致性。隨著對 MySQL 的深入理解,您還可以探索更多高級特性,如分區表、復制、集群等。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/78942.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78942.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/78942.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Sqlalchemy Model轉換成Pydantic Model示例】

【Sqlalchemy Model轉換成Pydantic Model示例】 由于Sqlalchemy和Pydantic的模型字段類型可能有差異, 所以需要一個通用的裝換類 def sqlalchemy_to_pydantic_v2(sqlalchemy_model, pydantic_model):"""通用函數&#xff0c;將 SQLAlchemy 模型實例轉換為 Pyd…

2025年歐洲西南部大停電

2025年4月28日&#xff0c;歐洲西南部出現大規模停電&#xff0c;西班牙、葡萄牙和法國南部均受到影響。有報道指出停電可能與 歐洲電網出現問題有關&#xff0c;但最終原因尚未確定。由于停電&#xff0c;上述地區的交通和通信服務均受到嚴重影響&#xff0c;交通信號燈停止工…

Java EE初階——計算機是如何工作的

1. cpu 馮諾依曼體系&#xff08;Von Neumann Architecture&#xff09; ? CPU 中央處理器: 進?算術運算和邏輯判斷. ? 存儲器: 分為外存和內存, ?于存儲數據(使??進制?式存儲) ? 輸?設備: ??給計算機發號施令的設備. ? 輸出設備: 計算機個??匯報結果的設…

飛鳥游戲模擬器 1.0.3 | 完全免費無廣告,內置大量經典童年游戲,重溫美好回憶

飛鳥游戲模擬器是一款專為安卓用戶設計的免費游戲模擬器&#xff0c;內置了大量經典的童年游戲。該模擬器擁有豐富的游戲資源&#xff0c;目前已有約20,000款游戲&#xff0c;包括多種類型如冒險、動作、角色扮演等。用戶可以直接搜索查找想要玩的游戲進行下載并啟動。游戲庫中…

網絡爬取需謹慎:警惕迷宮陷阱

一、技術背景:網絡爬蟲與數據保護的博弈升級 1. 問題根源:AI訓練數據爬取的無序性 數據需求爆炸:GPT-4、Gemini等大模型依賴數萬億網頁數據訓練,但大量爬蟲無視網站的robots.txt協議(非法律強制),未經許可抓取內容(如新聞、學術論文、代碼),引發版權爭議(如OpenAI被…

Qwen3簡介:大型語言模型的革命

Qwen3簡介&#xff1a;大型語言模型的革命 Qwen系列語言模型的最新發布——Qwen3&#xff0c;標志著人工智能&#xff08;AI&#xff09;技術的一次重大飛躍。基于前代版本的成功&#xff0c;Qwen3在架構、推理能力和多項先進功能上都取得了顯著提升&#xff0c;正在重新定義大…

MODSIM選型指南:汽車與航空航天企業如何選擇仿真平臺

1. 引言 在競爭激烈的汽車與航空航天領域&#xff0c;仿真技術已成為產品研發不可或缺的環節。通過在設計階段驗證概念并優化性能&#xff0c;仿真平臺能有效縮短開發周期并降低物理樣機制作成本。 MODSIM&#xff08;建模與仿真&#xff09;作為達索系統3DEXPERIENCE平臺的核…

linux 內核 debugfs 使用介紹

一&#xff1a;概述 debugfs 是 Linux 內核提供的一個特殊的虛擬文件系統&#xff0c;用于 暴露內核模塊&#xff08;如驅動&#xff09;內部的調試信息或控制接口&#xff0c;供開發者、調試人員實時查看和排查問題。即 debugfs 就是一個“調試專用的 /proc 或 /sys”&#xf…

ZYNQ筆記(十五):PL讀寫PS DDR(自定義IP核-AXI4接口)

版本&#xff1a;Vivado2020.2&#xff08;Vitis&#xff09; 任務&#xff1a;PL 端自定義一個 AXI4 接口的 IP 核&#xff0c;通過 AXI_HP 接口對 PS 端 DDR3 進行讀寫 測試&#xff0c;讀寫的內存大小是 4K 字節&#xff0c; 目錄 一、介紹 &#xff08;1&#xff09;…

Redis 小記

Redis 命令小記 Redis 是一個文本/二進制數據庫&#xff08;textual/binary database&#xff09; CLI 命令 redis-cli, redis-server, redis-benchmark, redis-check-dump, redis-check-aof redis-cli 執行命令 # 方式 1 redis-cli -h 127.0.0.1 -p 6379 > 127.0.0.1:63…

如何在idea中編寫spark程序

在 IntelliJ IDEA 中編寫 Spark 程序的詳細指南 在大數據處理領域&#xff0c;Apache Spark 憑借其強大的分布式計算能力&#xff0c;成為了眾多開發者的首選工具。而 IntelliJ IDEA 作為一款功能強大的集成開發環境&#xff08;IDE&#xff09;&#xff0c;為編寫 Spark 程序…

各類神經網絡學習:(十一)注意力機制(第3/4集),位置編碼

上一篇下一篇注意力機制&#xff08;2/4集&#xff09;注意力機制&#xff08;4/4集&#xff09; 位置編碼 R N N RNN RNN 和 L S T M LSTM LSTM 這些網絡都是串行執行的&#xff0c;在潛移默化中&#xff0c;就包含了順序關系&#xff0c;也就是詞序關系。而注意力機制是并行…

《Python Web部署應知應會》Flask網站隱藏或改變瀏覽器URL:從Nginx反向代理到URL重寫技術

Flask網站隱藏或改變瀏覽器顯示URL地址的實現方案&#xff1a;從Nginx反向代理到URL重寫技術 引言 在Web應用開發中&#xff0c;URL路徑的安全性往往被忽視&#xff0c;這可能導致網站結構和后端邏輯被攻擊者輕易推斷。對于Flask框架開發的網站&#xff0c;如何隱藏或改變瀏覽…

elementui里的el-tabs的內置樣式修改失效?

1.問題圖 紅框里的是組件的內置樣式&#xff0c;紅框下的是自定義樣式 2.分析 2.1scoped vue模板編譯器在編譯有scoped的stye標簽時&#xff0c;會生成對應的postCSS插件&#xff0c;該插件會給每個scoped標記的style標簽模塊&#xff0c;生成唯一一個對應的 data-v-xxxhash…

大數據測試集群環境部署

Hadoop大數據集群搭建&#xff08;超詳細&#xff09;_hadoop_小飛飛519-GitCode 開源社區 hadoop集群一之虛擬機安裝(mac)_hadoop_皮皮蝦不皮呀-華為開發者空間 hadoop集群二之hadoop安裝_hadoop_皮皮蝦不皮呀-華為開發者空間 虛擬機如何查看gateway | PingCode智庫

Nginx 核心功能筆記

目錄 一、Nginx 簡介 二、核心功能詳解 三、關鍵指令解析 四、性能優化要點 五、常見應用場景 一、Nginx 簡介 定位 高性能的 HTTP/反向代理服務器&#xff0c;同時支持郵件協議代理&#xff08;IMAP/POP3/SMTP&#xff09;。采用 事件驅動、異步非阻塞 架構&#xff0c;…

強化學習(二)馬爾科夫決策過程(MDP)

1. 簡介 馬爾可夫決策過程正式地描述了強化學習的環境其中環境是完全可觀測的即當前狀態完全表征了這個過程幾乎所有的強化學習問題都可以形式化為馬爾可夫決策過程&#xff0c;例如&#xff1a; 最優控制主要處理連續的馬爾可夫決策過程部分可觀察的問題可以轉化為馬爾可夫決…

Day16(貪心算法)——LeetCode45.跳躍游戲II763.劃分字母區間

1 LeetCode45.跳躍游戲II 1.1 題目描述 與跳躍游戲類似&#xff0c;跳躍游戲II給定長為n的從0開始索引的整數數組nums&#xff0c;nums[i]是你在i處能向右跳躍的最大步數&#xff0c;求到達數組最后一個索引處需要跳躍的最少次數。 ??一個示例&#xff1a;nums[2,3,1,1,4]&a…

告別碎片化!兩大先進分塊技術如何提升RAG的語義連貫性?

研究動機 論文核心問題及研究背景分析 1. 研究領域及其重要性 研究領域&#xff1a;檢索增強生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;系統&#xff0c;結合自然語言處理&#xff08;NLP&#xff09;與信息檢索技術。重要性&#xff1a; RAG通過動態…

leetcode day37 474

474 一和零 給你一個二進制字符串數組 strs 和兩個整數 m 和 n 。 請你找出并返回 strs 的最大子集的長度&#xff0c;該子集中 最多 有 m 個 0 和 n 個 1 。 如果 x 的所有元素也是 y 的元素&#xff0c;集合 x 是集合 y 的 子集 。 示例 1&#xff1a; 輸入&#xff1a;s…