navicat下设置mysql中mysql varchar最大值值,该怎么解决

navicat如何连接mysql?navicat连接mysql详细图文教程
作者:佚名
字体:[ ] 来源:互联网 时间:02-14 16:44:30
Navicat for MySQL 是一套专为 MySQL 设计的高性能数据库管理及开发工具。它可以用于任何版本 3.21 或以上的 MySQL 数据库服务器,并支持大部份 MySQL 最新版本的功能,包括触发器、存储过程、函数、事件、视图、管理用户等
最新版navicat for mysql,自带注册码。已经绿化,解压到任意目录就可运行。
软件名称:mysql数据库管理工具(navicat for mysql) 10.1.7 绿色中文免费版软件大小:17.2MB更新时间:Navicat Premium 是一个可多重连接的数据库管理工具,它可让你以单一程序同时连接到 MySQL、Oracle、PostgreSQL、SQLite 及 sql server 数据库,让管理不同类型的数据库更加方便。Navicat Premium 结合了其他 Navicat 成员的功能。有了不同数据库类型的连接能力,Navicat Premium 支持在 MySQL、Oracle、PostgreSQL、SQLite 及 SQL Server 之间传输数据。它支持大部份 MySQL、Oracle、PostgreSQL、SQLite 及 SQL Server 的功能。Navicat Premium 使你能简单并快速地在各种数据库系统间传输数据,或传输一份指定 SQL 格式及编码的纯文本文件。这可以简化从一台服务器迁移数据到另一服务器的类型的进程。不同数据库的批处理作业也可以计划并在指定的时间运行。
Navicat for MySQL:
Navicat for MySQL 是一套专为 MySQL 设计的高性能数据库管理及开发工具。它可以用于任何版本 3.21 或以上的 MySQL 数据库服务器,并支持大部份 MySQL 最新版本的功能,包括触发器、存储过程、函数、事件、视图、管理用户等。 点击 或选择文件 -& 新建连接 来设置连接属性。 连接设置 在创建连接后,你可以连接到数据库,管理它的对象、表中的数据等。请看下面的帮助,以了解如何用最简单的方法运行这些操作。与数据库或模式工作 与数据库或模式的对象工作Navicat 浏览器!Navicat 窗口包括一个导览窗格(左边的窗格)及一个对象窗格(右边的窗格)。导览窗格一个是导览连接、数据库及数据库对象的基本途径。它采用树状结构,让你透过弹出菜单快捷及方便地使用数据库和它们的对象。对象窗格显示开启表、查询等。在窗口顶部的工具栏提供其他控制项,你可以用它来操作你的数据。
下面分享一些navicat的使用心得,帮助那些入门的程序员们尽快的熟悉上这个软件。今天就先写navicat如何连接本地mysql数据库。
navicat如何连接mysql:
1、首先你电脑上必须安装了mysql的数据库。(如果你不清楚自己是否已经安装成功mysql,你可以在开始菜单输入&mysql&,进行搜索)
2、打开你的Navicat&for&Mysql&(这里也可以使用上面的方法,在开始菜单搜索框中输入&navicat&)
3、打开后单机工具栏左边第一个&connection&,进入连接页面。
4、最重要的一步:打开的界面有五个框需要输入,第一个:connection&Name&需要输入的是你新建的连接的的名字,这里我们就命名为&本地&,第二个:
Host&Name/Ip&Address&你需要输入的是你本机的ip地址或者直接输入&localhost&,这里我们选择第二种。&第三个:Port&,输入你安装时候的端口号,一般为默认的3306;第四个和第五个分别为:UserName和Password,意思为你需要输入你数据库名用户名和密码,我的用户名是:root,密码:(保密,嘿嘿)。最后把下面那个&Save&Passwod&的小框框给勾上。
5、完成上面步骤,然后点击左下角有个&Test&Connectiion&如果弹出success,恭喜你直接点击右下角的&save&按钮就可以了。如果弹出error&,你则需要再重新仔细查看自己哪里填错了。
6、点击&save&后,你就可以双击&本地&(这里的&本地&是你刚才输入的connection&Name),然后打开你的数据库了。
我用的是navicat的英文版,不过用中文版的也差不多。
大家感兴趣的内容
12345678910
最近更新的内容& 相关文章 &
Navicat 设置主键自增 自动增长 Navicat中怎么设置主键自增长?
Navicat中怎么设置主键自增长? 点击设计表,然后 出现如下菜单
表主键自增长Mybatis插入数据报错
在使用MyBatis进行开发的过程中,当你遇到向某张数据库表中插入一条记录时,出现数据插入不正确,如果自己确定是因为主键的原因,类似如下错误提示: 而你的本意是主键自动增长,那么,可参考如下方法尝试解决: 第一步:在配置中设置主键为自增长(数据库我使用的是MySql) 如果你是使用MyBatis自动生成的插入语句,除了设置上面给出的useGeneratedKeys=”true”之外,还需要将如下图所示红色部分去掉,这是查询主键最大值的一段代码。
如果还未解决,这时你应该检查一下你的数据库表
MySQL学习(二)图形界面管理工具Navicat for MySQL安装和使用
set”,可以在“Character set”框中输入“utf8”,软件会自动完成 Collection保持为空即可,单击“OK”按钮,数据库创建成功。 新建表: 双击刚刚创建的数据库展开,在Tables上单击鼠标右键》New Table ID字段比较关键,通常会设置为自增“Auto Increment”,主键“Primary Key”,单击“Add Field”可以增加一个字段行, 字段设置完成可以单击“Save”按钮保存数据表。 插入数据: 在刚刚创建的数据表上单击鼠标右键》Open Table 单击”加号“按钮可以增加一行,日期字段可以单击按钮选择,数据填写完成后需要单击”对号“按钮保存。
在自己发挥书上和别人例子的时候,发现自己创建的自带数据库无法被adapter总是报错,提示没有找到_id属性,貌似用程序简表的时候,会自带这个属性,但是自荐表没有这一属性,所以数据库需要适配的时候,记住在表中添加_id属性最好是自增主键,比较方便。 另:PC端好用的SQLite软件 Navicat for SQLite SQLite Expert Personal:
PowerDesigner 12设置主键自增
PowerDesigner 12设置主键自增方法: 在物理模型中,双击模型图,进入“columns”选中主键字段,点击进入属性设置框,勾选"Identity"。进入“preview”可以见到主键成为了自增字段:比如MySQL为:ATUO_INCREMENT。
ibatis 报错mysql中的主键没有默认值
错误原因是:mysql中没有设置主键自动增长。
采用的mysql数据库 &!-- id元素用来定义主键标识,并指定主键自动递增 --&
&id name="id" column="id" type="int"&
&generator class="increment"&&/generator&
引起上述异常的问题主要是数据库中id字段没有设置为自增。
SQL 关于主键和自增长标识列的修改
这篇文章我总结下在使用SQL查询或修改数据库的时候经常会碰到的两个问题,以及对这两个问题解决方法。 第一个问题:对主键的修改,修改主键经常会碰到主键约束而造成update语句无法像对于普通无约束字段的操作那样方便。 第二个问题:自增长标识列的修改,identity声明的标识字段在遭遇部分行的删除操作后,会默认自动继续增长而不会补全后增长。 开头先声明下我使用的开发环境是SQL Server 2008。 一、对主键的修改 主键值都会带有主键约束,当执行update操作或是其他操作的时候就会
Mysql如何指定新插入的数据的起始自增主键id
在mysql中当我们把主键id设置为自增模式时,比如我们当前最大的主键id是8,那么我们如何指定下一次插入的记录的主键id为100呢,只要使用下面的sql语句即可: alter table user auto_increment=100 当我们把表中记录删除了一些时,我们可以把这个id的初始值设置的小一点,当这个值小于当前记录的最大主键id,mysql会自动采用当前最大的主键id+1作为下一条记录的主键id。
mysql非主键自增长
在网上查过一些资料,很多人说,mysql中,只有主键才能设置为自增长列。 经过一些深入的了解,其实并非只有主键才能设自增长,而是设为“键(key)”的列就可以设置自增长。
下面通过几个例子来具体说明一下: 首先是最普通的创建方式:
执行上面的创建语句,会报错,提示there can be only one auto column and it must be defined as a key
差不多就是说,普通列是没办法创建自增长的。
再来看看下面的语句:
没事试用了一下Navicat家族的新产品Navicat Premium,他集 Oracle、MySQL和PostgreSQL管理如一体,个人感觉很强悍(感觉速度很快)! 突发奇想,Oracle能不能导入 MySQL呢?先试试看: 1)新建了一个Oracle连接和MySQL连接 2)工具 -& 数据传输(如下图) 3)点开始,导入尽然开始了 导入完毕,看看导入的效果,非常棒,但是也存在一些问题,需要手动改动: 1)Oracle自动增长字段一般用“序列”来控制的,所以导入过来的自动增长字段貌似都没有自动增长属性 2)主键、索引等也可能不尽完美 3)编码问题,Navicat Premium导出数据默认貌似都是utf-8格式,具体mysql和oracle编码请自行斟酌 总体上很好,自己改改吧
mysql 插入数据失败防止自增长主键增长的方法
。 =============================================================== Mysql主键插入时有值将不使用自增可用程序控制 mysql设置了自增长主键ID,插入失败的那个自增长ID也加一的,比如失败5个,下一个成功的不是在原来最后成功数据加1,而是直接变成加6了,失败次数一次就自动增长1了,能不能让失败的不增长用程序自由控制? 方法/步骤 1 Mysql主键如果在insert插入时有值,将不使用自增。也就是说插入数据的时候只要自己把ID加上就按照插入的数进行自增了,这个数通过自己的逻辑判断代码来赋值,只要ID不重复就可以了。例如: String sql
mysql非主键自增长
在网上查过一些资料,很多人说,mysql中,只有主键才能设置为自增长列。 经过一些深入的了解,其实并非只有主键才能设自增长,而是设为“键(key)”的列就可以设置自增长。
下面通过几个例子来具体说明一下: 首先是最普通的创建方式:
执行上面的创建语句,会报错,提示there can be only one auto column and it must be defined as a key
差不多就是说,普通列是没办法创建自增长的。
再来看看下面的语句:
Hibernate Annotation配置主键生成策略
要是自动增长型) AUTO:主键由程序控制 SEQUENCE /*
* name属性表示该表主键生成策略的名称,它被引用在@GeneratedValue中设置的"generator"值中。
* sequenceName属性表示生成策略用到的数据库序列名称。
@SequenceGenerator(name="shcoolSQN",sequenceName="school_SQN") /*
* 属性stragegy 生成的策略类型
* generator
Hibernate Annotation配置主键生成策略
要是自动增长型) AUTO:主键由程序控制 SEQUENCE [java] view plain copy /*
* name属性表示该表主键生成策略的名称,它被引用在@GeneratedValue中设置的"generator"值中。
* sequenceName属性表示生成策略用到的数据库序列名称。
@SequenceGenerator(name="shcoolSQN",sequenceName="school_SQN")
[java] view
sqlServer数据库设置字段自增
在数据库设计中一般主键会设置为自增长的,在sqlserver数据库中是这样设置的:数据库——设计——选中列名(属性)——标识规范(是标识)选择是,下面会有标识增量。
[学习整理]oracle 实现 自增主键功能
k1, k2 from anotherT
所以真正设计时,应该用触发器保证自增主键的实现,如下过程:
下面用一个例子来说明自增主键的创建:
1、建用户数据表
create table dectuser( userid integer primary key, /*主键*/ name varchar2(20), sex varchar2(2) );
2、创建自动增长序列
drop sequence
SQL自增字段的相关总结-(主要SqlServe,Oracle)
首先是如何让字段自增 SqlServer中,可以通过给字段设置IDENTITY属性来设置自增字段,但是,这种方法有一些需要注意的地方: 1.SqlServer并不能保证字段中不出现重复的数据,原因是在多用户并发访问数据库的情况下,可能会出现这种问题,而且自增字段不一定为主键。但是Mysql没有这个问题,因为用auto_increment设置的自增字段,必须为主键,否则会创建失败。 2.导入数据的问题,在导入数据的时候,此自增字段的值可能已经被使用了,这样就会无法导入,可以使用SET
Hibernate主键生成器说明
。 native 由数据库对id赋值。当设置&generator class="native"/&时,数据库负责主键id的赋值,最常见的是int型的自增型主键。例如,在SQL Server中建立表的id字段为identity,配置了该生成器,程序员就不用为该主键设置值,它会自动设置。 hilo 通过hi/lo算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。
与hi/lo类似,通过hi/lo算法实现的主键生成机制,只是主键历史状态保存在sequence中
Hibernate主键生成策略
。 native 由数据库对id赋值。当设置&generator class="native"/&时,数据库负责主键id的赋值,最常见的是int型的自增型主键。例如,在SQL Server中建立表的id字段为identity,配置了该生成器,程序员就不用为该主键设置值,它会自动设置。 hilo 通过hi/lo算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。
与hi/lo类似,通过hi/lo算法实现的主键生成机制,只是主键历史状态保存在sequence中
& 2012 - 2016 &
&All Rights Reserved. &
/*爱悠闲图+*/
var cpro_id = "u1888441";11212人阅读
mysql(103)
mysql最大字段数
一直对mysql最大字段数不明确有人说是1024
Max columns per row 4096
InnoDB is limited to 1000 columns &
实践是检验真理的唯一方法
mysql& create table t0008(id int) engine=innodb DEFAULT CHARSET=latin1;
[root@localhost ~]# vim add.sh&
#/bin/bash
while((num&2000))
&echo $num
&mysql -p123456 -D test -e &alter table t0008 add column(col$num char(1))&
num=$(($num+1))
[root@localhost ~]# ./add.sh
Warning: Using a password on the command line interface can be insecure.
Warning: Using a password on the command line interface can be insecure.
Warning: Using a password on the command line interface can be insecure.
ERROR 1117 (HY000) at line 1: Too many columns
mysql& desc t0008;
+---------+------------+------+-----+---------+-------+
| Field & | Type & & & | Null | Key | Default | Extra |
+---------+------------+------+-----+---------+-------+
| id & & &| int(11) & &| YES &| & & | NULL & &| & & & |
| col2 & &| varchar(1) | YES &| & & | NULL & &| & & & |
| col3 & &| varchar(1) | YES &| & & | NULL & &| & & & |
...............................................................................
...............................................................................
| col1014 | varchar(1) | YES &| & & | NULL & &| & & & |
| col1015 | varchar(1) | YES &| & & | NULL & &| & & & |
| col1016 | varchar(1) | YES &| & & | NULL & &| & & & |
| col1017 | varchar(1) | YES &| & & | NULL & &| & & & |
+---------+------------+------+-----+---------+-------+
1017 rows in set (0.01 sec)
mysql innodb引擎支持最大字段上线为1017
mysql& create table t0011(col1 char(1)) engine=myisam DEFAULT CHARSET=latin1;
Query OK, 0 rows affected (0.00 sec)
[root@localhost ~]# ./add.sh&
Warning: Using a password on the command line interface can be insecure.
Warning: Using a password on the command line interface can be insecure.
Warning: Using a password on the command line interface can be insecure.
ERROR 1117 (HY000) at line 1: Too many columns
Warning: Using a password on the command line interface can be insecure.
ERROR 1117 (HY000) at line 1: Too many columns
mysql& desc t0011;
+---------+---------+------+-----+---------+-------+
| Field & | Type & &| Null | Key | Default | Extra |
+---------+---------+------+-----+---------+-------+
| col1 & &| char(1) | YES &| & & | NULL & &| & & & |
| col2 & &| char(1) | YES &| & & | NULL & &| & & & |
| col3 & &| char(1) | YES &| & & | NULL & &| & & & |
.........................................................................
........................................................................
| col2408 | char(1) | YES &| & & | NULL & &| & & & |
| col2409 | char(1) | YES &| & & | NULL & &| & & & |
| col2410 | char(1) | YES &| & & | NULL & &| & & & |
+---------+---------+------+-----+---------+-------+
2410 rows in set (0.04 sec)
mysql myisam引擎最大字段上限为2410 &&
-----------------------------------------------------------------------------------------------------------------
varchar字段的长度
mysql& create table t0008(col1 varchar(65535))charset=latin1;
ERROR ): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
mysql& create table t0008(col1 varchar(65534))charset=latin1;
ERROR ): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
mysql& create table t0008(col1 varchar(65533))charset=latin1;
ERROR ): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
mysql& create table t0008(col1 varchar(65532))charset=latin1;
Query OK, 0 rows affected (0.02 sec)
latin1字符集下的表varchar上限为65532,即一个字符一个字节
mysql& create table t0009(col1 varchar(65533))charset=utf8;
ERROR ): Column length too big for column 'col1' (max = 21845); use BLOB or TEXT instead
mysql& create table t0009(col1 varchar(21845))charset=utf8;
ERROR ): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
mysql& create table t0009(col1 varchar(21844))charset=utf8;
Query OK, 0 rows affected (0.00 sec)
utf8字符集下的表varchar上限为21844,即一个字符三个字节
结果除以3 ==21844
&-1表示第一个字节不存数据,-2表示两个字节存放varchar的长度,除以3是utf8字符特性,一个字符三个字节。
varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节),因此最大长度不能超过65535即 2的16次方(0-65535)
mysql& create table t0012(id int,name char(20),col3 varchar(N))chaset=utf8;
N的值为:(-4-20*3)/3=21822
mysql& create table t0012(id int,name char(20),col3 varchar(N))charset=latin1;
N的值为:-4-20=65508
char_length:在任何编码下, 不管汉字还是数字或者是字母都算是一个字符
length: 是计算字段的长度, utf8编码下,一个汉字是算三个字符,一个数字或字母算一个字符。其他编码下,一个汉字算两个字符, 一个数字或字母算一个字符。 CHARACTER_LENGTH(str) CHARACTER_LENGTH()是CHAR_LENGTH()的同义词。 BIT_LENGTH(str) 返回2进制长度
MySQL数据类型(留作备忘)
CAHR(Length)
Length字节
定长字段,长度为0~255个字符
VARCHAR(Length)
String长度+1字节或String长度+2字节
变长字段,长度为0~65 535个字符
String长度+1字节
字符串,最大长度为255个字符
String长度+2字节
字符串,最大长度为65 535个字符
String长度+3字节
字符串,最大长度为16 777 215个字符
String长度+4字节
字符串,最大长度为4 294 967 295个字符
TINYINT(Length)
范围:-128~127,或者0~255(无符号)
SMALLINT(Length)
范围:-32 768~32 767,或者0~65 535(无符号)
MEDIUMINT(Length)
范围:-8 388 608~8 388 607,或者0~16 777 215(无符号)
INT(Length)
范围:-2 147 483 648~2 147 483 647,或者0~4 294 967 295(无符号)
BIGINT(Length)
范围:-9 223 372 036 854 775 808~9 223 372 036 854 775 807,或者0~18 446 744 073 709 551 615(无符号)
FLOAT(Length, Decimals)
具有浮动小数点的较小的数
DOUBLE(Length, Decimals)
具有浮动小数点的较大的数
DECIMAL(Length, Decimals)
Length+1字节或Length+2字节
存储为字符串的DOUBLE,允许固定的小数点
采用YYYY-MM-DD格式
采用YYYY-MM-DD HH:MM:SS格式
采用YYYYMMDDHHMMSS格式;可接受的范围终止于2037年
采用HH:MM:SS格式
Enumeration(枚举)的简写,这意味着每一列都可以具有多个可能的值之一
1、2、3、4或8字节
与ENUM一样,只不过每一列都可以具有多个可能的值
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:326626次
积分:4983
积分:4983
排名:第4048名
原创:171篇
转载:174篇
评论:17条
(3)(2)(2)(2)(4)(1)(1)(1)(2)(2)(7)(7)(5)(1)(2)(6)(1)(6)(4)(2)(3)(6)(16)(6)(9)(1)(4)(7)(3)(1)(7)(10)(11)(23)(20)(29)(27)(16)(39)(46)1.mysql varchar类型变化:mysql 5.0.3 之前:
0--255字节&
varchar(20)中的20表示字节数,如果存放urf8编码的话只能放6个汉字。
MySQL 5.0.3 之后:
0--65535字节&
varchar(20)表示字符数,不管什么编码,既汉字也能放20个。但最多占65532字节(两个字节存放长度,小于255字节用1个字节存放长度)
1.存储限制:
varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节),因此最大长度不能超过65532。
2.字符编码的长度限制:
字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766;&& &字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845。若定义的时候超过上述限制,则varchar字段会被强行转为text类型,并产生warning。
3.行长度限制:
导致实际应用中varchar长度限制的是一个行定义的长度。 MySQL要求一个行的定义长度不能超过65535。若定义的表长度超过这个值。则提示:
ERROR ): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs。**************************通过navicat测试得出,当字段为utf8编码时,最大长度设置21845,但会出现警告ERROR ): Row size too large...,改为略小于21845的数值可以。修改为gbk,最大长度设置32766,但会出现警告ERROR ): Row size too large...,改为略小于32766的数值可以。 ***************************
2.CHAR(M), VARCHAR(M)不同之处
列的长度为固定的,M取值可以为0~255之间
当保存CHAR值时,在它们的右边填充空格以达到指定的长度。
当检 索到CHAR值时,尾部的空格被删除掉。在存储或检索过程中不进行大小写转换。
CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义 char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充。
VARCHAR(M):
列的长度为可变长字符串,M取值可以为0~65535之间,(VARCHAR的最大有效长度由最大行大小和使用 的字符集确定。整体最大长度是65,532字节)。
VARCHAR值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则 使用两个字节)。
VARCHAR值保存时不进行填充。当值保存和检索时尾部的空格仍保留,符合标准SQL。
varchar存储变长数据,但存储效率没有 CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么"+1"呢?这一个字节用于保存实际使用了多大的长度。 从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。
CHAR和VARCHAR最大的不同就是一个是固定长度,一个是可变长度。由于是可变长度,因此实际存储的时候是实际字符串再加上一个记录 字符串长度的字节(如果超过255则需要两个字节)。如果分配给CHAR或VARCHAR列的值超过列的最大长度,则对值进行裁剪以使其适合。如果被裁掉 的字符不是空格,则会产生一条警告。如果裁剪非空格字符,则会造成错误(而不是警告)并通过使用严格SQL模式禁用值的插入。
3. VARCHAR和TEXT、BlOB类型的区别
VARCHAR,BLOB和TEXT类型是变长类型,对于其存储需求取决于列值的实际长度(在前面的表格中用L表示),而不是取决于类型 的最大可能尺寸。例如,一个VARCHAR(10)列能保存最大长度为10个字符的一个字符串,实际的存储需要是字符串的长度 ,加上1个字节以记录字符串的长度。对于字符串'abcd',L是4而存储要求是5个字节。
BLOB和TEXT类型需要1,2,3或4个字节来记录列值的长度,这取决于类型的最大可能长度。VARCHAR需要定义大小,有65535字节的最大限制;TEXT则不需要(不用指定长度)。如果你把一个超过列类型最大长度的值赋给一个BLOB或TEXT列,值被截断以适合它。
一个BLOB是一个能保存可变数量的数据的二进制的大对象。4个BLOB类型TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB仅仅在他们能保存值的最大长度方面有所不同。
BLOB 可以储存图片,TEXT不行,TEXT只能储存纯文本文件。4个TEXT类型TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT对应于 4个BLOB类型,并且有同样的最大长度和存储需求。在BLOB和TEXT类型之间的唯一差别是对BLOB值的排序和比较以大小写敏感方式执行,而对 TEXT值是大小写不敏感的。换句话说,一个TEXT是一个大小写不敏感的BLOB。
4.总结char,varchar,text区别
长度的区别,char范围是0~255,varchar最长是64k,但是注意这里的64k是整个row的长度,要考虑到其它的 column,还有如果存在not null的时候也会占用一位,对不同的字符集,有效长度还不一样,比如utf8的,最多21845,还要除去别的column,但是varchar在一般 情况下存储都够用了。如果遇到了大文本,考虑使用text,最大能到4G。
效率来说基本是char&varchar&text,但是如果使用的是Innodb引擎的话,推荐使用varchar代替char
char和varchar可以有默认值,text不能指定默认值
数据库选择合适的数据类型存储还是很有必要的,对性能有一定影响。这里在零碎记录两笔,对于int类型的,如果不需要存取负值,最好加上unsigned;对于经常出现在where语句中的字段,考虑加索引,整形的尤其适合加索引。
阅读(...) 评论()

我要回帖

更多关于 mysql客户端navicat 的文章

 

随机推荐