mysql建表以及列属性

简要:

一、建表原则

二、具体的列属性说明

一、建表原则

建表: 事实上就是声明列的过程,数据终于是以文件的形式放在硬盘(内存)

列: 不同的列类型占的空间不一样. 选列的原则: 够用,不浪费

二、列类型以及属性说明

列类型有: 整形、浮点型、字符型、日期/时间型

2.1、整形

tinyint/smallint/mediumint/int/bigint

2.1.1、具体解释tinyint 一个字节

[][][][][][][][]共8位

如果8为都为0 ==》 转化为十进制 0

如果8为都为1 ==》 转换为十进制 2^8-1

因为计算机也可以存储负数,并採用最高位为符号位

最高位为0代表正数 最高位为1代表负数

当最高位为0时:

[0][][][][][][][] => 0~2^7-1 转化为十进制 0~127

当最高位为1时

[1][][][][][][][]
=> 0~-2^7  转化为十进制 0~-128

字节

无符号

有符号

tinyint

1

0~255

-128~127

smallint

2

0~2^16-1

-2^15~2^15

medium

3

0~2^24-1

-2^23~2^23

int

4

0~2^32-1

-2^31~2^31

bigint

8

0~2^64-1

-2^63~2^63

2.1.2、实例

2.1.3、整形列可选属性: not null unsigned zerofill

总结:

a、声明整数型列须要0填充时,它一定是无符号的

b、进行0填充时,不会改变其大小值

2.2、浮点型

对于浮点列类型。在MySQL中单精度值使用4个字节,双精度值使用8个字节。

float与decimal的差别:decimal更精确

 

2.3、字符型

char:定长char(M),M代表宽度。就可以容纳的字符数

varchar:变长char(M)。M代表宽度。就可以容纳的字符数

差别:

a、效率方面看。char<=1               varchar<1

即char会有全然利用的情况。而varchar则不会。由于同CHAR对照。VARCHAR值保存时仅仅保存须要的字符数,另加一个字节来记录长度

b、针对尾部(从左往右的方向看),char会过滤尾部有空格的情况,而varchar不会。

由于char存储的字符少于定义的字符长度时,就会对尾部进行空格填充.进行展示时,再把尾部的空格去掉

案例:

CREATETABLE vc (v VARCHAR(4), c CHAR(4));

INSERTINTO vc VALUES ('ab  ', 'ab  ');

SELECTCONCAT(v, '+'), CONCAT(c, '+') FROM vc;

字节问题:

varchar(N),  这里的N是指字符数,并非字节数.占用的字节数与编码有关

utf-8,一个汉字3字节 英文字母1字节

MySQL 5.0以上的版本号:

1.一个汉字占多少长度与编码有关:

个字节

个字节

2.varchar(n)表示n个字符,不管汉字和英文。Mysql都能存入n个字符,仅是实际字节长度有所差别

3.MySQL检查长度。可用SQL语言:

select LENGTH(fieldname) from tablename来查看

2.4、日期与时间型

2.4.1、 year

总结

MySQL以YYYY格式检索和显示YEAR值。范围是1901到2155。

能够指定各种格式的YEAR值:

·        四位字符串,范围为'1901'到'2155'。

·        四位数字。范围为1901到2155。

·        两位字符串,范围为'00'到'99'。

'00'到'69'和'70'到'99'范围的值被转换为2000到2069和1970到1999范围的YEAR值。

·        两位整数,范围为1到99。1到69和70到99范围的值被转换为2001到2069和1970到1999范围的YEAR值。请注意两位整数范围与两位字符串范围稍有不同,由于你不能直接将零指定为数字并将它解释为2000。你必须将它指定为一个字符串'0'或'00'或它被解释为0000。

2.4.2、 time

MySQL以'HH:MM:SS'格式检索和显示TIME值(或对于大的小时值採用'HHH:MM:SS'格式)。TIME值的范围能够从'-838:59:59'到'838:59:59'。小时部分会因此大的原因是TIME类型不仅能够用于表示一天的时间(必须小于24小时),还可能为某个事件过去的时间或两个事件之间的时间间隔(能够大于24小时,或者甚至为负)。

2.4.3、 date

当你仅仅须要日期值而不须要时间部分时应使用DATE类型。MySQL用'YYYY-MM-DD'格式检索和显示DATE值。

支持的范围是'1000-01-01'到 '9999-12-31'。

2.4.4、  datetime

总结:尽管mysql有时间与日期的类型。但在一般的开发过程中涉及到跟时间方面的列类型时,通常使用int即整形类型。

主要考虑到开发方面的方便,并且整形效率高。

The quieter you become。the more you are able to hear!

