选取 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 输出结果以下: