上篇简单介绍了一下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学习笔记(二)—— 条件查询的更多相关文章

  1. SQL学习笔记二之MySQL的数据库操作

    阅读目录 一 系统数据库 二 创建数据库 三 数据库相关操作 一 系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限 ...

  2. StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用

    ConnectionMultiplexer ConnectionMultiplexer 是StackExchange.Redis的核心对象,用这个类的实例来进行Redis的一系列操作,对于一个整个应用 ...

  3. SQL学习笔记之MySQL查询的三层解析

    Mysqld的三层结构: SQL类型: DDL:数据库对象定义语言 对库和表的定义 DML:操作语言 DCL:控制语言 结构化的查询语言:select * from user; 执行该语句时: 1.连 ...

  4. PL/SQL学习笔记之条件控制语句

    一:IF-THEN语句 IF (condition) THEN commands; END IF; 二:IF-THEN_ELSE语句 IF (condition) THEN S1; ELSE S2; ...

  5. SQL学习笔记之MySQL查询练习2

    (网络搜集) 0x00 数据准备 CREATE TABLE students (sno ) NOT NULL, sname ) NOT NULL, ssex ) NOT NULL, sbirthday ...

  6. 《SQL必知必会》学习笔记二)

    <SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...

  7. Django学习笔记二

    Django学习笔记二 模型类,字段,选项,查询,关联,聚合函数,管理器, 一 字段属性和选项 1.1 模型类属性命名限制 1)不能是python的保留关键字. 2)不允许使用连续的下划线,这是由dj ...

  8. MyBatis:学习笔记(3)——关联查询

    MyBatis:学习笔记(3)--关联查询 关联查询 理解联结 SQL最强大的功能之一在于我们可以在数据查询的执行中可以使用联结,来将多个表中的数据作为整体进行筛选. 模拟一个简单的在线商品购物系统, ...

  9. JDBC学习笔记二

    JDBC学习笔记二 4.execute()方法执行SQL语句 execute几乎可以执行任何SQL语句,当execute执行过SQL语句之后会返回一个布尔类型的值,代表是否返回了ResultSet对象 ...

  10. [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

    源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...

随机推荐

  1. 容器化的Apache服务并监控

    1:基础容器编译部署apache 1.1:pull一个ubuntu 16.04的镜像 sudo docker pull ubuntu:16.04 1.2:运行容器 sudo docker run -d ...

  2. 响应式WEB设计的基本原则大总结

    响 应式Web设计对于解决多类型屏幕问题来说是个不错方案,但从印刷的角度来看,其却存在着很多的困难.没有固定的页面尺寸.没有毫米或英寸,没有任何物理 限制,让人感到无从下手.随着建立网站可用的各种小工 ...

  3. TensorFlow从1到2(二)续讲从锅炉工到AI专家

    图片样本可视化 原文第四篇中,我们介绍了官方的入门案例MNIST,功能是识别手写的数字0-9.这是一个非常基础的TensorFlow应用,地位相当于通常语言学习的"Hello World!& ...

  4. JS 各种宽高

    1.window的各种宽高   outerWidth.innerWidth.outerHeight.innerHeight outerHeight 获取浏览器窗口外部的高度(单位:像素).表示整个浏览 ...

  5. TensorFlow读写数据

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 回顾前面: 从零开始学TensorFlow[01-搭 ...

  6. Android Studio Run项目出现Failure [INSTALL_FAILED_TEST_ONLY]

    同名掘金博文:https://juejin.im/post/5c2e0c496fb9a049a711f09a 运行环境: AS 版 本:Android Studio 3.2.1 手机型号:vivo Y ...

  7. 结合JDK源码看设计模式——装饰者模式

    定义 在不改变原有对象的基础之上,将功能附加到对象上 适用场景 扩展一个类的功能 动态的给对象增加功能,当功能不需要的时候能够动态删除 详解 在看到定义的时候,可能很多人会想,这不就是继承吗?的确很像 ...

  8. 对于一个WEB前端初学者,学前端应该注意,有什么技巧

    web前端经验总结需要注意的地方和技巧如下: 1.编程思维 学习web前端开发核心在于一个“编程思维”,因为每段代码都不一样,都需要分别去看,所以只要你掌握了学习web前端的编程思维,那么写程序对于你 ...

  9. JDBC mysql 相关内容笔记

    解决乱码: url字符串加上?useUnicode=true&characterEncoding=utf-8; mysql数据库无法插入中文数据问题:将mysql数据库的编码改为utf-8; ...

  10. 【表格】大于号转义符&amp;gt;---小于号转义符&amp;lt;

    关于来源:百度及个人经验. 常用的都是个人尝试过或个人常用的,其它的都是从百度来的.使用前建议写个HTML的Demo试试看 ^_^ 比心 < < < 小于号 > > &g ...