创建数据库,并创建一张表mytb进行测试 ************************************************************************************************************************************************************************************** 附建表语句: 备注:我使用的mysql版本是5.6…
关于varchar字段: 在version4之前,按字节: version5之后,按字符. 现在普遍都按字符算:无论中文英文,都算一个字符 既: varchar(10) == '123456789a' == '123456789汗'…
今天在设计系统字段的时候, 发现自己对varchar还不够了解.我设了一个字段.类型为VARCHER,然后我就往里面测试性了写了东西.发现没有多少就满了.我觉得奇怪,5.5版本以上的MYSQL不是有65535的长度吗,为什么只有这么一点点?后来才发现,原来VARCHER的默认长度还是255,如果你想它更长,就得指定.还有,你不能指定它为65535,或是65534,这样是会错的.原因如下: 1.限制规则 字段的限制在字段定义的时候有以下规则: a)                  存储限制 va…
相信这个问题也会困扰不少人,尤其是使用过其它数据库(如Oracle)的人,之前我也没有太在意这个问题,再加上一些书籍和网上的文章讲的不够细致,又没测试过,导致我一直理解错误.下面通过实例来解释,在开始之前先简单介绍下字符和字节的区别.字符 人们使用的记号,抽象意义上的一个符号.一个汉字和英文就是一个字符,如'1', '中', 'a', '$', '¥',…… 字节 计算机中存储数据的单元,一个8位的二进制数,是一个很具体的存储空间,如0x01, 0x45, 0xFA,……详细的可以参考http:…
 一.问题导出 在刚刚开始学习MySQL数据库应用与开发这门课程的时候,老师建议我们使用可视化工具MySQL Workbeach进行数据库的相关管理,但是小编在mysql命令框使用insert命令向表中插入中文数据的时候发现出现了warnings警告,并且打开MySQL Workbeach查看输入数据的时候发现,输入的数据为空或者是?????几个问号,于是便想到了字符格式的问题. 二.问题测试 (1)小编新建了一个test数据库,并在里面建了一个test数据表,里面只有一个属性(字符集都默认)…
将actor表的first_name的varchar(45) ,修改为varchar(60) [root@vhost1 ~]# mysql -uroot -p -S /mysqldata/tmp/mysql33061.sock Enter password: Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 12Server version: 5.6.37 MySQL Commu…
新建表Clubs CREATE TABLE `Clubs` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) CHARACTER SET utf8 NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; id name 1 程序员2 架构师3 产品经理4 测试 如果在phpMyAdmin中查看name字段内容就是?,修改MySQ…
一.问题描述 在往数据库写入数据的时候,报错: '字段名' doesn't have a default value 本来这个错误是经常见到的,无非就是字段没有设置默认值造成的.奇怪的是,我这边报错的字段,其类型是text类型.众所周知的,text类型是不能有默认值的.如此一来就有了矛盾,text类型的字段明明不能有默认值,那么为什么还会给我报错,提示缺少默认值呢? 二.问题所在 1.查看字段类型 通过phpmyadmin查看数据表的字段结构,发现text字段在创建的时候,语法为: //创建字段…
以前一直使用oracle11g,一个汉字占3个字节,所以在操作mysql时也一直这样分配长度. 今天测试了下发现不对了 可以看到第一个的长度确实是15,但是第二个为什么是5? 在网上找到资料:char_length计算的是字符长度,而length计算的是字节长度,刚好我使用的是utf8,一个汉字占3个字节,占一个字符. 那好了,应该是对的上了,可是好奇心我就试了下 为什么这是相同的?因为这不是汉字 好了,现在知道原来mysql和oracle一样的,但是又看到一篇说mysql的varchar与or…
为了搞清楚MySQL对于可变长度字段值修改时,如何高效操作数据文件的机制.之前一直模糊不清,网上也搜不到现成的答案.经过多方资料搜集整理.写出此文供大家一起参阅.由于涉及众多非常底层的知识,我假设读者已经对操作系统和磁盘存取有一定的基础知识.文中如有疏漏,还请大佬指正. 为了探究这个问题,我们要先来回顾一下我之前的一篇文章<文件随机或顺序读写原理深入浅出>讲的文件存储的底层原理知识.如下图所示.一个文件的数据是以块为单位存储到物理磁盘的随机位置,这是由操作系统负责管理的,用户程序无权决定.所以…