SELECT- 从数据库中提取数据
SELECTcolumn_name,column_name
FROMtable_name;
实例:
下面的 SQL 语句从 "Websites" 表中选取 "name" 和 "country" 列:
SELECT name,country FROM Websites;
SELECT * FROMtable_name;
SELECT * 实例
下面的 SQL 语句从 "Websites" 表中选取所有列:
SELECT * FROM Websites;
select distinct
在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。
DISTINCT 关键词用于返回唯一不同的值。
SELECT DISTINCTcolumn_name,column_name
FROMtable_name;
下面的 SQL 语句仅从 "Websites" 表的 "country" 列中选取唯一不同的值,也就是去掉 "country" 列重复值:
实例
SELECT DISTINCT country FROM Websites;
SQL WHERE 子句
WHERE 子句用于提取那些满足指定条件的记录。
SQL WHERE 语法
SELECTcolumn_name,column_name
FROMtable_name
WHEREcolumn_name operator value;
实例:
筛选websites表中id为1的:
SELECT * FROM Websites WHERE id=1;
IN 操作符
IN 操作符允许您在 WHERE 子句中规定多个值。
SQL IN 语法
SELECTcolumn_name(s)
FROMtable_name
WHEREcolumn_nameIN (value1,value2,...);
IN 操作符实例
下面的 SQL 语句选取 name 为 "Google" 或 "菜鸟教程" 的所有网站:
实例
SELECT * FROM Websites
WHERE name IN ('Google','菜鸟教程');
SQL AND & OR 运算符
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
AND 运算符实例
下面的 SQL 语句从 "Websites" 表中选取国家为 "CN" 且alexa排名大于 "50" 的所有网站:
实例
SELECT * FROM Websites WHERE country='CN' AND alexa > 50;
OR 运算符实例
下面的 SQL 语句从 "Websites" 表中选取国家为 "USA" 或者 "CN" 的所有客户:
实例
SELECT * FROM Websites WHERE country='USA' OR country='CN';
结合 AND & OR
您也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式)。
下面的 SQL 语句从 "Websites" 表中选取 alexa 排名大于 "15" 且国家为 "CN" 或 "USA" 的所有网站:
实例
SELECT * FROM Websites WHERE alexa > 15 AND (country='CN' OR country='USA');
SQL ORDER BY 关键字
ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。
ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。
SQL ORDER BY 语法
SELECTcolumn_name,column_name
FROMtable_name
ORDER BYcolumn_name,column_nameASC|DESC;
ORDER BY 实例(升序排序)
下面的 SQL 语句从 "Websites" 表中选取所有网站,并按照 "alexa" 列排序:
实例
SELECT * FROM Websites ORDER BY alexa;
ORDER BY DESC 实例(降序排序)
下面的 SQL 语句从 "Websites" 表中选取所有网站,并按照 "alexa" 列降序排序:
实例
SELECT * FROM Websites ORDER BY alexa DESC;
ORDER BY 多列排序
下面的 SQL 语句从 "Websites" 表中选取所有网站,并按照 "country" 和 "alexa" 列排序:
实例
SELECT * FROM Websites ORDER BY country,alexa;
总结:
order by A,B 这个时候都是默认按升序排列
order by A desc,B 这个时候 A 降序,B 升序排列
order by A ,B desc 这个时候 A 升序,B 降序排列
SQL INSERT INTO 语句
INSERT INTO 语句用于向表中插入新记录。
SQL INSERT INTO 语法
INSERT INTO 语句可以有两种编写形式。
第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
INSERT INTOtable_name
VALUES (value1,value2,value3,...);
第二种形式需要指定列名及被插入的值:
INSERT INTOtable_name(column1,column2,column3,...)
VALUES (value1,value2,value3,...);
INSERT INTO 实例
假设我们要向 "Websites" 表中插入一个新行。
我们可以使用下面的 SQL 语句:
实例
INSERT INTO Websites (name, url, alexa, country) VALUES ('百度','https://www.baidu.com/','4','CN');
SQL UPDATE 语句
UPDATE 语句用于更新表中已存在的记录。
SQL UPDATE 语法
UPDATEtable_name
SETcolumn1=value1,column2=value2,...
WHEREsome_column=some_value;
SQL UPDATE 实例
假设我们要把 "菜鸟教程" 的 alexa 排名更新为 5000,country 改为 USA。
我们使用下面的 SQL 语句:
实例
UPDATE Websites SET alexa='5000', country='USA' WHERE name='菜鸟教程';
SQL DELETE 语句
DELETE 语句用于删除表中的行。
SQL DELETE 语法
DELETE FROMtable_name
WHEREsome_column=some_value;
SQL DELETE 实例
假设我们要从 "Websites" 表中删除网站名为 "Facebook" 且国家为 USA 的网站。
我们使用下面的 SQL 语句:
实例
DELETE FROM Websites WHERE name='Facebook' AND country='USA';
删除所有数据
您可以在不删除表的情况下,删除表中所有的行。这意味着表结构、属性、索引将保持不变:
DELETE FROMtable_name;
或
DELETE * FROMtable_name;
SQL LIKE 操作符
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
SQL LIKE 语法
SELECTcolumn_name(s)
FROMtable_name
WHEREcolumn_nameLIKEpattern;
SQL LIKE 操作符实例
下面的 SQL 语句选取 name 以字母 "G" 开始的所有客户:
实例
SELECT * FROM Websites
WHERE name LIKE 'G%';
下面的 SQL 语句选取 name 以字母 "k" 结尾的所有客户:
实例
SELECT * FROM Websites
WHERE name LIKE '%k';
下面的 SQL 语句选取 name 包含模式 "oo" 的所有客户:
实例
SELECT * FROM Websites
WHERE name LIKE '%oo%';
通过使用 NOT 关键字,您可以选取不匹配模式的记录。
下面的 SQL 语句选取 name 不包含模式 "oo" 的所有客户:
实例
SELECT * FROM Websites
WHERE name NOT LIKE '%oo%';
SQL 通配符
在 SQL 中,通配符与 SQL LIKE 操作符一起使用。
SQL 通配符用于搜索表中的数据。
在 SQL 中,可使用以下通配符:
通配符描述
%替代 0 个或多个字符
_替代一个字符
[charlist]字符列中的任何单一字符
[^charlist]
或
[!charlist]
不在字符列中的任何单一字符
使用 SQL _ 通配符
下面的 SQL 语句选取 name 以一个任意字符开始,然后是 "oogle" 的所有客户:
实例
SELECT * FROM Websites
WHERE name LIKE '_oogle';
使用 SQL [charlist] 通配符
MySQL 中使用REGEXP或NOT REGEXP运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。
下面的 SQL 语句选取 name 以 "G"、"F" 或 "s" 开始的所有网站:
实例
SELECT * FROM Websites
WHERE name REGEXP '^[GFs]';
SQL BETWEEN 操作符
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
SQL BETWEEN 语法
SELECTcolumn_name(s)
FROMtable_name
WHEREcolumn_name BETWEENvalue1ANDvalue2;
BETWEEN 操作符实例
下面的 SQL 语句选取 alexa 介于 1 和 20 之间的所有网站:
实例
SELECT * FROM Websites
WHERE alexa BETWEEN 1 AND 20;
BETWEEN 操作符实例
下面的 SQL 语句选取 alexa 介于 1 和 20 之间的所有网站:
实例
SELECT * FROM Websites
WHERE alexa BETWEEN 1 AND 20;
带有 IN 的 BETWEEN 操作符实例
下面的 SQL 语句选取 alexa 介于 1 和 20 之间但 country 不为 USA 和 IND 的所有网站:
实例
SELECT * FROM Websites
WHERE (alexa BETWEEN 1 AND 20)
AND country NOT IN ('USA', 'IND');
带有文本值的 BETWEEN 操作符实例
下面的 SQL 语句选取 name 以介于 'A' 和 'H' 之间字母开始的所有网站:
实例
SELECT * FROM Websites
WHERE name BETWEEN 'A' AND 'H';
带有日期值的 BETWEEN 操作符实例
下面的 SQL 语句选取 date 介于 '2016-05-10' 和 '2016-05-14' 之间的所有访问记录:
实例
SELECT * FROM access_log
WHERE date BETWEEN '2016-05-10' AND '2016-05-14';
请注意,在不同的数据库中,BETWEEN 操作符会产生不同的结果!
在某些数据库中,BETWEEN 选取介于两个值之间但不包括两个测试值的字段。
在某些数据库中,BETWEEN 选取介于两个值之间且包括两个测试值的字段。
在某些数据库中,BETWEEN 选取介于两个值之间且包括第一个测试值但不包括最后一个测试值的字段。
因此,请检查您的数据库是如何处理 BETWEEN 操作符!