Mysql基本数据类型

MySQL常见的数据类型有:整数型,定点型,浮点型,字符串,时间,布尔,位

## 整数型:
tinyint:2的8次方
smallint:2的16次方
mediumint:2的32次方
integer:2的64次方
bigint:2的128次方

int[M] [unsigned] [zerofill]:M为位数,默认为10,unsigned表示只能为正数(包括0),zerofill默认只能为正数,填充0

create table t1(id int zerofill);
insert into t1 values(-1);   --报错--
insert into t1 values(0);
insert into t1 values(123.523);

select * from t1;  --输出:0,124(忽略小数,四舍五入)--

定点数(小数):
decimal=dec
dec(M,N):表示总共M位数字,其中N位位小数,(M-N)位为整数

create table t2(dec(5,3) unsigned); --定义整数位为2位,小数位为3位的定点数--
insert into t2 values(123.123); --报错--
insert into t2 values(12);
insert into t2 values (12.1235);
insert into t2 values(12.12);
select * from t2; --输出:12,12.123,12.120--

浮点型:
float(单精度):从第7位有效位开始四舍五入存储
double(双精度):从第16 位有效位开始四舍五入存储

create table t3(id float(8));
insert into t3 values(1234567);
insert into t3 values(123456789);
insert into t3 values(123456789.12345);
select * from t3;  --输出:1234570,123457000,123457000--


create table t_3(id float(5,3));
insert into t_3 values(123);  --报错--
insert into t_3 values(12.3);
insert into t_3 values(12.255555);
select * from t_3;  --输出:12.3,12.256--

字符串:
char:固定长度,最多255个字符(2的8次方)
varchar:固定长度,最多65535个字符(2的16次方)
tinytext:可变长度,最多255个字符
text:可变长度,最多65535个字符
mediumtext:可变长度,最多2的24次方个字符
longtext:可变长度,最多2的32次方个字符

create table t4(name varchar(21));
insert into t4 values(123);
insert into t4 values(xiaoming);  --报错--
insert into t4 values('xiaoming'dsad'); --报错--
insert into t4 values('xiaoming');
insert into t4 values('xiao'''ming);
select * from t4;  --输出:123,xiaoming,xiao'ming--

char和varchar的区别:
1、char(n)若存入的字符数小于n,则以空格在字符串后面补充,查询之时再将空格去掉,所有char类型存储的字符串末尾不能有空格,varchar不限于此
2、char固定长度,char(4)不管存入几个字符,都将占用4个字节,varchar是存入的实际字节数+1个字节或2个字节,所以varchar(4),存入3个字节,实际占用4个字节
3、char检索速度比varchar速度快

日期时间区:
日期:2019-12-12
时间:12:23:23
日期时间:2019-12-12 12:12:12
timestamp:自动存储记录修改时间(如果数据库里面用timestamp数据类型,就应该考虑时区问题)

create table t5(d1 date);
insert into t5 values(19990101);
insert into t5 values(990101);
insert into t5 values(99101); --报错--
select * from t5; --输出:1999-01-01,1999-01-01---

获得当前日期时间的函数:
1、获得当前日期+时间(date+time)函数:now(),sysdate()
区别:now()在执行开始时值就得到了,sysdate()在函数执行时动态得到值

select now(),sleep(4),now();  --2019-01-01 *02:01:23* , 0 ,  2019-01-01 *02:01:23*--
select sysdate(),sleep(4),sysdate();  --2019-01-01 *02:01:23* , 0 ,  2019-01-01 *02:01:26*--
2、获得当前日期curdate(),获得当前时间curtime()
select curdate(),curtime();
1)、日期字符串转换函数format:
	date_format(date,format)  --将日期date按照给顶的模式format转换成字符串
	time_format(time,format)  --将时间time按照给顶的模式format转换成字符串
select date_format(now(),'%W %M %Y');  --Thursday June 2019--
select time_format(now(),'%Y%m%d%H%i%s');  -- 00000000210159--
select time_format(now(),'%H.%i.%s');  --21.03.07--
2)、日期字符转换函数
str_to_date(str,format)  --将字符串以指定的模式format转换成日期
select str_to_date('01,5,2017','%d,%m,%Y');  --2017-05-01
select str_to_date(''May 1,2013,'%M %d,%Y');  --2013-05-01
3)、获得当前UTC日期时间函数:utc_date(),utc_time(),utc_timestamp()
select utc_timestamp(),utc_date(),utc_time();  -- 2019-06-27 13:22:32 , 2019-06-27 , 13:22:32

布尔:

insert into t7 values(true);
insert into t7 values(false);
insert into t7 values(123);
insert into t7 values(127);
insert into t7 values(128);  --报错,范围在-128~127--
select * from t7;  --1,0,123,127,--

位:

bin() --显示二进制格式
hex() --显示十六进制格式

create table t8(id bit(4));
insert into t8 values(2);
insert inro t8 values(13);
select bin(id),hax(id) from t8;  --10,1101----2,D--
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值