多表操作
- 一对多关系:
- 常见实例: 客户和订单,分类和商品,部门和员工
- 一对多建表原则:在从表(多)创建一个字段,字段作为外键指向主表(一)的主键
- 多对多关系
- 常见实例:学生和课程 用户和角色
- 多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键
- 一对一关系:
- 在实际的开发中应用不多.因为一对一可以创建成一张表
- 两种建表原则
- 外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一unique
- 外键是主键:主表的主键和从表的主键,形成主外键关系
外键约束
- 外键特点
- 从表外键的值是对主表主键的引用
- 从表外键类型,必须与主表主键类型一致
- 声明外键约束
- 语法:
alter table 从表 add[constraint] [外键名称] foreign key(从表外键字段名)references 主表(主表的主键); [外键名称]用于删除外键约束的,一般建议"_fk"结尾 alter table 从表 drop foreign key 外键名称
- 语法:
使用外键目的:
交叉连接查询(基本不会使用-得到的是两个表的乘积)[了解]
- 语法:
select *from A,B;
- 语法:
- 内连接查询(使用的关键字 inner join — inner 可以省略)
- 隐式内连接:
select *from A,B where 条件; - 显示内连接:
select *from A inner join B on 条件;
- 隐式内连接:
- 外连接查询(使用的关键字 outer join — outer 可以省略)
- 左外连接:left outer join
select *from A left outer join B on 条件;//左表有的数据全部查询 右表没有 使用null - 右外连接:right outer join
select *from A right outer join B on 条件;
- 左外连接:left outer join
子查询
- 一条select语句结果作为另一条select语法一部分(查询条件,查询结果,表等).
- 语法
select....查询字段....from...表..where...查询条件
主键约束
- PRIMARY KEY约束唯一标识数据库表中的每条记录
- 主键必须包含唯一的值
- 主键列不能包含NULL值
- 每个表都应该有一个主键,并且每个表只能有一个主键
- 添加主键
- 创建表时,在字段描述处,声明指定字段为主键
- 创建表时,在constraint约束区域,声明指定字段为主键:
- 格式:
[constraint 名称]primary key(字段列表) - 关键字constraint可以省略,如果需要为主键命名,constrint不能省略,主键名称一般没用
- 字段列表需要使用小括号括住,如果有多字段需要使用逗号分隔.声明两个以上字段为主键.我们称为联合主键
- 格式:
- 创建表之后,通过修改表结构,声明指定字段为主键
- 格式
alter table person add[constraint 名称]primary key(字段列表)
- 格式
- 删除主键约束
alter table person drop primary key
非空约束
NOT NULL约束强制列不接受NULL值
NOT NULL约束强制字段始终包含值 这意味着 如果不向字段添加值 就无法插入新记录或者更新记录
唯一约束
UNIQUE 约束唯一标识数据库中的每条记录
UNIQUE 和 PRIMARY KEY约束均为列或列集合提供了唯一性的保证
PRIMARY KEY 拥有自动定义的UNIQUE约束
请注意,每个表可以有多个UNIQUE约束,但是每个表只能有一个PRIMARY KEY约束
- 添加唯一约束
- 创建表时,在字段描述处,声明唯一
- 创建表时,在约束区域,声明唯一
CONSTRAINT 名称 UNIQUE(字段名); - 创建表后 修改表结构 声明字段唯一
ALTER TABLE 表名 ADD[CONSTRAINT 名称]UNIQUE(字段名);
- 删除唯一约束
ALTER TABLE 表名 DROP INDEX 名称- 名称:必须是我们在添加时起的名字 如果没有起名 使用字段名;
