mysql中一条insert语句批量插入多条记录
mysql中null与“空值”的坑
1、我字段类型是not null,为什么我可以插入空值
2、为毛not null的效率比null高
NULL 其实并不是空值,而是要占用空间,所以mysql在进行比较的时候,NULL 会参与字段比较,所以对效率有一部分影响,
而且B树索引时不会存储NULL值的,所以如果索引的字段可以为NULL,索引的效率会下降很多。 3、判断字段不为空的时候,到底要 select * from table where column <> ‘‘ 还是要用 select * from table where column is not null 呢。
关于mysql中INT(M) M含义
外键的定义
外键有几种约束,NO ACTION/RESTRICR表示父表(关联字段为主键的表)更新删除的时候,如果子表存在和父表在关联字段值相同的时候,
数据库会报错提示无法更新,此时需要先更改子表重复的值才可以修改删除父表,比如关联字段为年级,学生表里有些学生是6年级,
当父表(年级表)要删除六年级记录时,子表(学生表)如果存在六年级的学生则会报错,只有先把六年级的学生的年级字段修为为其他年级才可以进行删除。
SET NULL 表示父表删除记录时,对应的子表相关联的记录被设置为NULL,但是不删除,但CASCADE则是父记录删除,子记录也删除。
关于单行子查询返回多个行
子查询貌似只能返回一个表的字段,如果返回多个表的字段可以先建立一个视图
还有就是子查询如果返回的是多个值那么就用关键字in,单个值的话用on