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超出范围的则不允许输入