目录

数据库基础知识之数据类型

目录

数据库基础知识之数据类型

mysql常用数据类型

https://i-blog.csdnimg.cn/blog_migrate/0453e02a646bc4b4a669fc5c1bf25339.png

一、数值类型(整型、浮点型)

1、整型

https://i-blog.csdnimg.cn/blog_migrate/48afa68499f9cb035d4dd25d9d066bf9.png

eg:添加一个表格:点击表——添加字段——名称——类型,年龄age是tinyint类型,要在下方勾选无符号,因为年龄都是正数,不存在负数一说,所以不需要符号。

https://i-blog.csdnimg.cn/blog_migrate/f8a3e62d12a5024e7ce6cf392b0152b3.png 点击保存,然后输入表名,比如t1,就出现了t1

https://i-blog.csdnimg.cn/blog_migrate/f5ca39a0e6d351c4a331138d0b9db665.png https://i-blog.csdnimg.cn/blog_migrate/8d037985a95dc1539e59e3b2136c7ede.png

然后双击表里面的null就可以修改值了

https://i-blog.csdnimg.cn/blog_migrate/86c5f9d08d78209e07a965b657b5ae58.png

如果在年龄里写了一个负数,再按ctrl+s保存,就会报错:

https://i-blog.csdnimg.cn/blog_migrate/140480be16a0f2fdabbaa3d95ce874ad.png

由于范围是0-255,所以当写了256时,也会报错:

https://i-blog.csdnimg.cn/blog_migrate/03ce62e79458267e76bc8998040a7ff5.png

2、浮点型

https://i-blog.csdnimg.cn/blog_migrate/96cc44b1f5b9ce2b3e18d500450f869b.png

eg:想添加一个money字段,用float类型,可以点击右键,设计表

https://i-blog.csdnimg.cn/blog_migrate/0966440d1d398256f8eda9a7e36db87c.png

点击添加字段,名称为money,类型float,长度就是m,小数位数就是n。最后保存就可以了。

https://i-blog.csdnimg.cn/blog_migrate/b7c1023b875a826faec1ceebfba3dbee.png

然后查看表,money就添加进去了

https://i-blog.csdnimg.cn/blog_migrate/043260bbac59ede2ebf489b3ac82c743.png

双击null就可以输入数

https://i-blog.csdnimg.cn/blog_migrate/765f343cb4a135c4549f8aac7cc843ee.png

eg: 整数3位,小数2位

https://i-blog.csdnimg.cn/blog_migrate/9087bb832ebfec217f0869c972274711.png

保存后,就会四舍五入,因为规定的位数是m=5,n=2.

https://i-blog.csdnimg.cn/blog_migrate/aac430a073484d311fc86c36f832383b.png

二、字符类型

https://i-blog.csdnimg.cn/blog_migrate/df6a565859518205e171d2f5e1a67c2c.png 假如同时 指定10个宽度 的这样一个范围,只存A这样一个字符,在 char中,会开辟10个字符的一个储存空间,来存放一个字符A,剩余的9个字符空着放那,别的字符也不可以使用。

所以char比较 浪费存储空间

, 而 varchar 中 ,他 会根据我们存放的字符的长度来开辟存储空间 。图中只放了一个A字符,所以只开辟一个字符空间。varchar比较 节省空间

性能 指的是,char中开辟10个字符,他会10个10个的开辟存储空间,比较节省时间。而在varchar中,需要专门计算一下这个字符的长度是多少,比较浪费时间,性能相对低一点。

第三种text是专门存储文本信息的,不用指定宽度。

三、枚举类型

https://i-blog.csdnimg.cn/blog_migrate/09548ffd8ef108c03a5ab8e4dc3e364d.png

在单选里,虽然有多个值,但是只能选其中一个值

eg:在表里添加性别和名字:名字的类型是varchar,性别的类型是enum,需要在下方值中添加选项,男,女,未知等。

https://i-blog.csdnimg.cn/blog_migrate/6cfea53afdc858fa15e1de19da16b967.png

刷新之后,添加的字段就出来了

https://i-blog.csdnimg.cn/blog_migrate/8f235f807f51eb6defe7487015dc0f7e.png

点击sex就可以选择男、女、未知等

