多表操作

  • 一对多关系:
    • 常见实例: 客户和订单,分类和商品,部门和员工
    • 一对多建表原则:在从表(多)创建一个字段,字段作为外键指向主表(一)的主键
  • 多对多关系
    • 常见实例:学生和课程 用户和角色
    • 多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键
  • 一对一关系:
    • 在实际的开发中应用不多.因为一对一可以创建成一张表
    • 两种建表原则
      • 外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一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 joinselect *from A left outer join B on 条件;//左表有的数据全部查询 右表没有 使用null
    • 右外连接:right outer joinselect *from A right outer join B on 条件;

子查询

  • 一条select语句结果作为另一条select语法一部分(查询条件,查询结果,表等).
  • 语法
    • select....查询字段....from...表..where...查询条件

主键约束

  • PRIMARY KEY约束唯一标识数据库表中的每条记录
    • 主键必须包含唯一的值
    • 主键列不能包含NULL值
    • 每个表都应该有一个主键,并且每个表只能有一个主键
  • 添加主键
  1. 创建表时,在字段描述处,声明指定字段为主键
  2. 创建表时,在constraint约束区域,声明指定字段为主键:
    1. 格式:[constraint 名称]primary key(字段列表)
    2. 关键字constraint可以省略,如果需要为主键命名,constrint不能省略,主键名称一般没用
    3. 字段列表需要使用小括号括住,如果有多字段需要使用逗号分隔.声明两个以上字段为主键.我们称为联合主键
  3. 创建表之后,通过修改表结构,声明指定字段为主键
    1. 格式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约束

  • 添加唯一约束
  1. 创建表时,在字段描述处,声明唯一
  2. 创建表时,在约束区域,声明唯一CONSTRAINT 名称 UNIQUE(字段名);
  3. 创建表后 修改表结构 声明字段唯一ALTER TABLE 表名 ADD[CONSTRAINT 名称]UNIQUE(字段名);
  • 删除唯一约束
  • ALTER TABLE 表名 DROP INDEX 名称
  • 名称:必须是我们在添加时起的名字 如果没有起名 使用字段名;

默认约束

  • 添加默认约束,在创建表时候添加CREATE TABLE 表名(字段名 数据类型 DEFAULT 值);

    删除默认约束

  • 删除默认约束ALTER TABLE 表名 MODIFY 字段名 数据类型;