1. 基本概念
- 数据库:保存有组织的数据的容器
- 表:某种特定类型数据的结构化清单
- 模式:关于数据库和表的布局及特性的信息(数据在表中如何存储,各部分信息如何命名)
- 列:表中的一个字段。所有表都由一个或者多个列组成。
- 行:表中的一个记录。
- 主键:一列(或一组列),其值能够唯一标示表中的每一行。
- 关键字:作为SQL组成部分的保留字。关键字不能用作表或者列的名字。
注:SQL不区分大小写(关键字不区分,表名和列名会区分)
满足主键的条件:
- 唯一性
- 非空
- 不允许修改
- 不能重用(如果某行在表中删除,他的主键不能赋给以后的新行)
2. 检索数据
1). 简单检索:
- 单列检索:select 列名 from 表名;
- 多列检索:select 列名,列名 from 表名;
- 所有列检索:select * from 表名;
2). 唯一检索
select distinct 列名 from 表名;
当selest语句返回所有的匹配的行,但是不希望匹配的行重复出现,使用关键字 distinct,(注意:distinct关键字作用于所有的列,不仅仅是跟在其后的那一列,列如指定select distinct 列名,列名,除非指定的两列完全相同,否则所有的列都会被检索出来。且字段名不能放在Distinct之前)。
使用 DISTINCT 关键字去掉重复记录具有较大的局限性。DISTINCT() 只能包含一个字段且查询结果也只返回该字段而非数据完整记录。
3). 限制结果
select 列名 from 表名 limit 行数;
- 当selest语句返回所有的匹配的行,如果你只想要第一行或者一定数量的行:可以使用TOP关键字来限制最多返回多少行。
- 为了得到后面的5行数据,需要指定从那儿开始以及检索的行数,向这样:select 列名 from 表名 limit 行数(指定需要输出的行数) offset 行数(指定从第几行开始输出,从第0行开始数)【offset参数不能单独使用】【也可以简化为 limit 数1,数2:表示从数1开始输出,指定的数2为行数】
4). 使用注释
- #:(在一行的开始处使用#,这一整行都将作为注释)
/* 注释 */:之间的内容都是注释。
3. 排序检索数据
select 列名 from 表名 order by 列名,列名;
- 为了明确的排序用select语句检索出的数据,可使用order by子句。order by 取一个列或者多个列的名字,据此对输出进行排序。
- order by 子句的位置:在指定一条order by 子句时,应该保证它是select语句中的最后一条子句。如果他不是最后的一条子句,将会出现错误消息。
order by:还支持按列位置排序
select 列1 ,列2,列3 from 表名 order by 数1,数2;
数字1表示先按列1进行排序,再按列2进行排序。
order by:指定排序方向
单列:
select 列名 from 表名 order by 列名 desc;
在order by中默认的排序为增序,当需要使用降序时,需要使用desc(descend降序)关键字。
多列:
select 列名,列名 from 表名 order by 列名 desc,列名;
desc关键字只应用到直接位于其前面的列名。
4. 过滤数据
select 列名 from 表名 where 列名=值;
位置:where子句的位置在同时使用order by和where子句时,应该往order by位于where之后。
where子句操作符:
between用法:
select 列名 from 表名 where 列名 between 列值 and 列值;
注:is null 的用法,并不能简单的使用 ‘= null’;