mysql数据库数据的类型及应用

mysql数据类型

目录:
常见信息种类
字符类型
数值类型
日期时间类型
枚举类型

常见信息种类

数值型: 体重,身高,成绩,工资等
字符型:姓名,地址,工作单位等
枚举型:兴趣爱好,性别,专业等
日期时间型:出生日期,注册时间

字符类型

char(10):
定长–不够字符个数时在右边用空格补齐
最大字符255字符
字符个数超出时,无法写入数据

varchar(10):
变长–根据实际字符大小,分配存储空间
字符个数超出时,无法写入数据

text 或者 blob :
大文本类型
字符数大于65535个字符时使用
一般用不到

1.char 占用空间大 但是读取速度快
2.varchar 占用空间小 但是读取速度慢
mysql> create database xt character set utf8mb4;    //创建一个支持中文的库
Query OK, 1 row affected (0.00 sec)

mysql> create table xt.student(          //创建一个表
    -> 姓名   char(5),
    -> 性别   char(2),
    -> 通讯地址 varchar(50));
Query OK, 0 rows affected (0.33 sec)

mysql> desc xt.student;                   //查看表类型
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| 姓名         | char(5)     | YES  |     | NULL    |       |
| 性别         | char(2)     | YES  |     | NULL    |       |
| 通讯地址     | varchar(50) | YES  |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

//我们的性别输入的是两个字符,所以输入字符过多会报错
mysql> insert into xt.student  values('xt','泰国人妖','北京');
ERROR 1406 (22001): Data too long for column '性别' at row 1
mysql> insert into xt.student  values('xt','男','北京');
Query OK, 1 row affected (0.14 sec)

数值类型

tinyint : 微小整数
有符号范围 -128~127
无符号范围 0~255

smallint : 小整数
有符号范围 -32768~32767
无符号范围 0~65535

mediumint : 中整数
有符号范围 -2(23次方)~2(23次方)-1
无符号范围 1~2(24次方)-1

int : 大整数
有符号范围 -2(31次方)~2(31次方)-1
无符号范围 0~2(32次方)-1

bigint : 极大整数
有符号范围 -2(63次方)~2(63次方)-1
无符号范围 0~2(64次方)-1

float : 单精度浮点数 (M,D)
有符号范围-3.402823466E+38到-1.175494351E-38
无符号范围 1.175494351E-38到3.402823466E+38

double : 双精度浮点数(M,D)
有符号范围:-1.7976931348623157E+308到-2.2250738585072014E-308
无符号范围:2.2250738585072014E-308到1.7976931348623157E+308

1. M 为小数的总长度  D 为小数位数 所以M应该大于D 否则会出错
2.使用 unsigned 可以设置为无符号存储,

有符号存储支持负数,无符号存储支持的范围更大一点

mysql> create table xt.num(                 //创建一个表
    -> id  tinyint,
    -> age int(3),
    -> score  float(4,2));
Query OK, 0 rows affected (0.38 sec)

mysql> desc xt.num                 //查看数据类型
    -> ;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| id    | tinyint(4) | YES  |     | NULL    |       |
| age   | int(3)     | YES  |     | NULL    |       |
| score | float(4,2) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
//这里我们可以看到,第一个tinyint类型 支持-128-127 所以值输入128过大 错误
//第三个设置小数位为2位 虽然我们输了三位没有报错,但是我们查看表发现还是两位,并自动四舍五入
mysql> insert into xt.num  values(128,20,88.35);
ERROR 1264 (22003): Out of range value for column 'id' at row 1
mysql> insert into xt.num  values(100,120,88.35);
Query OK, 1 row affected (0.14 sec)
mysql> insert into xt.num  values(100,20,88.356);
Query OK, 1 row affected (0.13 sec)

mysql> select * from xt.num;
+------+------+-------+
| id   | age  | score |
+------+------+-------+
|  100 |  120 | 88.35 |
|  100 |   20 | 88.36 |
+------+------+-------+
2 rows in set (0.00 sec)

日期时间型

datetime 日期时间类型
范围1000-01-01 00:00:00:000000~9999-12-31 23:59:59.999999
timestamp日期时间类型
范围1970-01-01 00:00:00:000000~2038-01-19 03:14:07.999999

时间格式:YYYYmmddhhmmss,或者"YYYY-mm-dd hh:mm:ss"
Y 年
m 月
d 日
h 时
m 分
s 秒

date 日期类型
范围0001-01-01~9999-12-31
默认使用4位数字表示,当只用2位数字负值时:
0169自动识别为20012069
7099自动识别为19701999

year 年份类型
范围 1901-2155

time时间类型
范围 HH:MM:SS

时间函数:mysql服务内置命令
curtime() 获取当前的系统时间
curdate() 获取当前的系统日期
now() 获取当前系统日期和时间
year() 获取年
month 获取月
day 获取日
date 获取日期
time 获取时间

加’’ 或者 “” 可以用"YYYY-mm-dd hh:mm:ss"不加东西用YYYYmmddhhmmss
mysql> create  table xt.stuinfo(
    -> name char(5),
    -> birth  datetime,
    -> start year,
    -> begin  time,
    -> end  time);
Query OK, 0 rows affected (0.41 sec)

mysql> insert into xt.stuinfo  values('xt',20011010121200,2018,0800,1800);
Query OK, 1 row affected (0.39 sec)

mysql> insert into xt.stuinfo  values('xt',"2018-01-01 01:01:00",2018,"08:00:00","18:00:00");
Query OK, 1 row affected (0.12 sec)

枚举类型

enum 单选
格式:字段名 enum(值1,值2,值3…)

set 多选
格式:字段名 enum(值1,值2,值3…)

1.单选选择一个值,多选可选择一个或多个值
2.字段值必须在列表里选择

比如 创建一个表 性别是enum单选 爱好是set是多选 可以选多个选项

mysql> create table xt.tea(
    -> name char(5),
    -> 性别   enum('boy','girl'),
    -> 爱好   set('男','女','book','music'));
Query OK, 0 rows affected (0.28 sec)
//插入表数据 姓名xt 性别 boy  爱好 女 跟music
mysql> insert into xt.tea  values('xt','boy','女,music');
Query OK, 1 row affected (0.17 sec)


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值