之前学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:管理用户,授权。

Mysql基础。的更多相关文章

  1. Mysql基础代码(不断完善中)

    Mysql基础代码,不断完善中~ /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限 ...

  2. MYSQL基础操作

    MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...

  3. 【夯实Mysql基础】记一次mysql语句的优化过程

    1. [事件起因] 今天在做项目的时候,发现提供给客户端的接口时间很慢,达到了2秒多,我第一时间,抓了接口,看了运行的sql,发现就是 2个sql慢,分别占了1秒多. 一个sql是 链接了5个表同时使 ...

  4. MySQL基础(非常全)

    MySQL基础 一.MySQL概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access ...

  5. mysql 基础篇5(mysql语法---数据)

    6 增删改数据 -- ********一.增删改数据********* --- -- 1.1 增加数据 -- 插入所有字段.一定依次按顺序插入 INSERT INTO student VALUES(1 ...

  6. MySQL 基础语句

    MySQL 基础语句 多个知识点 ----------------------------------------------------------------------------------- ...

  7. MySQL:基础—数据分组

    MySQL:基础-数据分组 1.为什么要分组: 比如一个表中有多条订单记录,如上图,每条记录对应着一个商品,现在我要查询 每个商品被订购的单数 准备出货?也就是找到每个商品被订购的数量. 如果只找一个 ...

  8. MySQL基础学习总结

    1.MySQL基础概念 mysql逻辑架构如下: 每个客户端连接都会在服务器中拥有一个线程,这个连接的查询只会在这个单独的线程中执行. MySQL是分层的架构.上层是服务器层的服务和查询执行引擎,下层 ...

  9. MySQL基础(五)——视图

    MySQL基础(五)--视图

  10. MySQL基础(四)——索引

    MySQL基础(四)--索引

随机推荐

  1. CF Round #600 (Div 2) 解题报告(A~E)

    CF Round #600 (Div 2) 解题报告(A~E) A:Single Push 采用差分的思想,让\(b-a=c\),然后观察\(c\)序列是不是一个满足要求的序列 #include< ...

  2. Qt常用类——Qpoint

    QPoint 类代表一个坐标点,实现在 QtCore 共享库中.它可以认为是一个整型的横坐标和一个整型的纵坐标的组合. 构造 QPoint 类支持以下两种构造方式: QPoint(); // 构造横纵 ...

  3. 归并排序 MergeSort

    今天第一次看懂了严奶奶的代码( ̄▽ ̄)~*,然后按照厌奶那的思路进行了一波coding,稍加调试后即可跑起来. 学习链接:排序七 归并排序.图解排序算法(四)之归并排序 merge函数:将两个有序序列 ...

  4. OD(lfdnb)

    由于一场意外,D死了,在此开一个新坑 2019.11.13 考前焦虑 智商为负 有点担心考试状态 2019.11.12 上午考试简直心态爆炸 T1看了一个小时不会 然后看T2,这时候wxy聚聚已经切了 ...

  5. nuxt中localstorage的替代方案

    采用异步的方式进行存储数据,更高效快速,使用localforage是你最好的选择 具体转载自博客 Heap Stack Blog(pingbook.top) Nuxt storage data in ...

  6. ddns+ros(routeros)+centos7.6+nginx+php+dnspod

    参考文章: http://www.myxzy.com/post-464.html https://www.cnblogs.com/crazytata/p/9686490.html php的源码下载: ...

  7. 学习Linux要知道的知识点总结

    1 如何查看Linux的user和hostname? (1)打开终端查看 终端左侧的root@zlkj:~$,前面的root为user - 用户名,后面的zlkj为hostname - 主机名. (2 ...

  8. [C++基础] 数组、指针、内存篇

    一.数组 2.1 int a[2][2]= { {1}, {2,3} },则 a[0][1] 的值是多少? 二维数组的初始化一般有两种方式: 第一种方式是按行来执行,如int array\[2][3] ...

  9. 避免因为Arcgis Server服务设置不当导致Oracle Process溢出的方法

    我之前写过一篇文章<arcsoc进程无限增长导致oracle processes溢出>(见链接:https://www.cnblogs.com/6yuhang/p/9379086.html ...

  10. python 将列表里的字典元素合并为一个字典

    python 将列表里的字典元素合并为一个字典 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn. ...