自适应型网站建设费用,网站建设陕icp,做面料哪个网站好,深圳网站备案注销阅读导航 引言一、char#x1f3af;基本语法#x1f3af;使用示例 二、varchar#x1f3af;基本语法#x1f3af;使用示例 三、char 和 varchar 比较四、日期和时间类型1. 基本概念2. 使用示例 五、enum 和 set#x1f3af;基本语法 引言
之前我们聊过MySQL中的数值类型基本语法使用示例 二、varchar基本语法使用示例 三、char 和 varchar 比较四、日期和时间类型1. 基本概念2. 使用示例 五、enum 和 set基本语法 引言
之前我们聊过MySQL中的数值类型它们帮助我们在数据库中存储和处理数字信息。但你知道吗除了数字文本也是数据库中非常关键的部分。比如用户的名字、地址、甚至是网站的内容都是以文本形式存在的。接下来我们将一起探索MySQL中的字符串类型。
一、char
基本语法
char(L): 固定长度字符串L是可以存储的长度单位为字符最大长度值可以为255使用示例
mysql create table t9(id int, name char(2));
Query OK, 0 rows affected (0.00 sec)mysql insert into t9 values(100, ab);
Query OK, 1 row affected (0.00 sec)mysql insert into t9 values(101, 中国);
Query OK, 1 row affected (0.00 sec)mysql select * from t9;
--------------
| id | name |
--------------
| 100 | ab |
| 101 | 中国 |
--------------注意char(2) 表示可以存放两个字符可以是字母或汉字但是不能超过2个 最多只能是255
二、varchar
基本语法
varchar(L): 可变长度字符串L表示字符长度最大长度65535个字节varchar(len)类型允许你指定一个长度len这个长度表示的是字符的最大数量而不是字节。
注意实际能存储的字节数取决于你使用的字符编码如UTF-8、GBK等和MySQL为记录字符串长度所需的额外字节。 当我们的表的编码是utf8时varchar(n)的参数n最大值是65532/321844因为utf中一个字符占用3个字节如果编码是gbkvarchar(n)的参数n最大是65532/232766因为gbk中一个字符占用2字节 使用示例
mysql create table tt10(id int ,name varchar(6)); --表示这里可以存放6个字符mysql insert into tt10 values(100, hello);mysql insert into tt10 values(100, 我爱你中国);mysql select * from tt10;
--------------------------
| id | name |
--------------------------
| 100 | hello |
| 100 | 我爱你中国 |
--------------------------三、char 和 varchar 比较
实际存储char(4)varchar(4)char占用字节varchar占用字节abcdabcdabcd4*3124*3113AAA4*3121*314abcdeXX数据超过长度数据超过长度
如何选择char 和 varchar 定长类型char如果字段中的数据长度是固定的比如身份证号码总是18位、手机号码通常是11位或MD5哈希值固定为32位十六进制字符那么使用定长类型char是更合适的选择。char类型会在磁盘上直接为每条记录分配固定长度的空间无论实际存储的数据长度如何。这种方式虽然可能会导致一些空间浪费尤其是当字段值短于分配的长度时但它提供了更高的数据检索效率因为数据库系统可以直接定位到数据的起始位置无需计算数据的实际长度。 变长类型varchar对于长度可能变化的数据如名字、地址等使用变长类型varchar更为合适。varchar类型会根据实际存储的数据长度动态分配空间但会额外使用一个或两个字节来记录数据的实际长度取决于最大长度设置。这种方式可以节省存储空间尤其是在数据长度差异较大的情况下。然而由于需要额外的字节来记录长度并且在读取时需要先读取长度信息因此可能会稍微降低数据检索的效率。
四、日期和时间类型
1. 基本概念
常用的日期类型有如下三个 date用于表示日期格式为’yyyy-mm-dd’其存储范围从’1000-01-01’到’9999-12-31’。尽管您提到它占用三字节但实际上在MySQL中date类型通常占用4字节来存储。 datetime用于表示日期和时间格式为’yyyy-mm-dd HH:ii:ss’其存储范围同样从’1000-01-01 00:00:00’到’9999-12-31 23:59:59’。datetime类型占用8字节来存储这包括了日期和时间的完整信息。 timestamp时间戳从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致占用四字节。
2. 使用示例
//创建表
mysql create table birthday (t1 date, t2 datetime, t3 timestamp);
Query OK, 0 rows affected (0.01 sec)//插入数据
mysql insert into birthday(t1,t2) values(1997-7-1,2008-8-8 12:1:1); --插入两种时间
Query OK, 1 row affected (0.00 sec)mysql select * from birthday;
------------------------------------------------------
| t1 | t2 | t3 |
------------------------------------------------------
| 1997-07-01 | 2008-08-08 12:01:01 | 2024-8-20 19:22:35 | --添加数据时时间戳自动补上当前时间
------------------------------------------------------//更新数据
mysql update birthday set t12000-1-1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0mysql select * from birthday;
------------------------------------------------------
| t1 | t2 | t3 |
------------------------------------------------------
| 2000-01-01 | 2008-08-08 12:01:01 | 2024-8-20 19:26:08 | -- 更新数据时间戳会更新成当前时间
------------------------------------------------------五、enum 和 set
基本语法
enum枚举“单选”类型
enum(选项1,选项2,选项3,...);该设定只是提供了若干个选项的值最终一个单元格中实际只存储了其中一个值而且出于效率考虑这些值实际存储的是“数字”因为这些选项的每个选项值依次对应如下数字1,2,3,…最多65535个当我们添加枚举值时也可以添加对应的数字编号。
set集合“多选”类型
set(选项值1,选项值2,选项值3, ...);该设定只是提供了若干个选项的值最终一个单元格中设计可存储了其中任意多个值而且出于效率考虑这些值实际存储的是“数字”因为这些选项的每个选项值依次对应如下数字1,2,4,8,16,32… 最多64个。