您的位置:首页 > 教育 > 锐评 > 自动生成ui界面_潍坊网站建设工作_北京百度公司地址在哪里_sem账户托管外包

自动生成ui界面_潍坊网站建设工作_北京百度公司地址在哪里_sem账户托管外包

2025/7/29 9:35:06 来源:https://blog.csdn.net/2301_82240729/article/details/144108368  浏览:    关键词:自动生成ui界面_潍坊网站建设工作_北京百度公司地址在哪里_sem账户托管外包
自动生成ui界面_潍坊网站建设工作_北京百度公司地址在哪里_sem账户托管外包

数据类型分类

数值类型

tinyint类型
  1. tinyint为例
  2. 所有数值类型默认都是有符号的,无符号的需要在后面加unsigned
  3. tinyint的范围在-128~127之间
  4. 无符号的范围在0~255之间(类比char)
create database test_db;
use test_db;

建表时一定要跟着写上属性

mysql> create table if not exists t1(-> num tinyint-> );
//查看
desc t1;
show tables;
show create table t1\G;

在这里插入图片描述

//无符号整数
mysql> create table if not exists t2(-> num tinyint unsigned-> );

在这里插入图片描述

注意:

  1. 尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下。
  2. 与其如此,还不如设计时,将int类型提升为bigint类型,根据自身使用场景,选择合适的数据类型即可。
  3. 如果我们向mysql特定的类型中插入不合法的数据,mysql一般都是直接拦截,不让我们做对应的操作,与C不同,C会截断再存储
  4. 反过来,如果我们有数据已经成功插入到mysql中,一定是合法得到
  5. 所以,mysql中,一般而言,数据类型本身就是一种约束,约束的是程序员
  6. 这保证了数据库中的数据是可预期的,完整的
  7. mysql表中建立属性列,列名称在前,类型在后
bit类型
bit[(M)] : 位字段类型。M表示每个值的位数,**范围从1到64**。如果M被忽略,默认为1
mysql> create table if not exists t3(-> id int,//一个bit位,只能插0或插1-> online bit(1)-> );

在这里插入图片描述

  1. online 是位类型,以ASCII码值显示,ASCII码是值,十六进制是显示方式
  2. 如果看不到,那么其显示方式是字符方式
  3. 若想让其显示出来,select id,hex(online) from t3;

在这里插入图片描述

验证为何是ASCII码值:

  1. 首先改变列的属性:alter table t3 modify online bit(10);
  2. 97换算成十六进制为61

在这里插入图片描述

浮点数类型

float,double,decimal

float
  1. float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节
  2. 小数:没特殊说明,表示有符号的数,float(4,2)表示的范围是-99.99 ~ 99.99
mysql> create table if not exists t4(-> id int,-> salary float(4,2)-> );

在这里插入图片描述

  1. MySQL在保存值时会进行四舍五入
    注意:例如:-99.999四舍五入后为-100.000数据不允许插入

在这里插入图片描述

  1. 如果定义的是float(4,2) unsigned 这时,因为把它指定为无符号的数,范围是 0 ~ 99.99
create table if not exists t5(id bigint, salary float(4,2) unsigned);

在这里插入图片描述

测试float:存在精度损失
float表示的精度大约是7位

alter table t5 modify salary float;
insert into t5 values (1,23456789.234526614);//ok
insert into t5 values (1,2349.234526);
insert into t5 values (1,23429.234526);
select * from t5;

在这里插入图片描述

decimal
decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数
  1. decimal(5,2) 表示的范围是 -999.99 ~ 999.99
  2. decimal(5,2) unsigned 表示的范围 0 ~999.99
  3. float和decimal相似,但是表示的精度不一样
  4. decimal的精度更准确,因此如果我们希望某个数据表示高精度,选择decima
mysql> create table if not exists t6(-> f1 float(10,8),-> f2 decimal(10,8)-> );

在这里插入图片描述

总结:
  1. float表示的精度大约是7位
  2. decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略,默认是10
  3. 建议:如果希望小数的精度高,推荐使用decimal

字符串类型

char

char(L): 固定长度字符串,L是可以存储的长度,**单位为字符**,最大长度值可以为255
  1. C语言中字符,一个字符对应一个字节。
  2. 与C中不同的是,MySQL中的字符,就代表一种符号一个汉字就是一个字符

在这里插入图片描述

  1. char类型最大长度为:255

在这里插入图片描述

varchar

varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节
mysql> create table t8(-> id int,-> name varchar(6)-> );

在这里插入图片描述

区分字节与字符的不同

在这里插入图片描述

总结:
  1. varchar长度可以指定为0到65535字节之间的值,但是有1~3 个字节用于记录数据大小,所以说有效字节数是65532
  2. 与char的区别:

在这里插入图片描述

日期和时间类型

  1. 日期:年、月、日
  2. 时间:时、分、秒
常用的日期有如下三个:
date :日期 'yyyy-mm-dd' ,占用三字节
datetime 时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从 1000 到 9999 ,占用八字节
timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用
四字节
mysql> create table if not exists t9(-> t1 date,-> t2 datetime,-> t3 timestamp-> );

注意:时间戳自动更新
如果插入数据,显示值为NULL,如下:

在这里插入图片描述

解决方法:设置时间戳的时候要设置当前时间

alter table t9 add column last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

在这里插入图片描述

修改属性值: update t9 set t1='1999_12_12';
更新数据,时间戳会更新成当前时间

在这里插入图片描述

枚举(enum)和集合(set)

  1. enum:提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值
  2. set:提供了若干个选项的值,最终一个单元格中,设计可存储了其中任意多个值
mysql> create table votes(-> username varchar(30),-> gender enum('男','女'),-> hobby set('登山','游泳','篮球','武术')-> );

在这里插入图片描述

注意:

  1. 枚举可用数字代替,从1开始,且不能超过已有数量

在这里插入图片描述

  1. 同理,集合也可用数字代替,但是结果与枚举不同
  • 输入0时可以插入,但是什么都不显示
  • 输入其他的数要从二进制(比特位)的角度看
    在这里插入图片描述

查找

  1. 在枚举里查找:
 //1.select * from votes where gender='男';//2.select * from votes where gender=1;
  1. 在集合里查找:
//筛选的是hobby只有篮球的,不能查询出所有,爱好中有篮球的人
select * from votes where hobby='篮球';

在这里插入图片描述

集合查询使用find_ in_ set函数
find_in_set(sub,str_list) :如果 sub 在 str_list 中,则返回下标;如果不在,返回0;str_list 用逗号分隔的字符串

在这里插入图片描述

//查询所有爱好篮球的人
select * from votes where find_in_set('篮球', hobby);
//查询即爱好篮球又爱好武术的人 ---- and
select * from votes where find_in_set('篮球', hobby)and find_in_set('武术', hobby);

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com