SQL1 扩展训练

整数类型 INT

TINYINT SMALLINT MEDIUMINT BIGINT INT

1、bigint(2^64)
从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字),无符号的范围是0到
18446744073709551615。一位为 8 个字节。

2、int(2^32)
一个正常大小整数。有符号的范围是-2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字),无符号的范围是0到4294967295。一位大小为 4 个字节。
int 的 SQL-92 同义词为 integer。

3、mediumint(2^24)
一个中等大小整数,有符号的范围是-8388608到8388607,无符号的范围是0到16777215。 一位大小为3个字节。

4、smallint(2^16)
一个小整数。有符号的范围是-2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据,无符号的范围是0到65535。一位大小为 2 个字节。MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。

5、tinyint(2^8)
有符号的范围是-128 - 127,无符号的范围是 从 0 到 255 的整型数据。一位大小为 1 字节。

整数类型测试:tinyint,int

LAB1:(int,tinyint的最大值)

1 创建一个表

mysql> create table test1(
tinyint_test tinyint,
int_test int
);

2.查询表结构

desc test1;
在这里插入图片描述

3.测试表

1 插入合法数值
mysql> insert into test1 values (111,111);
Query OK, 1 row affected (0.09 sec)
查询表内容
select * from test1
在这里插入图片描述

2插入非法数值
错误的示例:
mysql> insert into test1(tinyint_test) values(128);
ERROR 1264 (22003): Out of range value for column ‘tinyint_test’ at row 1
正确的示例:
mysql> insert into test1(tinyint_test) values(127);
TINYINT有符号型最大127
在这里插入图片描述

3 插入合法数值
mysql> insert into test1(int_test) values(2147483647);
Query OK, 1 row affected (0.05 sec)
在这里插入图片描述

4插入非法数值
mysql> insert into test1(int_test) values(2147483648);
ERROR 1264 (22003): Out of range value for column ‘int_test’ at row 1
INT有符号型最大2147483647
在这里插入图片描述

LAB2:(无符号unsigned)

数值无符号,就只能输入正值,不能输入负值

1 创建一个表

mysql> create table test2(
tinyint_test tinyint unsigned,
int_test int unsigned
);

Query OK, 0 rows affected (0.00 sec)
//约束条件unsigned限定只能存正值(无符号)
在这里插入图片描述

2.查看结构

desc est2;
在这里插入图片描述

3.测试表

1插入合法数据
mysql> insert into test2(tinyint_test) values(255);
Query OK, 1 row affected (0.06 sec)
2插入合法数据
mysql> insert into test2(int_test) values(2147483648);
Query OK, 1 row affected (1.87 sec)
3插入非法数据
mysql> insert into test2 values(-20,-20);
ERROR 1264 (22003): Out of range value for column ‘tinyint_test’ at row 1
mysql和mariadb不同。
mysql提示输入错误
mariadb会输入0到表中。
但结果是肯定的,无符号只能输入正值
在这里插入图片描述
在这里插入图片描述

LAB3:(整数型,长度可变)

插入大于INT宽度限制的值,仍然可以存储。
但不能超过上限2147483647
INT整形的宽度仅为显示宽度,不是限制。因此建议整形无须指定宽度。
字符型需要使用宽度

1.创建表

1 创建一个表
mysql> create table t1 (
id1 int,
id2 int(6)
);在这里插入图片描述

2.查看结构

在这里插入图片描述

3.测试表

mysql> insert into t1 values(22,22222222);
Query OK, 1 row affected (0.01 sec)
在这里插入图片描述

LAB4:(零填充zerofill)

zerofill 自动填充0

1.创建表

mysql> create table t2 (
id1 int zerofill,
id2 int(6) zerofill
);

Query OK, 0 rows affected (0.05 sec)
zerofill

2.查看结构

在这里插入图片描述

3.测试表

mysql> insert into t2 values(2,2);
Query OK, 1 row affected (0.01 sec)
在这里插入图片描述


