加入收藏 | 设为首页 | 会员中心 | 我要投稿 航空爱好网 (https://www.dakongjun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

mysql的sql语句where,SQL之WHERE语句

发布时间:2022-10-15 16:03:49 所属栏目:MsSql教程 来源:
导读:  SQL语句是数据库查询语句,可以应用在各种数据库操作软件中,比如Mysql,Oracle,因此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数据量小时Mssql基本语句,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
 

(编辑:航空爱好网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!