小贝_mysql建表以及列属性
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建表以及列属性的更多相关文章
- mysql建表以及列属性
一.整型( int, tinyint, smallint 等 ) ------------------------------------------------------------------- ...
- 小贝_mysql优化学习
mysql优化 简要: 1.数据库设计优化 2.sql语句优化 3.表切割 4.读写分离技术 一.数据库设计优化 1.表设计要符合三范式.当然,有时也须要适当的逆范式 2.什么是三范式 一范式: 具有 ...
- django-创建表的字段属性,表关系
表的各种属性文档:null char ..., django与之对应的文档 https://docs.djangoproject.com/en/1.11/ref/models/fields/ 英文 ...
- python基础_mysql建表、编辑、删除、查询、更新
1.建一张学生表 包含(id,name,age,sex)2.增加四条数据3.查询表中sex为男的数据4.删除id =3的数据,5.将sex为女的,修改为男 create: CREATE TABLE d ...
- 小贝_mysql 触发器使用
触发器 简要 1.触发器基本概念 2.触发器语法及实战样例 3.before和after差别 一.触发器基本概念 1.一触即发 2.作用: 监视某种情况并触发某种操作 3.观察场景 一个电子商城: 商 ...
- 小贝_mysql select连接查询
select连接查询 简要: 一.union联合查询 二.左右内连接 一.union联合查询 作用: 把2次或多次查询结果合并起来 具体: (表1查询结果) union (表2查询结果) 运行: 先算 ...
- 小贝_mysql数据库备份与恢复
mysql数据库备份与恢复 简要: 一.数据库备份 二.数据库恢复 一.数据库备份 1.备份简单说明 : 系统执行中,增量备份与总体备份 例: 每周日总体备份一次,周一到周 ...
- 小贝_mysql三种子查询
mysql三种子查询 简要: 一.三种子查询 二.三种子查询理解模型 一.mysql 三种子查询 where子查询.from子查询.exists子查询 二.理解模型: 2.1.一个好的模型,便于我们去 ...
- 小贝_mysql select5种子句介绍
mysql select5种子句介绍 简要 一.五种字句 二.具体解释五种字句 一.五种字句 where.group by.having.order by.limit 二.具体解释五种字句 2.1.理 ...
随机推荐
- Linux gdb调试入门
没有使用过gdb调试过程序的觉得gdb是个很神奇的东东,如果你使用它调试一次保证你想忘记它都难,下面看看它的庐山真面目吧! GDB概述 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具. ...
- android studio 开发android app 真机调试
大家都知道开发android app 的时候可以有2种调试方式, 一种是Android Virtual Device(虚拟模拟器) ,另一种就是真机调试. 这里要说的是真机调试的一些安装步骤: 1. ...
- Oracle 获取表结构信息
通过Oracle中的user_tab_cols, user_col_comments, user_constraints, user_cons_columns表联合查询. user_tab_cols用 ...
- javascript实现倒计时程序
最近在网上看到一道这样的面试题: 题: 网页中实现一个计算当年还剩多少时间的倒数计时程序,要求网页上实时动态显示“××年还剩××天××时××分××秒”? 我实现了,发现挺有意思,下面把我的代码贴出来 ...
- poj1006 孙子定理
Biorhythms Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 127944 Accepted: 40566 Des ...
- C#设置textboox只能输入数字`
1.在闪电KeyPress事件中添加 private void textBox_pwmx_fre_KeyPress(object sender, KeyPressEventArgs e) { //如果 ...
- hdu5353 Average(模拟)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Average Time Limit: 4000/2000 MS (Java/Ot ...
- rman全库恢复到不同主机,不同实例名,不同目录下
一.配置目标主机的ip.hostname及与源端主机的连通性 1.配置目标主机IP 使用图形界面配置IP: administration----network---修改IP(指定静态IP) deact ...
- http_load压力测试
http_load是基于linux平台的性能测试工具,它体积非常小,仅100KB.它以并行复用的方式运行,可以测试web服务器的吞吐量与负载. 一.安装http_load A.进入/usr/local ...
- Java学习笔记--泛型
一个泛型类就是具有一个或者多个类型变量的类. 我们可以只关注泛型,而不会为数据存储的细节而烦恼 . java泛型(一).泛型的基本介绍和使用 http://blog.csdn.net/lonelyro ...