00026.03 mysql的数据类型、导入执行备份的sql脚本、运算符、字符串的定长、变长、时间格式、各种查询等等、

3 篇文章 0 订阅

系列文章目录

前言

接上一篇

一、mysql的数据类型

常用的数据类型有:
整型(xxxint)
位类型(bit)
浮点型(float和double、real)
定点数(decimal,numeric)
日期时间类型(date,time,datetime,year)
字符串(char,varchar,xxxtext)
二进制数据(xxxBlob、xxbinary)
枚举(enum)
集合(set)

1、整数系列

TINYINT:非常小的整数,类似于Java的byte类型
SMALLINT:小整数,类似于Java的short类型
MEDIUMINT:中整数,Java没有对应,因为它是3个字节,java中没有3个字节的数据类型
INT、INTEGER:整数,类似于Java的int类型
BIGINT:大整数,类似于Java的long类型
一般我们最常用的就是 INT 和 BIGINT
使用int数据类型:
(1)int,等价于int(11)
(2)int(M) 比如 int(5):M表示宽度,需要结合另外的两个参数使用(unsigned和zerofill),
unsigned:表示无符号,即没有负数
zerofill:表示用0填充
例如:int(5) unsigned zerofill,表示每一个整数有5位数字,如果不足5位的在左边用0凑够5位
如果只是单独int(5),那是不会起作用。
无论:int的宽度指定为多少,在内存中都是占4个字节,如果你的数字超过了int(5)也可以存储

2、浮点小数

跟java中一样
float:4个字节
double:8个字节

跟java不一样的地方
使用float和double时:
(1)float或double
(2)float(M,D),double(M,D):M表示总位数,D表示精度,即小数点几位
例如:double(5,2)表示的数据范围[-999.99,999.99],如果超过这个范围会报错。
意思是 一共是 5位 小数点后 是2 位也就是说是 -999.99 到 +999.99

3、定点小数

类似于Java的BigDecimal,底层使用字符串存储

DECIMAL
DECIMAL(M,D)

4、日期时间类型

date:只能表示日期
time:表示时间
datetime:表示日期和时间
year:表示年
timestamp:时间戳,表示日期和时间
在这里插入图片描述
如果只是存日期,就用date
需要用到时间,再用 datetime,表示日期和时间
datetime和timestamp:
(1)timestamp实际存储的毫秒值,显示时,显示根据毫秒值算出来一个本地化的日期时间
datetime就是存储日期时间
(2)timestamp因为存储的毫秒值,所以在比较和计算时,效率比较高。
(3)datetime和timestamp可以表示的时间范围是不同的
在这里插入图片描述

5、字符串

强调:mysql没有单字符类型,只有字符串类型
在这里插入图片描述
即数据库里面的char 数据类型,在java当中 你还是得用 String 类型来接收

char:定长字符串,长度[1,255]
char,char(1),长度为1个字符
char(10),长度为10个字符
varchar:变长字符串
varchar(M):必须指定M,这个M的意思是最长不超过M个字符
例如:varchar(20),最长不超过20个字符

text:长文本
一般用于存储,文字比较多的,简介等,又不经常检索的信息

char和varchar
(1)内存占用空间不同
char(M):M字符就占M个字符的空间(实际几个字符就占用几个字符的空间)
例如:char(2) 实际存储的是’男’,但是也是占2个字符的位置,那一个空的字符存储的是\u0000
varchar:实际几个字符 + 1/2个字节的空间
例如:varchar(20) 实际存储的是’张三’,占的2个字符 + 1/2个字节(用来记录实际的字符个数的)
(2)优缺点:
varchar节省空间,但是每次存和取,都要数字符个数
char:看起来浪费空间,但是每次存和取,都按照固定的长度去处理的

建议:像身份证号,学号,邮编等定长的字符串使用char(定长字符串),例如:地址等使用变长的varchar
现在mysql的版本对varchar优化的越来越快了。

