Mysql常見(jiàn)的SQL語(yǔ)句格式及實(shí)用技巧
一、常用語(yǔ)法匯總
| 數(shù)據(jù)庫(kù)(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; |
| 改 | -- 切換數(shù)據(jù)庫(kù) USE database_name; | -- 修改表結(jié)構(gòu)(示例:添加列) ALTER TABLE table_name ADD column_name datatype; | UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition; |
| 查 | SHOW DATABASES; | -- 查看所有表 -- 查看表結(jié)構(gòu) | -- 查詢記錄(全量) -- 查詢特定字段 -- 條件查詢 -- 排序查詢 -- 分頁(yè)查詢(LIMIT 從 0 開(kāi)始) |
常用約束與修飾符 -- 主鍵約束(唯一標(biāo)識(shí)) PRIMARY KEY (column) -- 唯一約束(值不能重復(fù)) UNIQUE (column) -- 非空約束 NOT NULL -- 默認(rèn)值 DEFAULT value -- 自增(整數(shù)類(lèi)型) AUTO_INCREMENT
二、示例
1.數(shù)據(jù)庫(kù)操作
-- 創(chuàng)建數(shù)據(jù)庫(kù)(存在則跳過(guò)) CREATE DATABASE IF NOT EXISTS db_name; -- 刪除數(shù)據(jù)庫(kù)(謹(jǐn)慎使用) DROP DATABASE IF EXISTS db_name; -- 查看所有數(shù)據(jù)庫(kù) SHOW DATABASES; -- 切換數(shù)據(jù)庫(kù) 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)修改表結(jié)構(gòu)
-- 添加列 ALTER TABLE users ADD COLUMN phone VARCHAR(20); -- 修改列類(lèi)型 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)查看表信息
-- 查看表結(jié)構(gòu) DESCRIBE users; -- 查看建表語(yǔ)句 SHOW CREATE TABLE users;
3.記錄操作
(1)插入數(shù)據(jù)
-- 單條插入
INSERT INTO users (name, age, email)
VALUES ('Alice', 25, 'alice@example.com');
-- 批量插入
INSERT INTO users (name, age)
VALUES ('Bob', 30), ('Charlie', 22);
-- 插入查詢結(jié)果
INSERT INTO users_backup (name, age)
SELECT name, age FROM users WHERE age > 25;(2)查詢數(shù)據(jù)
-- 基礎(chǔ)查詢 SELECT * FROM users; -- 條件查詢 SELECT name, age FROM users WHERE age > 25 AND name LIKE 'A%'; -- 去重查詢 SELECT DISTINCT age FROM users; -- 排序與分頁(yè) SELECT * FROM users ORDER BY age DESC LIMIT 10 OFFSET 20; -- 聚合函數(shù) SELECT COUNT(*), AVG(age), MAX(age) FROM users; -- 分組查詢 SELECT age, COUNT(*) FROM users GROUP BY age HAVING COUNT(*) > 1;
(3)更新數(shù)據(jù)
-- 單條件更新 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)刪除數(shù)據(jù)
-- 按條件刪除 DELETE FROM users WHERE age < 18; -- 清空表(保留結(jié)構(gòu)) TRUNCATE TABLE users;
4.高級(jí)查詢
(1)多表關(guān)聯(lián)
-- 內(nèi)連接 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)聯(lián)合查詢
SELECT name FROM users UNION SELECT product_name FROM products;
三、實(shí)用技巧
1.避免全表掃描:為查詢字段添加索引
CREATE INDEX idx_age ON users (age)
2.事務(wù)處理:保證數(shù)據(jù)一致性
START TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance + 100 WHERE id = 2; COMMIT; -- 或 ROLLBACK
3.臨時(shí)表:提升查詢效率與隔離性,會(huì)話內(nèi)有效,會(huì)話關(guān)閉自動(dòng)刪除。
-- 創(chuàng)建臨時(shí)表并填充數(shù)據(jù) CREATE TEMPORARY TABLE temp_orders AS SELECT order_id, user_id, amount FROM orders WHERE create_time > '2023-01-01'; -- 使用臨時(shí)表進(jìn)行后續(xù)查詢 SELECT user_id, SUM(amount) FROM temp_orders GROUP BY user_id;
到此這篇關(guān)于Mysql常見(jiàn)的SQL語(yǔ)句格式的文章就介紹到這了,更多相關(guān)mysql sql語(yǔ)句格式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL 關(guān)于表復(fù)制 insert into 語(yǔ)法的詳細(xì)介紹
本篇文章是對(duì)MySQL中關(guān)于表復(fù)制insert into語(yǔ)法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-07-07
mysql序號(hào)rownum行號(hào)實(shí)現(xiàn)方式
這篇文章主要介紹了mysql序號(hào)rownum行號(hào)實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
mysql將bin-log日志文件轉(zhuǎn)為sql文件的方法
這篇文章主要介紹了mysql將bin-log日志文件轉(zhuǎn)為sql文件的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12
Mysql?InnoDB?B+樹(shù)索引目錄項(xiàng)記錄頁(yè)管理
這篇文章主要為大家介紹了Mysql?InnoDB?B+樹(shù)索引目錄項(xiàng)記錄頁(yè)管理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
MySQL數(shù)據(jù)類(lèi)型DECIMAL用法詳解
這篇文章主要介紹了MySQL數(shù)據(jù)類(lèi)型DECIMAL用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
mysql實(shí)現(xiàn)隨機(jī)查詢經(jīng)驗(yàn)談
官方文檔中進(jìn)行說(shuō)明:Order By和RAND()連用,會(huì)多次掃描表,導(dǎo)致速度變慢,下面看下一些測(cè)試詳解2013-10-10

