mysql有varchar2吗

哎,说到MySQL和Oracle数据类型的区别,我真是有话要说。
老实说,这两个数据库存储变长字符串的方式不同。

我们先来说说MySQL。
早期使用MySQL的时候,对这些技术细节不太了解。
我只知道它有一个VARCHAR类型。
这种类型最多可以存储 6 5 ,5 3 5 个字符,这听起来相当大,对吧?但实际上,这 6 5 ,5 3 5 个字符受到行大小的限制。
记得有一次,我在论坛上看到一个案例。
一位朋友在输入数据时出现“Rowsize Too Large”错误,因为超出了长度限制。
当时我还挺疑惑的,后来才知道这是MySQL的一个特性。

我们来看看Oracle的VARCHAR2 这在 Oracle 中是不同的。
它支持以字节或字符为单位指定长度。
例如,您可以说“VARCHAR2 (2 0BYTE)”或“VARCHAR2 (2 0CHAR)”,这听起来更灵活。
此外,Oracle 对 VARCHAR2 的最大长度有参数控制。
标准模式下最大长度为4 000字节,扩展模式下最大长度为3 2 7 6 7 字节(但这只有Oracle1 2 c及以上版本才能享受)。
我在Oracle培训课程中了解到,Oracle在比较VARCHAR2 值时使用非填充语义,即比较实际存储的内容,不会因为填充而影响比较结果。

说到差异,这两个数据库的存在类型是有很大差异的。
MySQL有VARCHAR,但Oracle有VARCHAR2 ,MySQL中没有。
至于长度单位,Oracle默认是字节,MySQL没有这个声明。
至于最大长度,Oracle是通过参数控制的,而MySQL是通过行大小来限制的。

总之,这两个数据库都有自己处理变长字符串的方式。
你还是要根据具体的需求和数据库的特点来选择。
当时我不明白MySQL为什么要这样设计,但后来我想了想。
每个数据库都有自己的历史和设计理念。
我们从事技术工作的人必须学会适应和利用这些特点。

数据库设置为UTF-8 但是前段还是不能插入中文

结论: 1 、命令行插入汉字时出现错误。
解决办法是将终端编码设置为UTF-8 2 .Linux:设置名称utf8 ;修复乱码问题。
3 . Windows:命令行不支持UTF-8 使用图形客户端或更改数据库编码。
4 、修改my.ini文件,删除STRICT_TRANS_TABLES,然后重启MySQL。

典型操作:
Linux:从终端登录MySQL,执行set name utf8
Windows:使用图形客户端或创建非 UTF-8 编码数据库。

my.ini修改:sql-mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION改为none或注释掉,重启MySQL。