MYSQL字段类型与操作

字符编码与配置文件

操作 代码 功能
查看 \s 查看数据库基本信息(用户、字符编码)
配置(配置文件层面) my-default.ini windows下MySQL默认的配置文件
修改配置(配置文件层面) my.ini 必须带my.ini才会被mysql系统识别并读取
添加服务端字符编码(配置文件层面) [mysqld]\n character-set-server=utf8(字符编码即可)\n collation-server=utf8_general_ci 修改mysql服务端默认的字符编码,我们需要重新启动我们默认自启的服务端
添加客户端字符编码(配置文件层面) [client]\n default-charcter-set=utf8 修改mysql客户端默认的字符编码,我们只需要重新登录我们的客户端即可
添加mysql的字符编码(配置文件层面) [mysql]\n default-character-set=utf8 修改mysql的字符编码,我们需要重新登陆
偷懒操作 -uroot -pxxx 将我们的用户名和密码写入配置文件那么就不需要一直自己登录操作,但是我们要注意好自己的电脑不会被他人操作再进行修改

存储引擎

名称 代码 结构 作用
MyISAM cerate table 表名(字段名 字段类型) engine=myisam; .frm 表结构 .MYD 表数据 .MYI 表索引(加速数据的查询) MySQL5.5及之前版本默认的存储引擎,存取数据的数据较快,但是功能很少,安全性较低
InnoDB cerate table 表名(字段名 字段类型) engine=innodb; .frm 表结构 .idb 表数据,表索引(加速数据的查询) MySQL5.5之后版本默认的存储引擎,存取速度没有MyISAM快但是支持十五,行锁,外键等诸多功能,并且安全性较高
Memory cerate table 表名(字段名 字段类型) engine=menory; .frm 表结构 基于内存工作的存储引擎,存取速度极快,但是断电数据立即丢失无法保存
BlackHole cerate table 表名(字段名 字段类型) engine=blackhole; .frm 表结构 黑洞,无论写入什么数据都会立即丢失,类似垃圾回收站,但是这个垃圾回收站有点bug空间无限
展示 insert into 表名 values(1); 展示引擎效果
CV 右键点击 粘贴 在windows cmd终端中鼠标右键的意思就是粘贴
查看 show engines; 查看所有的存储引擎

创建表的完整语法

  • 语法

    cerate table 表名(
    字段名1 字段类型(数字)约束条件
    字段名2 字段类型(数字) 约束条件
    字段名3 字段类型(数字)约束条件
    )engine=存储引擎;
  • 补充

    • 字段名和字段类型是必须的(至少写一个)
    • 数字和约束条件是可选的(可有可无)
    • 约束条件可以写多个 只需要空格空开即可
    • 最后一个字段的结尾千万不能加逗号,加逗号就会报错,粗心的话那么就会一致发现不了这个小错误

字段类型之整型

  • 类型展示
类型 字节 有符号 没有负号
tinyint 1 bytes -128~127 0~255
smallint 2 bytes -32768~13267 65535
mediumint 3 bytes -8388608~8388607 16777215
int 4 bytes -2147483648~2147483647 4294967295
bigint 8 bytes -263~(263)-1 (2^64)-1
  • 验证整型是否自带负号

    cerate table 表名(字段名 tinyint);
    insert into 表名 values(-129),(256);
    发现自动填写为两个边界值,数据失真久没有任何意义了
    上述所有类型默认都会带有负号
  • 自定义移除负号

    """
    unsigned 约束条件之一 意思是不需要负号
    """
    create table 表名(字段名 tinyint unsigned);
    insert into 表名 values(-129),(256);
  • 修改文件

    插入的数据值超出了数据类型的范围 不应该让其插入并自动修改 没有任何意义
    数据库应该直接报错(这个特性其实应该是有的但是我们做配置文件的时候被我们修改了)
    方式一:
    set session sql_mode='strict_trans)tables' 当前客户端操作界面有效
    set global sql_mode='STRICT_TRANS_TABLES' 服务器不重启那么就永久有效
    方法二:
    [mysqld]
    sql_mode='STRICT_TRANS_TABLES' 其实和上方编写配置文件的的一样,只是将我们需要一直写的东西直接写入了就不需要我们自己去输入了

字段类型之浮点型号

类型 使用区间 精确度问题 展示
float (255,30) create table 表名(id float(255,30)); insert into 表名 values(1.222222222222222222222222222222)
double (255,30) cerate table 表名(id double(255,30)); insert into 表名 values(1.222222222222222222222222222222)
decimal (65,30) cerate table 表名(id decimal(65,30)); insert into 表名 values(1.222222222222222222222222222222)
  • 排序 float < double < decimal

  • 我们一般使用浮点型的时候使用float就足够使用了,如果想要你输多少就出多少的话那么就直接使用字符串类型就可以了

