当前位置:网站首页>varchar2 and varchar2(char)_datetime data types
varchar2 and varchar2(char)_datetime data types
2022-08-03 14:30:00 【Full stack programmer webmaster】
大家好,又见面了,我是你们的朋友全栈君.char varchar varchar2 的区别 区别: 1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc”,对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储. 2.CHAR的效率比VARCHAR2的效率稍高. 3. 目前VARCHAR是VARCHAR2的同义词.工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利.Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值.如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR.
何时该用CHAR,何时该用varchar2? CHAR与VARCHAR2是一对矛盾的统一体,两者是互补的关系. VARCHAR2比CHAR节省空间,在效率上比CHAR会稍微差一些,to gain efficiency,you have to sacrifice some space,This is we often say in database design‘以空间换效率’. VARCHAR2虽然比CHAR节省空间,但是如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,It is to be avoided in database design and adjustment.,在这种情况下用CHAR代替VARCHAR2会更好一些.
char varchar nchar nvarchar 四者的区别 1、char[(n)]
长度为 n 个字节的固定长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为 n 个字节.char 在 SQL-92 中的同义词为 character.
2、varchar[(n)]
长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为输入数据的字节的实际长度,而不是 n 个字节.所输入的数据字符长度可以为零.varchar 在 SQL-92 中的同义词为 char varying 或 character varying.
如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1.如果没有使用 CAST 函数指定 n,则默认长度为 30.
将为使用 char 或 varchar The objects are assigned the default collation of the database,除非用 COLLATE clause additionally assigns a specific collation.The collation controls the code page used to store character data.
Sites that support multiple languages should consider using Unicode nchar 或 nvarchar data types to minimize character conversion issues.如果使用 char 或 varchar:
If you want to data in a column value size close to agreement,请使用 char.
If you want the data values in the columns to be significantly different in size,请使用 varchar. 如果执行 CREATE TABLE 或 ALTER TABLE 时 SET ANSI_PADDING 为 OFF,A definition for NULL 的 char column will be used as varchar 处理.
当排序规则代码页使用双字节字符时,存储大小仍然为 n 个字节.depending on the string,n bytes storage size may be less than n 个字符.
nchar 是固定长度 Unicode 数据的数据类型,nvarchar 是可变长度 Unicode 数据的数据类型,二者均使用 UNICODE UCS-2 字符集. 3、nchar(n)
包含 n 个字符的固定长度 Unicode 字符数据.n 的值必须介于 1 与 4,000 之间.存储大小为 n double the bytes.nchar 在 SQL-92 中的同义词为 national char 和 national character.
3、nvarchar(n)
包含 n 个字符的可变长度 Unicode 字符数据.n 的值必须介于 1 与 4,000 之间.字节的存储大小是所输入字符个数的两倍.所输入的数据字符长度可以为零.nvarchar 在 SQL-92 中的同义词为 national char varying 和 national character varying.
如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1.如果没有使用 CAST 函数指定 n,则默认长度为 30.
If you want all data items in a column to be nearly the same size,则使用 nchar.
If you want to the size of the data item in a column difference is very big,则使用 nvarchar.
使用 nchar 或 nvarchar The objects are assigned the default collation of the database,除非使用 COLLATE clause assigns a specific collation.
SET ANSI_PADDING OFF 不适用于 nchar 或 nvarchar.SET ANSI_PADDING ON always apply nchar 和 nvarchar.
===========================================================================
nchar(n)
包含 n 个字符的固定长度 Unicode 字符数据.n 的值必须介于 1 与 4,000 之间.存储大小为 n double the bytes.nchar 在 SQL-92 中的同义词为 national char 和 national character.
nvarchar(n)
包含 n 个字符的可变长度 Unicode 字符数据.n 的值必须介于 1 与 4,000 之间.字节的存储大小是所输入字符个数的两倍.所输入的数据字符长度可以为零.nvarchar 在 SQL-92 中的同义词为 national char varying 和 national character varying.
注释
如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1.如果没有使用 CAST 函数指定 n,则默认长度为 30.
If you want all data items in a column to be nearly the same size,则使用 nchar.
If you want to the size of the data item in a column difference is very big,则使用 nvarchar.
使用 nchar 或 nvarchar The objects are assigned the default collation of the database,除非使用 COLLATE clause assigns a specific collation.
SET ANSI_PADDING OFF 不适用于 nchar 或 nvarchar.SET ANSI_PADDING ON always apply nchar 和 nvarchar. 二、char 和 varchar 固定长度 (char) or variable length (varchar) 字符数据类型.
char[(n)]
长度为 n 个字节的固定长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为 n 个字节.char 在 SQL-92 中的同义词为 character.
varchar[(n)] 长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为输入数据的字节的实际长度,而不是 n 个字节.所输入的数据字符长度可以为零.varchar 在 SQL-92 中的同义词为 char varying 或 character varying. 注释 如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1.如果没有使用 CAST 函数指定 n,则默认长度为 30.
将为使用 char 或 varchar The objects are assigned the default collation of the database,除非用 COLLATE clause additionally assigns a specific collation.The collation controls the code page used to store character data.
Sites that support multiple languages should consider using Unicode nchar 或 nvarchar data types to minimize character conversion issues.如果使用 char 或 varchar:
If you want to data in a column value size close to agreement,请使用 char.
If you want the data values in the columns to be significantly different in size,请使用 varchar.
如果执行 CREATE TABLE 或 ALTER TABLE 时 SET ANSI_PADDING 为 OFF,A definition for NULL 的 char column will be used as varchar 处理.
当排序规则代码页使用双字节字符时,存储大小仍然为 n 个字节.depending on the string,n bytes storage size may be less than n 个字符.
总结: 1、 varchar: 可变长度的非 Unicode 数据,最长为 8,000 个字符. 2、nvarchar: 可变长度 Unicode 数据,其最大长度为 4,000 字符. 3、char: 固定长度的非 Unicode 字符数据,最大长度为 8,000 个字符. 4、nchar 固定长度的 Unicode 数据,最大长度为 4,000 个字符.
5、 char和varchar都是字符串类型的
用Unicode编码的字符串,the result is the integer value of the character
================================================================================================================================
char是定长的,varchar是变长的.
varchar2应该是varchar的升级,似乎只有ORACLE才有,这里不作讨论.
char定长存储,速度快,But there is a certain waste of space,For fields not very large,Where high speed is required.Fast because it is physically stored in fixed length,这样,You can take out a fixed-length character at a time according to the offset address.
varchar变长存储,So not as efficientchar.varchar在存储时,Physically store the actual length of the field first,then the content.这样读取的时候,就要读取两次,read its length at a time,then the content.So its access speed will be higher thanchar慢一些.but it saves space.
由于mysql自身的特点,If a data table existsvarchar字段,in the tablecharfields will automatically be converted tovarchar字段.set in this casechar是没有意义的.所以要想利用char的高效率,To ensure that the table does not existvarchar字段;否则,应该设为varchar字段.
SQL中char、varchar、text和nchar、nvarchar、ntext的区别 1、CHAR.CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间. 2、VARCHAR.存储变长数据,但存储效率没有CHAR高.如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的.VARCHAR类型的实际长度是它的值的实际长度+1.为什么“+1”呢?这一个字节用于保存实际使用了多大的长度. 从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点. 3、TEXT.text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符. 4、NCHAR、NVARCHAR、NTEXT.这三种从名字上看比前面三种多了个“N”.它表示存储的是Unicode数据类型的字符.我们知道字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示.nchar、nvarchar的长度是在1到4000之间.和char、varchar比较起来,nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字.可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失. 所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar.
————————
Database definition tochar类型的字段时 char、nchar、varchar、nvarchar、text、ntextwhich one?
Database definition tochar类型的字段时,I don't know if you will hesitate,到底选char、nchar、varchar、nvarchar、text、ntextwhich one?The result is likely to be two,The choice of is a thrifty people:Better to use fixed length,Longer than can save some space,And to handle will be faster,Can not be fixed length has to choose fixed length,and set the length as small as possible;Another kind is fine,Use mutable types as much as possible,Increase the length as much as possible. Given that hardware is now as cheap as a turnip,Entanglement such small problems is not very much,But if you don't understand it,I always feel sorry for being overworkedCPU和硬盘.
下面开始了(Only for the followingSqlServer有效): 1、当使用非unicodeUse the following query with caution: select f from t where f = N’xx’ 原因:无法利用到索引,因为数据库会将f先转换到unicode再和N’xx’比较 2、char and the same lengthvarcharProcessing speed is about the same(There are instructions later) 3、varcharThe length does not affect the processing speed!!!(see explanation later) 4、The index of maximum total for the total length of column900字节,所以长度大于900的varchar、char和大于450的nvarchar,ncharwill not be able to create the index 5、text、ntextIs unable to create the index 6、O/R MappingThe attribute type of the corresponding entity in is generallystring居多,用char[]的非常少,So if you pressmappingthe reasonableness of,Variable-length types are more consistent 7、in the general basic data sheetnameIn the actual query basically all uselike ‘%xx%’这种方式,In this way, the index cannot be used,So if in this field,The index is built and it is built for nothing 8、some others likeremarkThe fields do not need to be queried at all,So no need to index 9、varcharThe store andstring是一样原理的,即length {block}这种方式,所以varcharis independent of the length it actually takes up 10、对于固定长度的字段,need extra space for storageNULL标识的,所以如果一个charThere are a lot ofNULL,那么很不幸,your footprint is better than nothingNULL的大(But it's not too big,因为NULLlogo is usedbit存放的,But if you're the only you in the lineNULL需要标识,then you're wasting1byte空间了,罪过罪过!),这时候,You can use a special identifier to store,如:’NV’ 11、同上,所以对于这种NULL查询,The index is unable to take effect,假如你使用了NULLmark alternative words,那么恭喜你,You can use to the index 12、char和varcharThe comparative cost is the same,Now the key is the cost of their index lookups,Because the search strategy are the same,So it should be who take up the space is small.In the case of storing the same number of characters,If the quantity is small,那么charOccupied length is less thanvarchar的,But if the number is slightly larger,则varcharprobably less thanchar,And it depends on the fullness of the actual filling value.,比如说varchar(3)和char(3),Then in theory it should bechar快了,但如果是char(10)和varchar(10),Enrichment degree only30%的情况下,In theory it should bevarchar快了.因为varcharAdditional space is required to store the block length,所以只要length(1-fillfactor)Is greater than the storage space(好像是2字节),then it will be more than the same lengthchar快了. 13、nvarchar比varcharslow down,and for non-unicodeIt will take up double space characters,So why is such a type introduced??对,for internationalization,对于unicode类型的数据,Collation doesn't work for them,而非unicodeWhen dealing with the data of different language characters,Collation must be specified for this to work,所以nIt's so little good type.
总结: 1、如果数据量非常大,又能100%Determine the length and save justansi字符,那么char 2、can determine the length but not necessarilyansi字符或者,那么用nchar; 3、不确定长度,If you want to query and want to use the index,用nvarchar类型吧,Will they have to400; 4、Nothing to say if you don't ask,用nvarchar(4000) 5、The bold can only use3和4,偶尔用用1,It's an extra note after all,It's like telling someone,I definitely need the length to beX位的数据
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/124811.html原文链接:https://javaforall.cn
边栏推荐
- 想成为网络安全技术爱好者(可能是黑客)的话,需要看什么书?
- 驻冰岛使馆提醒旅冰中国公民务必加强安全防护
- 【问题】torch和torchvision对应版本
- 冷链行业商业供应链系统:实现全流程数字化协同,激活企业迸发市场活力
- The embassy in Iceland reminds Chinese citizens in Iceland to strengthen safety protection
- W11或W10系统如何进行休眠?
- typedef关键字的用法
- QImageReader
- LeetCode15:三数之和
- [A summary of the sorting and use of activation functions in deep learning]
猜你喜欢
使用Jetty服务器和Axis2框架技术发布Webservice接口
系统学习Shell之正则表达式
基于ModelArts的动漫头像自动生成丨【华为云至简致远】
数据科学家 Agnis Liukis :在ML领域,初学者踩过的5个坑
Petri net-2, directed net
W11或W10系统如何进行休眠?
Zhang Le: The Golden Triangle of R&D Efficiency and Practice in the Field of Demand and Agile Collaboration|Live Review
利用 NFT 释放网站的潜力
Ansible中的角色使用
【深度学习中的激活函数的整理与使用总结】
随机推荐
投资75亿卢比!印度宣布建首座存储芯片组装和封测工厂,将于12月量产
利用 NFT 释放网站的潜力
游戏版号“地下交易”,一个版号能卖上千万?
函数在结构体中的应用练习
驻尼日利亚使馆发布阿布贾祖玛岩附近地区紧急安全预警
MSF编码与upx加壳过杀软
为什么手动启动GBase 8c数据库中GTM节点,起不来。显示“Run cmd failed:scp: /tmp/gtm_gtm1.server: Permission denied”
使用百度EasyDL实现施工人员安全装备检测
你把 浏览器滚动事件 玩明白
利用华为云ECS服务器搭建安防视频监控平台【华为云至简致远】
idea找不到class,gradle依赖已经加载,并且class可看
Nanoprobes Ni-NTA-Nanogold——用于 His 标签标记和检测
Forrester:行业云帮助中国企业更快适应未来的发展
大势,又一关乎中美竞争的关键行业,走到关键时刻了
MySQL【存储过程与函数】
varchar2和varchar2(char)_datetime数据类型
金立前高管团队再战手机市场,创立新品牌“FreeYond”
可视化数据库设计软件有哪些_数据库可视化编程
Leetcode 448. Find All Numbers Disappeared in an Array to Find All Disappeared in an Array of Numbers (simple)
How to use matlab to implement the piecewise function "recommended collection"