1、基础
演示数据库,下面是选自 “Websites” 表的数据:
SELECT 语句用于从数据库中选取数据。
SELECT name,country FROM Websites;
SELECT DISTINCT 语句用于返回唯一不同的值。
SELECT DISTINCT country FROM Websites;
WHERE 子句用于提取那些满足指定条件的记录。
SELECT * FROM Websites WHERE country='CN';
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
SELECT * FROM Websites WHERE country='CN' AND alexa > 50;
SELECT * FROM Websites WHERE country='USA' OR country='CN';
SELECT * FROM Websites WHERE alexa > 15 AND (country='CN' OR country='USA');
ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。
ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。
SELECT * FROM Websites ORDER BY alexa DESC;
SELECT * FROM Websites ORDER BY country,alexa;
INSERT INTO 语句用于向表中插入新记录。
INSERT INTO Websites (name, url, alexa, country) VALUES ('百度','https://www.baidu.com/','4','CN');
UPDATE 语句用于更新表中已存在的记录。
UPDATE Websites SET alexa='5000', country='USA' WHERE name='菜鸟教程';
DELETE 语句用于删除表中的行。
DELETE FROM Websites WHERE name='Facebook' AND country='USA';
2、高级教程
SELECT TOP 子句用于规定要返回的记录的数目。
MySQL: SELECT * FROM Persons LIMIT 5;
Oracle: SELECT * FROM Persons WHERE ROWNUM <=5;
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
SELECT * FROM Websites WHERE name LIKE 'G%';
SELECT * FROM Websites WHERE name LIKE '%oo%';
SELECT * FROM Websites WHERE name NOT LIKE '%oo%';
在 SQL 中,通配符与 SQL LIKE 操作符一起使用。
SQL 通配符用于搜索表中的数据。
在 SQL 中,可使用以下通配符:
// 选取 name 以 "G"、"F" 或 "s" 开始的所有网站
SELECT * FROM Websites WHERE name REGEXP '^[GFs]';
// 选取 name 以 A 到 H 字母开头的网站
SELECT * FROM Websites WHERE name REGEXP '^[A-H]';
// 选取 name 不以 A 到 H 字母开头的网站
SELECT * FROM Websites WHERE name REGEXP '^[^A-H]';
IN 操作符允许您在 WHERE 子句中规定多个值。
// 选取 name 为 "Google" 或 "菜鸟教程" 的所有网站
SELECT * FROM Websites WHERE name IN ('Google','菜鸟教程');
BETWEEN 操作符用于选取介于两个值之间的数据范围内的值。
// 选取 alexa 介于 1 和 20 之间的所有网站
SELECT * FROM Websites WHERE alexa BETWEEN 1 AND 20;
SELECT * FROM Websites WHERE alexa NOT BETWEEN 1 AND 20;
// 选取 alexa 介于 1 和 20 之间但 country 不为 USA 和 IND 的所有网站
SELECT * FROM Websites WHERE (alexa BETWEEN 1 AND 20) AND country NOT IN ('USA', 'IND');
通过使用 SQL,可以为表名称或列名称指定别名
演示数据库
// SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名
SELECT name AS n, country AS c FROM Websites;
// 把三个列(url、alexa 和 country)结合在一起,并创建一个名为 "site_info" 的别名
SELECT name, CONCAT(url, ', ', alexa, ', ', country) AS site_info FROM Websites;
SELECT w.name, w.url, a.count, a.date FROM Websites AS w, access_log AS a WHERE a.site_id=w.id and w.name="菜鸟教程";