关系表:
把信息分解成多个表,一类数据一个表,各表通过某些常用值(即关系设计中的关系(relational))互相关联;
外键(foreign key):
外键为某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系
优点:
①数据信息不重复,从而不浪费时间和空间
②如果某个数据信息变动,可以只更新该表中的某个记录,相关表数据不用变更
③数据无重复,可以更有效的存储和方便的处理,伸缩性强(能够适应不断增加的工作量而不失败,设计良好的数据库或者应用程序称为可伸缩性好(scale well))
约束
约束是一种限制,它通过对表的行或者列的数据作出限制,来确保表的数据完整性,唯一性
主键约束:PRIMARY KEY
外键约束:FOREIGN KEY
唯一约束:UNIQUE
非空约束:NOT NULL
默认值:DEFAULT
联结表:
联结是一种机制,用来在一条SELECT语句中关联表,因此称为联结。使用特殊的语法,可以联结多个表返回一组输出,联结在运行时关联表中正确的行。
使用SELECT语句编写创建联结
SELECT name,age,score,teacher from students,scores where stidents.stu_id = scores.stu_id;
where子句的重要性
在一条select语句中联结几个表时,相应的关系是在运行中构造的;在联结两个甚至多个表时,实际上是将第一个表中的每一行与第二个表中的每一行配对,where子句作为过滤条件,它只包含匹配的给定条件的行。
没有where子句,第一个表中每个行将与第二个表中的每个行匹配,而不管逻辑上是否可以配在一起。
笛卡尔积
由没有联结条件的表关系返回的结果称为笛卡尔积(检索出的行的数目将是第一个表中的行数乘以第二个表中的行数);
例如:select A_name,B_name,B_mobile from A, B order by A_name, B_name;
应保证所有联结都有where子句,否则MySQL将返回比想要的数据多得多的数据,还应保证where子句的正确
叉联结:有时我们会听到返回叉联结(cross join)的笛卡儿积的联结类型
内部联结
等值联结(equijoin):基于两个表之间的相等测试,也称为内部联结
例如:select A_name,B_name,B_mobile from A inter join B on A_name = B_name;
这条SQL语句中,select语句与之前的相同,相较于上面的from,这里使用了inter join指定(当使用inter join时,联结条件用on子句而不是where子句,在这里on等同于where)
网友评论