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;

但有一些情形需要完全限定列名和表名。

更多推荐

数据库基础知识——SELECT 语句(检索数据)