一、数据库引擎

什么是引擎?

一个功能的核心部分,在数据库中同样也是有引擎的。核心功能是存储数据 涉及到存储数据的代码 就称之为存储引擎

为什么要被分类?

为了让这个功能更加适合用户的需求

创建表时在最后指定引擎名称 engine = xxx

create table t1(id int)engine=innodb

create table t2(id intnot null)engine=csv

create table t3(id int)engine=memory

create table t4(id int)engine=blackhole#innodb,默认的引擎,因为它是永久存储并且支持事务,行锁,外键#csv,不能为空#memory,在重启mysql或者重启机器后,表内数据清空#blackhole,往表内插入任何数据,都相当于丢入黑洞,表内永远不存记录

insert into t1 value(1);

insert into t2 value(1);

insert into t3 value(1);

insert into t4 value(1);

select* from t1;#有值

select * from t2;#有值

select * from t3;#有值

select * from t4;#为空

二、表详细

create table 表名(

字段名 数据类型[(显示的长度)约束条件],

字段名 数据类型[(显示的长度)约束条件],

..........

字段名 数据类型[(显示的长度)约束条件]);

注意:①与Python的不同,最后不需要加逗号

②表名、字段名和数据类型都是必须有的

③显示的长度和约束条件是可选的

④字段名、表名甚至库名都不能是关键字

三、整型类型

整型

*** *** *** ***** ***

tinyint smallint mediumint int bigint

字节数:1 2 3 4 8

默认情况下整型是有符号的 需要用一个二进制位存储符号

给整型加上 约束 unsigned来表示无符号

如果数据超出范围就尽可能保存最大的 例如 在无符号下 保存256 其实存的255

如果有符号 例如 tinyint 保存-1280 其实存的是-128 是最小值

修改严格模式:

以上特性的出现是因为 mysql处于非严格模式

查看当前模式 show variables like "sql_mode";

修改为严格模式 set global sql_mode = "STRICT_TRANS_TABLES";

严格模式下 如果值超出范围就直接报错,在一些版本中默认就是严格模式!

在我们的正常开发中,我们应该先判断数据的正确性,没有问题在发给数据库

怎么选择: 得根据实际情况来判断,能够保存你的数据的最小类型

长度限制对于整型的意义:

create table t10(id int(1));

insert into t10 value(454555);

select *from t10;

发现这个数也存储成功

说明 这里长度指的不是存储容量限制

而是显示的宽度

如果你的数据超过了显示宽度 有几个显示几个

如果不足 则补全到指定长度 得告诉它用什么来补全

create table t13(id int(10) zerofill);

总结 不是容量限制 而是 显示宽度

要限制显示宽度

1.创建表时 给整型加上宽度

2.加上zerofill结束

四、浮点型

浮点型: 小数型

分类: float ***** double **** decimal *****

字节数: 4 8 不确定(手动指定)

给浮点设置宽度限制

float(m,d)

double(m,d)

decimal(m,d)

长度说明 *****

m表示 这个浮点数整体的长度

d表示 小数部分的长度

例如: float(5,3) 最大值: 99.999

区别 *****

相同点: 小数部分最大长度都是30

float和double的最大长度为255

不同点: decimal的整体最大长度65

精度不同

double 比 float 精度高

decimal 是准确的 不会丢失精度

如何选择:你对精确度要求高你就使用 decimal

五、字符型

char 定长字符

varchar 变长字符

char类型的长度是固定 无论你存储的数据有多长 占用的容量都一样

char(3) 存储的数据为 "a" 在硬盘保存的数据还是占3字符长度 实际保存的是"a "

varchar 长度是可变的 存储的数据有多长就占用多长

varchar(3) 存储的数据为 "a" 在硬盘保存的数据还是占1字符长度 实际保存的是"a"

yxx exx lxx zxx cx wxx char(3)

(1bytes+yx)(1bytes+exx)(1bytes+lx)(1bytes+zxx) varchar(3)

如果是可变长度 则有问题 不知道数据从哪里开始到哪里结束 所以需要有一个位置保存数据的长度

vharchar 能支持的最大长度是65535 用于保存数据长度的数据最长两个bytes

如果是char类型 如果你的数据不足指定长度 就在后面用空格补全

验证:

使用一个 char_length的函数 可以查看字符的长度

create table t18(a char(4),b varchar(4));

insert into t18 value("x","x");

select char_length(a),char_length(b) from t18;

两个字段的长度都为1

结论:

这是因为 mysql在存储时 自动加上的空格 对使用者而言是没有意义的 所以mysql自动帮你处理掉空格了

我们可以设置sql模式 来让它现出原形

set global sql_mode = "PAD_CHAR_TO_FULL_LENGTH,STRICT_TRANS_TABLES"

设置完成后重启msyql 再次查询长度

注意:

当你在执行这样的查询语句时 mysql会自动将参数末尾的空格去除

select *from t19 where name = "yh"

当你在使用模糊搜索时 要注意 定长字符 后面可能会有空格 所以最好在后面加上百分号 %

select *from t19 where name like "yh";

% 任意个数的任意字符

_ 1个任意字符

如何选择

char

存取效率高

浪费存储空间

varchar

存取效率低于char

节省存储空间

使用起来感受不到区别 通常用的是char

char和varchar 长度都比较小 最大就是65535

