第8章 数据库


E-R模型

当前物理的数据库都是按照E-R模型进行设计的

E表示entry,实体

R表示relationship,关系

一个实体转换为数据库中的一个表

关系描述两个实体之间的对应规则,包括

一对一

一对多

多对多

关系转换为数据库表中的一个列 *在关系型数据库中一行就是一个对象

三范式

经过研究和对使用中问题的总结,对于设计数据库提出了一些规范,这些规范被称为范式

第一范式(1NF):列不可拆分

第二范式(2NF):唯一标识

第三范式(3NF):引用主键

说明:后一个范式,都是在前一个范式的基础上建立的+

示例1:

select distinct *

from 表名

where ....

group by ... having ...

order by ...

limit star,count

示例2:

select * from students

where isdelete=0

limit (n-1)*m,m

索引

where中 范围的尽量往后写,非范围的尽量往前写  or少用

索引分为单例索引,组合索引

查看执行时间: show profiles

三种连接查询

一、内连接——最常用 

定义:仅将两个表中满足连接条件的行组合起来作为结果集。 

在内连接中,只有在两个表中匹配的行才能在结果集中出现 

关键词:INNER JOIN 

格式:SELECT 列名表 FROM 表名1 [INNER] JOIN 表名2 ON或WHERE 条件表达式 

说明: 

(1)列名表中的列名可以出自后面的两个表,但如果两个表中有同名列,应在列名前标明出处,格式为:表名.列名 

(2)若连接的两个表名字太长,可以为它们起个别名。 格式为:表名 AS 别名 

(3)INNER是默认方式,可以省略

二、外连接 

1、左(外)连接 

定义:在内连接的基础上,还包含左表中所有不符合条件的数据行,并在其中的右表列填写NULL 

关键字:LEFT JOIN

2、右(外)连接 

定义:

在内连接的基础上,还包含右表中所有不符合条件的数据行,并在其中的左表列填写NULL 

关键字:RIGHT JOIN 

3、完全连接 

定义:

在内连接的基础上,还包含两个表中所有不符合条件的数据行,并在其中的左表、和右表列填写NULL 

关键字:FULL JOIN

三、交叉连接 

定义:将两个表的所有行进行组合,连接后的行数为两个表的乘积数。(笛卡尔积) 

关键词:CROSS JOIN 

格式:FROM 表名1 CROSS JOIN 表名2

四, 自身连接

自身连接是指同一个表自己与自己进行连接。这种一元连接通常用于从自反关系(也称作递归关系)中抽取数据。例如人力资源数据库中雇员与老板的关系。

下面例子是在机构表中查找本机构和上级机构的信息。

你可能感兴趣的:(第8章 数据库)