欢迎来到天天文库
浏览记录
ID:34035537
大小:123.00 KB
页数:21页
时间:2019-03-03
《mysql约束,子查询,多表的练习》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据库三范式三范式 第一范式: 1.每个表都要有主键 2.列不可分,比如: createtablestu ( idINT, namevarchar2(20), ageINT ) insertintostuvalues(1,'yu',21); createtablestu2 ( idvarchar ) / insertintostu2values('1_yu_21'); 虽然表stu2可以字符串解析后可以达到和表stu一样的效果,但是显然第一种方法更好,查询数 据更加方便,而表stu2违反了第一范式
2、的列不可分原则。 第二范式: 当有两个以上字段作主键时,非主键字段不能部分依赖于主键字段,如有一个需求,一门老师教 多名学生,一名学生可以选多个老师的课。然后设计了一张表,有以下字段(老师编号、学生编号、老师姓名、学生姓名等),其中以老师编号和学生编号作联合主键,则些表就存在部分依赖 ,老师姓名部分依赖于老师编号,不满足第二范式,有数据冗余。要解决这个问题可以设计三张 表。 第三范式: 不能存在传递依赖,如有一张表有以下字段:(学号、姓名、班级号、班级名称、班级位置), 其中学号为主键,则班级号依赖于学号,每个学生都有相应的班级号,但是班级
3、名称、班级位置 是依赖于班级号,即它们通过班级号传递依赖于学号,不满足第三范式。 我们大部分的表设计都只要满足第二范式就可以了,数据库表中的每个实例或行必须可以被惟一地区分.因为我们有些表中是存在状态标识字段的,这个字段是多余的,但也是必须的。Mysql约束查看表的字段信息:desc表名;21/21查看表的所有信息:showcreatetable表名;添加主键约束:altertable表名addconstraint主键(形如:PK_表名)primarykey表名(主键字段);添加外键约束:altertable主表addconstraint外键(形如:FK_主表_从表)for
4、eignkey主表(外键字段)references从表(主键字段);Insertintoemp(id,1,’王真’);Insertintoempvalues(id,1,'王真');Insertintodeptvalues(id,'销售部');references参照删除主键约束:altertable表名dropprimarykey;删除外键约束:altertable表名dropforeignkey外键(区分大小写);主关键字约束,也叫:PRIMARYKEYPRIMARYKEY约束在数据库的每个表中,经常有通过一列或者多个列,唯一的标识表中的每一行。就好像我们平时使用的身份证,能够
5、唯一的标识每个人一样。这样的一列或者多个列,被称为主键,通过主键,可以强制表的实体完整性。在数据库管理系统中,保证数据库中的数据完整性是非常重要的。所谓数据完整性,就是指存储在数据库中数据的一致性和正确性。约束定义关于列中允许值的规则,是强制完整性的标准机制。使用约束优先于使用触发器、规则和默认值。查询优化器也使用约束定义生成高性能的查询执行计划。21/21每一个表中只有一个PRIMARYKEY约束,更简单的说,他是通过建立唯一索引保证指定列的实体完整性。在使用PRIMARYKEY约束时,该列的空值属性必须定义为NOTNULL,也就是说拥有主键的那一列,不能为空。由于PRIMAR
6、YKEY约束确保唯一数据,所以经常用来定义标识列。标识列就是表中已经指派了标识属性的列。标识属性生成唯一数字。建立主键不仅可以保证表内数据的完整性,而且在为表建立主键的同时,MYSQL能够通过为主键创建唯一索引强制数据的唯一性。主键列的数据类型不限,但此列必须是唯一并且非空。自增列的类型应为数值型,所以大部分的表都用数值型做为主键;外关键字约事,也叫外键约束:FOREIGNKEY在mysql中,外键必须是其主键约束所在表中的主键且自增长,且引用双方的数据类型必须相同。文章分类表-categoriescategory_id name1 SQLServ
7、er2 Oracle3 PostgreSQL5 SQLite文章表-articlesarticle_id category_id title1 1 aa2 2 bb3 4 cc可见以上两个表之间是通过category_id,其中cate
此文档下载收益归作者所有