MySQL运算符主要包括3大类:算数运算符、比较运算符和逻辑运算符。
算数运算符
加“+”,减“-”,乘“*”,除“/”,求余“%”
比较运算符
运算符 | 写法 | 说明 |
---|---|---|
= | a=b | 如果a=b,则返回1,否则返回0 |
!= 或者 <> | a!=b 或者a<>b | 如果a和b不相等则返回1,否则false返回0 |
< | a<b | 如果a小于b则返回1,否则返回0 |
> | a>b | 如果a大于b则返回1,否则返回0 |
<= | a<=b | 如果a<=b则返回1,否则返回0 |
>= | a>=b | 如果a>=b则返回1,否则返回0 |
in 或者 not in
- in用来判断某个列的取值是否为指定的值,指定的指定的值是离散的值,不是连续的值。
例如:
select * from tb_user where age in/not in(20,25,28);
select * from tb_user where name in('陈信宏','玛甜甜');
between 或者 and
- 用于判断数据是否在**指定范围(连续)**内。
例如:
select * from tb_user where age>=20 and age<=30;
select * from tb_user where age between 20 and 30;
select * from tb_user where age not between 20 and 30;
like 或者 not like
- 主要用于字符串类型数据的模糊查询,与通配符_和%一起用。
select * from tb_user where name like/not like "陈%";
regexp是在mysql中针对字符串类型经行正则式判断,它也有not regexp。
<=> 如果两数相同返回1,否则返回0。
is null 或者 not null
- 判断是否为空
逻辑运算符
逻辑运算符 | 语法 | 说明 |
---|---|---|
&& 或者 and | a and b 或者 a&&b | 逻辑与运算,如果a、b都问true则返回true,否则返回false。查询满足a和b的信息 |
ll或者 or | a ll b 或者 a or b | 逻辑或运算,查询满足a或者满足b的信息 |
not 或者 ! | not a 或者 !a | 逻辑非,如果操作数为false则结构为true。查询不满足a的信息 |
注:distinct自动去除重复值,all显示所有数据
如果auto_increment到达上限时MySQL如何处理?
auto_incerement默认从1 开始,上限取决于列的数据类型。如果表中id列已经有指定的值,则max(id)+1
insert into tb_student(2147483646,"玛莎");
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2147483646,"玛莎")' at line 1
mysql> insert into tb_student(id,name) values(2147483646,"玛莎");
Query OK, 1 row affected (0.01 sec)
mysql> insert into tb_student(name) values("怪兽");
Query OK, 1 row affected (0.01 sec)
select * from tb_student;
+------------+-----------+------+
| id | name | age |
+------------+-----------+------+
| 1 | 陈信宏 | 18 |
| 2147483646 | 玛莎 | NULL |
| 2147483647 | 怪兽 | NULL |
+------------+-----------+------+
3 rows in set (0.00 sec)
mysql> insert into tb_student(name) values("冠佑");
ERROR 1062 (23000): Duplicate entry '2147483647' for key 'PRIMARY' -- 再次生成的了最大值2147483647作为主键,主键冲突
删除怪兽后,数据库系统仍旧会记录已经生成过的数据,不会从新开始,而是玛莎id值的基础上继续加1。
如果需要重新开始生成连续整数,只能将表中所有数据删除。
删除整表:
truncate table tb_student; --删除整表数据,不能用delete from
建议:因为auto_increment生成数据是从1开始,不会出现负整数,所以一般建议使用bigint unsigned