回顾4

连接查询:

连接多张表到一起,不管记录数如何,字段数一定会增加。

分类:内连接,外连接。自然连接,交叉连接,

交叉连接:cross join (笛卡尔积)

内连接:inner join,左右两张表有连接条件匹配(不匹配自动忽略)

外连接:left/right join 主表的一条记录一定会存在匹配保留副表数据,否则置空

自然连接:natural join 自动匹配(相同字段名)

PHP操作:mysql

Php充当客户端,开启mysql扩展

连接认证:mysql_connect;执行sql

获取结果:mysql_query;

解析结果:mysql_fetch系列

释放资源:mysql_free_result和mysql_close

错误处理:mysql_ermo和mysql_error

外键

Foreign key 外面的键

如果一张表中有一个字段(非字段)指向另一张表的主键,那么将该字段称之为外键

增加外键:

外键可以在创建表的时候或者在创建表之后增加(但是要考虑数据问题)一张表有多个外键

1) 创建表的时候增加外键:在所有的表字段之后使用:

Foreign key (外键字段) references 外部表(主键字段)

例:

Crate table My_c (

c_id int

Foreign key (c_id) references

My_class

) character utf8;

在新增之后增加外键;修改表结构

Alter table表名 add foreignkey(外键字段)

References 父表(主键字段);

例

Alter table my_foreign add

Constraint student_class_1

Foreign key (c_id)

Reference my_class(id);

修改&删除外键

外键不可修改;只能先删除后新增

删除外键

Alter table 表名 drop foreignerkey 外键名;--一张表有个外键但是外键名称不能一样。

例:alter table my_foreigner drop foreigner key

My_foreigner_id;

注意:外键删除是不能通过查看表结构体现出来,查看创建语句查看;

外键作用

外键默认作用:一个对父表,一个对子表(外键所在表)

对字表的约束:字表数据进行操作的时候如果对应的外键字段在父表找不到对应的匹配操作时便(约束字表数据)

对父表约束:父表数据进行写操作(删与改:主键)如果对应主键在字表中已经被数据引用,那么不允许操作。

外键条件

1,外表要存在:首先要保证表的存储引擎是innodb(默认存储引擎)如果不是innodb,外键创建成功,但是没有约束效果。

2,外键字段的字段类型(列属性)必须与父表的主键类型完全一致。

3,一张表中外键名称不能重复

4,增加外键的字段(数据已经存在),必须保证数据与父表主键要求一致。

外表约束

所谓外表约束就是指外键的作用

之前将外键作用:是默认作用,其实可以通过对外键的需求爱,进行定制操作。

外键约束有三种模式:针对父表。

District :严格模式(默认的)父表不能删除或者更新一个已经被子表数据引用的数据。

Cascade:级联模式,父表的操作,对应子表关联的数据也跟着操作。

Set null:  置空模式,父表的操作之后,子表的数据被置空。

约束模式:

删除的时候子表置空,更新的时候子表级联操作。

指定模式的语法:foreign 可以(外表字段)references 父表(主键字段)on delete 模式 update 模式;

更新操作:级联操作

删除操作:置空

删除置空前提条件:外键字段允许为空(如果不满足条件),外键无法创建。

外键很强大,能够进行各种约束;但对php来讲,外键约束降低了php对数据的可控性,但是实际开发中,很少用外键来处理。

回顾4

连接查询:

连接多张表到一起,不管记录数如何,字段数一定会增加。

分类:内连接,外连接。自然连接,交叉连接,

交叉连接:cross join (笛卡尔积)

内连接:inner join,左右两张表有连接条件匹配(不匹配自动忽略)

外连接:left/right join 主表的一条记录一定会存在匹配保留副表数据,否则置空

自然连接:natural join 自动匹配(相同字段名)

PHP操作:mysql

Php充当客户端,开启mysql扩展

连接认证:mysql_connect;执行sql

获取结果:mysql_query;

解析结果:mysql_fetch系列

释放资源:mysql_free_result和mysql_close

