DDL深入
在mysql中主表和从表建立了外键约束,则无法删除表,或者修改外键字段中的值。
存在外键约束的时候,怎么进行插入数据。
如果是一对多的情况下,先建立主表的记录,然后在添加从表的记录,此时才能加入外键的值。
mysql中启动和关闭外键约束
SET @@FOREIGN_KEY_CHECKS=0;
mysql的数据类型
数值类型
tinyint 1字节 ( -128,127)
smallint 2字节 (-32768,32767)
mediumint 3字节 (-8388608,8388607)
int/integer 4字节 (-2143483648,2147483647)
bigint 8字节 (-9,223,372,036,854,775,808,9 223 372 036 854 775 807)
float 4字节 (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)
double 8字节 (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
decimal 用于数据库中存储精确的数值,用于保存准确精确度的列。
语法:
column_name DECIMAL(P,D);
P是表示有效数字数的精度。 P范围为1~65。
D是表示小数点后的位数。 D的范围是0~30。MySQL要求D小于或等于(<=)P。
字节大小:
如果M>D,为M+2否则为D+2
对于精度比较高的字段,比如 money,使用decimal,不会考虑float,double,因为它们容易产生误差。
int(M):
长度M 是告诉mysql,该字段存储的数据宽度是M位数。如果不是M位,(只要是在该类型的存储范围内)可以正常存储。
可以将这个字段的属相修改为UNSIGNED ZEROFILL
`uid` int(3) unsigned zerofill NOT NULL
然后往表中插入数据
insert into `test` (`uid`) VALUES(11);

-->系统会自动将uid字段M 不够3位的在左侧用0来填充。
日期时间类型
DATE 3字节 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3字节 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
DATETIME 8字节 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4 1970-01-01 00:00:00/2038
结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 YYYYMMDD HHMMSS 混合日期和时间值,时间戳
字符串类型
char 0-255字节 定长字符串
varchar 0-65536字节 边长字符串
tinyblob 0-255字节 不超过 255 个字符的二进制字符串
tinytext 0-255字节 短文本字符串
blob 0-65535字节 二进制形式的长文本数据
text 0-65535字节 长文本数据
mediumblob 0-16 777 215字节 二进制形式的中等长度文本数据
mediumtext 0-16 777 215字节 中等长度文本数据
longblob 0-4 294 967 295字节 二进制形式的极大文本数据
longtext 0-4 294 967 295字节 极大文本数据
char 与 varchar 的区别
char 的长度是不可变的,而varchar的长度是可变的。
定义一个char(10) ,如果存进去的是‘abcd’ ,那么char所占长度依然是10,除了 字符‘abcd’ 外,后面跟6个字符。而varchar 会将长度变为 4.取数据的时候,char类型会去掉多余的空格。
char的存取速度比varchar 块。
char的存储方式是,对引文字符(ASCII)占用1字节,对汉字占用 2字节(GBK)\3字节(UTF-8)。
mysql检查字节长度
select LENGTH(fieldname) from tablename
) ENGINE=InnoDB AUTO_INCREMENT=7935 DEFAULT CHARSET=utf8;
AUTO_INCREMENT=7935 -->表示自动递增的字段,初始值是 7935 。
查看该数据库的自增配置:
show variables like '%increment%';
可以设置自增策略:
set @@auto_increment_offset =1; set @@auto_increment_offset =1;
或者在创建表的时候,指定增量的设置。

浙公网安备 33010602011771号