大文本类型:

TEXT系列 TINYTEXT TEXT MEDIUMTEXT LONGTEXT 文本是带有编码

BLOB 系列 TINYBLOB BLOB MEDIUMBLOB LONGBLOB 也是字符数据 但是不带编码

二进制类型: 用于存储多媒体数据 比如视频 但是我们一般不会将多媒体数据存到数据 而是存储文件路径地址

BINARY系列 BINARY VARBINARY 存储二进制数据

六、时间日期

time 时分秒

year 年份

date 日期

datetime 年月日时分秒

举例:create table t3 (id int,时间 time);

七、集合与枚举

set 多选多

enum多选一

举例: create table t1 (id int(5),name char(10),sex enum("男","女"),hobby set("read","run","watch TV"));

mysql 39 t.id 39_Day39----MySQL系列相关推荐

  1. mysql 39 t.id 39_ERROR 2003 (HY000): Can#39;t connect to MySQL server on #39;10.16.115.101#39; (1...

    ubuntu安装之后mysql,使用apt-get安装命令,默认为同意只本地访问 root@idata1:~/software# mysql -uroot -p123456 -h10.16.115.1 ...

  2. 获取mysql 自增id 和mysql 下一个自增id的方法

    mysql获取表中自增id的方法: 1. 使用 select MAX(id) from tablename; 获取的是表中最大的id:顺序执行  insert ---> delete 插入的数据 ...

  3. mysql索引_mysql系列:深入理解mysql 索引特性(屡试不爽的mysql索引总结)

    原标题:mysql系列:深入理解mysql 索引特性(屡试不爽的mysql索引总结) mysql为什么使用B+ Tree索引,不使用B- Tree索引? 索引顺序如何生效? 什么是覆盖索引? orde ...

  4. mysql分表id维护_MySQL分表自增ID解决方案

    当我们对MySQL进行分表操作后,将不能依赖MySQL的自动增量来产生唯一ID了,因为数据已经分散到多个表中. 应尽量避免使用自增IP来做为主键,为数据库分表操作带来极大的不便. 在postgreSQ ...

  5. mysql数据库实战_mysql数据库实战系列--再入泥坑

    开源数据库MySQL DBA运维实战 第2章 SQL1 作者:帽子先生 SQL语言分类 SQL(Structured Query Language 即结构化查询语言) SQL语言主要用于存取数据.查询 ...

  6. MySQL自增id不连续问题

    问题现象 又是一个奇葩的例子,今天接到了一个需求,要将1000多万的数据导入到MySQL里面, 具体数据量如下 然后将文件中的数据导入到MySQL中的空表中,文件中不包含自增id列 导入完成后查看数据 ...

  7. php 插入 mysql_php插入mysql数据返回id的方法

    如下所示: $dbh = mysql_connect('localhost','root','root'); mysql_select_db('pkbk'); $query = "inser ...

  8. 45 MySQL自增id

    45 MySQL自增id 表定义自增id 说到自增id,前面提到mysql的自增id不连续,当表定义的自增值达到上限后的逻辑是:再申请下一个id时,得到的值保持不变 create table t(id ...

  9. Mysql 数据库重置ID排序

    本文仅供学习交流使用,如侵立删!demo下载见文末 Mysql 数据库重置ID排序 //删除QRcode表id字段 alter table QRcode drop id; //添加id字段,自增长 a ...

最新文章

  1. 高并发场景之RabbitMQ篇
  2. Java:希望每天叫醒你的不是闹钟而是梦想!
  3. 我用 Python 帮朋友做了张图,结果
  4. Chrome Console Cookie 控制台操作命令
  5. gym 101858
  6. ipython使用 python3,2019-04-29 python/ipython设置默认python3
  7. 复制书稿(信息学奥赛一本通-T1278)
  8. javascript基础修炼(1)——一道十面埋伏的原型链面试题
  9. Emacs支持外部程序的粘贴
  10. 乐视云视频PHP接口操作视频上传,编辑,查询以及删除
  11. 5g/4g工业无线路由器
  12. 【实战讲解】数据血缘落地实施
  13. 网购可到家门口的报亭提货了
  14. 哪款蓝牙耳机音质好?2022音质好的蓝牙耳机盘点
  15. 怎么实现EDIUS中添加的图片素材一样大
  16. 世界上最经典的二十四句草根哲理
  17. 机房温度不够冷?可能是系统有问题!
  18. 新手怎么开通抖音小店?详细操作步骤分享,建议收藏
  19. 一文了解“什么是ACL”、“什么是EACL”、“什么是NAACL”、“什么是AACL”国际会议
  20. iqn怎么查 linux_Linux下配置iscsi-initiator - 存储资源

热门文章

  1. 分布式理论:CAP理论
  2. myeclipse智能提示设置
  3. 大家一起来博皮——2:液态布局和固态布局,页面框架篇
  4. 嵌入式开发/调试辅助工具
  5. 光纤有什么优势?还有哪些挑战需要面对呢?
  6. 5G时代到来,SD-WAN如何发展?-Vecloud微云
  7. CS231n 学习笔记(1)——神经网络 part1 :图像分类与数据驱动方法
  8. 英雄联盟离线更新方法
  9. VS设置DLL所在的调试目录
  10. mysql创建字段非空NOT NULL的好处