错误处理:mysql_ermo和mysql_error

外键

Foreign key 外面的键

如果一张表中有一个字段(非字段)指向另一张表的主键,那么将该字段称之为外键

增加外键:

外键可以在创建表的时候或者在创建表之后增加(但是要考虑数据问题)一张表有多个外键

1) 创建表的时候增加外键:在所有的表字段之后使用:

Foreign key (外键字段) references 外部表(主键字段)

例:

Crate table My_c (

c_id int

Foreign key (c_id) references

My_class

) character utf8;

在新增之后增加外键;修改表结构

Alter table表名 add foreignkey(外键字段)

References 父表(主键字段);

例

Alter table my_foreign add

Constraint student_class_1

Foreign key (c_id)

Reference my_class(id);

修改&删除外键

外键不可修改;只能先删除后新增

删除外键

Alter table 表名 drop foreignerkey 外键名;--一张表有个外键但是外键名称不能一样。

例:alter table my_foreigner drop foreigner key

My_foreigner_id;

注意:外键删除是不能通过查看表结构体现出来,查看创建语句查看;

外键作用

外键默认作用:一个对父表,一个对子表(外键所在表)

对字表的约束:字表数据进行操作的时候如果对应的外键字段在父表找不到对应的匹配操作时便(约束字表数据)

对父表约束:父表数据进行写操作(删与改:主键)如果对应主键在字表中已经被数据引用,那么不允许操作。

外键条件

1,外表要存在:首先要保证表的存储引擎是innodb(默认存储引擎)如果不是innodb,外键创建成功,但是没有约束效果。

2,外键字段的字段类型(列属性)必须与父表的主键类型完全一致。

3,一张表中外键名称不能重复

4,增加外键的字段(数据已经存在),必须保证数据与父表主键要求一致。

外表约束

所谓外表约束就是指外键的作用

之前将外键作用:是默认作用,其实可以通过对外键的需求爱,进行定制操作。

外键约束有三种模式:针对父表。

District :严格模式(默认的)父表不能删除或者更新一个已经被子表数据引用的数据。

Cascade:级联模式,父表的操作,对应子表关联的数据也跟着操作。

Set null:  置空模式,父表的操作之后,子表的数据被置空。

约束模式:

删除的时候子表置空,更新的时候子表级联操作。

指定模式的语法:foreign 可以(外表字段)references 父表(主键字段)on delete 模式 update 模式;

更新操作:级联操作

删除操作:置空

删除置空前提条件:外键字段允许为空(如果不满足条件),外键无法创建。

外键很强大,能够进行各种约束;但对php来讲,外键约束降低了php对数据的可控性,但是实际开发中,很少用外键来处理。

mysql学习之路_外键的更多相关文章

  1. mysql学习之路_事物_存储过程_备份

    数据备份与还原 备份:将当前已有的数据保留. 还原:将已经保留的数据恢复到对应表中 为什么要做数据备份 1,防止数据丢失,被盗,误操作 2,保护数据记录 数据备份还原方式有多种:数据表备份 单表数据备 ...

  2. mysql学习之路_连接查询

    回顾 列属性:主键,自增长,唯一键. 关系:一对一,一对多,多对多 三层范式: 1NF:字段设计必须符合原子性 2NF:不存在部分依赖(没有复合主键) 3NF:不存在传递依赖(实体单独成表) 逆规范化 ...

  3. mysql学习之路_高级数据操作

    关系 将实体与实体的关系,反应到最终数据表的设计上来,将关系分为三种,一对多,多对多,多对多. 所有关系都是表与表之间的关系. 一对一: 一张表的一条记录一定只对应另外一张表的一条记录,反之亦然. 例 ...

  4. mysql学习之路_字段类型与属性2

    字段属性: 主键,唯一键,自增长. 主键: Primary key 主要的键,一张表只能有一个字段能使用对应的键,用来唯一约束该字段里面的数据不能重复,称之为主见. 一张表最多只有一个主键. 增加主键 ...

  5. mysql学习之路_联合查询与子查询

    联合查询 联合查询:将多次查询(多条select语句)在记录上进行拼接(字段不会增加). 语法:多条select语句构成,每条select语句获取的字段必须严格一致(但是字段类型无关). Select ...

  6. mysql学习之路_字段类型与属性

    回顾 数据库基本知识:关系型数据库与非关系型数据库 关系型数据库:安全(磁盘) 非关系型数据库:高效(内存) 关系型数据库:建立在关系模型上的数据库, 数据结构:二维表(浪费空间) 数据库操作指令:s ...

  7. mysql学习之路_基础知识

                    Mysql php阶段将数据库分为三个阶 基础阶段: mysql数据库的基本操作(增删改查),以及一些高级操作(视图,触发器,函数,存储过程等),PHP操作没有sql数 ...

  8. mysql学习之路_视图

    视图 视图:view是一种有结构的但是没有结构来源的虚拟表,虚拟表的结构来源不是自己定义的而是从对应的基表中产生(来源) 创建视图 基本语法: Create view 视图名字 as select 语 ...

  9. mysql学习之路_乱码问题

    中文数据问题: 中文数据问题本质就说字符集问题, 计算机只识别二进制,人类识别符号:需要友谊个二进制与字符对应关系(字符集). 报错:服务器没有识别对应的四个字节. 服务器认为的数据是utf—8,一个 ...

