SQL 单表查询(上)

简介: SQL 单表查询

文章目录


说明

一些说明

表结构

1. 基本查询操作

1.1. 基本语法

1.2. * 查询所有数据

1.3. as 给字段取别名

1.4. distinct 消除重复

1.4. 运算符

2. where 条件查询

2.1. where中的比较运算符

2.2. where中的逻辑运算符

2.3. 排序

3. 常用函数

3.1. 字符串函数

3.2. 数值函数

3.3. 日期和时间函数

3.3.1. date_format()函数

3.3.2. date_add()函数

3.4. 流程控制函数

3.4.1. if 流程函数

3.4.2. ifnull 流程函数

3.4.3. case 流程函数

3.5. 聚合函数

3.6. 数据库属性函数

4. group by 分组查询


正文


说明


一些说明


本文中所有中括号扩起的文字均代表可以替换的文字(包括中括号本身)

例如在我博客中的:

select [字段1],[字段2],...,[字段n] from [表名] where [查询条件];

在实际使用时,可以写作:

select name,age from users where id=3;


表结构


users表

工号 姓名 性别 年龄 职位 办公电话 手机号
201215121 李勇 40 主管 13650 13365245865
201215122 刘晨 29 收银员 13622 12535468521
201215123 王敏 29 会计 (Null) 17685324586
201215124 刘柳 42 总监 13623 19658245753
201215125 王辉 29 会计 (Null) 16698532547


如上users表所示,

  1. users叫做表名
  2. “工号”、“姓名”、“性别”、“年龄”和“职位”等叫做一个字段
  3. 该表的一行(例如:201215122 刘晨 女 29 收银员 13622 12535468521)叫做一个记录


1. 基本查询操作


1.1. 基本语法


表的查询,即查询表中的数据记录,表的查询操作是SQL的基本数据操作之一,也是使用频率最高、最重要的数据操作。

一个一般的查询语法如下:

select [字段1],[字段2],...,[字段n] from [表名] where [查询条件];



关键字解释:

select: 查询语句的起始关键字,表示该操作为查询操作
from: 后接数据源,表示在[表名]中查询[字段i]
where: 后接查询条件,表示要对查询做的限制,该操作可以帮助数据库使用者做精确的查找


1.2. * 查询所有数据


查询所有字段会把表内所有的数据都查询出来,在select语句中使用星号" * "通配符来查询表中的所有字段

语法为:

select * from [表名];


例如:

select * from users; --表示从users表中查询所有字段,

查询结果为:

35.png


1.3. as 给字段取别名


给字段取别名的意义在于可以清晰的展示某一字段所表示的内容,例如表中有一列“月工资”,要计算“年工资”时可将月工资12,这时候sql会显示该字段的字段名为“月工资12”,这对查询结果的展示很不友好,通常情况下都会给它取一个别名。


取表名的可以使用“as”关键字,或者直接在字段后面接“"[别名]"”

语法为:

select [字段名] as "[别名]", [字段名]"[别名]" from users;


例如下例:

select 工号, 工号 as "工", 姓名, 姓名"姓" from users;

43.png


1.4. distinct 消除重复


如果查询结果中出现重复数据,可用关键字“distinct”消除,若没有加上“distinct”关键字,查询结果将默认展示重复数据。

需要注意的是,“distinct”关键字是作用于所有字段的组合,只有在所有字段值都重复的情况下,才会消除重复。

语法如下:

select distinct [字段1],[字段2],...,[字段n] from [表名]

例如:

select 姓名,性别,年龄,职位 from users;
select distinct 姓名,性别,年龄,职位 from users;


左边是未加distinct关键字的查询结果,右边是加上distinct关键字的查询结果

44.png


1.4. 运算符


SQL提供的基本算术运算符有:

+ :加法
- :减法
* :乘法
/ :除法
% :取余


SQL的算术运算符可以在列、常量之间运算,例如:

select 姓名, 年龄, 年龄+2, 年龄*2, 年龄*2, 年龄/2, 年龄%2 from users;

查询结果为

42.png

要注意的是,运算符也是有优先级的,优先级规则与我们的数学运算符号规则一致。


2. where 条件查询


在select语句中,可以通过where子句,对数据进行过滤,其语法格式为

select [字段1],[字段2],...,[字段n] from [表名] where [查询条件];


例如:

-- 筛选出年龄大于30的人
select 姓名, 年龄 from users where 年龄 > 30;

41.png


2.1. where中的比较运算符


比较运算符 作用
= 等于 <> 不等于
> 大于 < 小于
>= 大于等于 <= 小于等于
between [值1] and [值2] 介于[值1]和[值2]之间 in([值1], [值2],…, [值n]) 包含在[值1], [值2],…, [值n]之中
like 条件匹配(%:匹配多个字符,_:匹配一个字符) [值] is null 判断[值]是否为空

例如:

-- 查询年龄不等于40的人
select 姓名, 年龄 from users where 年龄 <> 40;

38.png

-- 查询年龄介于20到30之间的人
select 姓名, 年龄 from users where 年龄 between 20 and 30;

39.png

-- 匹配姓名中第一个字是‘刘’,第二个字随意的人
select 姓名 from users where 姓名 like '刘_';

40.png


2.2. where中的逻辑运算符


逻辑运算符 作用
[表达式1] and [表达式2] 两个表达式都为true,才返回true ,否则返回false
[表达式1] or [表达式2] 两个表达式其中之一为true,就返回true,两个都为false,才返回false
not [表达式] 若表达式为true,则返回false,若表达式为false,则返回true

例如:

-- 找出年龄大于30的男性
select 姓名, 年龄, 性别 from users where 性别='男' or 年龄>30;

37.png


2.3. 排序


对查询结果进行排序使用order by 关键词

语法:

select [字段1], [字段2],..., [字段n] 
  from [表名] 
  order by [字段名1] [排序方式], [字段名2], [排序方式],..., [字段名n] [排序方式];


排序方式有两种:

  1. asc 顺序排列 (从小到大)
  2. desc 逆向排列 (从大到小)

例如:

-- 先按年龄顺序排列,再将重复值按照工号逆序排列
select 工号, 姓名, 年龄 from users order by 年龄 asc, 工号 desc;

36.png

相关文章
|
7月前
|
SQL
SQL数据查询——单表查询和排序
SQL数据查询——单表查询和排序
78 0
|
SQL 数据库 数据安全/隐私保护
|
SQL Oracle 关系型数据库
【SQL开发实战技巧】系列(二):简单单表查询
本篇文章介绍一些SQL开发基础的内容,讲解的主要内容是:***NULL空值的运算、coalesce比nvl的优势、拼接列实现批量脚本、如何通过rownum限制返回的行数以及如何正确的使用rownum从表中随机返回 n 条记录。***
【SQL开发实战技巧】系列(二):简单单表查询
|
SQL 关系型数据库 MySQL
【sql语句基础】——查(select)(单表查询顺序补充)
【sql语句基础】——查(select)(单表查询顺序补充)
【sql语句基础】——查(select)(单表查询)
【sql语句基础】——查(select)(单表查询)
【sql语句基础】——查(select)(单表查询)
|
SQL 数据库 索引
【T-SQL基础】01.单表查询-几道sql查询题
【T-SQL基础】01.单表查询-几道sql查询题
143 0
【T-SQL基础】01.单表查询-几道sql查询题
|
SQL Oracle 关系型数据库
Oracle 单表查询SQL
本文目录 1. 简介 2. select 2.1 直接查询类 2.2 查询结果处理 2.3 非常特殊的NULL 2.4 相当特殊的group by
112 0