Mysql常見的SQL語句格式及實用技巧
一、常用語法匯總
數據庫(database) | 表(table) | 記錄 | |
---|---|---|---|
增 | CREATE DATABASE [IF NOT EXISTS] database_name; | CREATE TABLE [IF NOT EXISTS] table_name ( column1 datatype [constraint], column2 datatype [constraint], ... [PRIMARY KEY (column_list)] ); | -- 插入記錄(單條) -- 插入多條記錄 |
刪 | DROP DATABASE [IF EXISTS] database_name; | DROP TABLE [IF EXISTS] table_name; | DELETE FROM table_name WHERE condition; |
改 | -- 切換數據庫 USE database_name; | -- 修改表結構(示例:添加列) ALTER TABLE table_name ADD column_name datatype; | UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition; |
查 | SHOW DATABASES; | -- 查看所有表 -- 查看表結構 | -- 查詢記錄(全量) -- 查詢特定字段 -- 條件查詢 -- 排序查詢 -- 分頁查詢(LIMIT 從 0 開始) |
常用約束與修飾符 -- 主鍵約束(唯一標識) PRIMARY KEY (column) -- 唯一約束(值不能重復) UNIQUE (column) -- 非空約束 NOT NULL -- 默認值 DEFAULT value -- 自增(整數類型) AUTO_INCREMENT
二、示例
1.數據庫操作
-- 創(chuàng)建數據庫(存在則跳過) CREATE DATABASE IF NOT EXISTS db_name; -- 刪除數據庫(謹慎使用) DROP DATABASE IF EXISTS db_name; -- 查看所有數據庫 SHOW DATABASES; -- 切換數據庫 USE db_name;
2.表操作
(1)創(chuàng)建表
CREATE TABLE IF NOT EXISTS users ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, age INT DEFAULT 18, email VARCHAR(100) UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
(2)修改表結構
-- 添加列 ALTER TABLE users ADD COLUMN phone VARCHAR(20); -- 修改列類型 ALTER TABLE users MODIFY COLUMN age TINYINT; -- 重命名列 ALTER TABLE users CHANGE COLUMN phone mobile VARCHAR(20); -- 刪除列 ALTER TABLE users DROP COLUMN mobile;
(3)刪除表
DROP TABLE IF EXISTS users;
(4)查看表信息
-- 查看表結構 DESCRIBE users; -- 查看建表語句 SHOW CREATE TABLE users;
3.記錄操作
(1)插入數據
-- 單條插入 INSERT INTO users (name, age, email) VALUES ('Alice', 25, 'alice@example.com'); -- 批量插入 INSERT INTO users (name, age) VALUES ('Bob', 30), ('Charlie', 22); -- 插入查詢結果 INSERT INTO users_backup (name, age) SELECT name, age FROM users WHERE age > 25;
(2)查詢數據
-- 基礎查詢 SELECT * FROM users; -- 條件查詢 SELECT name, age FROM users WHERE age > 25 AND name LIKE 'A%'; -- 去重查詢 SELECT DISTINCT age FROM users; -- 排序與分頁 SELECT * FROM users ORDER BY age DESC LIMIT 10 OFFSET 20; -- 聚合函數 SELECT COUNT(*), AVG(age), MAX(age) FROM users; -- 分組查詢 SELECT age, COUNT(*) FROM users GROUP BY age HAVING COUNT(*) > 1;
(3)更新數據
-- 單條件更新 UPDATE users SET age = age + 1 WHERE name = 'Alice'; -- 多字段更新 UPDATE users SET age = 30, email = 'bob@new.com' WHERE id = 2; -- 批量更新(基于子查詢) UPDATE users u JOIN user_scores s ON u.id = s.user_id SET u.age = s.age + 5;
(4)刪除數據
-- 按條件刪除 DELETE FROM users WHERE age < 18; -- 清空表(保留結構) TRUNCATE TABLE users;
4.高級查詢
(1)多表關聯
-- 內連接 SELECT u.name, o.order_id FROM users u JOIN orders o ON u.id = o.user_id; -- 左連接 SELECT u.name, o.order_id FROM users u LEFT JOIN orders o ON u.id = o.user_id;
(2)子查詢
SELECT * FROM users WHERE age > (SELECT AVG(age) FROM users);
(3)聯合查詢
SELECT name FROM users UNION SELECT product_name FROM products;
三、實用技巧
1.避免全表掃描:為查詢字段添加索引
CREATE INDEX idx_age ON users (age)
2.事務處理:保證數據一致性
START TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance + 100 WHERE id = 2; COMMIT; -- 或 ROLLBACK
3.臨時表:提升查詢效率與隔離性,會話內有效,會話關閉自動刪除。
-- 創(chuàng)建臨時表并填充數據 CREATE TEMPORARY TABLE temp_orders AS SELECT order_id, user_id, amount FROM orders WHERE create_time > '2023-01-01'; -- 使用臨時表進行后續(xù)查詢 SELECT user_id, SUM(amount) FROM temp_orders GROUP BY user_id;
到此這篇關于Mysql常見的SQL語句格式的文章就介紹到這了,更多相關mysql sql語句格式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
mysql根據json字段內容作為查詢條件(包括json數組)檢索數據
本文主要介紹了mysql根據json字段內容作為查詢條件(包括json數組)檢索數據,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02Windows安裝MySQL8.0.28.0.msi方式(圖文詳解)
這篇文章主要介紹了Windows安裝MySQL8.0.28.0.msi,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03MySQL存儲引擎 InnoDB與MyISAM的區(qū)別
InnoDB和MyISAM是許多人在使用MySQL時最常用的兩個表類型,這兩個表類型各有優(yōu)劣,視具體應用而定。2014-03-03mysql tmp_table_size和max_heap_table_size大小配置
這篇文章主要介紹了mysql tmp_table_size和max_heap_table_size大小配置,需要的朋友可以參考下2016-05-05mysql日志系統(tǒng)redo log和bin log介紹
這篇文章主要介紹了mysql日志系統(tǒng)redo log和bin log介紹,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08