• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

it王德法

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

MySQL进阶

一、约束

1.外键约束

  概念:  让表和表之间产生关系,从而保证数据的准确性!

  外键约束格式:  CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主表主键列名)

    ps:  可以不设置外键名:  FOREIGN KEY (本表外键列名) REFERENCES 主表名(主表主键列名)

      创建表后添加外键约束:  ALTER TABLE 从表名 ADD  FOREIGN KEY (外键) REFERENCES 主表(主键);

      删除外键约束:  ALTER TABLE 表名 DROP FOREIGN KEY 外键名;

2.外键的级联更新和级联删除  

-- 添加外键约束,同时添加级联更新  标准语法
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名) ON UPDATE CASCADE;

-- 添加外键约束,同时添加级联删除  标准语法
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名) ON DELETE CASCADE;

-- 添加外键约束,同时添加级联更新和级联删除  标准语法
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名) ON UPDATE CASCADE ON DELETE CASCADE;

二、多表设计

1.一对一

实现原则 :  在任意一个表建立外键,去关联另外一个表的主键

2.一对多

实现原则 :  在多的一方,建立外键约束,来关联一的一方主键

3.多对多

实现原则 :  需要借助第三张表中间表,中间表至少包含两个列,这两个列作为中间表的外键,分别关联两张表的主键

三、多表查询

1.内连接查询

原理 : 内连接查询的是两张表有交集的部分数据(有主外键关联的数据)

  显式内连接 :  SELECT 列名 FROM 表名1 [INNER] JOIN 表名2 ON 条件;

  隐式内连接 :  SELECT 列名 FROM 表名1,表名2 WHERE 条件;   

2.外连接查询

  左外连接

原理 :  查询左表的全部数据,和左右两张表有交集部分的数据

语法 :  SELECT 列名 FROM 表名1 LEFT [OUTER] JOIN 表名2 ON 条件;

  右外连接

原理 :  查询右表的全部数据,和左右两张表有交集部分的数据 

语法 :  SELECT 列名 FROM 表名1 RIGHT [OUTER] JOIN 表名2 ON 条件;

3.子查询

查询语句中嵌套了查询语句。我们就将嵌套查询称为子查询! 

子查询结果 使用场景 语句
结果是单行单列的 可以作为条件,使用运算符进行判断 SELECT 列名 FROM 表名 WHERE 列名=(SELECT 聚合函数(列名) FROM 表名 [WHERE 条件]);
结果是多行单列的 可以作为条件,使用运算符in或not in进行判断 SELECT 列名 FROM 表名 WHERE 列名 [NOT] IN (SELECT 列名 FROM 表名 [WHERE 条件]); 
结果是多行多列的 可以作为一张虚拟表参与查询! SELECT 列名 FROM 表名 [别名],(SELECT 列名 FROM 表名 [WHERE 条件]) [别名] [WHERE 条件];

4.自关联查询

同一张表中有数据关联。可以多次查询这同一个表!

  语句 :  同多表查询

四、视图

1.视图的概念

  • 视图是一种虚拟存在的数据表

  • 这个虚拟的表并不在数据库中实际存在

  • 作用是将一些比较复杂的查询语句的结果,封装到一个虚拟表中。后期再有相同复杂查询时,直接查询这张虚拟表即可

  • 说白了,视图就是将一条SELECT查询语句的结果封装到了一个虚拟表中,所以我们在创建视图的时候,工作重心就要放在这条SELECT查询语句上

2.视图的创建

  语法 :  CREATE VIEW 视图名称 [(列名列表)] AS 查询语句;

3.视图的查询

  语法 :  SELECT * FROM 视图名称;

4.视图的修改

  修改视图表中的数据

    语法 :  UPDATE 视图名称 SET 列名=值 WHERE 条件;

  修改视图表结构

    语法 :  ALTER VIEW 视图名称 [(列名列表)] AS 查询语句;

5.视图的删除

  语法 :  DROP VIEW [IF EXISTS] 视图名称;

 

posted on 2020-09-13 16:54  it王德法  阅读(79)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3