【mysql中的varchar】教程文章相关的互联网学习教程文章

mysql – 如何在没有键限制的情况下防止重复的VARCHAR?【代码】

我想将URL存储在数据库列中,并强制执行值必须唯一的约束.不幸的是,MySQL对索引键的长度有限制,这意味着只检查URL的前X个字符的唯一性.因此,我遇到了误报,其中两个不同的URL触发了约束集成违规,因为前X个字符恰好相同. 有没有办法在VARCHAR列上强制执行唯一性而不限制其长度? 例如,是否可以在前X个字符上创建非UNIQUE索引,然后如果其余字符相同则具有触发器块INSERT?解决方法:我们一直给你答案,不直接回答这个问题,因为这就是我们...

mysql – 使用更长的字符串更新VARCHAR单元时会发生什么?【代码】

假设我在mySQL数据库中有一个类型为VARCHAR(32)的列. 在Spetmeber 1st,我决定存储字符串“tea”,但在9月2日我决定将其更新为“coffee”. 很明显,如果这个表中的所有记录都相互挤压,我们试图将一个记录延长3个字节,那么在这个记录之后出现的所有记录都需要向下移动3个字节.当然,这很荒谬;任何DBMS都无法使用数千个可能的条目. 那么mySQL在这种可能性中究竟做了什么呢?它对TEXT和BLOB类型的行为方式是否相同? 编辑:在一天之后读完...

MySQL:TEXT和VARCHAR速度和大小

varchar和Text是否会影响数据库大小?另外,它们的速度不同吗? 我有一个数据库,每天至少有4000到8000个新行.我很担心它的表现如何.这是我第一次建立企业级系统和数据库.解决方法:使用您需要的东西,不要担心性能.但只使用你需要的东西.当VARCHAR(255)足够时,说TEXT有一些小的低效率.当VARCHAR(20)足够时,同样为VARCHAR(255). 原因如下:如果SELECT需要构建一个tmp表(例如,对于ORDER BY),它首先尝试使用MEMORY tmp表(更好),但可能必须...

VARCHAR主键 – MySQL

目前,我有一个包含2列的类别表 – 类别VARCHAR(50)NOT NULL PRIMARY KEY和父VARCHAR(50).父列是类别列的外键(FK). 这似乎是最明显的方法.然而,由于我使用VARCHAR列作为主键,警报铃声在我脑海中响起,这可能会在查询表时减慢操作速度. 我可以引入一个名为cat_id INT AUTO_INCREMENT的第三列,并将其设置为PK,但它会引入一个没有意义的新列. 除了哪一个会更快,还应该考虑其他什么? 注:我预测最多会有1000个类别,因此行数不是很高.但是...

mysql – 电话号码的数据类型:VARCHAR,INT还是BIGINT?

所以这将是今年的虚拟问题,但我需要问,因为这不是我第一次通过这个.看一下下面的表定义:看一下from_number列,这是一个VARCHAR(45),但它会保存一个电话号码.由于我不知道手机在全世界有多少个号码,所以我试图覆盖几乎所有这些号码.我想尽可能保持数据库的完整性,所以我认为VARCHAR不适合保存这种信息 – 也许我错了,你告诉我 – 所以我在想改变INT甚至是BIGINT. 当我在Workbench中定义一个列时,我应该指定括号()之间的数字,而不是在...

MySQL排序varchar列数字,数字优先【代码】

我有一个varchar列,我想对数字进行排序,这在使用这个技巧时效果很好:https://stackoverflow.com/a/5418033/1005334(简而言之:…… ORDER BY Result * 1). 但是,有关表格包含结果.所以这样的事情发生了:Result ------ DNS DNF 1 2 3这些数字是正确排序的,但是当这样排序时,DNF会超过数字.我想要的是使用数字排序,但非数字按字母顺序排列在数字下方.像这样:Result ------ 1 2 3 DNF DNS我可以以什么方式修改查询(最好只有ORDER B...

mysql – 如何更改所有已创建列的默认字符串长度(varchar)?【代码】

在rails中创建迁移并指定字符串时,列长度默认为255.有没有办法设置所有创建的未指定长度的列,默认为其他数字? 一般来说255很好,但在我的情况下,我需要将字符串列上的编码切换到utf8mb4,当我这样做时索引中断,因为索引不能超过767字节: Mysql2 ::错误:指定的密钥太长;最大密钥长度为767字节 由于utf8存储为3个字节,因此3 * 255 = 765,但utf8mb4为4个字节,因此4 * 255 = 1020,这将失败. 因此,一旦我将database.yml更改为使用utf8m...

为什么我在MySQL中使用VARCHAR over TEXT?

