该 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_id product_name purchase_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://HdhCmsTesteluzhu测试数据: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_name product_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_name sale_price 运动T恤 3000 菜刀 4000LIKE 操作符
然后再说说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://HdhCmsTesteluzhu测试数据:1818/my/course/64
好,我们这次先讲到这里,请进入作者主页继续学习后续的SQL课程。或进入上面的地址免费学习完整的SQL课程。
自学SQL
标签:多列 blank 理解 数据库 例子 记录 external 更新 模糊