运算符锦集
一、数值/字符比较:
数值比较可以比大小,字符比较只能比是否相同,一般都会用在where的条件当中,
举例如下:
1、查攻击力大于150的英雄的名字和攻击值。
写SQL语句的时候有一个技巧,可以先查看他的开头,然后再查看他的结尾,最后再看限定条件。查找的话肯定会用到select_from语句,后面就是查询的内容,中间就是where的限定条件。
查找的是名字和攻击值,所以不写*号:SELECT name,attack FROM hero WHERE attack>150;这里的attack>150就是数值比较。
表名这里是hero,运行结果如下:
2、将赵云的攻击力设置为360,防御值设置为68
这是一个修改指令,所以会用到UPDATE语句, UPDATE hero SET attack=360,defence=68 WHERE name="赵云";这里的name=赵云就是字符比较,
这是运行结果,然后再查看一下是否运行成功
SELECT * FROM hero WHERE name="赵云";
可以看到修改成功
二、逻辑比较运算符
1、查找攻击力高于200的魏国英雄名字和攻击值:
SELECT name,attack FROM hero WHERE attack>200 AND country="魏国"; 因为两个条件都要满足,所以中间用and。运行结果如下:
2:查找所有魏国和蜀国的英雄信息:
SELECT * FROM hero WHERE country="魏国" OR country="蜀国";查询的人可以是蜀国,也可以是魏国,所以用OR,运行结果如下:
三、范围内比较
1、WHERE 字段名 BETWEEN 值1 AND 值2; 值为数字
例1:查找攻击力介于100-200之间蜀国英雄的信息
SELECT * FROM hero WHERE attack BETWEEN 100 AND 200 AND country="蜀国";因为还有一个限定条件是蜀国,所以多了一个AND ,运行结果如下:
2、WHERE 字段名 IN (值1 , 值2....); 值为数字或字符
例2:查找id为1、3、或5的蜀国英雄和貂蝉的信息
这里要注意的是查找的是2快内容,一块是id为什么的蜀国影响,一块是貂蝉的信息:
SELECT * FROM hero WHERE id IN (1,3,5) AND country="蜀国" OR name="貂蝉" ; 中间用OR是因为我们查的这两部分的内容,第一部分如果满足我也需要,第二部分如果满足我也需要。
结果就展现出了我们需要的信息 。
id=5的美展现出来,因为5的国家是吴国,不属于蜀国,所以被过滤了
3、WHERE 字段名 NOT IN (值1 , 值2....);
例3:查找蜀国和吴国以外的女英雄信息
SELECT * FROM hero WHERE country NOT IN (“蜀国”,“魏国”) AND sex="女";运行结果如下:
需要强调的是,如果再where当中,使用了多个运算符的时候,运算符是存在一个优先级的,如果不清楚优先级可以用括号来明确,比如上面的id条件和国家的条件要先运行,就加括号:
表示先运算Id 和country ,然后再运行OR 的条件
四、匹配空/非空的运算符
1、空: WHERE 字段名 IS NULL ;
例:查找姓名为空的英雄信息,SELECT * FROM hero WHERE name IS NULL;运行结果如下:
2、非空: WHERE 字段名 IS NOT NULL ;
例:查找姓名为非空的英雄信息,SELECT * FROM hero WHERE name IS ONT NULL;
第8条记录为空,是因为他的名字是空的字符串,也就是无,并不是空,并不是说是NULL值,需要区分一下 ,可以对照文章开头的那个表格去区分以下
3、空字符串:SELECT * FROM 表名 WHERE 字段名="";
例:查找姓名为”“的英雄信息(这里的“” 代表是空的字符串)SELECT * FROM hero WHERE name="";结果如下:
表示这个名字的字符串里是0个字符
需要注意的是NULL表示的是空值,只能用 IS 或者 IS NOT 去匹配双引号里面的这个什么东西都没有的值;" " 表示空字符串,用 = 或者!= 去匹配
五、模糊比较
比如再查询某一些信息时,只记得它的一部分信息,这个时候就可以用模糊比较,或者说要查的信息当中有共同的一部分内容,也可以用模糊比较查询
格式:WHERE 字段名 LIKE 表达式(LIKE时MYSQL的一个关键词)
表达式:’ _ ’ :下划线匹配一个字符
‘%’ :百分号匹配零个或者多个字符。即 _匹配单个字符;%匹配0到多个字符
1、SELECT name FROM hero WHERE name LIKE '_%_' #name至少两个字符
展示结果为至少是2个字符的名字
2、SELECT name FROM hero WHERE name LIKE '%' #name至少有零个字符
0字符的名字叶展现出来了,
3、SELECT name FROM hero WHERE name LIKE '___' #name至少有三个字符
这里是三个下划线,,选出名字至少有三个字符的
4、SELECT name FROM hero WHERE name LIKE '赵%' #name第一个字符是'赵'
表示想查询的是姓是赵的这英雄的信息
匹配到了赵云这个人
5、SHOW TABLES LIKE 't%' # 首字母为't'的表
假如数据库里有多个表,我们想查询出首字母为t的表
这就查出来了