目录
3、比较运算符 等于、不等于、小于、大于、between and
- CREATE TABLE student (
- id int NOT NULL AUTO_INCREMENT COMMENT '主键',
- code varchar(255) NOT NULL COMMENT '学号',
- name varchar(255) DEFAULT NULL COMMENT '姓名',
- sex enum('男','女') DEFAULT NULL COMMENT '性别',
- PRIMARY KEY (`id`)
- )
前边我们学会了使用SELECT关键字来查询简单的数据,使用where来筛选数据,实际上SELECT语句后边还能接很多查询子句以达到不同的效果,其中查询语句必不可少的就是SELECT关键字,以下语句后续基本都会讲到

尽管mysql命令行工具为查询所返回的每个列提供了默认标签,但或许你希望使用自己定义的标签。如果表中的列名定义十分简短并且含义模糊,可以为该列赋予新标签。同样,如果在结果集中包含了根据表达式或内建函数调用产生的列,那么也可以为这些列定义一个标签。通过在select子句中的每个元素后面增加列别名可以实现此目的。表的别命名则可以有效的简化sql语句。 表和列的别命名只需要在后边加上别命名的名称就好,列别命名后边可以加as,当然as是可以省略掉的。

mysql支持以下比较运算符

唯一需要介绍以下的可能就是 between操作符了,当需要同时限制范围的上限和下限时,可以选择使用between操作符联合and构建一个查询条件,而不需要两个单独的限制条件。如查询学号为202202至202204的学生,则可以这么写

当使用between操作符时,需要注意下面的事项,即必须首先指定范围的下限(在between后面),然后指定范围的上限(在and的后面)。如果错误地指定了它们出现的次序,则会查不到结果,这是因为服务端实际上根据该条件产生了两个使用<=和>=操作符的条件。


当然 and 和or可以同时使用,如果同时使用则需要加上括号来明确意图


NOT操作符 NOT则是取相反的数据 可以组合使用 not in()not null等,当然也可以与 and or一起使用

- -- 名字以"小"开头(小xxx)
- SELECT a.* from student a where a.name like '小%';
- -- 以"张"开头"飞"结尾(张xxx飞)
- SELECT a.* from student a where a.name like '张%飞';
-
- -- 以"三"结尾(xxx三)
- SELECT a.* from student a where a.name like '%三';
- -- 中间包含"三" 的数据(xxx三xxx)
- SELECT a.* from student a where a.name like '%三%';
- -- 基本字符匹配
- SELECT * from student where name REGEXP '张';
- -- 进行OR匹配
- SELECT * from student where name REGEXP '张|小';
- -- 匹配几个字符之一
-
- SELECT * from student where name REGEXP '[张 小]三'; ['张'|'小']三
- -- 匹配范围
- SELECT * from student where code REGEXP '20220[1-4]';
如 查询学号为8位的学生信息
SELECT * from student where code REGEXP '[:digit:]{8}';
- -- 根据 code 倒序
- SELECT * from student a ORDER BY a.code desc ;

- -- 根据 code倒序,再根据name正序
- SELECT * from student a ORDER BY a.code desc , a.name ;
- -- 根据 code倒序,再根据name正序
- SELECT a.code,a.name from student a ORDER BY 1 desc , 2 ;

LIMIT
SELECT语句返回所有匹配的行,它们可能是指定表中的每个行。为了返回第一行或前几行,可使用LIMIT子句。带一个值的LIMIT总是从第一行开始,给出的数为返回的行数。带两个值的LIMIT可以指定从行号为第一个值的位置开始
- -- 根据 code 倒序,取前三条数据
- SELECT * from student a ORDER BY a.code desc LIMIT 3 ;
- -- 根据 code 倒序,取前三条数据,从第二条开始取两条数据
- SELECT * from student a ORDER BY a.code desc LIMIT 1,2;