字段类型之字符类型

  • 类型
类型 存储方式 存储范围 作用
char char(4) 固定存储四个字符 如果存储不够四个字符那么就会使用空格来填充,如果超过那么不好意思报错
varchar varchar(4) 最大存储四个字符 如果存储不够四个字符那么不会改变默认在前面加一个bytes来区分你所存储的数据,如果朝贡四个那么就会直接报错,毫不犹豫
  • 验证区别

    1.验证二者的区别
    char方法:
    cerate table 表名(字段名 字段类型,name char(4))
    varchar方法:
    cerate table 表名(字段名 字段类型,name varchar(4))
    2.验证结果
    二者都是只要超出范围都会报错,注意sql_mode='strict_trans_tables'
    3.验证长短特性
    char_length() # 查看字段数据的长度,类似python中的len()
    """
    在默认的情况下我们在存储的时候如果没有填充满足固定位数的字符那么系统就会自动默认帮我们填充空格,然后我们在读取的时候只要检查到空格那么就会自动帮我们做删除然后就会帮我们读出我们想要的数据,而在存取varchar的时候存入会自动帮我们加入一个分开的字节以方便我们取出的时候发生错乱现象
    我们要是想要取消上方删减空格的操作可以使用
    sql_mode
    set global
    sql_mode='strict_trans_tables,pad_char_to_full_length'
    将上方代码写入我们之前写的那个配置文件中
    """
  • 应用范围

    char
    cahr(4)
    a b c lili jsonboy zeay
    整存整取 速度较快但是有点浪费内存空间,因为需要空格去给他填充
    varchar
    varchar(4)
    1bytes+a1bytes+b1bytes+c1bytes+lili+1bytesjson+1bytesboy+1byteszeay
    存取的时候都需要制作报头,相较于char来说就比较节省内存空间,所以存储数据的速度就较慢于char
    """
    现在两者的使用频率都很高,之前默认使用的是char但是现在较多是默认使用carchar因为比较节省空间
    """

数字的含义

数字大部分呢情况下都是用来限制字段的存储长度,但是整型除外,不是用来限制存储的长度你有多少他给你存多少但是到展示的时候他就只会给你展示你所标注数字的长度
cerate table 表名(字段名 int(3));
cerate table 表名(字段名 int(3) zerofill); 总结
也就是说以后只要是设计整形字段的定义那么子啊类型后面不需要加括号和写数字,除非有业务需求必须固定位数
0000000013
0052856123

字段类型之枚举与集合

enum枚举类型是一种可以在事先定义好(枚举出来)的各个可取值中选择一个的数据类型,其定义方法时使用enum(枚举值1,枚举值2,枚举值3....)来定义此种类型后,将对有关字段(变量)的取值范围进行了限定,只能取个枚举值中的某一个,否则报错,一个枚举类型数据最多可以拥有65535个枚举项,其允许的取值为字符串枚举内的内容
枚举 多选一:
例如:性别(生理男性,生理女性,其他)
create table 表名(
字段名 int,
name varchar(32),
gender enum('male','female','others')
);
集合 多选多(也包括多选一):
例如:hobby('sing','jump','rap','basketball')
cerate table 表名(
字段名 int,
name varchar(32),
hobbyies set('sing','jump','rap','basketball')
);

字段类型之日期类型

代码 时间
date 年月日
datetime 年月日时分秒
time 时分秒
year 年份
  • 时间展示
eleate now():现在时间
create table 表名(
字段名 int,
name varchar(32),
birth date,
reg_time datetime,
study_time time,
join_time year
);
insert into 表名 values('2022-12-24','2021-4-29-12-24-32','12-24-32','2001');

字段约束条件

条件 代码 功能
unsigned id int unsigned 无负号
zerofill id int zerofill 零填充
not null name varchar(32) not null 非空
default name varchar(32) default 'joseph' 默认值
unique id int unique 唯一值
unique host varchar()32 port int unique(host,port) 联合唯一
insert into 表名 vlaues() 默认按照创建表的字段顺序添加
insert into 表名(字段) vlaues() 可以自定义字段顺序