6、位类型(了解)

二进制的位类型,BIT(M)类型允许存储M位值。M范围为1~64,默认为1

7、blob系列类型(了解)

BINARY和VARBINARY类型类似于CHAR和VARCHAR类型,但是不同的是,它们存储的不是字符字符串,而是二进制串。所以它们没有字符集

8、枚举(ENUM)

多个中选择一个

9、集合

多个中可以选择多个

二、导入执行备份的sql脚本

因为没有数据,我们不好测试,所以我们要解决这个问题
导入执行备份的sql脚本
在这里插入图片描述
在这里插入图片描述
在mysql里面 --和 # 都表示注释
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
验证是否导入成功了:
在这里插入图片描述
查看某个表的数据
在这里插入图片描述
在这里插入图片描述

one、导入
1、登录mysql后
2、导入执行sql脚本
mysql> source sql文件的路径名
例如:mysql> source d:/mysqldb.sql

two、导出数据库备份
不用登录,直接在命令行
mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 > 文件名.sql
例如:
mysqldump -hlocalhost -P3306 -uroot -p123456 --database test > D:\mysqldb.sql

三、mysql的运算符

1、算术运算符

+:加
-:减
*:乘
/:除 可以保留小数部分
div:除 如果整数与整数相除只保留整数部分
%:求余数
mod:求余数

实例:
select 1/2; #0.5
select 1 div 2; #0

2、比较运算符

比如 >:大于

<:小于

=:等于 注意区别,Java中是==,mysql中是=

比如 >=:大于等于

<=:小于等于

!=:不等于

<>:不等于

<=>:安全等于 用于判断null值的比较运算符

	null值的判断,习惯上我们用is null 和is not null

在这里插入图片描述
实例:
#查询薪资大于20000元的员工
select * from t_employee where salary > 20000;

#查询所有男员工
select * from t_employee where gender = ‘男’;
select * from t_employee where gender != ‘女’;
select * from t_employee where gender <> ‘女’;

#查询奖金比例commision_pct是null的员工
select * from t_employee where commission_pct <=> null;
select * from t_employee where commission_pct is null;

3、逻辑运算符

&&和and:逻辑与
两个条件同时满足
||和or:逻辑或
两个条件满足任意一个
^和xor:逻辑异或
两个条件只能满足其中一个
!和not:
不满足xx条件

实例:
#查询薪资大于20000元的女员工
select * from t_employee where salary > 20000 && gender = ‘女’;
select * from t_employee where salary > 20000 and gender = ‘女’;

#查询男员工
select * from t_employee where not gender = ‘女’;
select * from t_employee where !(gender = ‘女’);

#查询薪资大于10000 异或 性别是男的,即它俩只能满足一个
#即查询薪资大于10000的女的或薪资低于10000的男的
select * from t_employee where salary>10000 ^ gender =‘男’;
select * from t_employee where salary>10000 xor gender =‘男’;

4、范围

(1)区间范围:
在[a,b]之间,between a and b
不在[a,b]之间,not between a and b
(2)集合范围
in(…)
not in(…)
实例:
#查询薪资在[15000,20000]之间的员工
select * from t_employee where salary between 15000 and 20000;
select * from t_employee where salary >= 15000 and salary <=20000;

#查询薪资在9000,10000,12000
select * from t_employee where salary in(9000,10000,12000);
select * from t_employee where salary =9000 || salary =10000 || salary =12000;

5、模糊查询

like ‘%x%’ x代表确定的字符 %表示不确定的0~n个字符
‘_x%’ x代表确定的字符 _表示确定的1个字符
*/
#查询,名字ename中包含“冰”这个字的员工
select * from t_employee where ename like ‘%冰%’;

#查询,名字ename是张xx,三个字
select * from t_employee where ename like ‘张__’;

#查询,名字ename是第二个字是’冰’
select * from t_employee where ename like ‘_冰%’;

总结

知识挺多,加油打工人

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值