演示数据库
在本教程中,我们将使用 RUNOOB 样本数据库。
下面是选自 "Websites" 表的数据:
+----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | 菜鸟教程 | http://www.runoob.com/ | 4689 | CN | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | +----+--------------+---------------------------+-------+---------+
SELECT Column 实例
下面的 SQL 语句从 "Websites" 表中选取 "name" 和 "country" 列:
实例
SELECT
name
,
country
FROM
Websites
;
输出结果为:
SELECT * 实例
下面的 SQL 语句从 "Websites" 表中选取所有列:
实例
SELECT
*
FROM
Websites
;
输出结果为:
SELECT DISTINCT 实例
下面的 SQL 语句仅从 "Websites" 表的 "country" 列中选取唯一不同的值,也就是去掉 "country" 列重复值:
实例
SELECT
DISTINCT
country
FROM
Websites
;
输出结果:
WHERE 子句实例
下面的 SQL 语句从 "Websites" 表中选取国家为 "CN" 的所有网站:
实例
SELECT
*
FROM
Websites
WHERE
country
=
'
CN
'
;
执行输出结果:
文本字段 vs. 数值字段
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。
在上个实例中 'CN' 文本字段使用了单引号。
如果是数值字段,请不要使用引号。
实例
SELECT
*
FROM
Websites
WHERE
id
=
1
;
执行输出结果:
WHERE 子句中的运算符
下面的运算符可以在 WHERE 子句中使用:
运算符 | 描述 |
---|---|
= | 等于 |
<> | 不等于。注释:在 SQL 的一些版本中,该操作符可被写成 != |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
IN | 指定针对某个列的多个可能值 |
Where 子句
搜索 empno 等于 7900 的数据:
Where +条件(筛选行)
条件:列,比较运算符,值
比较运算符包涵:= > < >= ,<=, !=,<> 表示(不等于)
例子中的 SMITH 用单引号引起来,表示是字符串,字符串要区分大小写。
逻辑运算
And:与 同时满足两个条件的值。
查询 EMP 表中 SAL 列中大于 2000 小于 3000 的值。
Or:或 满足其中一个条件的值
查询 emp 表中 SAL 大于 2000 或 COMM 大于500的值。
Not:非 满足不包含该条件的值。
查询EMP表中 sal 小于等于 1500 的值。
逻辑运算的优先级:
特殊条件
1.空值判断: is null
查询 emp 表中 comm 列中的空值。
2.between and (在 之间的值)
查询 emp 表中 SAL 列中大于 1500 的小于 3000 的值。
注意:大于等于 1500 且小于等于 3000, 1500 为下限,3000 为上限,下限在前,上限在后,查询的范围包涵有上下限的值。
3.In
查询 EMP 表 SAL 列中等于 5000,3000,1500 的值。
4.like
Like模糊查询
查询 EMP 表中 Ename 列中有 M 的值,M 为要查询内容中的模糊信息。
tin
cxt***qq.com
张耘翡
869***[email protected]
不带比较运算符的 WHERE 子句:
WHERE子句并不一定带比较运算符,当不带运算符时,会执行一个隐式转换。当0时转化为 false,当其他值是转化为true。例如:
则会返回一个空集,因为每一行记录WHERE都返回false。
或者
都将返回student表所有行记录的studentNO列。因为每一行记录WHERE都返回true。
AND 运算符实例
下面的 SQL 语句从 "Websites" 表中选取国家为 "CN" 且alexa排名大于 "50" 的所有网站:
实例
执行输出结果:
OR 运算符实例
下面的 SQL 语句从 "Websites" 表中选取国家为 "USA" 或者 "CN" 的所有客户:
实例
执行输出结果:
结合 AND & OR
您也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式)。
下面的 SQL 语句从 "Websites" 表中选取 alexa 排名大于 "15" 且国家为 "CN" 或 "USA" 的所有网站:
实例
执行输出结果:
演示数据库
在本教程中,我们将使用 RUNOOB 样本数据库。
下面是选自 "Websites" 表的数据:
ORDER BY 实例
下面的 SQL 语句从 "Websites" 表中选取所有网站,并按照 "alexa" 列排序:
实例
执行输出结果:
ORDER BY DESC 实例
下面的 SQL 语句从 "Websites" 表中选取所有网站,并按照 "alexa" 列降序排序:
实例
执行输出结果:
ORDER BY 多列
下面的 SQL 语句从 "Websites" 表中选取所有网站,并按照 "country" 和 "alexa" 列排序:
实例
执行输出结果:
ORDER BY 多列的时候,先按照第一个column name排序,在按照第二个column name排序;如上述教程最后一个例子:
INSERT INTO 实例
假设我们要向 "Websites" 表中插入一个新行。
我们可以使用下面的 SQL 语句:
实例
执行以上 SQL,再读取 "Websites" 表,数据如下所示:
id 列是自动更新的,表中的每条记录都有一个唯一的数字。
在指定的列插入数据
我们也可以在指定的列插入数据。
下面的 SQL 语句将插入一个新行,但是只在 "name"、"url" 和 "country" 列插入数据(id 字段会自动更新):
实例
执行以上 SQL,再读取 "Websites" 表,数据如下所示:
SQL UPDATE 实例
假设我们要把 "菜鸟教程" 的 alexa 排名更新为 5000,country 改为 USA。
我们使用下面的 SQL 语句:
实例
执行以上 SQL,再读取 "Websites" 表,数据如下所示:
SQL DELETE 实例
假设我们要从 "Websites" 表中删除网站名为 "百度" 且国家为 CN 的网站 。
我们使用下面的 SQL 语句:
实例
执行以上 SQL,再读取 "Websites" 表,数据如下所示:
删除所有数据
您可以在不删除表的情况下,删除表中所有的行。这意味着表结构、属性、索引将保持不变:
或
DELETE * FROM table_name;