Sql学习笔记(二)—— 条件查询
上篇简单介绍了一下sql的一些基础增删改查语句,而针对多种多样的查询语句则未详细说明,这一篇继续记录一下关于各种条件查询的知识。
1.按列名进行查询
语句:
select stuName , stuAge from student -- select 后的字段用','分隔,不能使用 and
注意:select 后的字段不要用and 连接 这样不对。
结果展示为:
2.where 条件查询
先举一个where 条件的例子:
查询 stuGender 为0和 majorId 为2的记录:
select * from student where stuGender = and majorId =
这里写查询语句的时候可以尝试把语句分开在不同的行写这样想执行哪些行的语句就选择哪些,执行起来很灵活。
查询结果如下:
通过这个例子想说明一下,where后面的运算符有是多种,不止有 “=”,还有 “<>” ,">=" 等等,具体的如下表所示:
操作符 | 描述 |
= | 等于 |
<> | 不等于(有的也可写为!=) |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
between | 在某个范围内 |
like | 搜素某种模式 |
前面的6种的使用方法都和上面的示例一致,下面说一下后面两种:
(1)between
between 和 and 搭配起来用,作用和 >= , <=搭配 起来用效果一样,可以看下面这个示例:
-- between 使用 select * from student where stuAge between and
结果如下:
由上可以看到,查询出的是年龄在20 - 24之间的值。
(2)like
like 的作用是; 模糊查询,like关键字 和 通配符一起使用:
通配符:
%; 替代一个或多个字符或者不替代任何字符:
示例:查询 地址是 *京的学生:
select * from student where stuAddress like '%京'
查询结果:
但是,当你把字段值写全,再加上 % ,也能正常查询,如下:
select * from student where stuAddress like '%北京%'
查询结果:
通配符 _ : 仅替代一个字符:
示例:
select * from student -- where stuAddress like '_京' where stuAddress like '南_' -- _在前在后都可以
结果展示:
通配符 [ 某字符(可不止一个字符) ] :中括号中写的字符,只要某字段值的首位包含其中任意一个字符,则会查询出来,须配合%或者_使用;
比如:[南北],则会把字段里有南和北其中任意一个字的记录查询出来,示例如下:
-- [某某字符]
select * from student
where stuAddress like '[南武]%'
结果显示如下:
注意要配合 % 使用;
通配符 [^某某字符 ] : 上一个通配符的取反,意思是不包含某某字符的记录:
示例:
-- [^某某字符]
select * from student
where stuAddress like '[^南武]%'
注意:^ 要写在中括号里面;
结果为:
这里需要注意的是,[]中的字符必须是某字段值的首个字符,常用于搜索姓 什么 的人群。
另外: like '[^XXX]%' 也可以实现为 not like '[XXX]%' ;
3.and 连接多个where 条件
and 连接多个 where 条件 ,表示 “与" ,取满足条件的交集;
示例:
-- and
select * from student where stuAge >= and stuGender = and majorId =
where 后面可以接多个 and
结果为:
4. or 连接多个where 条件
or连接多个 where 条件 ,表示 “或" ,取满足条件的并集;
示例:
-- or
select * from student where (stuName = 'AAA' or stuName = 'BBB' or stuName = 'FFF') and stuGender =
结果:
从代码可以看到,查询条件可以用 () 括起来,定义优先级,这种写法,和不带()的结果是不一样的。
不带括号示例:
select * from student where stuName = 'AAA' or stuName = 'BBB' or stuName = 'FFF' and stuGender =
结果:
5.in 操作符
in 操作符会指定查询的范围,比如你希望查询id为 4,7,12的记录,那么你就可以使用in,示例语句如下:
查询id为2,4,7的记录:
-- in 指定查询范围 select * from student where student.id in (,,)
结果展示为:
6.not 表示对某个条件去取反
比如:前面讲到的 like 的否定就写为 not like ;
示例如下:
取出地址中不含 '京'字的记录:
-- not --
select * from student where student.stuAddress not like '%京%'
结果显示为:
7.数据排序 order by
(1)默认排序方法:order by 字段名
示例:按年龄排序
-- order by -==
select * from student order by student.stuAge
-- 若不指定升序还是降序,则默认是升序排列
注意:在不指定升降序的时候,默认是升序(从小到大往下排)
结果展示为:
(2)升序排列 ASC
用法为:order by 字段名 asc
示例:
-- order by -==
select * from student order by student.stuAge asc
-- 若不指定升序还是降序,则默认是升序排列
结果和(1)中显示一样;
(3)降序排列
用法为:order by 字段名 desc
示例:
按照id降序显示
-- 降序--
select * from student order by student.id desc
结果为:
(4)设定排序优先级,指定多个排序规则
这个是啥意思呢,意思是这样的,比如你这个表(student)中有很多数据,现在你想按照年龄降序排列,来看一下结果:
上图中你可以看到,年龄按照降序排列,但有许多的年龄值是重复的,这个时候那些年龄一样大的数据,你该怎么排序呢?如果你想指定这个第二优先级的顺序,第三优先级的顺序,也有办法做到,看下面:
第一按年龄降序排序、其次按majorId降序排序,最后按id升序排列:
-- 多种排序方法 --
select * from student order by student.stuAge desc,student.majorId desc,student.id asc
结果显示为:
8.数据库别名
在写sql语句时,有时候表名和字段名很长,书写起来较麻烦,这个时候我们可以给表名或者字段名起个绰号——也就是别名。
写法有以下几种:
(1)Alias(也就是AS)
sql server写法:
为列指定别名:本名 as '别名';(注意:引号可加可不加,但我觉得加上比较好,)
为表指定别名:本名 as 别名;(一定不能加引号)
示例如下:
select stuName as ‘name’,stuAge as ‘age’ from student as s
where s.majorId = 1
结果如下:
(2)省略 as 的写法
这种写法和上一种一摸一样,唯一区别就是 不写 as:
示例:
-- 省略 as --
select stuName name,stuAge age from student s where s.majorId =
结果:
(3)别名的妙用
可以给几个字段设置一个共同的别名,这样这些数据会组成一个新的字段,字段名就是指定的别名:
示例:把student表中的年龄、性别、地址 结合在一起,组成一个名字为 info的字段:
-- 多个字段一个别名
select stuName, CONCAT(stuAge,',',stuGender,',',stuAddress) as info from student as s
结果为:
8. case 语句
case 语句我的理解,其实就是在sql语句里对查询的值做出了判断,并进行分类。比如,你在性别表里用0表示男,1表示女,此时,你可以在程序里进行转换,也可以直接在sql里即对其进行转换,在sql中就要用到 case语句了,case语句的用法如下:
简单case函数
case 字段名 when 判断条件一 then 结果一
when 条件二 then 结果二 when 条件三 then 结果三
.
.
.
when 条件n then 结果n
else 结果n+1 end
case 搜索函数:
语法如下:
case -- case起始 when 条件一 then 结果一 when 条件二 then 结果二 when 条件三 then 结果三
.
.
.
when 条件n then 结果n else 结果 n+ end -- end 结束
下面给出几个示例:
(1)查询学生性别,并分为男和女进行展示:
select stuName ,
case stuGender when '' then '男' when '' then '女' else '其他' end as '性别'
from student
查询结果:
(2)年龄大于20为前辈,小于等于20为后辈
select student.stuName , case when student.stuAge > then '前辈' when student.stuAge <= and student.stuAge >= then '后辈' else '菜鸟' end as '资历' from student
结果:
啊,写了好久啊,这一篇,上周各种事情,最后还是写完了,哈哈。
下一篇写一下联表查询,本篇先告一段落了哦。
我的QQ邮箱:3074596466@qq.com
Sql学习笔记(二)—— 条件查询的更多相关文章
- SQL学习笔记二之MySQL的数据库操作
阅读目录 一 系统数据库 二 创建数据库 三 数据库相关操作 一 系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限 ...
- StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用
ConnectionMultiplexer ConnectionMultiplexer 是StackExchange.Redis的核心对象,用这个类的实例来进行Redis的一系列操作,对于一个整个应用 ...
- SQL学习笔记之MySQL查询的三层解析
Mysqld的三层结构: SQL类型: DDL:数据库对象定义语言 对库和表的定义 DML:操作语言 DCL:控制语言 结构化的查询语言:select * from user; 执行该语句时: 1.连 ...
- PL/SQL学习笔记之条件控制语句
一:IF-THEN语句 IF (condition) THEN commands; END IF; 二:IF-THEN_ELSE语句 IF (condition) THEN S1; ELSE S2; ...
- SQL学习笔记之MySQL查询练习2
(网络搜集) 0x00 数据准备 CREATE TABLE students (sno ) NOT NULL, sname ) NOT NULL, ssex ) NOT NULL, sbirthday ...
- 《SQL必知必会》学习笔记二)
<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...
- Django学习笔记二
Django学习笔记二 模型类,字段,选项,查询,关联,聚合函数,管理器, 一 字段属性和选项 1.1 模型类属性命名限制 1)不能是python的保留关键字. 2)不允许使用连续的下划线,这是由dj ...
- MyBatis:学习笔记(3)——关联查询
MyBatis:学习笔记(3)--关联查询 关联查询 理解联结 SQL最强大的功能之一在于我们可以在数据查询的执行中可以使用联结,来将多个表中的数据作为整体进行筛选. 模拟一个简单的在线商品购物系统, ...
- JDBC学习笔记二
JDBC学习笔记二 4.execute()方法执行SQL语句 execute几乎可以执行任何SQL语句,当execute执行过SQL语句之后会返回一个布尔类型的值,代表是否返回了ResultSet对象 ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
随机推荐
- eclipse中去掉py文件中烦人的黄色弹框
eclipse中写py文件,当鼠标点击在参数上时总是出现黄线的弹框,影响人操作,感觉特别烦,如下: 解决方案: windows--preferences--hover--pydev--hover取消选 ...
- MYSQL——数据库存储引擎!
本人安装mysql版本为:mysql Ver 14.14 Distrib 5.7.18, for Win64 (x86_64),查看mysql的版本号方式:cmd-->mysql --vers ...
- Android 7.0 存储系统—Vold与MountService分析(三)(转 Android 9.0 分析)
Android的存储系统(三) 回顾:前帖分析了Vold的main()函数和NetlinkManager的函数调用流程,截止到NetlinkHandler的创建和start()调用,本帖继续分析源码 ...
- Zabbix-server 3.4 安装详细和修改web界面中文出现的乱码(一)
1. 老套路先来个Zabbix简介: Zabbix是一个企业级的.开源的.分布式的监控套件: Zabbix可以监控网络和服务的监控状况. Zabbix利用灵活的告警机制,允许用户对事件发送Email. ...
- JS异步操作新体验之 async函数
1.初识 async 函数 ES6中提供了两个很好的解决异步操作的方案 Promise 和 Generator,ES2017标准中引入的 async 函数就是建立在 Promise 和 Gener ...
- Unity 捏脸整理及基于骨骼的捏脸功能实现
目前实现捏脸功能的方式主要有两种.一个是Blendshape(融合变形),一个是基于骨骼驱动的方式,通过修改骨骼矩阵(bindpose)来影响SkinMesh.这两种方式的最终原理都是在shader ...
- DSAPI 提取中间文本(字符串)
提取中间文本(源文本 As String, 前导文本 As String, 结束文本 As String, Optional 移除文本 As String = "", Option ...
- JSON Web Token入门教程
目录 一.跨域认证的问题 二.JWT的原理 三.JWT的数据结构 3.1Header 3.2Payload 3.3 Signature 3.4 Base64URL 四.JWT的使用方式 五.JWT的几 ...
- Hello World 程序的起源与历史
这是一个最著名的程序.对每一位程序员来说,这个程序几乎是每一门编程语言中的第一个示例程序.那么,这个著名的程序究竟从何而来呢? 实际上,这个程序的功能只是告知计算机显示 Hello World 这句话 ...
- Android-----Intent中通过startActivity(Intent intent )显式启动新的Activity
Intent:即意图,一般是用来启动新的Activity,按照启动方式分为两类:显式Intent 和 隐式Intent 显示Intent就是直接以“类名称”来指定要启动哪一个Activity:Inte ...