選取 url 以字母 https開始的全部網站sql
SELECT * FROM Websites WHERE url LIKE 'https%';
選取 url 包含模式 "oo" 的全部網站數據庫
SELECT * FROM Websites WHERE url LIKE '%oo%';
SQL JOIN 子句:函數
用於把來自兩個或多個表的行結合起來,==基於這些表之間的共同字段==。網站
最多見的 JOIN 類型:url
SQL INNER JOIN(簡單的 JOIN)。 SQL INNER JOIN 從多個表中返回知足 JOIN 條件的全部行。code
"Websites" 表中的 "id" 列指向 "access_log" 表中的字段 "site_id"。上面這兩個表是經過 "site_id" 列聯繫起來的。圖片
而後,若是咱們運行下面的 SQL 語句(包含 INNER JOIN):it
SELECT Websites.id, Websites.name, access_log.count, access_log.date FROM Websites INNER JOIN access_log ON Websites.id=access_log.site_id;io
執行以上 SQL 輸出結果以下:table
INNER JOIN 關鍵字在表中存在至少一個匹配時返回行。
SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name;
SELECT column_name(s) FROM table1 JOIN table2 ON table1.column_name=table2.column_name;
**註釋:**INNER JOIN 與 JOIN 是相同的。
LEFT JOIN 關鍵字從左表(table1)返回全部的行,即便右表(table2)中沒有匹配。若是右表中沒有匹配,則結果爲 NULL。
SQL LEFT JOIN 語法
SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name;
SELECT column_name(s) FROM table1 LEFT OUTER JOIN table2 ON table1.column_name=table2.column_name;
**註釋:**在某些數據庫中,LEFT JOIN 稱爲 LEFT OUTER JOIN。
SELECT Websites.name, access_log.count, access_log.date FROM Websites LEFT JOIN access_log ON Websites.id=access_log.site_id ORDER BY access_log.count DESC;執行以上 SQL 輸出結果以下:
視圖是可視化的表。
SQL CREATE TABLE Orders ( OrderId int NOT NULL, ProductName varchar(50) NOT NULL, OrderDate datetime NOT NULL DEFAULT NOW(), PRIMARY KEY (OrderId) )
MySQL 使用下列數據類型在數據庫中存儲日期或日期/時間值:
- DATE - 格式:YYYY-MM-DD
- DATETIME - 格式:YYYY-MM-DD HH:MM:SS
- TIMESTAMP - 格式:YYYY-MM-DD HH:MM:SS
- YEAR - 格式:YYYY 或 YY
SQL SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
GROUP BY 簡單應用
統計 access_log 各個 site_id 的訪問量:
實例
SELECT site_id, SUM(access_log.count) AS nums FROM access_log GROUP BY site_id;執行以上 SQL 輸出結果以下:
SQL GROUP BY 多表鏈接
如今咱們想要查找每一個送貨員配送的訂單數目。
下面的 SQL 語句統計全部網站的訪問的記錄數:
SELECT Websites.name,COUNT(access_log.aid) AS nums FROM access_log LEFT JOIN Websites ON access_log.site_id=Websites.id GROUP BY Websites.name;執行以上 SQL 輸出結果以下:
##HAVING--組合篩選
在 SQL 中增長 HAVING 子句緣由是,WHERE 關鍵字沒法與聚合函數一塊兒使用。
HAVING 子句可讓咱們篩選分組後的各組數據。
SQL SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value;
如今咱們想要查找總訪問量大於 200 的網站。
咱們使用下面的 SQL 語句:
實例
SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_log INNER JOIN Websites ON access_log.site_id=Websites.id) GROUP BY Websites.name HAVING SUM(access_log.count) > 200;
執行以上 SQL 輸出結果以下: