mysql 学习心得2

1tinyint small~ medium~ int big~ float double dec(M,D)定点数 取值范围由md确定 bit(M)位类型 bit(1) bit(64).

2zerofill 填充0  如 alter table t1 modify id1 int zerofill;1就变成 000001了 假设是int(6) 在int(6)的情况下 你输入8位数也不会阶段 zerofill会给改列自动添加unsign属性

3AUTO_INCREMENT 产生唯一标识符和顺序值的时候可以用

如 CREATE TABLE AI(ID INT AUTO_INCREMENT NOT NULL ,PRIMARY KEY(ID));

或者CREATE TABLE AI(ID INT AUTO_INCREMENT NOT NULL PRIMARY KEY);

CREATE TABLE AI(ID INT AUTO_INCREMENT NOT NULL ,UNIQUE(ID));

4定点数在mysql以字符串方式存放 比浮点数更加精确M代表M位数字(整数+小数位) D是小数点后面的数字 又称精度和标度

5mysql在保存值的时候进行四舍五入  如 float(7,4)插入999.00009  得到 999.0001 dec在不指定精度时候 默认为(10,0)  在传统SQL下 超过限定的数据无法插入dec mysql会报警

 

6bit字段可以用 bin()和hex()查看select bin(id),hex(id) from t2; 往位数不够的字段插入数据是不可行的

7日期时间类型有date 4 1000-01-01~9999-12-31

        datetime 8 1000-01-01 00:00:00  9999-12-31 23:59:59

        timestamp 4 19700101080001 2038年某时

        time 3 -838:59:59  838:59:59  

        year 1 1901 ~2155  

如果超标则用0000 00:00:00等填充

 

第一个timestamp为系统日期 第二个为0值(5.7貌似不行了 提示 invalid default value for ‘id3’)

8 set time_zone = '+8:00';中国默认为+8:00  

timestamp 自动设置系统时间 插入和使用的人不在一个时区也能显示当地时间 而 datetime只能反应插入地区时间

9插入时间时 YYYY-MM-DD HH:MM:SS用任何标点做间隔都行 如 1998.12.31 11+30+45 或者 1998@12@31 11*30*45  同时 没有间隔也是合法的 如19970523091528  但是19971122129015 是不合法的  90是无意义的分钟

  8位YYYYMMDD 14位YYYYMMDDHHMMSS  6位 YYMMDD    其中以字符串的形式存储也是可以的(‘......’的形式)

10 CHAR 0~255(V5.0.3 BEFORE) 65535(after Verision 5.0.3) char类型删除尾部空格 varchar保留

 

可以看到 v的空格保留了 c的没留

11binary和varbinary是包含二进制字符串但是不包含非二进制字符串

12enum枚举 需要显示式指定 1~255个成员要1个字节 255~65535要两个字节 最多允许要65535个成员

 

ENUM 忽略大小写 如果插入不存在的值的时候 将使用枚举的第一个值‘’m‘’

13set 1~8占一个字节 9~16 占2 ....  25~32占4个  33~64 占8个

 

 对于ada重复项 则输入 a,d 对于adf超出范围的则不允许输入

 

posted @ 2018-01-14 21:32  Cyborg  阅读(217)  评论(0编辑  收藏  举报