SQL 基础教程

演示数据库

在本教程中,我们将使用 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
;

输出结果为:

《SQL 基础教程》

SELECT * 实例

下面的 SQL 语句从 “Websites” 表中选取所有列:

实例

SELECT
*
FROM

Websites
;

输出结果为:

《SQL 基础教程》

SELECT DISTINCT 实例

下面的 SQL 语句仅从 “Websites” 表的 “country” 列中选取唯一不同的值,也就是去掉 “country” 列重复值:

实例

SELECT

DISTINCT

country

FROM

Websites
;

输出结果:

《SQL 基础教程》

WHERE 子句实例

下面的 SQL 语句从 “Websites” 表中选取国家为 “CN” 的所有网站:

实例

SELECT
*
FROM

Websites

WHERE

country
=

CN

;

执行输出结果:

《SQL 基础教程》

文本字段 vs. 数值字段

SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。

在上个实例中 ‘CN’ 文本字段使用了单引号。

如果是数值字段,请不要使用引号。

实例

SELECT
*
FROM

Websites

WHERE

id
=
1
;

执行输出结果:

《SQL 基础教程》

WHERE 子句中的运算符

下面的运算符可以在 WHERE 子句中使用:

运算符描述
=等于
<>不等于。注释:在 SQL 的一些版本中,该操作符可被写成 !=
>大于
<小于
>=大于等于
<=小于等于
BETWEEN在某个范围内
LIKE搜索某种模式
IN指定针对某个列的多个可能值
  1. Where 子句

    搜索 empno 等于 7900 的数据:

    Select * from emp where empno=7900;

    Where +条件(筛选行)

    条件:列,比较运算符,值

    比较运算符包涵:= > < >= ,<=, !=,<> 表示(不等于)

    Select * from emp where ename='SMITH';

    例子中的 SMITH 用单引号引起来,表示是字符串,字符串要区分大小写。

    逻辑运算

    And:与 同时满足两个条件的值。

    Select * from emp where sal > 2000 and sal < 3000;

    查询 EMP 表中 SAL 列中大于 2000 小于 3000 的值。

    Or:或 满足其中一个条件的值

    Select * from emp where sal > 2000 or comm > 500;

    查询 emp 表中 SAL 大于 2000 或 COMM 大于500的值。

    Not:非 满足不包含该条件的值。

    select * from emp where not sal > 1500;

    查询EMP表中 sal 小于等于 1500 的值。

    逻辑运算的优先级:

    ()    not        and         or

    特殊条件

    1.空值判断: is null

    Select * from emp where comm is null;

    查询 emp 表中 comm 列中的空值。

    2.between and (在 之间的值)

    Select * from emp where sal between 1500 and 3000;

    查询 emp 表中 SAL 列中大于 1500 的小于 3000 的值。

    注意:大于等于 1500 且小于等于 3000, 1500 为下限,3000 为上限,下限在前,上限在后,查询的范围包涵有上下限的值。

    3.In

    Select * from emp where sal in (5000,3000,1500);

    查询 EMP 表 SAL 列中等于 5000,3000,1500 的值。

    4.like

    Like模糊查询

    Select * from emp where ename like 'M%';

    查询 EMP 表中 Ename 列中有 M 的值,M 为要查询内容中的模糊信息。

    •  % 表示多个字值,_ 下划线表示一个字符;
    •  M% : 为能配符,正则表达式,表示的意思为模糊查询信息为 M 开头的。
    •  %M% : 表示查询包含M的所有内容。
    •  %M_ : 表示查询以M在倒数第二位的所有内容。

    tin

       tin

      cxt***qq.com

    1年前 (2017-03-06)

  2.    张耘翡

      869***43@qq.com

    不带比较运算符的 WHERE 子句:

    WHERE子句并不一定带比较运算符,当不带运算符时,会执行一个隐式转换。当0时转化为 false,当其他值是转化为true。例如:

    SELECT studentNO FROM student WHERE 0

    则会返回一个空集,因为每一行记录WHERE都返回false。

    SELECT  studentNO  FROM student WHERE 1

    或者

    SELECT studentNO FROM student WHERE 'abc'

    都将返回student表所有行记录的studentNO列。因为每一行记录WHERE都返回true。

    AND 运算符实例

    下面的 SQL 语句从 “Websites” 表中选取国家为 “CN” 且alexa排名大于 “50” 的所有网站:

    实例

    SELECT * FROM Websites WHERE country = CN AND alexa > 50 ;

    执行输出结果:

    《SQL 基础教程》

    OR 运算符实例

    下面的 SQL 语句从 “Websites” 表中选取国家为 “USA” 或者 “CN” 的所有客户:

    实例

    SELECT * FROM Websites WHERE country = USA OR country = CN ;

    执行输出结果:

    《SQL 基础教程》

    结合 AND & OR

    您也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式)。

    下面的 SQL 语句从 “Websites” 表中选取 alexa 排名大于 “15” 且国家为 “CN” 或 “USA” 的所有网站:

    实例

    SELECT * FROM Websites WHERE alexa > 15 AND ( country = CN OR country = USA ) ;

    执行输出结果:

    《SQL 基础教程》

    演示数据库

    在本教程中,我们将使用 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     |
    +----+--------------+---------------------------+-------+---------+

    ORDER BY 实例

    下面的 SQL 语句从 “Websites” 表中选取所有网站,并按照 “alexa” 列排序:

    实例

    SELECT * FROM Websites ORDER BY alexa ;

    执行输出结果:

    《SQL 基础教程》

    ORDER BY DESC 实例

    下面的 SQL 语句从 “Websites” 表中选取所有网站,并按照 “alexa” 列降序排序:

    实例

    SELECT * FROM Websites ORDER BY alexa DESC ;

    执行输出结果:

    《SQL 基础教程》

    ORDER BY 多列

    下面的 SQL 语句从 “Websites” 表中选取所有网站,并按照 “country” 和 “alexa” 列排序:

    实例

    SELECT * FROM Websites ORDER BY country , alexa ;

    执行输出结果:

    《SQL 基础教程》

    ORDER BY 多列的时候,先按照第一个column name排序,在按照第二个column name排序;如上述教程最后一个例子:

    •  1)、先将country值这一列排序,同为CN的排前面,同属USA的排后面;
    •  2)、然后在同属CN的这些多行数据中,再根据alexa值的大小排列。
    •  3)、ORDER BY 排列时,不写明ASC DESC的时候,默认是ASC。

    INSERT INTO 实例

    假设我们要向 “Websites” 表中插入一个新行。

    我们可以使用下面的 SQL 语句:

    实例

    INSERT INTO Websites ( name , url , alexa , country ) VALUES ( 百度 , https://www.baidu.com/ , 4 , CN ) ;

    执行以上 SQL,再读取 “Websites” 表,数据如下所示:

    《SQL 基础教程》

    《SQL 基础教程》您是否注意到,我们没有向 id 字段插入任何数字?
    id 列是自动更新的,表中的每条记录都有一个唯一的数字。

    在指定的列插入数据

    我们也可以在指定的列插入数据。

    下面的 SQL 语句将插入一个新行,但是只在 “name”、”url” 和 “country” 列插入数据(id 字段会自动更新):

    实例

    INSERT INTO Websites ( name , url , country ) VALUES ( stackoverflow , http://stackoverflow.com/ , IND ) ;

    执行以上 SQL,再读取 “Websites” 表,数据如下所示:

    《SQL 基础教程》

    SQL UPDATE 实例

    假设我们要把 “菜鸟教程” 的 alexa 排名更新为 5000,country 改为 USA。

    我们使用下面的 SQL 语句:

    实例

    UPDATE Websites SET alexa = 5000 , country = USA WHERE name = 菜鸟教程 ;

    执行以上 SQL,再读取 “Websites” 表,数据如下所示:

    《SQL 基础教程》

    SQL DELETE 实例

    假设我们要从 “Websites” 表中删除网站名为 “百度” 且国家为 CN 的网站 。

    我们使用下面的 SQL 语句:

    实例

    DELETE FROM Websites WHERE name = 百度 AND country = CN ;

    执行以上 SQL,再读取 “Websites” 表,数据如下所示:

    《SQL 基础教程》

    删除所有数据

    您可以在不删除表的情况下,删除表中所有的行。这意味着表结构、属性、索引将保持不变:

    DELETE FROM  table_name;

    DELETE * FROM  table_name;

    原文作者:SQL
    原文地址: https://blog.csdn.net/doulinxi115413/article/details/80800690
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