- 整型系列:xxxInt3
int(M),必须和unsigned zerofill一起使用才有意义
- 浮点型系列:float,double(或real)
double(M,D):表示最长为M位,其中小数点后D位
例如:double(5,2)表示的数据范围[-999.99,999.99],如果超过这个范围会报错。
- 定点型系列:decimal(底层实际上是使用字符串进行存储)
decimal(M,D):表示最长为M位,其中小数点后D位
- 位类型:bit
字节范围是:1-8,值范围是:bit(1)~bit(64),默认bit(1) 将传入的数值转为二进制存入
用来存储二进制数。对于位字段,直接使用select命令将不会看到结果。可以使用bit()函数进行插入。插入bit类型字段时,使用bit()函数转为二进制值再插入,使用bin()函数进行读取。
2、日期时间类型日期时间类型:year, date, datetime, timestamp
注意一下每一种日期时间的表示范围
timestamp和datetime的区别:
-
timestamp范围比较小
-
timestamp和时区有关
- show variables like ‘time_zone’;
- set time_zone = ‘+9:00’;
-
表中的第一个非空的timestamp字段如果插入和更新为NULL则会自动设置为系统时间
MySQL中提供了多种对字符数据的存储类型,不同的版本可能有所差异。常见的有:
char,varchar,xxtext,binary,varbinary,xxblob,enum,set等等
- 字符串类型char,varchar(M)
char如果没有指定宽度,默认为1个字符
varchar(M),必须指定宽度
-
binary和varbinary类似于char和varchar,不同的是它们包含二进制字符串,不支持模糊查询之类的。
-
一般在保存少量字符串的时候,我们会选择char和varchar;而在保存较大文本时,通常会选择使用text或blob系列。blob和text值会引起一些性能问题,特别是在执行了大量的删除操作时,会在数据表中留下很大的“空洞”,为了提高性能,建议定期时候用optimize table功能对这类表进行碎片整理。可以使用合成的(Synthetic)索引来提高大文本字段的查询性能,如果需要对大文本字段进行模糊查询,MySql提供了前缀索引。但是仍然要在不必要的时候避免检索大型的blob或text值。
-
enum枚举类型,它的值范围需要在创建表时通过枚举方式显式指定,对于1~255个成员的枚举需要1个字节存储;对于255`65535个成员需要2个字节存储。例如:gender enum(‘男’,‘女’)。一次只能从枚举值中选择一个。
-
set集合类型,可以包含0~64个成员。一次可以从集合中选择多个成员。如果选择了1-8个成员的集合,占1个字节,依次占2个,3个。。8个字节。例如:hoppy set(‘吃饭’,‘睡觉’,‘玩游戏’,‘旅游’),选择时’吃饭,睡觉’或’睡觉,玩游戏,旅游’
+----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+----------------+
| eid | int(11) | NO | PRI | NULL | auto_increment |
| ename | varchar(20) | NO | | NULL | |
| tel | char(11) | NO | | NULL | |
| gender | char(1) | YES | | 男 | |
| salary | double | YES | | NULL | |
| commission_pct | double(3,2) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| hiredate | date | YES | | NULL | |
| job_id | int(11) | YES | | NULL | |
| email | varchar(32) | YES | | NULL | |
| mid | int(11) | YES | | NULL | |
| address | varchar(150) | YES | | NULL | |
| native_place | varchar(10) | YES | | NULL | |
| did | int(11) | YES | | NULL | |
+----------------+--------------+------+-----+---------+----------------+
MySQL运算符
语法
1、算术运算符
加:+
减:-
乘:*
除:/ div(只保留整数部分)
模:% mod
2、比较运算符
大于:>
小于:<
大于等于:>=
小于等于:
按位与:&
按位或:|
按位异或:^
按位取反:~
7、特殊的null值处理
#(1)判断时
xx is null
xx is not null
xx null
示例:
select 1+1;
select 1/2; #0.5
select 1 div 2; #0
#查询薪资大于2000元的员工
select * from tb_emp where salary > 2000;
#查询所有男员工
select * from tb_emp where gender = '男';
select * from tb_emp where gender != '女';
select * from tb_emp where gender '女';
#查询奖金比例comm 是null的员工
select * from tb_emp where comm null;
select * from tb_emp where comm is null;
#查询薪资大于2000 元的女员工
select * from tb_emp where salary > 2000 && gender = '女';
select * from tb_emp where salary > 2000 and gender = '女';
#查询男员工
select * from tb_emp where not gender = '女';
select * from tb_emp where !(gender = '女');
#查询薪资大于1000 异或 性别是男的,即它俩只能满足一个
#即查询薪资大于1000的女的或薪资低于1000的男的
select * from tb_emp where salary>1000 ^ gender ='男';
select * from tb_emp where salary>1000 xor gender ='男';
#查询薪资在[1500,2000 ]之间的员工
select * from tb_emp where salary between 1500 and 2000 ;
select * from tb_emp where salary >= 1500 and salary
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?