随机推荐

  1. mybatis插入数据并获取主键值

    有时候我们的主键是自增的,但是我们想要在插入一条数据以后获取这条数据的主键值,而我们知道,mybatis执行完插入操作以后返回的是生效的记录数.那如何才能获取这个主键值呢. 1.在配置文件mapper ...

  2. 再遇ibatisNet

    11年在Mr刘的带领下第一次接触ibatisnet ,当时Mr刘很详细的很讲了xml里的写法还有配置文件之类的,但是随着时间越来越久远.很多东西都开始淡忘了. 如今,再次和它相遇,依然觉得很亲切,虽然 ...

  3. RxJava笔记

    网上搜索了一些关于 RxJava 的东西,对RxJava的定义自己理解如下: RxJava是要一种逻辑简洁的,通过一种扩展的观察者模式,来实现异步的一种链式编程.

  4. vue-router2

    六,导航钩子 导航钩子函数主要是在导航跳转的时候做一些操作,比如跳转页面之前,进行判断 进而选择跳转到哪里 钩子函数根据生效范围根据其生效范围可以分为全局钩子函数,路由独享钩子函数 和 组件钩子函数. ...

  5. 安装后没有IP

    修改  /etc/sysconfig/network-scripts/ifcfg-eth0 改为yes

  6. django os.environ慎用setdefault操作环境变量!

    在绝大多数情况下,如果需要在程序运行过程中设置环境变量,使用os.environ.setdefault函数是没有任何问题的,但是有两种场景下setdefault会造成意外的问题,需要慎用: 如果程序执 ...

  7. oracle 异常错误处理

    分类: Oracle 5.1 异常处理概念 5.1.1 预定义的异常处理 5.1.2 非预定义的异常处理 5.1.3 用户自定义的异常处理 5.1.4 用户定义的异常处理 5.2 异常错误传播 5.2 ...

  8. 利用Swoole编写一个TCP服务器,顺带测试下Swoole的4层生命周期

    1首先我们写一个入口脚本,这里简单点的功能就是开启服务和关闭服务 <?php //CLI命令 if(isset($argv[1]) && in_array($argv[1], [ ...

  9. pop回到之前的某一个页面

    循环遍历 - (void)backHome:(UIButton *)button { self.navigationController.navigationBarHidden = NO; 4 Cas ...

  10. System.Runtime.InteropServices.COMException: 检索 COM 类工厂中 CLSID 为 {0002E510-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80040154

    这个问题困恼我好几天了,今天终于解决. 开始我在网上左百度右google,都没搜到最终的解决方案,今天我把解决方案贴出来,以供大家分享! 网上有些是报80070005错误的,跟我这个80040154错 ...