zoukankan      html  css  js  c++  java
  • Mysql基础。

    之前学SQL server的时候简单学过SQL的一点基础,Mysql就直接从外键约束开始继续学。

    外键约束:foreign key

    让表与表产生关系,从而保证数据的正确性。

    1、在创建表时添加外键:

      create table  ...(

        ......

        外键列,

        constraint 外键名称 foreign key (外键列名称)references 主表名(主表列名)

      )

    2、删除外键:

      alter table ...  drop foreign key 外键名。

    3、添加外键:

     alter table ... add constraint 外键名称 foreign key (外键列名称)references 主表名(主表列名)

    级联操作:

    1、添加级联操作:

      语法:alter table 表名 add constraint 外键名称 foreign key (外键列名称)references 主表名                   (主表列名)on update cascade on delete cascade        级联更新和删除

    多表关系:

    1、一对多:在多的一方建立外键,指向一的主键。

    2、多对多:需要借助第三张中间表,中间表至少包含两个字段作为中间表的外键,指向两张表的                  主键

    3、一对一:任意一方添加【唯一外键】指向另一方的主键。

    范式:

    1、第一范式(1NF):每一列都是不可分割的原子数据项。

    2、第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于码(在1NF基础上消除非主属性对主码的部分函数依赖。

      几个概念:* 函数依赖:A-->B,如果通过A属性(属性组)的值,可以确定唯一B属性的值,                    则称B依赖于A。

              例如:学号-->姓名。 (学号,课程名称)-->分数

           * 完全函数依赖:A-->B,如果A是一个属性组,则B属性值的确定需要依赖于A属性                                         组中所有的属性值。

              例如:(学号,课程名称)-->分数

           * 部分函数依赖:A-->B,如果A是一个属性组,则B属性值的确定只需要依赖于A属               性组中某一些值即可。

              例如:(学号,课程名称)-->姓名。

           * 传递函数依赖:A-->B,B-->C ,如果通过A属性(属性组)的值,可以确定唯一B属                                             性的值,再通过B属性的值,可以确定C属性的值,则称C传递函数依赖与A。

              例如:学号-->系名,系名-->系主任

           *码:如果在一张表中,一个属性或属性组,被其他所有属性所完全依赖,则称这                               个属性(属性组)为该表的码。

           * 主属性:码属性组中所有的属性   *非主属性,出去码属性的属性。

    第三范式(3NF):在2NF基础上,任何非主属性不依赖于其他非主属性(在2NF基础上消除传递依赖。

    多表查询:

    多表查询产生的是笛卡儿积,会有无用数据,所以得消除无用数据

    1、内链接查询。

      1、隐式内链接:Select 列名 from 表一,表二 where 主键有关的条件

      2、显式内链接:Select 列名 from 表一 join 表二 on 主键有关的条件

    2、外连接查询。

      1、左外连接:Select 列名 from 表一 left join 表二 on 主键有关的条件

        查询的是左表所有数据以及其交集部分。

      2、右外连接:Select 列名 from 表一 right join 表二 on 主键有关的条件

        查询的是右表所有数据以及其交集部分。

    3、子查询。

    查询中嵌套查询。

    子查询的不同情况:

      1、单列单行:作为条件,用运算符判断。 

      2、单列多行:作为条件,:in

      3、多列多行:作为一张虚拟表,放在列里。

    事务:

    1、事务的基本介绍:

      * :如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时               失败。(张三转账给李四....)

      * :操作:1、开启事务: start transaction

             2、回滚:rollback

             3、提交:commit

      * :事务提交的方式:1、自动提交:mysql就是自动提交的,一条DML语句自动提交一次事务

                2、手动提交:需要先开启事务,再提交。

      * :修改事务的默认提交方式: 1、查看事务提交方式 SELECT @@autocommit; 1-自动提交

                    2、修改:set @@autocommit = 0 ;

    2、事务的四大特征:

      * 原子性:是不可分隔的最小单位,要么同时成功要么同时失败。

      * 持久性:当事务提交或回滚后,数据库会持久保存数据。

      * 隔离性:多个事务之间,相互独立。

      * 一致性:事务操作前后,数据总量不变。

    3、事务的隔离级别。

    DCL:管理用户,授权。

  • 相关阅读:
    leetcode 对称二叉树
    leetcode 验证二叉搜索树
    蓝桥杯 完美的代价 贪心
    蓝桥杯 字符串对比 模拟
    蓝桥杯 芯片测试 极限找规律
    蓝桥杯 2n皇后问题 深搜
    74. 搜索二维矩阵
    二分 34
    二分 35
    二分 69
  • 原文地址:https://www.cnblogs.com/zhangyuhao/p/10923628.html
Copyright © 2011-2022 走看看