MySQL临时表

MySQL 临时表分为“内存临时表”和“磁盘临时表”,其中内存临时表使用 MySQL 的 MEMORY 存储引擎,磁盘临时表使用 MySQL 的 MyISAM 存储引擎;一般情况下,MySQL 会先创建内存临时表,但内存临时表超过配置指定的值后,MySQL 会将内存临时表导出到磁盘临时表。
MySQL 临时表在我们需要保存一些临时数据时是非常有用的。临时表只在当前连接可见,当关闭连接时,Mysql 会自动删除表并释放所有空间。

阅读更多

数据库设计-约束

数据库约束是为了保证数据的完整性(正确性)而实现的一套机制。主要分为五大约束:

  1. 主键约束(Primay Key Coustraint): 唯一性,非空性
1
2
3
# 添加主键约束(将UserId作为主键)
alter table UserId
   add constraint PK_UserId primary key (UserId);
  1. 唯一约束 (Unique Counstraint):唯一性,可以空,但只能有一个
1
2
3
# 添加唯一约束(身份证号唯一,因为每个人的都不一样)
alter table UserInfo
   add constraint UQ_IDNumber unique(IdentityCardNumber);
  1. 检查约束 (Check Counstraint):对该列数据的范格式的限制(如:年性别等)
1
2
3
4
5
# 添加检查约束 (对年龄加以限定 20-40 岁之间)
alter table UserInfo
   add constraint CK_UserAge check (UserAge between 20 and 40);
alter table UserInfo
   add constraint CK_UserSex check (UserSex=’男’ or UserSex=’女′);
  1. 默认约束 (Default Counstraint):该数据的默认值
1
2
3
# 添加默认约束(如果地址不填 默认为“地址不详”)
alter table UserInfo
   add constraint DF_UserAddress default (‘地址不详’) for UserAddress;
  1. 外键约束 (Foreign Key Counstraint):需要建立两表间的关系并引用主表的列
1
2
3
# 添加外键约束 (主表 UserInfo 和从表 UserOrder 建立关系,关联字段 UserId)
alter table UserOrder
   add constraint FK_UserId_UserId foreign key(UserId)references UserInfo(UserId);
阅读更多

数据库设计-范式

范式是符合某一种级别的关系模式的集合。关系型数据库中的关系必须满足一定的要求,满足不同程度要求的为不同范式。
目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、Boyce-Codd 范式(BCNF)、第四范式(4NF)和第五范式(5NF)。
范式越高,冗余最低,一般到三范式即可,再往上,表越多,可能导致查询效率下降。所以有时为了提高运行效率,可以让数据冗余

阅读更多