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 (编辑:航空爱好网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐

