50條MySQL常用腳本
共 6086字,需瀏覽 13分鐘
·
2024-04-18 22:08
關(guān)注公眾號(hào),SQL干貨及時(shí)獲取
花時(shí)間整理了50條常用的MySQL腳本,查漏補(bǔ)缺,希望對(duì)大家有所幫助。
-- 1、插入數(shù)據(jù)
INSERT INTO example_table (name, age) VALUES ('Alice', 30);
-- 2、查詢表中所有數(shù)據(jù)
SELECT * FROM example_table;
-- 3、使用 LIMIT 限制結(jié)果數(shù)量
SELECT * FROM example_table LIMIT 10;
-- 4、按條件篩選數(shù)據(jù)
SELECT * FROM example_table WHERE age > 25;
-- 5、更新數(shù)據(jù)
UPDATE example_table SET age = 35 WHERE name = 'Alice';
-- 6、刪除數(shù)據(jù)
DELETE FROM example_table WHERE id = 5;
-- 7、排序結(jié)果
SELECT * FROM example_table ORDER BY age DESC;
-- 8、計(jì)算行數(shù)
SELECT COUNT(*) FROM example_table;
-- 9、求和
SELECT SUM(age) FROM example_table;
-- 10、連接表
SELECT a.id, a.name, b.age
FROM table1 a
JOIN table2 b ON a.id = b.id;
-- 11、使用別名
SELECT name AS full_name FROM example_table;
-- 12、使用通配符進(jìn)行模糊查詢
SELECT * FROM example_table WHERE name LIKE 'A%';
-- 13、使用 GROUP BY 分組數(shù)據(jù)
SELECT age, COUNT(*) FROM example_table GROUP BY age;
-- 14、使用 HAVING 進(jìn)一步篩選分組數(shù)據(jù)
SELECT age, COUNT(*) FROM example_table
GROUP BY age
HAVING COUNT(*) > 1;
-- 15、使用子查詢
SELECT * FROM example_table
WHERE age IN
(SELECT age FROM other_table);
-- 16、使用 CASE 表達(dá)式進(jìn)行條件操作
SELECT name,
CASE WHEN age > 30
THEN 'Old' ELSE 'Young'
END AS age_group
FROM example_table;
-- 17、使用 JOIN 進(jìn)行不同類型的連接
SELECT a.id, a.name, b.age
FROM table1 a
LEFT JOIN table2 b
ON a.id = b.id;
-- 18、創(chuàng)建索引以加快查詢速度
CREATE INDEX idx_name ON example_table(name);
-- 19、優(yōu)化查詢性能
EXPLAIN SELECT * FROM example_table WHERE age > 25;
-- 20、備份數(shù)據(jù)庫(kù)
mysqldump -u username -p database_name > backup.sql;
-- 21、使用 DISTINCT 去除重復(fù)行
SELECT DISTINCT name FROM example_table;
-- 22、使用 BETWEEN 進(jìn)行范圍查詢
SELECT * FROM example_table
WHERE age BETWEEN 20 AND 30;
-- 23、使用 UPDATE 和 JOIN 更新關(guān)聯(lián)表
UPDATE example_table a
JOIN other_table b ON a.id = b.id
SET a.age = b.age;
-- 24、使用 JOIN 和 COUNT 計(jì)算關(guān)聯(lián)表中的記錄數(shù)
SELECT a.id, COUNT(b.id) as count
FROM table1 a
LEFT JOIN table2 b ON a.id = b.id
GROUP BY a.id;
-- 25、使用 LIMIT 和 OFFSET 實(shí)現(xiàn)分頁(yè)功能
SELECT * FROM example_table
LIMIT 10 OFFSET 20;
-- 26、使用 IFNULL 處理空值
SELECT name, IFNULL(age, 'Unknown') FROM example_table;
-- 27、將查詢結(jié)果導(dǎo)出為CSV文件
SELECT order_id, product_name, quantity
INTO OUTFILE '/var/lib/mysql-files/orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM example_table;
-- 28、批量插入數(shù)據(jù)
INSERT INTO example_table (name, age)
VALUES ('Alice', 30), ('Bob', 25), ('Charlie', 35);
-- 29、使用 TRUNCATE 快速清空表數(shù)據(jù)
TRUNCATE TABLE example_table;
-- 30、使用 ROLLBACK 撤銷未提交的更改
ROLLBACK;
-- 31、使用 UNION 合并多個(gè)查詢的結(jié)果集并去重:
SELECT name FROM table1
UNION
SELECT name FROM table2;
-- 32、使用 CAST 或 CONVERT 轉(zhuǎn)換數(shù)據(jù)類型:
SELECT CAST(age AS CHAR) FROM example_table;
-- 33、計(jì)算每個(gè)分組內(nèi)的行的排名
SELECT name, age,
RANK() OVER (PARTITION BY age ORDER BY name) as age_rank
FROM example_table;
-- 34、使用 SHOW CREATE TABLE 查看表結(jié)構(gòu)
SHOW CREATE TABLE example_table;
-- 35、刪除表中的重復(fù)行
DELETE n1
FROM example_table n1, example_table n2
WHERE n1.id > n2.id AND n1.name = n2.name;
-- 36、將查詢結(jié)果作為表進(jìn)行使用
SELECT * FROM
(SELECT name FROM example_table) AS subquery_table;
-- 37、使用 LOAD DATA INFILE 導(dǎo)入數(shù)據(jù)到表格中:
LOAD DATA INFILE 'data.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
-- 38、在查詢中使用正則表達(dá)式
SELECT * FROM example_table
WHERE name REGEXP '^A.*';
-- 39、使用 EXISTS 進(jìn)行子查詢檢查
SELECT * FROM table1
WHERE EXISTS
(SELECT 1 FROM table2
WHERE table1.id = table2.id);
-- 40、設(shè)置自動(dòng)增量值的起始點(diǎn)
ALTER TABLE example_table AUTO_INCREMENT = 100;
-- 41、使用 CONCAT 合并列數(shù)據(jù)
SELECT CONCAT(name, ' is ', age, ' years old') AS description
FROM example_table;
-- 42、查找表中的最大值和最小值
SELECT MAX(age) AS max_age,
MIN(age) AS min_age
FROM example_table;
-- 43、在查詢結(jié)果中使用變量
SET @row_number = 0;
SELECT (@row_number:=@row_number+1) AS row_num,
name
FROM example_table;
-- 44、顯示當(dāng)前數(shù)據(jù)庫(kù)中的所有表
SHOW TABLES;
-- 45、使用SHOW VARIABLES查看 MySQL 的配置變量:
SHOW VARIABLES LIKE 'version%';
-- 46、創(chuàng)建臨時(shí)表并插入數(shù)據(jù)
CREATE TEMPORARY TABLE temp_table AS
SELECT id, name FROM example_table
WHERE age > 30;
-- 47、修改表結(jié)構(gòu),添加新列
ALTER TABLE example_table
ADD COLUMN email VARCHAR(50);
-- 48、使用 GROUP_CONCAT 將多行值合并為單個(gè)字符串
SELECT id, GROUP_CONCAT(name) AS all_names
FROM example_table GROUP BY id;
-- 49、使用 TRIGGER 實(shí)現(xiàn)對(duì)表的操作觸發(fā)器
CREATE TRIGGER example_trigger
BEFORE INSERT ON example_table
FOR EACH ROW
SET NEW.age = NEW.age + 1
;
-- 50、監(jiān)控?cái)?shù)據(jù)庫(kù)性能
SHOW PROCESSLIST;
![]()
最后給大家分享我寫(xiě)的SQL兩件套:《SQL基礎(chǔ)知識(shí)第二版》和《SQL高級(jí)知識(shí)第二版》的PDF電子版。里面有各個(gè)語(yǔ)法的解釋、大量的實(shí)例講解和批注等等,非常通俗易懂,方便大家跟著一起來(lái)實(shí)操。
有需要的可以下載學(xué)習(xí),只需要在下面的公眾號(hào)「數(shù)據(jù)前線」(非本號(hào)),后臺(tái)回復(fù)關(guān)鍵字:SQL,就行 數(shù)據(jù)前線
后臺(tái)回復(fù)關(guān)鍵字:1024,獲取一份精心整理的技術(shù)干貨 后臺(tái)回復(fù)關(guān)鍵字:進(jìn)群,帶你進(jìn)入高手如云的交流群。
推薦閱讀
文章有幫助的話,點(diǎn)個(gè)贊或在看吧。
謝謝支持
文章有幫助的話,點(diǎn)個(gè)贊或在看吧。
謝謝支持
評(píng)論
圖片
表情