浮点数类型 FLOAT DOUBLE

1、变量类型不同

float属于单精度型浮点数du据。

double属于双精度型浮点数据。
2、指数范围不同

float的指数范围为-127~128。

double而double的指数范围为-1023~1024

float的范围为-2^128 ~ +2^127,也即-3.40E+38 ~ +3.40E+38;double的范围为-2^1024 ~ +2^1023,也即-1.79E+308 ~ +1.79E+308。

作用:用于存储用户的身高、体重、薪水等
浮点数和定点数都可以用类型名称后加(M,D)的方式来表示,
(M,D)表示一共显示M位数字(总数位+小数位),
其中D位于小数点后面,M和D又称为精度和标度。

浮点数类型测试:float

三者的区别介绍
float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位,小数点占一位)
double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位)
decimal:数字型,128bit,常用于银行帐目计算。(28个有效位)

LAB1:(浮点数float)

1.创建表

mysql> create table test4(float_test float(5,2));//一共5位,小数占2位,整数3位
Query OK, 0 rows affected (0.00 sec)

2.查看结构

在这里插入图片描述

3.测试表

3插入合法数据
mysql> insert into test4 values (10.2), (70.243), (70.246);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
4插入非法数据
mysql> insert into test4 values (1111.2);
ERROR 1264 (22003): Out of range value for column ‘float_test’ at row 1
在这里插入图片描述

LAB2:(精准小数decimal)

定点数在MySQL内部以字符串形式存储,比浮点数更精确,
适合用来表示货币等精度高的数据。
decimal在不指定精度时,默认的整数位为10,默认的小数位为0

1.创建表

mysql> create table test5(decimal_test decimal(5,2));
总长5位,小数占2位

2.查看结构

在这里插入图片描述

3.测试表

mysql> insert into test5 values (70.245);
Query OK, 1 row affected, 1 warning (0.05 sec)
注意有警告
超长部分不记录。会四舍五入
在这里插入图片描述

创建整数9位,小数5位的数据类型
在这里插入图片描述


时间和日期类型测试:

year、date、time、datetime、timestamp

作用:用于存储用户的注册时间,文章的发布时间,文章的更新时间,员工的入职时间等

LAB1:(日期,时间)

1.创建表

create table test_time(
d date,
t time,
dt datetime);

2.查看结构

在这里插入图片描述

3.测试表

mysql> insert into test_time values(now(),now(),now());
Query OK, 1 row affected, 1 warning (0.02 sec)
在这里插入图片描述

LAB2:(当前时间)

1.创建表

mysql> create table t(id timestamp);
Query OK, 0 rows affected (0.01 sec)

2.查看结构

在这里插入图片描述

3.测试表

mysql> insert into t values(null);
Query OK, 1 row affected (0.00 sec)
timestamp 该列插入空值时,会自动填入当前时间。
在这里插入图片描述
mysql> insert into t values (121112111211);
手动插入时间吗,以插入时间为准。年月日时分秒
在这里插入图片描述

LAB3:(年)

1.创建表

mysql> create table t5(born_year year);
Query OK, 0 rows affected (0.40 sec)

2.查看结构

在这里插入图片描述

3.测试表

mysql> insert into t5 values (12),(80);
观察年份的边界
在这里插入图片描述

字符串类型测试:CHAR、VARCHAR

1.创建表

create table vc (
v varchar(4),
c char(4));

2.查看结构

在这里插入图片描述

3.测试表

mysql> insert into vc values(‘a’,‘a’);
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> insert into vc values('ab ','ab ');
Query OK, 1 row affected, 1 warning (0.00 sec)
在这里插入图片描述在这里插入图片描述

5调动函数
mysql> select length(v),length© from vc;

length(v) 统计长度的函数
在这里插入图片描述

mysql> select concat(v,’=’), concat(c,’=’) from vc; //在后面加字符’=’,看的更清楚
在这里插入图片描述

未完待续

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值