zoukankan      html  css  js  c++  java
  • 多表设计及查询

    表约束

    唯一约束:unique,声明该字段是唯一的

    非空约束:not null,声明该字段非空

    主键约束:primary key,声明某一列为主键,具有唯一性、非空性和被引用的特性

    主键的自增长 auto_increment

    create table stu(

           id int primary key auto_increment,

           username varchar(20)

           );

    插入语句时,主键可以写null,也可以自定义

    insert into stu values(null,'meimei');

    insert into stu values(null,'xiaofeng');

    insert into stu values(4,'xiaofeng');

       

    多表约束(外键)

    外键约束的目的:保证数据的完整性。

      外键语法:foreigh key(外键字段) references 表名(主键);

    多表的设计

    表结构设计的三种方式:一对一、一对多(重点)、多对多(重点)

    一对多:部门和员工/用户和订单

    结构设计:两张表,主表(一方)  从表(多方)

    建表原则:在多方表中添加字段,把该字段设置为外键,指向一方表的主键

    多对多:用户和角色,一个用户可以有多个角色,一个角色可以被多个用户所拥有。

    建表原则:三张表,用户表、角色表、中间表(存储数据关系)

     多对多可以拆分成两个一对多的场景

    用户表(一) ----中间表(多)

    角色表(一) ----中间表(多)

    多表查询

    内链接

    内链接有普通内链接和隐士内链接两种,通常使用隐士内链接。

    语法:select * from tablename1, tablename2 where tid = gid;

    或者 select * from tablename1 t, tablename2 s where t.tid = s.gid;

    外链接

    外连接分左外链接和右外链接两种。

    左外链接:select * from tablename1 t left (outer) join tablename2 s on t.tid = s.gid;

    右外链接:select * from tablename1 t right (outer) join tablename2 s on t.tid = s.gid;

    内链接和外链接的区别

    内链接查询的是2张表交集数据,主外键关联的数据;

    左外链接查询的是左表中所有的数据和2张表主外键关联的数据;

    右外链接查询的是右表中所有的数据和2张表主外键关联的数据;

      

    子查询

    包含多个select语句的查询叫子查询,即把查询语句的结果作为另一个查询条件。

    例如:查询英语成绩大于英语平均分的学员和分数

    select name,English from stu where English > (select avg(English) from stu);

  • 相关阅读:
    window忘记密码怎么办
    VS2015配置Andriod开发环境
    记一次 thread.blocked.count 线程过多的问题排查
    Spring的事务初见
    对mybatis的Handler 从使用角度介绍
    最简单的RPC框架实现
    记一次mybatis bindingexception 问题排查
    Java线程池—ThreadPool简介
    [springMvc] 源码分析笔记(二)
    [tomcat] tomcat简析(一)
  • 原文地址:https://www.cnblogs.com/like1824/p/13410807.html
Copyright © 2011-2022 走看看