小贝_mysql建表以及列属性的更多相关文章

  1. mysql建表以及列属性

    一.整型( int, tinyint, smallint 等 ) ------------------------------------------------------------------- ...

  2. 小贝_mysql优化学习

    mysql优化 简要: 1.数据库设计优化 2.sql语句优化 3.表切割 4.读写分离技术 一.数据库设计优化 1.表设计要符合三范式.当然,有时也须要适当的逆范式 2.什么是三范式 一范式: 具有 ...

  3. django-创建表的字段属性,表关系

    表的各种属性文档:null char ..., django与之对应的文档 https://docs.djangoproject.com/en/1.11/ref/models/fields/   英文 ...

  4. python基础_mysql建表、编辑、删除、查询、更新

    1.建一张学生表 包含(id,name,age,sex)2.增加四条数据3.查询表中sex为男的数据4.删除id =3的数据,5.将sex为女的,修改为男 create: CREATE TABLE d ...

  5. 小贝_mysql 触发器使用

    触发器 简要 1.触发器基本概念 2.触发器语法及实战样例 3.before和after差别 一.触发器基本概念 1.一触即发 2.作用: 监视某种情况并触发某种操作 3.观察场景 一个电子商城: 商 ...

  6. 小贝_mysql select连接查询

    select连接查询 简要: 一.union联合查询 二.左右内连接 一.union联合查询 作用: 把2次或多次查询结果合并起来 具体: (表1查询结果) union (表2查询结果) 运行: 先算 ...

  7. 小贝_mysql数据库备份与恢复

    mysql数据库备份与恢复 简要:        一.数据库备份        二.数据库恢复 一.数据库备份 1.备份简单说明 : 系统执行中,增量备份与总体备份 例: 每周日总体备份一次,周一到周 ...

  8. 小贝_mysql三种子查询

    mysql三种子查询 简要: 一.三种子查询 二.三种子查询理解模型 一.mysql 三种子查询 where子查询.from子查询.exists子查询 二.理解模型: 2.1.一个好的模型,便于我们去 ...

  9. 小贝_mysql select5种子句介绍

    mysql select5种子句介绍 简要 一.五种字句 二.具体解释五种字句 一.五种字句 where.group by.having.order by.limit 二.具体解释五种字句 2.1.理 ...

随机推荐

  1. Operation System - Peterson&#39;s Solution算法 解决多线程冲突

    Person's solution 是用来一种基于软件的解决关键区域问题的算法(critical-section). 它并不是完美的,有可能不对地工作.并且是限制解决两个进程同步的问题. 可是它非常e ...

  2. Android项目中gen文件下R文件无法生成的解决的方法

    帮一个网友解决R文件无法生成的问题,搜集了些材料特整理例如以下,刚開始学习的人參考他人代码时极易出现此种问题,一般都是xml文件出错,无法被正确解析. gen文件夹无法更新,或者gen文件夹下的R.J ...

  3. [Redux] Passing the Store Down with <Provider> from React Redux

    Previously, we wrote the Provider component by ourself: class Provider extends Component { getChildC ...

  4. GDB实用的调试工具

    GDB它是GNU Debuger缩写,它是GNU发表了unix通过应用程序调试工具. 它被广泛应用于在各种各种生产内部应用.GDB和所有的调试工具经常使用相同的,其主要特点是:监视变量的值.设置断点及 ...

  5. Ubantu下编译Linux Kernel

    wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.9.3.tar.gztar -xzf linux-3.9.3.tar.gzcd li ...

  6. 老生常谈的Javascript作用域问题

    在前端学习中,作用域这个问题一直被广泛提起,什么是作用域,什么又是作用域链?在Javascript中,怎么去理解这些概念都是学好这门语言的关键,所以在学习前端开发的过程中,我需要也很有必要去学习和总结 ...

  7. Android -------- API等级

      API等级 Android版本 代号名称(基本上是按ABC命名排序的) 注释说明 1 Android 1.0     2 Android 1.1 Petit Four   3 Android 1. ...

  8. android码农神器 偷懒工具 android懒人框架 LoonAndroid 3 讲解

    LoonAndroid 3.0 Loonandroid是一个注解框架,不涉及任何UI效果,目的是一个功能一个方法,以方法为最小颗粒度对功能进行拆解.把功能傻瓜化,简单化,去掉重复性的代码,隐藏复杂的实 ...

  9. Merge Sorted Array 合并数组并排序

    Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:Yo ...

  10. win7添加usb3.0驱动(错误代码1392,文件或目录损坏且无法读取)

    Win7添加usb3.0驱动 之前一直按照网上的方法执行dism命令挂载时,总是失败,错误代码1392,显示原因是文件或目录损坏且无法读取.这个错误以前在装机时老是出现导致系统安装不成功,在BIOS中 ...