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

相关文章
|
3天前
|
SQL 资源调度 数据库
深入探究SQL查询语句执行过程
深入探究SQL查询语句执行过程
14 2
|
4天前
|
SQL Java
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
11 1
|
27天前
|
SQL 存储 缓存
高基数 GroupBy 在 SLS SQL 中的查询加速
本文详细介绍了SLS中的高基数GroupBy查询加速技术。
|
26天前
|
SQL 运维 程序员
一个功能丰富的SQL审核查询平台
一个功能丰富的SQL审核查询平台
|
8天前
|
SQL
SQL: 巧妙使用CASE WHEN实现查询
文章演示了如何利用SQL中的CASE WHEN语句来有效地进行条件性聚合查询,通过具体示例展示了CASE WHEN在统计分析中的应用技巧。
21 0
|
2月前
|
SQL 数据库 Java
HQL vs SQL:谁将统治数据库查询的未来?揭秘Hibernate的神秘力量!
【8月更文挑战第31天】Hibernate查询语言(HQL)是一种面向对象的查询语言,它模仿了SQL的语法,但操作对象为持久化类及其属性,而非数据库表和列。HQL具有类型安全、易于维护等优点,支持面向对象的高级特性,内置大量函数,可灵活处理查询结果。下面通过示例对比HQL与SQL,展示HQL在实际应用中的优势。例如,HQL查询“从员工表中筛选年龄大于30岁的员工”只需简单地表示为 `FROM Employee e WHERE e.age &gt; 30`,而在SQL中则需明确指定表名和列名。此外,HQL在处理关联查询时也更为直观易懂。然而,对于某些复杂的数据库操作,SQL仍有其独特优势。
39 0
|
2月前
|
SQL 关系型数据库 MySQL
|
2月前
|
API Java 数据库连接
从平凡到卓越:Hibernate Criteria API 让你的数据库查询瞬间高大上,彻底告别复杂SQL!
【8月更文挑战第31天】构建复杂查询是数据库应用开发中的常见需求。Hibernate 的 Criteria API 以其强大和灵活的特点,允许开发者以面向对象的方式构建查询逻辑,同时具备 SQL 的表达力。本文将介绍 Criteria API 的基本用法并通过示例展示其实际应用。此 API 通过 API 构建查询条件而非直接编写查询语句,提高了代码的可读性和安全性。无论是简单的条件过滤还是复杂的分页和连接查询,Criteria API 均能胜任,有助于提升开发效率和应用的健壮性。
62 0
|
2月前
|
Java UED 开发者
当错误遇上Struts 2:一场优雅的异常处理盛宴,如何让错误信息成为用户体验的救星?
【8月更文挑战第31天】在Web应用开发中,异常处理对确保用户体验和系统稳定性至关重要。Struts 2 提供了完善的异常处理机制,包括 `exception` 拦截器、`ActionSupport` 类以及 OGNL 表达式,帮助开发者优雅地捕获和展示错误信息。本文详细介绍了 Struts 2 的异常处理策略,涵盖拦截器配置、错误信息展示及自定义全局异常处理器的实现方法,使应用程序更加健壮和用户友好。
36 0
|
2月前
|
Java XML Maven
跨越时代的飞跃:Struts 2 升级秘籍——从旧版本无缝迁移到最新版,焕发应用新生!
【8月更文挑战第31天】随着软件技术的发展,Struts 2 框架也在不断更新。本文通过具体案例指导开发者如何从旧版平滑升级到 Struts 2.6.x。首先更新 `pom.xml` 中的依赖版本,并执行 `mvn clean install`。接着检查 `struts.xml` 配置,确保符合新版本要求,调整包扫描器等设置。审查 Action 类及其注解,检查配置文件中的弃用项及插件。更新自定义拦截器实现,并验证日志配置。最后,通过一系列测试确保升级后的系统正常运行。通过这些步骤,可以顺利完成 Struts 2 的版本升级,提升应用的安全性和性能。
94 0
下一篇
无影云桌面