当前位置:Gxlcms > 数据库问题 > 自学SQL

自学SQL

时间:2021-07-01 10:21:17 帮助过:14人阅读

<列名> FROM <表名> ;

该 SELECT 语句包含了 SELECT 和 FROM 两个子句(clause) 。子句是 SQL 语句的组成要素,是以 SELECT 或者 FROM 等作为起始的短语。

SELECT 子句中列举了希望从表中查询出的列的名称,而 FROM 子句则指定了选取出数据的表的名称。

查询出 Product 表中的列

接下来,我们尝试从Product (商品)表中,查询所示的 product_id (商品编号)列、 product_name (商品名称)列和 purchase_price (进货单价)列。

技术图片

?从 Product 表中输出3列的SQL语句如下:

SELECT product_id, product_name, purchase_price FROM Product;

执行结果:

product_idproduct_namepurchase_price
001 T恤衫 500
002 打孔器 320
003 运动T恤 2800
004 菜刀 2800
005 高压锅 5000
006 叉子  
007 擦菜板 790
008 圆珠笔  

SELECT 语句第一行的 SELECT product _ id, product _ name,purchase _ price 就是 SELECT 子句。查询出的列的顺序可以任意指定。查询多列时,需要使用逗号进行分隔。 查询结果中列的顺序和SELECT 子句中的顺序相同

Select 查询所有列

如果我们想取出所有列的数据, 当然可以把所有列名写上,不过更简单的方式用星号 (*) 来代表所有列。

SELECT * FROM table_name;

输出 Product 表中全部的列:

SELECT * FROM Product;

SELECT 语句用于从数据库中选取数据。结果被存储在一个结果表中,称为结果集。

SELECT * FROM table. 这条语句经常用来在不清楚table(表)中有什么数据时,能取出所有的数看一眼。

好,接下来我们做一道练习题,请移步到该网站的 《SELECT 查询》课程,习题在最后面 。

http://www.eluzhu.com:1818/my/course/64

SQL SELECT DISTINCT

还记得上次我们用的表中,有一些重复的值么。有时候我们希望仅仅列出不同的值。那需要怎么做呢?
这时候就会用到关键词 DISTINCT ,用于返回唯一不同的值。
语法:

SELECT DISTINCT 列名称 FROM 表名称;

从结果中删除重复行

如果我们想获取 Product 表中保存的商品种类的同时,删除重复的数据。就可以用通过在 SELECT 子句中使用 DISTINCT 来实现

技术图片

使用 DISTINCT 删除 product_type 列中重复的数据

SELECT DISTINCT product_type FROM Product;

执行结果:

product_type
厨房用具
衣服
办公用品

另外在使用 DISTINCT 时, NULL 也被视为一类数据。 NULL 存在于多行中时 , 也会被合并为一条 NULL 数据。对含有 NULL 数据的 purchase _price (进货单价)列使用 DISTINCT 的 SELECT 语句,除了两条 2800 的数据外,两条 NULL 的数据也被合并为一条。

SQL WHERE 子句

我们已经学会了从数据表里取出某几个列的SQL语句,思考一下:如果数据表里有100万行数据。如果数据量这么大,之前的SQL语句很可能运行时会崩溃。
真实情况下,我们很少直接查出所有数据,即使查询出来也看不完。为了更精确的查询出特定数据,我们需要学习一个新的SQL语法,SELECT 语句通过 WHERE 子句来指定查询数据的条件。具体就是通过限定条件,查看行的数据是否满足。比如:获取时长大于2小时的电影。
你可以把 WHERE想象成一个筛子,每一个特定的筛子都可以筛下某些豆子。

在 SELECT 语句中使用 WHERE 子句的语法如下所示:?

SELECT < 列名 >,  ……
FROM < 表名 >
WHERE < 条件表达式 >;

运算符

下面的运算符可在 WHERE 子句中使用,下面我会选择几个举例给你演示一下,其中在某些版本的 SQL 中,操作符 <> 可以写为 !=。

操作符描述
= 等于
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式

选取商品种类为衣服的记录

技术图片

从被选取的记录中还可以查询出想要的列。为了更加容易理解,我们在查询 product _ type 列的同时,把 product _ name 列也读取出来。
用来选取 product_type 列为 ‘ 衣服 ‘ 的记录的 SELECT 语句:

SELECT product_name, product_type
FROM Product
WHERE product_type =  衣服 ;

执行结果:

product_nameproduct_type
T恤衫 衣服
运动T恤 衣服

BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
SQL BETWEEN 语法:

SELECT column_name
FROM table_name
WHERE column_name
BETWEEN value1 AND value2;

用来选取销售单价介于 2000 到 5000 之间的商品名称:

SELECT product_name, sale_price
FROM Product
WHERE sale_price BETWEEN 2000 AND 5000;

执行结果:

product_namesale_price
运动T恤 3000
菜刀 4000

LIKE 操作符

然后再说说LIKE,截至目前,我们使用字符串作为查询条件的例子中使用的都是 =。这里的 = 只有在字符串完全一致时才为真。与之相反,LIKE 谓词更加模糊一些,当需要进行字符串的部分一致查询时需要使用该谓词。
语法:

SELECT column_name
FROM table_name
WHERE column_name LIKE pattern;

例如我们要选取商品名称中包含 ‘T恤’ 的所有商品的名称

SELECT product_name FROM Product
WHERE product_name LIKE %T恤%;

执行结果:

product_name
T恤衫
运动T恤

引号的使用

请注意,我们在例子中的条件值周围使用的是单引号。SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。
文本值:
这是正确的:

SELECT * FROM movies WHERE title = 双子杀手

这是错误的:

SELECT * FROM movies WHERE title = 双子杀手

数值:
这是正确的:

SELECT * FROM movies WHERE year > 2000

这是错误的:?

SELECT * FROM movies WHERE year > 2000;

好,接下来我们做一道练习题,请移步到该网站的 《WHERE 条件查询》课程中,习题在内容最后。

http://www.eluzhu.com:1818/my/course/64

 

好,我们这次先讲到这里,请进入作者主页继续学习后续的SQL课程。或进入上面的地址免费学习完整的SQL课程。

自学SQL

标签:多列   blank   理解   数据库   例子   记录   external   更新   模糊   

人气教程排行