mysql string types ---- mysql 字符类型详解

一、mysql 中包涵的字符类型

[national] char     [(m)] [character set charset_name] [collate collation_name]
[national] varchar  [(m)] [character set charset_name] [collate collation_name]binary(m)           -- 和char 只不过它用来保存二进制字节串,m 指定了字节串的长度
varbinary(m)        -- 和varchar 只不过它用来保存二进制字节串,m 指定了字节串的长度

tinyblob            -- 使用一字节前缀,所以最多保存255个byte
blob[(m)]           -- 使用二字节前缀,所以最多保存65535个byte
mediumblob          -- 使用三字节前缀
longblob            -- 使用四字节前缀

tinytext    [character set charset_name] [collate collation_name]   -- 使用一字节前缀,所以最多保存255个字符
text        [character set charset_name] [collate collation_name]   -- 使用二字节前缀,所以最多保存65535个字符
mediumtext  [character set charset_name] [collate collation_name]   -- 使用三字节前缀,所以最多保存2^24 -1个字符
longtext    [character set charset_name] [collate collation_name]   -- 使用四字节前缀,所以最多保存2^32 -1个字符

enum('value1','value2',...) [character set charset_name] [collate collation_name]
set('value1','value2',...)  [character set charset_name] [collate collation_name]

 

二、char(m) 与 varchar(m) 类型: 

  1、char 和 varchar 之间是不同点主要表现在对值的“保存” & “检索” 。

  2、从保存说起:定义中的 m 表示所能保存的最大的字符数;如char(4) 是多能保存4个字符,varchar(4) 也是最多只保存四个字符;

  它们两的不同之处就在于varchar是按需分配的,也就是说如果你只要保存'ab'那么varchar会只为你分配两个字符的空间,

  而char它一次就会分配m个字符的空间,那怕你用不了这么多。

  3、以“检索”结尾:对于char来说没有用的的空间会以空格的方式来填充,所以检索时char会自发的去掉空格!听起来没有毛病,但是

  如果你要保存的值真的是要在最后留几个空格的呢?如果这种情况下用char的话,就会搞的存进去再拿出来就不对了。所以这个要主意。

  4、例子:由char做主键引起的血案

mysql> create table t(x char(4) not null primary key);
Query OK, 0 rows affected (0.00 sec)mysql> insert into t(x) values('a');
Query OK, 1 row affected (0.01 sec)mysql> insert into t(x) values('a '); -- 由于char会自动去掉空格,使得主键冲突了。
ERROR 1062 (23000): Duplicate entry 'a' for key 'PRIMARY'

  5、最后说一下、由于char(m)不是按需分配的,有可能会特别的占空间,所以mysql在设计时就只允许它最多保存255个字符。

 

三、binary 与 varbinary 类型

  1、这个就与char 和 varchar 差不多了,不同的是binary 与 varbinary 这些保存字节串。

 

四、blob* 与 text* 类型

  1、blob* 的全称是 binary larg object 它与binary&varbinary 相对应它们都是保存字节串的类型,只不过blob的空间更大。

  2、text* 与char&varchar 相对应它们都保存字符串。

 

 

----

学习交流

转载于:https://www.cnblogs.com/JiangLe/p/6979087.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/416588.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习(2452):封装数据接口

request.js <template> <div class"artical-container"><!--卡片--><el-card class"filter-card"><div slot"header" class"clearfix"><!--面包屑导航--><el-breadcrumb separator-class&quo…

【NOIP2016】换教室

题目描述 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程。 在可以选择的课程中,有2n节课程安排在n个时间段上。在第 i ( 1≤ i≤n)个时同段上, 两节内容相同的课程同时在不同的地点进行, 其中, 牛牛预先被安排在教室 ci上课, 而另一节课程在教室…

react和react develop tools编译

下载 https://github.com/facebook/react/tags 我这里下载的18.0.0 下载react&#xff0c;里面的packages/react-devtools-extensions目录就是chrome等的扩展插件&#xff0c;需要编译下 需要yarn环境编译&#xff0c;如果需要安装yarn&#xff0c;使用命令 npm install --…

前端学习(2453):项目初始化

# 一、项目初始化## 使用 Vue CLI 创建项目> 注意&#xff1a;不要使用 Git Bash 执行项目创建操作&#xff0c;使用 cmd 或者 powershell 之类的工具。> 如果你还没有安装 VueCLI&#xff0c;或者版本低于 4&#xff0c;请执行下面的命令安装或是升级&#xff1a; >…

python爬虫:两种方法模拟登录博客园

