JavaWeb-MySql高级


    约束              【重点】
    数据库设计         【重点】
    多表查询           【重点】
 

约束              【重点】
    约束的概述
        什么是约束
            作用在表中的列上的,用于限制这一列存储的数据的

        约束的分类
            非空约束(not null):限制这列的值不能为空(null)
            唯一约束(unique):限制这列的值不能有重复的
            主键约束(primary key):主键值是每一行数据的唯一标识,限制这列的值必须非空且唯一
                                一个表最多只能有一个主键约束,一般都会给每一个表加上主键约束
                                但是可以将一个表中的多个字段联合设置为主键(联合主键/复合主键),主键还是一个
            默认约束(default):限制这列的值如果没有设置值就为指定的默认值
            检查约束(check):限制这列的值必须满足指定的要求,MySQL不支持检查约束
            外键约束(foreign key):限制这列的值必须来自于另外一张表的另一列的值
                            主表:外键列关联的列所在的表
                            从表/副表:外键列所在的表

        约束可以有两种写法:
            1、建表的同时加约束
            2、建表之后加约束

数据库设计         【重点】
    什么是数据库设计
        设计表结构,和表与表之间的关系的过程,就是数据库设计

    表与表之间的关系(多表关系)
        1、一对一
            用户和用户详情

            一个用户有一个用户详情       一
            一个用户详情对应一个用户     一

            建表原则:在任意一端的表中建立唯一的外键记录另一张表的主键都可以
        2、一对多
            部门和员工

            一个部门对于多个员工     多
            一个员工对于一个部门     一

            建表原则:在多的一端建立外键,指向一的一端的主键

        3、多对多
            商品和订单

            一个商品可以属于多个订单       多
            一个订单可以包含多个商品       多

            建表原则:创建一张中间表,用于记录两种的表的对应的关系
                    中间表中至少包含两个外键字段,分别记录两张表的主键

            学生和课程:多对多
            用户和身份证:一对一
            学生和老师:多对多
            学生和班级:一对多

多表查询           【重点】
    什么是多表查询
        同时从多张表中查询数据放到同一个数据结果

    多表查询的分类
        1、连接查询
            内连接
                隐式内连接:没有使用内连接关键字(inner join)连接多张表,而是使用逗号,使用where关键字进行条件关联
                    select 列名1,列名2,... from 表名1,表名2,... where 关联条件;
                    例如:
                    select * from emp,dept where emp.dep_id = dept.did;
                显式内连接:显式的使用内连接关键字(inner join)连接多张表,使用on关键字进行条件关联
                    select 列名1,列名2,... from 表名1 inner join 表名2,... on 关联条件;

                    例如:
                    select * from emp inner join dept on emp.dep_id = dept.did;

                    注:inner关键字可以省略。

                    内连接查询的结果:满足关联条件的才会查询出来,不满足则不能查询出来

            外连接(左外连接、右外连接)
                左外连接
                    select 列名1,列名2,... from 表名1 left outer join 表名2,... on 关联条件;
                右外连接
                    select 列名1,列名2,... from 表名1 right outer join 表名2,... on 关联条件;

                    注:outer关键字可以省略。
        2、子查询
            什么是子查询
                查询中嵌套了查询,被嵌套的查询就称为子查询
                子查询的代码一定要使用小括号括起来
            子查询根据查询的结果不同使用方式不同
                单列:使用在where语句中当做条件进行查询
                    单行单列:使用 = < > !等运算符连接
                    多行单列:使用 in关键字连接
                多列:当做虚拟表进行关联使用
                    单行/多行多列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值