我注意到在MySQL中,VARCHAR和TEXT都提供可变大小的数据.好吧,VARCHAR在数据存储方面更有效率,但TEXT MEDIUMTEXT和LONGTEXT仍然提供了更多的潜力.那么,VARCHAR的真正用途是什么?解决方法:首先,您应该阅读MySQL手册的10.4. String Types部分:它将为您提供您正在寻找的所有信息: > 10.4.1. The CHAR and VARCHAR Types> 10.4.3. The BLOB and TEXT Types 几个重要的区别: >可以包含的文本数量的差异: > varchar的大小限制很小;对...

mysql – 为什么我不能将varchar设置为1000的长度

如果这很重要,我也将它设置为独一无二 我设法为varchar设置的最大值是745(它也设置为唯一).解决方法:取决于您运行的MySQL版本,在5.0.3之前,varchar有255个字符的限制:Values in VARCHAR columns arevariable-length strings. The lengthcan be specified as a value from 0 to255 before MySQL 5.0.3, and 0 to65,535 in 5.0.3 and later versions.来自:http://dev.mysql.com/doc/refman/5.0/en/char.html

php – varchar vs text – MySQL

在我的项目中用户可以写评论[纯文本],并查看其他评论,可以删除自己的评论,但无法更新评论!在这种情况下,我应该使用哪种? 文字还是Varchar(4048)?Text和Varchar的优点和缺点是什么(大似4000)?如果我只更换’<,它是否足够安全?与& LT;”和>‘与’& GT;”确保一切都很好?[我不想转换所有像”& …,以节省空间,我只是想确保用户不能写javascript] 前端会有限制解决方法:为了保护自己免受XSS攻击,请使用htmlentities函数对其进行编...

我应该给在JSON中存储签名的MYSQL VARCHAR字段提供多长时间?

我正在尝试将签名存储在数据库中.我正在使用签名板插件(signaturePad),它从canvas转换为JSON,现在想要在MySQL中存储签名. 我正在使用VARCHAR字段,但我不确定应该允许哪个长度.我尝试了几次,通常最终得到一个2000到3000个字符的字符串. 题:我应该在MYSQL中使用什么字段长度?我不知道CANVAS => JSON转换是如何完成的,所以也许有人可以给我一个关于期望的指针? 谢谢!解决方法:我不会使用VARCHAR,我会使用TEXT.这样做可能会牺牲性能...

mysql – 我应该使用INT,CHAR或VARCHAR作为社会安全号吗?

我正在为一个新项目设计数据库,我不确定是否应该使用INT,CHAR或VARCHAR作为员工的社会安全号码.在我的国家,SSN由11位数字组成. 请注意,我将在此表上使用ID列作为主键,因此SSN不会用作密钥. INT注意事项:无法在列上错误地存储文本,这很好,但我无法确保插入的值具有正确的位数. CHAR注意事项:我可以确保条目具有正确的位数,但我不能确定这些是数字,并且SSN的长度将来可能会增加. VARCHAR注意事项:没有其他两个的任何好处,但是是最...

为什么MySQL VARCHAR允许超过最大长度?【代码】

我创建了一个带有UTF-8 VARCHAR(5000)的表,并用数据填充它.但看起来这个字段允许的数据超出了指示范围:mysql> DESCRIBE test; +---------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment...

mysql – 如何将索引的varchar(255)从utf8更改为utf8mb4并仍然保持在767最大密钥长度之下?

我有一个需要支持表情符号的mysql列,这意味着将utf8列转换为utf8mb4.但是我的varchar(255)将不适合,只要列被索引(不唯一). 如何保留索引,并获得utf8mb4校对? 我试图将长度减少到191但不幸的是我的一些行更长并且我得到了这个错误:#1406 – 第33565行的列’column_name’的数据太长了(由于我不是,因为这不是非常有用t有一个自动增量列,不知道如何精细行33565).解决方法:我认为它与行的最大数据长度有关,存在这样的限制,至少对于我...

MySQL:VARCHAR(1024)vs VARCHAR(512)

在MySQL中,VARCHAR(1024)和VARCHAR(512)之间有什么区别?如果我的项目永远不会超过512个字符,使用VARCHAR(1024)会丢失什么?解决方法:不知道你从哪里得到它,但是不能在没有指定长度的情况下创建一个包含varchar的表.它会导致语法错误.所以你的问题已经过时了. 更新: 没有. Varchar的名称暗示了一个可变长度的数据类型,至少是创建表时指定的最大长度.这意味着,在每行的varchar列中,一个额外的字节用于存储行中字符串的实际长度.因此...