# SQL ## 資料庫創建 ```sql= CREATE DATABASE mydb; ``` ## 表格 ```sql= CREATE TABLE myTable ( id INT PRIMARY KEY, name VARCHAR(100), age INT ); ``` - id :欄位名稱 - INT :資料型態 - PRIMARY KEY:主鍵 - name :欄位名稱 - VARCHAR(100), : 最多存100個字符的不固定長度字串 - age :欄位名稱 ## 插入資料 ```sql= INSERT INTO myTable (id, name, age) VALUES (1, 'John Doe', 30); ``` ## 查詢資料 ### 全部 ```sql= SELECT * FROM myTable; ``` ### 特定列 ```sql= SELECT name, age FROM myTable; ``` ## 更新資料 ```sql= UPDATE myTable SET age = 31 WHERE id = 1; ``` ## 刪除資料 ```sql= UPDATE myTable SET age = 31 WHERE id = 1; ``` ## 聚合函數和分組(EXCEL是你?) ```sql= SELECT department, COUNT(*) AS num_employees, AVG(salary) AS avg_salary FROM employees GROUP BY department; ``` COUNT(), SUM(), AVG(), MAX(), 和MIN() ## 連接(n個拼湊) ```sql= SELECT orders.id, customers.name FROM orders INNER JOIN customers ON orders.customer_id = customers.id; ``` INNER JOIN, LEFT JOIN, RIGHT JOIN, 和FULL OUTER JOIN。 ## 子查詢(套娃) ```sql= SELECT name, (SELECT AVG(salary) FROM employees) AS avg_salary FROM departments; ``` ## LeetCode ### 175. Combine Two Tables ```sql= SELECT P.firstName, P.lastName, A.city, A.state FROM Person P LEFT JOIN Address A ON P.personId = A.personId; ``` 從P選firstName,lastName; 從 A選city,state 接著在P的左邊拼一個A在personId 當然,反著做也行 ```sql= SELECT P.firstName, P.lastName, A.city, A.state FROM Address A RIGHT JOIN Person P ON A.personId = P.personId; ```