数据库基础知识——SELECT 语句(检索数据)
SQL使用
SQL(发音为字母S-Q-L或sequel)是结构化查询语言(Structured Query Language)的缩写。SQL是一种专门用来与数据库通信的语言。
SQL 语言特点:
- SQL 语言不区分大小写;
- 在命令行窗口的 SQL 语句要以分号
;
结束。
其中 SELECT
语句是我们最常用的。
为了下面的展示,我们创建了 crashcourse
数据库:
CREATE DATABASE crashcourse DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
crashcourse
是我自己设置的数据库的名称,下面的使用示例,都是使用这个数据库。
为了下面的展示,我们还需要为 crashcourse 数据库创建一些表和往表中插入一些记录, 相关的 SQL 文件有:
- 创建表:create.sql
- 插入数据:populate.sql
一、检索数据(SELECT 语句)
1. 检索单个列
select prod_name from products;
2. 检索多个列
select prod_id, prod_name, prod_price from products;
3. 检索所有列
select * from products;
4. 检索不同的行
4.1 返回所有匹配的行
select vend_id from products;
可以看到默认会返回所有的行,其中有些行的 vend_id 的值是相同的,假设我们只想返回 vend_id 的值不同的行,可以使用:
4.2 只返回字段值不同的行
select distinct vend_id from products;
DISTINCT
关键字,它必须直接放在列名的前面。
不能部分使用DISTINCT,如果给出SELECT DISTINCT vend_id, prod_price,除非指定的两个列的值都相同,否则所有行都将被检索出来。也就是说,只有这两条记录的两个列的值都是相同的,才认为这两条记录是相同的,这时候 DISTINCT 关键字才会去除其中的一条记录。如下所示:
使用 distinct
关键字:
5. 限制结果
select prod_name from products limit 5;
LIMIT 5
指示MySQL返回不多于5行。
为得出下一个5行,可指定要检索的开始行和行数,如下所示:
select prod_name from products limit 5, 5;
第一个数为开始位置的索引(MySQL中记录的索引从0开始),第二个数为要检索的行数。所以,上面指的是从第6行开始(包括第6行),返回5行记录。
带一个值的 LIMIT 总是从第一行开始,给出的数为返回的行数。带两个值的 LIMIT 可以指定从行号为第一个值的位置开始。
MySQL 5支持LIMIT的另一种替代语法。LIMIT 4 OFFSET 3 意为从行3开始取4行,就像LIMIT 3, 4一样。
6. 使用完全限定的表名
select products.prod_name from crashcourse.products;
等价于:
select prod_name from products;
但有一些情形需要完全限定列名和表名。
还没有评论,来说两句吧...