接着再添加一个爱好hobby,点击t1——选择表——添加字段——输入hobby——值——添加。

https://i-blog.csdnimg.cn/blog_migrate/449be7c22ced6147538985e94250359e.png 保存后,重新打开表,就可以选择爱好了,

https://i-blog.csdnimg.cn/blog_migrate/e9df4f7778d9f1fc55afe363571d8f8f.png

四、日期时间类型

1、数据类型

https://i-blog.csdnimg.cn/blog_migrate/3ef1e195e7dadcd68e425e2b8a3eb184.png

date里面  Y是年,M是月,D是天,即年月日;time里面 H是时,M是分,S是秒 ,即时分秒。

eg:表中的money是充值金额,接着记录一下充值时间,先添加一个时间字段,类型是datetime,

https://i-blog.csdnimg.cn/blog_migrate/f9197c596870e38ff924bb4ef059b57b.png

然后刷新表格,再打开,就有了shijian,选择时间就行

https://i-blog.csdnimg.cn/blog_migrate/054d689d48948b0a75c65ce4e3bc47c6.png

2、日期时间函数

https://i-blog.csdnimg.cn/blog_migrate/b9b01ef18602ac0bd512b9f6a4fa15c7.png

这6个函数就是mysql自带的函数

(1)显示当前时间:新建查询,这里是db1表中的时间,输入: SELECT NOW(),

下面就是显示的时间。

https://i-blog.csdnimg.cn/blog_migrate/92df62720e45a92da299503262876a81.png

(2)显示当前日期和时间

https://i-blog.csdnimg.cn/blog_migrate/c2a5432ce637ea2865134514cb9f63e5.png

https://i-blog.csdnimg.cn/blog_migrate/0bbc776e4fa37e5ad1f7090d5b1a7574.png

(3)返回指定时间

https://i-blog.csdnimg.cn/blog_migrate/902da56f1b874b9e0ec99098774a71e5.png 年是2020

https://i-blog.csdnimg.cn/blog_migrate/095e4ec54728b6c4f790a6f6c05c7315.png 月是1月16

https://i-blog.csdnimg.cn/blog_migrate/2446d92f0d2fd98902be85b8586c6679.png 秒是0

除此之外,还可以查询在这一天有那些人充值了,可以把时间字段中的一个date信息提取出来

https://i-blog.csdnimg.cn/blog_migrate/d4d53fbde64519cfab4db2bbe431e191.png

在t2表格里有多个时间信息,那么我想查在2020年1月16号这一天有哪些人充值了

https://i-blog.csdnimg.cn/blog_migrate/c5b82ca5bd58e9dcd94d61abb06f1fa1.png

输入  select * from t2 date(shijian)=‘2020-01-16’;   就可以得到下图信息

https://i-blog.csdnimg.cn/blog_migrate/4cbe56f61ca930b24d3861b6fca9629c.png

3、日期时间的运算

https://i-blog.csdnimg.cn/blog_migrate/36ee4ddb4710abee70b716e4941c0302.png

这里的运算符指的是>,<,= ;

中间是一个减号;

INTERVAL就是间隔的意思;

时间间隔单位是一天,或者一个小时,或者几个小时,或者年,分钟,月等为单位进行描述。

eg: 查询一天以内的记录: SELECT * FROM

t2

WHERE

shijian > (now()

  • INTERVAL 1 day);

now返回的是当前的时间,INTERVAL就是间隔,减一天的时间就是得到了一天以前的这个时间,查询一天的纪录就表示对于这个一天以前的这个时间点来说,之后的一个时间,所以在这里选择大于就可以了。

https://i-blog.csdnimg.cn/blog_migrate/c3a3f7736994d6517a8201bc3cf64671.png

难点就是要找时间点,然后分辨是大于,小于,还是等于。

eg:查询一年以前的记录: SELECT * FROM

t2

WHERE

shijian < (now()

  • INTERVAL 1 year);

https://i-blog.csdnimg.cn/blog_migrate/700a381da878470a99cc3a15e15ce983.png

最后,本次总结就是

https://i-blog.csdnimg.cn/blog_migrate/6fa7ad6e7db83f5db3d405e57ea94c05.png