sql(結(jié)構(gòu)化查詢語言)是一種編程語言,用于創(chuàng)建、管理和查詢數(shù)據(jù)庫。主要功能包括:創(chuàng)建數(shù)據(jù)庫和表、插入、更新和刪除數(shù)據(jù)、排序和過濾結(jié)果、聚合函數(shù)、連接表、子查詢、運算符、函數(shù)、關(guān)鍵字、數(shù)據(jù)操縱/定義/控制語言、連接類型、查詢優(yōu)化、安全性、工具、資源、版本、常見錯誤、調(diào)試技巧、最佳實踐、趨勢和行鎖定。
sql經(jīng)典50題答案
問:SQL用于什么?
答:SQL(結(jié)構(gòu)化查詢語言)是一種用于與數(shù)據(jù)庫交互的編程語言,允許用戶創(chuàng)建、管理和查詢數(shù)據(jù)。
1. 創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE my_database;
2. 創(chuàng)建表
CREATE TABLE my_table ( id INTEGER PRIMARY KEY, name TEXT, age INTEGER );
3. 插入數(shù)據(jù)
INSERT INTO my_table (id, name, age) VALUES (1, 'John', 30);
4. 查詢數(shù)據(jù)
SELECT * FROM my_table;
5. 更新數(shù)據(jù)
UPDATE my_table SET name = 'John Doe' WHERE id = 1;
6. 刪除數(shù)據(jù)
DELETE FROM my_table WHERE id = 1;
7. 排序結(jié)果
SELECT * FROM my_table ORDER BY name;
8. 過濾結(jié)果
SELECT * FROM my_table WHERE age > 30;
9. 分組結(jié)果
SELECT age, COUNT(*) AS count FROM my_table GROUP BY age;
10. 聚合函數(shù)
SELECT SUM(age) FROM my_table;
11. 連接表
SELECT * FROM customers c JOIN orders o ON c.id = o.customer_id;
12. 子查詢
SELECT * FROM my_table WHERE id IN (SELECT id FROM my_second_table);
13. EXISTS關(guān)鍵字
SELECT * FROM my_table WHERE EXISTS (SELECT 1 FROM my_second_table WHERE id = my_table.id);
14. NOT EXISTS關(guān)鍵字
SELECT * FROM my_table WHERE NOT EXISTS (SELECT 1 FROM my_second_table WHERE id = my_table.id);
SELECT * FROM my_table UNION SELECT * FROM my_second_table;
16. INTERSECT運算符
SELECT * FROM my_table INTERSECT SELECT * FROM my_second_table;
17. EXCEPT運算符
SELECT * FROM my_table EXCEPT SELECT * FROM my_second_table;
18. LIKE運算符
SELECT * FROM my_table WHERE name LIKE '%John%';
19. BETWEEN運算符
SELECT * FROM my_table WHERE age BETWEEN 20 AND 30;
20. NULL值
SELECT * FROM my_table WHERE age IS NULL;
21. 外鍵約束
ALTER TABLE my_table ADD FOREIGN KEY (customer_id) REFERENCES customers (id);
22. 唯一性約束
ALTER TABLE my_table ADD UNIQUE INDEX (name);
23. 主鍵約束
ALTER TABLE my_table ADD PRIMARY KEY (id);
24. 事務(wù)
BEGIN TRANSACTION; -- 執(zhí)行一系列查詢 COMMIT;
25. 存儲過程
CREATE PROCEDURE my_procedure (IN param1 INT) AS BEGIN -- 存儲過程代碼 END;
26. 函數(shù)
CREATE FUNCTION my_function (param1 INT) RETURNS INT AS BEGIN -- 函數(shù)代碼 END;
27. 視圖
CREATE VIEW my_view AS SELECT * FROM my_table;
28. 游標
DECLARE cursor_name CURSOR FOR SELECT * FROM my_table;
29. 觸發(fā)器
CREATE TRIGGER my_trigger ON my_table FOR DELETE AS BEGIN -- 觸發(fā)器代碼 END;
30. 數(shù)據(jù)類型
INT (整型) TEXT (文本) FLOAT (浮點數(shù)) DATE (日期) TIME (時間) DATETIME (日期時間)
31. 運算符
+ (加法) - (減法) * (乘法) / (除法) % (模運算)
32. 函數(shù)
SUM() (求和) AVG() (求平均值) MIN() (求最小值) MAX() (求最大值)
33. 關(guān)鍵字
SELECT (選擇) FROM (從) WHERE (條件) ORDER BY (排序) LIMIT (限制)
34. 數(shù)據(jù)操縱語言 (DML)
INSERT (插入) UPDATE (更新) DELETE (刪除)
35. 數(shù)據(jù)定義語言 (DDL)
CREATE (創(chuàng)建) DROP (刪除) ALTER (修改)
36. 數(shù)據(jù)控制語言 (DCL)
GRANT (授予) REVOKE (撤銷)
37. 連接
INNER JOIN (內(nèi)部連接) LEFT JOIN (左連接) RIGHT JOIN (右連接) FULL JOIN (全連接)
38. 優(yōu)化查詢
使用索引 避免嵌套查詢 使用 LIMIT 子句
39. 安全性
使用強密碼 啟用身份驗證 使用加密
40. 工具
mysql Workbench phpMyAdmin navicat
41. 資源
MySQL 文檔 Stack overflow W3Schools
42. 版本
MySQL 8.0 MySQL 5.7 MariaDB
43. 常見錯誤
語法錯誤 表不存在 列不存在 權(quán)限不足
44. 調(diào)試技巧
使用 EXPLaiN 命令 檢查錯誤日志 使用調(diào)試器
45. 最佳實踐
使用規(guī)范化的模式 編寫高效的查詢 備份你的數(shù)據(jù)庫 保持你的數(shù)據(jù)庫更新
46. 趨勢
云數(shù)據(jù)庫 NoSQL 數(shù)據(jù)庫 機器學習
47. 行鎖定
SELECT ... FOR UPDATE;
48. 分區(qū)