持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情
SQL简介
SQL 是一种操作数据库的语言,包括创建数据库、删除数据库、查询记录、修改记录、添加字段等。SQL 虽然是一种被 ANSI 标准化的语言,但是它有很多不同的实现版本。
用途 : SQL 之所以广受欢迎,是因为它具有以下用途:
- 允许用户访问关系型数据库系统中的数据;
- 允许用户描述数据;
- 允许用户定义数据库中的数据,并处理该数据;
- 允许将 SQL 模块、库或者预处理器嵌入到其它编程语言中;
- 允许用户创建和删除数据库、表、数据项(记录);
- 允许用户在数据库中创建视图、存储过程、函数;
- 允许用户设置对表、存储过程和视图的权限。
第一章 select的用法
1.1 SQL执行顺序
请务必多看多记,因为它很重要,要深入学习一定要记得这个运行先后顺序。
(8)SELECT (9)DISTINCT (11)<Top Num> <select list>
(1)FROM [left_table]
(3)<join_type> JOIN <right_table>
(2) ON <join_condition>
(4)WHERE <where_condition>
(5)GROUP BY <group_by_list>
(6)WITH <CUBE | RollUP>
(7)HAVING <having_condition>
(10)ORDER BY <order_by_list>
1.2 SELECT 语句定义
- SELECT 语句用于从表中选取数据。
- 结果被存储在一个结果表中(称为结果集)。
1.3 SELECT 语法 ==SELECT 列名称 FROM 表名称;== 以及:
SELECT * FROM 表名称;
注释:==SQL 语句对大小写不敏感。SELECT 等效于 select==。
1.4 SELECT列明实例
- 如需要获取 "姓名(r_name)"和"职位(meno)"的列的内容(从名为 "t_role" 的数据库表),请使用类似这样的 SELECT 语句:
SELECT r_name,meno FROM t_role;
查询结果:
1.5 SELECT * 实例
现在我们希望从 "t_role" 表中选取所有的列。
请使用符号 * 取代列的名称,就像这样:
SELECT * FROM t_role
提示:星号(*)是选取所有列的快捷方式
查询结果:
第二章 DISTINCT 的用法
2.1 DISTINCT 语句
- 在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅列出不同(distinct)的值。
- 关键词 DISTINCT 用于返回唯一不同的值。
2.2 DISTINCT 语法
SELECT DISTINCT 列名称 FROM 表名称
2.3使用 DISTINCT 关键词
我们先看看t_role表中的数据:
SELECT * FROM t_role
如果要从"角色状态(status)"列中选取所有的值,我们可以使用如下语句
SELECT status FROM t_role
结果:
如需从 "角色状态(status)" 列中仅选取唯一不同的值,我们需要使用 SELECT DISTINCT 语句:请注意,在结果集中,1 被列出了5次。
SELECT DISTINCT status FROM t_role
结果:
现在,在结果集中,1仅被列出了一次。
第三章 WHERE的用法
3.1 WHERE 子句
- 如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。
3.2 WHERE 语法
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
下面的运算符可在 WHERE 子句中使用:
| 操作符 | 描述 |
|---|---|
| = | 等于 |
| <> | 不等于 |
| 大于 | |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
| BETWEEN | 在某个范围内 |
| LIKE | 搜索某种模式(模糊查询) |
| IN | 指定针对某个列的多个可能值 |
| EXISTS | 在子查询中匹配到符合条件的数据行 |
注释:在某些版本的 SQL 中,操作符 <> 可以写为 !=。
3.3 使用 WHERE 子句
如果只希望选取居住在城市 "郑州" 的,我们需要向 SELECT 语句添加 WHERE 子句:
SELECT * FROM t_employee WHERE e_address='郑州'
"t_employee" 表里的数据:
结果:
3.4 引号的使用
请注意,我们在例子中的条件值周围使用的是单引号。
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值, 请不要使用引号。