MySQL字段类型与操作的更多相关文章

  1. (转)MySQL字段类型详解

    MySQL字段类型详解 原文:http://www.cnblogs.com/100thMountain/p/4692842.html MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间 ...

  2. MySQL 字段类型介绍

    MySQL 基础篇 三范式 MySQL 军规 MySQL 配置 MySQL 用户管理和权限设置 MySQL 常用函数介绍 MySQL 字段类型介绍 MySQL 多列排序 MySQL 行转列 列转行 M ...

  3. MySql 字段类型对应 Java 实体类型

    前言 MySQL Connector/J 对于 MySql 数据类型和 Java 数据类型之间的转换是很灵活的: 一般来讲,任何 MySql 数据类型都可以被转换为一个 java.lang.Strin ...

  4. Mysql字段类型与合理选择

    字段类型 数值 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL 允许 ...

  5. MySQL字段类型 约束

    目录 MySQL存储引擎 非空约束 字段类型 整形类型INT TINYINT 浮点类型float 字符类型char varchar 日期类型 枚举集合 约束条件 主键 自增 unsigned无符号 z ...

  6. MySql字段类型及字节

    字段类型:TINYINT-----------------一个很小的整数.有符号的范围是-128到127,无符号的范围是0到255. SMALLINT--------------一个小整数.有符号的范 ...

  7. 字符编码,存储引擎,MySQL字段类型,MySQL字段约束条件

    字符编码 查看MySQL默认编码命令:\s """ 如果是5.X系列 显示的编码有多种 latin1 gbk 如果是8.X系列 显示的统一是utf8mb4 utf8mb4 ...

  8. Java JDBC中,MySQL字段类型到JAVA类型的转换

    1. 概述 在使用Java JDBC时,你是否有过这样的疑问:MySQL里的数据类型到底该选择哪种Java类型与之对应?本篇将为你揭开这个答案. 2. 类型映射  java.sql.Types定义了常 ...

  9. MySQL字段类型最全解析

    前言: 要了解一个数据库,我们必须了解其支持的数据类型.MySQL 支持大量的字段类型,其中常用的也有很多.前面文章我们也讲过 int 及 varchar 类型的用法,但一直没有全面讲过字段类型,本篇 ...

随机推荐

  1. 【Redis】ziplist压缩列表

    压缩列表 压缩列表是列表和哈希表的底层实现之一: 如果一个列表只有少量数据,并且数据类型是整数或者比较短的字符串,redis底层就会使用压缩列表实现. 如果一个哈希表只有少量键值对,并且每个键值对的键 ...

  2. MongoDB 的内存使用限制

    本文将简述一下MongoDB的内存限制问题 1. 使用Docker限制 当我们使用docker创建mongo 容器时,可通过使用以下参数,对mongo可以使用的资源进行限制 内存限制 参数 简介 -m ...

  3. ssh-基于ssh的文件传输

    scp 基于ssh做Linux主机间的文件传输     scp  文件路径  用户名@被传输的主机名/IP:文件要存放的路径     scp  /etc/fstab  root@10.0.0.2:/t ...

  4. rhel安装程序

    Linux下软件分类     rpm软件包,包管理器 yum     deb软件包,包管理器 apt     源代码软件包            一般为".tar.gz".&quo ...

  5. ssh-配置及使用

    ssh配置文件 SSH的配置文件在/etc/ssh/目录下     openssh-client安装后,生成的配置文件为ssh_config,主要用于连接其他linux主机时,加载此文件     op ...

  6. 【Java面试】什么是 ISR,为什么需要引入 ISR

    Hi,大家好,我是Mic. 一个工作5年的粉丝,在简历上写精通Kafka. 结果在面试的时候直接打脸. 面试官问他:"什么是ISR,为什么需要设计ISR" 然后他一脸懵逼的看着面试 ...

  7. React技巧之中断map循环

    正文从这开始~ 总览 在React中,中断map()循环: 在数组上调用slice()方法,来得到数组的一部分. 在部分数组上调用map()方法. 遍历部分数组. export default fun ...

  8. NC24724 [USACO 2010 Feb S]Chocolate Eating

    NC24724 [USACO 2010 Feb S]Chocolate Eating 题目 题目描述 Bessie has received \(N (1 <= N <= 50,000)\ ...

  9. NC14585 大吉大利,今晚吃鸡

    NC14585 大吉大利,今晚吃鸡 题目 题目描述 糖和抖m在玩个游戏,规定谁输了就要请谁吃顿大餐:抖m给糖a b c三个驻, 并在a柱上放置了数量为n的圆盘,圆盘的大小从上到下依次增大,现在要做的事 ...

  10. File类获取功能的方法和File类判断功能的方法

    File类获取功能的方法-public String getAbsolutePath() :返回此file的绝对路径名字符串 -public String getPath() :将此File转换为路径 ...