数据库学习笔记(四)-----列的类型定义(上)


一、整形类型

整数类型是数据库中最基本的数据类型。标准SQL中支持INTEGER和SMALLINT这两种数据类型。MySQL数据库除了支持这两种类型以外,还扩展支持了TINYINT、MEDIUMINT和BIGINT。下表是不同整数类型之间的比对。

1.类型名称后面的小括号

该小括号的作用是指定显示宽度(并不是该类型占用字节数!)。如果不显示指定宽度则默认为tinyint(3)、 smallint(5)、 mediumint(8)、 int(11) 和 bigint(20)。一般配合 zerofill 使用,顾名思义,zerofill 就是用“0”填充的意思,也就是在数字位数不够的空间用字符“0”填满。

举例:

 use garden_baby;	#选择garden_baby这个数据库
 
 #创建一个名为baby2的数据表,id列元素不足五位的用0补齐
 create table baby2(id integer(5) zerofill,name varchar(128),age int);
 	
 insert into baby2 values(1,"玛卡巴卡",19);	#插入数据
 insert into baby2 values(2,"唔西迪西",19);	
 select *from baby2;	#查询baby2数据表

结果如下:
在这里插入图片描述

2.UNSIGNED(无符号)

如果需要在字段里面保存非负数或者需要较大的上限值时,可以用此选项,它的取值范围是正常值的下限取 0,上限取原值的 2 倍,例如,tinyint 有符号范围是-128~+127,而无符号范围是 0~255。如果一个列指定为 zerofill,则 MySQL 自动为该列添加 UNSIGNED 属性。

举例:

#创建表baby3,id类型为int unsigned
create table baby3(id integer(5) unsigned,name varchar(128),age int);
#创建表baby4,id类型为int unsigned
create table baby4(id integer(5) zerofill,name varchar(128),age int);
desc baby3;	#描述表baby3
desc baby4;	#描述表baby4

结果如下:
在这里插入图片描述
我们可以清楚看到,id行的类型均为unsigned类型。

3.AUTO_INCREMENT

在需要产生唯一标识符或顺序值时,可利用此属性,这个属性只用于整数类型。AUTO_INCREMENT 值一般从 1 开始,每行增加 1。 一个表中最多只能有一个 AUTO_INCREMENT列 。对于任何想要使用 AUTO_INCREMENT 的列,应该定义为 NOT NULL,并定义为 PRIMARY KEY 或定义为UNIQUE 键。
举例:

use garden_baby;
#创建表baby5, id 具有自增长属性
create table baby5(id integer auto_increment UNIQUE,name varchar(128),age int);
#创建表baby6, id 具有自增长属性
create table baby6(id integer auto_increment PRIMARY KEY,name varchar(128),age int);
insert into baby5 values(6,"玛卡巴卡",19);

#只在name列与age列插入元素
insert into baby5 (name,age) values("唔西迪西",19);	
select * from baby5;

在这里插入图片描述

insert into baby5 values(10,"伊古比古",19);
insert into baby5 (name,age) values("汤姆布利柏",19);
select * from baby5;

在这里插入图片描述
通过上方两幅图我们还可以知道,id列永远是从该列最大值处开始加1的。

二、浮点类型和定点数类型

数据表中用浮点数类型和定点数类型来表示小数。浮点数类型包括单精度浮点数(FLOAT型)和双精度浮点数(DOUBLE型)。定点数类型就是DECIMAL型。
在这里插入图片描述
三种类型的区别:
1.float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值,float和double都是浮点型,而decimal是定点型;

2.MySQL 浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度,如float(7,4)的 可显示为-999.9999,MySQL保存值时进行四舍五入,如果插入999.00009,则结果为999.0001。对于decimal,M是最大位数(精度),范围是1到65。可不指定,默认值是10。D是小数点右边的位数(小数位)。范围是0到30,并且不能大于M,可不指定,默认值是0。(注:浮点型指定位数在后面版本将会移除)

3.FLOAT和DOUBLE在不指定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0,即(10, 0)。

(注:当我们需要存储小数,并且有精度要求,比如存储金额时,建议使用DECIMAL字段类型!)
举例:

create database digital;
create table digital_demo(f1 float, do1 double, de1 decimal);
insert into digital_demo values(2.11111111111111111,2.11111111111111111,2.11111111111111111);
select * from digital_demo;

在这里插入图片描述
decimal 默认情况下保留0位小数

#保留11位数,其中包含10位小数
create table digital_demo2(f1 float(11,10), do1 double(11,10), de1 decimal(11,10));	
show warnings;	#查看警告
insert into digital_demo2 values(2.11111111111111111,2.11111111111111111,2.11111111111111111);
select * from digital_demo2;

在这里插入图片描述

warnings指出,浮点型指定位数在后面版本将会移除。

三、日期和时间类型

日期与时间类型是为了方便在数据库中存储日期和时间而设计的,数据库有多种表示日期和时间的数据类型。其中,YEAR类型表示年,DATE类型表示日期,TIME类型表示时间,DATETIME和TIMESTAMP表示日期和时间。
在这里插入图片描述
每种日期与时间类型都有一个有效范围。如果插入的值超过了这个范围,系统就会报错,并将零值插入到数据库中。不同的日期与时间类型均有不同的零值.插入日期时间时,日期年月日和时间时分秒可以使用 “: - _ / ”中的任意字符来分隔,但是如果是只有时间,只能使用“:”来分隔。

举例:

#创建获取时间的数据库
create database data;
use data;
create table data_demo(e_date date, e_datetime datetime, e_timestamptimestamp, e_time time, e_year year);
insert into data_demo values('2020-5-9', '2020-5-9 15:01:00', '2020-05-09 15:01:00', '15:56:01', 2011);
insert into data_demo values('2020_5/9', '2020:5-9 15/01-00', '2020:05/09 15-01_00',  '15:56:01', '2011');
select * from data_demo;

结果如下:
在这里插入图片描述
MySQL常用的时间函数:

1.CURDATE() - 获得当前的DATE, 可直接插入DATE 类型中.

2.NOW() - 获得当前的DATETIME, 可直接插入DATETIME 和TIMESTAMP类型中.

3.TIME() - 获取参数给定时间串中的时分秒,可直接插入TIME 类型中.

4.YEAR() - 获取参数给定时间串中的年份,可直接插入YEAR类型中.

5.MONTH() 、DAY()、HOUR()、MINUTE()、SECOND() 获取参数给定时间串中的月、日、时、分、秒值.

举例:

#使用MySQL的时间函数获取当前时间
insert into data_demo values(CURDATE(), NOW(), NOW(), time(NOW()), YEAR(NOW()));
select * from data_demo;

结果如下(红色方框中即为获取的系统时间):
在这里插入图片描述


总结

以上内容如若有误,还请不吝赐教,持续更新中…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值