六、mysql查询(二) | 您所在的位置:网站首页 › 怎么查找学号少一位 › 六、mysql查询(二) |
本文转载至微信公众号:我们都是小青蛙 一、数据准备学生基本信息表: 学号姓名性别身份证号学院专业入学时间20180101杜子腾男15817719901044792计算机学院计算机科学与工程2018-09-0120180102杜琦燕女151008199801178529计算机学院计算机科学与工程2018-09-0120180103范统男17156319980116959X计算机学院软件工程2018-09-0120180104史珍香女141992199701078600计算机学院软件工程2018-09-0120180105范剑男181048200008156368航天学院飞行器设计2018-09-0120180106朱逸群男197995199801078445航海学院电子信息2018-09-01学生成绩表: 学号科目成绩20180101母猪的产后护理7820180101论萨达姆的战争准备8820180102母猪的产后护理10020180102论萨达姆的战争准备8820180103母猪的产后护理5920180103论萨达姆的战争准备6120180104母猪的产后护理5520180104论萨达姆的战争准备46 二、 简单搜索条件 where子句我们需要把搜索条件放在WHERE语句中,比如我们想查询student_info表中名字是范剑的学生的一些信息,可以这么写:
这样就可以查出学号不在20180102~20180104这个区间内的所有学生信息。 多值匹配有时候指定的匹配值并不是单个值,而是一个列表,只要匹配到列表中的某一项就算匹配成功,这种情况可以使用IN操作符:
我们前边说过,NULL代表没有值,意味着你并不知道该列应该填入什么数据,在判断某一列是否为NULL的时候并不能单纯的使用=操作符,而是需要专业判断值是否是NULL的操作符:
由于所有记录的name列都不是NULL值,所以最后结果是空的,我们看一下查询name列不是NULL值的方式:
再次强调一遍,不能直接使用普通的操作符来与NULL值进行比较,必须使用IS NULL或者IS NOT NULL! 三、多个搜索条件的查询上边介绍的都是指定单个的搜索条件的查询,我们也可以在一次查询中指定多个搜索条件。 AND操作符在给定多个搜索条件的时候,我们有时需要某条记录只有在符合所有搜索条件的时候,这条记录才可以被加入到结果集当中,这种情况我们可以使用AND操作符来连接多个搜索条件。比如我们想从student_score表中找出科目为’母猪的产后护理’并且成绩大于75分的记录,可以这么写:
在给定多个搜索条件的时候,我们有时需要某条记录在符合某一个搜索条件的时候,这条记录就可以被加入到结果集当中,这种情况我们可以使用OR操作符来连接多个搜索条件。比如我们想从student_score表中找出成绩大于95分或者小于55分的记录,可以这么写:
如果我们需要在某个查询中指定很多的搜索条件,比方说我们想从student_score表中找出课程为’论萨达姆的战争准备’,并且成绩大于95分或者小于55分的记录,那我们可能会这么写:
score > 95 OR score < 55 AND subject = ‘论萨达姆的战争准备’ 可以被看作下边这两个条件中任一条件成立则整个式子成立: score > 95 score < 55 AND subject = ‘论萨达姆的战争准备’ 因为结果集中subject是’母猪的产后护理’的记录中score值为100,符合第1个条件,所以整条记录会被加到结果集中。为了避免这种尴尬,在一个查询中有多个搜索条件时最好使用小括号()来显式的指定各个搜索条件的执行顺序,比如上边的例子可以写成下边这样: 有时候我们并不能精确的描述我们要查询的东西,比方说我们只是想看看姓’杜’的学生信息,而不能精确的描述出这些姓’杜’的同学的完整姓名,我们称这种查询为模糊查询。MySQL中使用下边这两个操作符来支持模糊查询: 操作符 示例 描述 LIKEa LIKE ba匹配bNOT LIKEa NOT LIKE ba不匹配b既然我们不能完整描述要查询的信息,那就用某个符号来替代这些模糊的信息,这个符号就被称为通配符。MySQL中支持下边这两个通配符: %:代表任意一个字符串。 比方说我们想查询student_info表中name以’杜’开头的记录,我们可以这样写:
有的时候我们知道要查询的字符串中有多少个字符,而使用%时匹配的范围太大,我们就可以用_来做通配符。就像是支付宝的万能福卡,一张万能福卡能且只能代表任意一张福卡(也就是它不能代表多张福卡)。 比方说我们想查询姓’范’,并且姓名只有2个字符的记录,可以这么写:
这是因为一个_只能代表一个字符(%是代表任意一个字符串),并且student_info表中并没有姓’杜’并且姓名长度是2个字符的记录,所以这么写是查不出东西的。 转义通配符如果我们匹配的字符串中就包含普通字符’%‘或者’_'该咋办,怎么区分它是一个通配符还是一个普通字符呢? 答:如果匹配字符串中需要普通字符’%‘或者’_'的话,需要在它们前边加一个反斜杠\以和通配符区分开来: ‘%‘代表普通字符’%’ ‘_‘代表普通字符’_’ 比方说这样: mysql> SELECT number, name, id_number, major FROM student_info WHERE name LIKE '范\_'; Empty set (0.00 sec) mysql>由于student_info表中没有叫范_的学生,所以查询结果为空。 通配符注意事项使用通配符时需要特别注意一下,通配符不能代表NULL,如果需要匹配NULL的话,需要使用IS NULL或者IS NOT NULL! 四、总结我们需要将搜索条件放到WHERE子句中。针对不同的搜索条件,MySQL提供了非常丰富的操作符。 如果某一列可以匹配的值有多个,可以使用IN或者NOT IN操作符。 判断某个列的值是不是NULL,需要用IS NULL或者IS NOT NULL操作符。 我们可以将多个简单的搜索条件合并在一起组成一个更大搜索条件,各个简单的搜索条件可以用下边的几种操作符连接起来: AND操作符:该操作符两边的搜索条件全部满足后整个搜索条件才算满足。 OR操作符:该操作符两边的搜索条件只需要满足一个整个搜索条件就满足了 %代表任意一个字符串,_代表任意一个字符。如果需要把这两个通配符当作pu t不过需要特别注意的是,通配符不能代表NULL,如果需要匹配NULL的话,需要使用IS NULL或者IS NOT NULL! |
CopyRight 2018-2019 实验室设备网 版权所有 |