第一方法用第三方库&#xff08;requests&#xff09;&#xff1a;参考http://www.mamicode.com/info-detail-1839685.html 源代码分析 博客园的登录页面非常简单&#xff0c;查看网页源代码&#xff0c;可以发现两个输入框的id分别为input1、input2&#xff0c;复选框的id为re…

java zip压缩解压代码,亲测可用,压缩文件不会有合并问题

亲测可用&#xff0c;压缩文件不会有合并问题 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStrea…

前端学习(2454):用户登录

# 二、用户登录## 功能介绍测试账号&#xff1a;- 13911111111 - 246810也可以通过我们这个应用的移动端注册一个自己的账号&#xff1a;地址&#xff1a;http://vue-toutiao-m.lipengzhou.com/#/login- 手机号&#xff1a;你自己的- 验证码&#xff1a;- 246810- 也可以动态接…

OSError: [Errno 1] Operation not permitted 问题解决

如果在mac下碰到OSError: [Errno 1] Operation not permitted:的问题&#xff0c;就算用sudo 也无法解决. 例如&#xff1a; pip install ipython --user -U 转载于:https://www.cnblogs.com/nemolmt/p/6991408.html

前端学习(2455):layout处理

# 二、Layout 处理## 创建首页组件并配置路由1、创建 src/views/home/index.vuehtml <template><div class"home-container">首页</div> </template><script> export default {name: HomeIndex,components: {},props: {},data () {ret…

文件查找_tar_ext34_swap

查找文件&#xff1a;查找文件有很多种方法&#xff0c;我们先来说 which 命令&#xff08;可执行命令&#xff09;快速查找 作用&#xff1a;查找命令的绝对路径 which会在PATH变量所对应的目录里找&#xff0c;找到了就把绝对路径显示出来. PATH变量可以使用echo $PATH查看 …

idea社区版开发tomcat web(jsp)程序

需要安装tomcat插件 file——settings——plugins—— marketplace中搜索tomcat&#xff0c;找到第一个smart tomcat&#xff0c;点击右侧install安装 创建项目File -> new ->maven 进入到maven中&#xff0c;勾选“Create from archetype”&#xff0c;图片如下&#xf…

前端学习(2456):文章列表

# 四、文章列表模块## 创建组件并配置路由1、创建 src/views/article/index.vuehtml <template><div class"article-container">内容管理</div> </template><script> export default {name: ArticleIndex,components: {},props: {},da…

centos7 sonatype nexus3(支持maven、nuget、docker等)私服搭建

下载 https://help.sonatype.com/repomanager2/download/download-archives—repository-manager-oss https://www.sonatype.com/products/repository-oss-download https://download.sonatype.com/nexus/3/latest-unix.tar.gz 都下载不了&#xff0c;应该是被防火墙屏蔽了&a…

iOS AppStore 申请加急审核

1、在iTunes Connect 上面提交审核后&#xff0c;点击下面链接申请加急审核 链接&#xff1a;https://developer.apple.com/appstore/contact/appreviewteam/index.html 2、进去默认是:"request an expedited app review" 即&#xff1a;“申请加急审核” 3、填写联系…

前端学习(2457):文章发布

# 五、文章发布## 创建组件并配置路由1、创建 src/views/publish/index.vue 组件html <template><div class"publish-container">发布文章</div> </template><script> export default {name: PublishIndex,components: {},props: {},d…

maven打包将依赖打包到target目录中

pom.xml的build/plugins节添加 <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy-dependencies</id><phase>package<…

Angular1.63 绑定数据与继承

html 部分 <body ng-app"myapp"> <div ng-controller"asd"> <p><span ng-bind"firstName"></span></p> </div> <div ng-controller"qwe"> <p><span ng-bind"firstName…

前端学习(2458):素材管理

# 六、素材管理## 创建组件并配置路由1、创建 src/views/image/index.vuehtml <template><div class"image-container">素材管理</div> </template><script> export default {name: ImageIndex,components: {},props: {},data () {ret…

vuex中getters的参数

实际使用代码&#xff0c;将高阶函数变成正常函数&#xff0c;在第一个return位置打断点 const getters {getReadOnly: function(state, parameter, { App }) {return (row, prop) > {const shareUserID App.fileInfo.shareUserID;return getReadOnly(row, prop, shareUs…

Deepgreen数据库日志清理脚本

原文链接 数据库时间久了&#xff0c;难免会产生很多日志&#xff0c;Deepgreen的日志与Greenplum一样&#xff0c;都存在pg_log文件夹下&#xff0c;我们可以使用以下脚本&#xff0c;配合Linux定时任务&#xff0c;保存固定日期的日志即可&#xff1a; #!/bin/bash # filenam…