mysql的sql语句where,SQL之WHERE语句
SQL语句是数据库查询语句,可以应用在各种数据库操作软件中,比如Mysql,Oracle,因此SQL语句学一套就基本可以通用了。这篇文章主要总结一下Where的用法,文章持续更新。
一般的结构查询语句的结构如下:
SELECT *
FROM table_a
WHERE x=y
其中,以上语句的select,from,where是不区分大小写的,一般分行写select,from,where语句。select一般是查询结果要展示的字段,from后一般是要查询的表名,where是进行行数据筛选的条件。
一般的用法有:对比:=,!=,>,<
包含:in,not in,exists,not exists
模糊匹配:like
空值判断:is null, is not null
范围匹配:between ... and ...
多条件且、或:and,or
1.对比
=是精确匹配的意思,比如:where name='zhangsan'则是筛选出所有name='张三'的行,除数字外必须带引号。(!=就是除了=之外的所有行)
>和
2.包含
in和not in分别是包含和不包含的意思,用法:where name in('zhangsan', 'lisi'),可筛选出name='zhangsan'和'lisai'的所有行。
exists和not exists等同于in和not in,不同的是使用时服务器使用效率不同,一般在多表匹配的时候会区别一下。可以先看以下例子:
1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ;
2) select * from T1 where T1.a in (select T2.a from T2) ;
T1数据量小而T2数据量非常大时,T1 exits 效率高
T1数据量非常大而T2数据量小时,T1>>T2 时,2) in 的查询效率高。
3.模糊匹配
如果你只想匹配字段值的一部分,则要用like:where name like '%zhang%'或where name like 'zhang_'
%代表不限数量的匹配字符数,_代表单个字符的匹配。比如zhang%可以匹配出zhangsan, zhangsi等,而zhang_只能匹配出如zhangx这种的字符。
4.空值判断
null是数据为空时的一种状态,not null是不为空的状态,这两种状态可以用来做筛选:where name is null,筛选出name为空的行,where name is not null,筛选出name不为空的行。
5.范围判断
BETWEEN x1 AND x2 是指筛选出值在x1到x2之间的数据行,如:where id between 1 and 95,筛选出id为1~95的行。需要注意的是,不同的数据库对于between的用法有一点点差异,有的是[1,95],有的是(1,95)等,这点知道就行了,我用的Mysql是[]形式的。
6.多条件且、或
and 用来连接条件,表示多条件必须满足。or用来连接条件,表示满足任一即可。如:where name='zhangsan' and number=94,只会筛选出name和number同时满足了条件的数据行。而:where name='zhangsan' or number=94 则会筛选出name='zhangsan' 或者number=94满足任一条件的数据行。
那么多个and和or一起使用时怎么办呢,一般优先级是and>or,如:name='zhangsan' and number=94 or number=95,就会解析为(name='zhangsan' and number=94) or (number=95)。因此,为了避免不确定性,我们可以在查询条件中加入括号来对条件进行组合。例如:where (name='zhangsan' or name='lisi') and number = 100 。
mysql的sql语句where,SQL之WHERE语句相关推荐
- mysql数据库会同时执行sql吗_mysql 一次执行多条sql语句
最近要做一个软件升级,其中涉及到数据库表字段的变动(新增或删除或修改),所有的关于数据库的变动的sql语句都是存放在Sqlupdate.sql文件中,每次升级的时候都需要执行一次Sqlupdate.s ...
- MySQL用户管理、常用sql语句、数据库备份
13.4 MySQL用户管理 创建用户并授权 指定登录IP [root@centos-01linux ~]# mysql -uroot -p Enter password: Welcome to th ...
- 两种方式:mysql查看正在执行的sql语句
mysql查看正在执行的sql语句 2015年08月21日 17:32:59 阅读数:15398 有2个方法: 1.使用processlist,但是有个弊端,就是只能查看正在执行的sql语句,对应历史 ...
- 如何在mysql查找效率慢的SQL语句
如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow-queries[=file_name]选项启 ...
- MySQL数据库常用命令_常用SQL语句及命令_MySQL常用语句
文章目录 一.常用的 SQL 语句 (一)查看当前登录用户 (二)查看当前数据库 (三)如何查看全部用户? (四)创建数据库 (五)选择要操作的数据库 (六)创建表 (七)查看表的结构 (八)往表中插 ...
- MySQL基本的SELECT语句,SQL语言概述,基础和重要不冲突,完整详细可收藏
文章目录 1.SQL语言的分类 2.SQL语言的规则与规范 3.基本的SELECT语句 4.DESCRIBE显示表结构 5.WHERE过滤数据 1.SQL语言的分类 SQL语言在功能上主要分为如下3大 ...
- 【mysql技术内幕1】mysql基础架构-一条SQL查询语句是如何执行的
文章目录 1 一条SQL查询语句是如何执行的 2 mysql体系结构 3 InnoDB存储引擎 4 总结 1 一条SQL查询语句是如何执行的 通常我们使用数据库,都是将数据库看成一个整体,我们的应 ...
- mysql命令书写顺序_MySQL SQL语句书写顺序和执行顺序
SQL语句书写顺序和执行顺序 (7) SELECT (8) DISTINCT (1) FROM (3) JOIN (2) ON (4) WHERE (5) GROUP BY (6) HAVING (9 ...
- mysql select call_MySQL的SQL语句 - 数据操作语句(1)- CALL 语句
CALL 语句 1. CALL sp_name([parameter[,...]]) 1. CALL sp_name[()] CALL 语句调用 CREATE PROCEDURE 定义的存储过程. 如 ...
- mysql面试题sql语句_数据库MySQL经典面试题之SQL语句
数据库MySQL经典面试题之SQL语句 1.需要数据库表1.学生表 Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 出生年月,Ssex ...
最新文章
- 自然语言处理十问!独家福利
- ICRA 2022 | 基于多模态变分自编码器的任意时刻三维物体重建
- vba excel 开发游戏_为什么要学习VBA?
- 018_Session
- Qt CheckBox的使用
- java不可编辑的文本框_如何使编辑文本不可编辑,但在JAVA中可点击
- boost::make_ready_future相关的测试程序
- 数据结构 【实验7 二叉树基本操作】
- Linux云服务器安装Redis并设置远程连接设置开机自启
- 使用 python 的 urllib2和 urllib模块爆破 form 表单的简易脚本
- python里面的list
- 训练日志 2019.1.26
- 【原创】MySQL里求给定的时间是所在月份的第几个礼拜
- OpenGL C#绘图环境配置
- 计算机二级分省和国家吗,计算机国家二级和省二级有什么区别?
- 中国的网站能活几天?
- 【Spring】概述及IOC理论推导
- Excel十八个快捷键
- 2021前端经典面试题
- 糖尿病性视网膜病变分级诊断