zoukankan      html  css  js  c++  java
  • mysql的表操作细节【三范式(对表的创建)、外键【重点】(实体之间的关系、以及从表和主表之间操作的约束问题)、对记录的处理(insert、select)】

    1.php与mysql交互的编码统一性问题 【脚本文件编码与HTML编码】 【php提交连接mysql的编码和mysql自身建表的编码(这块需要我们留意编码的优先级)】

    2.删除库【drop】 没有太多可研究的地方【需要的是将整个库里的数据清理】 【如果是在php脚本中实现删除库,需要针对性将】

    header('location':url);//这个的用法是在脚本中写,但是实现跳转是在浏览器端实现【相当于通过脚本控制浏览器出现某种情况时,会发

    送一个HTTP请求,来实现页面的重定向的方法】【所以在header前不能出现输出,这一点是作为框架中需要考虑的使用。最好的选择是使用

    js实现一个页面跳转来进行框架的设计】

    3.添加库和设置字符集 【多个库操作create】

    主要就是设置字符集的这块内容需要注意【charset在库的层面进行编码设置,而不需要使用更加里层的编码设置】

    4.范式【表的设计规范】 三范式【是表设计时需要遵守的规范】 (1)第一范式【对关系模式的基本要求:要求是关系型数据库的模式。就是每一列的字段不能再分(字段名表示的值不能分成几个字段表示

    ,也就是字段的原子性)】 【第一范式也就是字段的原子性:每个记录内,只要能获得字段名便可以获得改字段值】 【每一个字段的值不能再分便满足了第一范式:基本上字段名和字段值对应便满足】 (2)第二范式【逐渐递增】【保证每个实例或行能够被唯一区别:也就是每行对主键完全依赖】 【也就是通过主键对整个行进行确定,获得主键值之后便能指向相应的行】 【针对也有出现多个字段联合作为主键的情况,但是我们面对该情形时,只会创建一个自增长的主键来作为唯一主键】 主键的设置本身就和业务逻辑一点关系都没有即可【能够保证在任何情况下唯一识别!!!】 【以id作为主键便满足了第二范式】 (3)第三范式:在满足第二范式的基础上,取消传递依赖 【字段之间不能出现互相依赖导致的传递依赖:a依赖b,b依赖c,这样更改时非常不方便】 【也就是说字段之间如果出现传递依赖的情况时,需要将这样的依赖关系进行分离成多个表,这样多个表进行外键进行关联即可】 【使用外键,而不是将表中的字段进行冗余(当然,在某些索引情况下,需要字段冗余。)】

    以上三范式【http://baike.baidu.com/link?url=ilERke9zvFlZ0_VJ2FJQw2GOvLfUjjDX3lVxKnl53FZssWziRK9t3y4Z_0044E5tzPci4A-

    8xxOTPuuxKkrAVa】 在数据建表时,需要综合考虑这些内容 【第一范式保证字段的独立和不重复】【原子性】 【第二范式保证主键作为唯一的依赖,创建时使用自增来保证主键的唯一和独立指向】【部分依赖】 【第三范式,对多重依赖的情况,使用多个表通过外键进行相连来实现多重关系】【传递依赖】 以上

    5.实体之间的关系【满足三范式时,如何表示实体之间的关系】 逻辑上将每一个实体之间的关系进行分割和联合【实现数据库表的范式和关系的建立】

    外键的约束功能 实现管理两个表的功能【通过字段的外键指向】 外键字段指向另一个表的主键 【这一点需要注意,二者的关系因为是有依赖约束,所以需要按照下面的规则进行】 外键的表的记录的添加【insert】需要确保该外键字段在主键表上是存在的 同理,当删除主键表上记录时,需要先删除外键表中的外键字段

    通过独立的关系进行建表,通过外键将表进行关联来实现联系【字段需要注意的点】

    【外键约束与索引的关系】: 如果需要在某个字段上增加外键约束,那么需要该字段同样需要索引。【mysql机制也会自动对外键加索引:原则上相当于外键字段与关联的

    那个表中的字段建立索引来建立关联的一个内容(只不过这个主要是为了关联,而不是为了提升查询效率)】

    关于外键的总结: (1)外键与相关联的主键的类型一致 (2)已有数据必须满足约束条件 (3)外键约束也可以重新命名【constraint关键字】 至于将外键的关联的那些注意事项前面已经说到。【对外键记录的操作注意点,以及外键与索引的关系】

    对外键的约束操作: 【删除、更新】 on delete【这样来描述在进行删除等操作时,该约束条件的处理机制】 【http://webnoties.blog.163.com/blog/static/18352514120129104411757/】 【http://www.pc6.com/InfoView/Article_45585.html】 还有级联操作【关联表的主键发生变化之后,导致从表进行相应的操作。这个是提升技能的重点】 外键功能Innodb引擎支持【Innodb现在是默认的引擎,被称为表引擎。现在myisam也支持外键】

    6.insert插入记录 插入出现主键冲突的情况下的自动处理机制【相当于外键约束操作的三个方法】 【主键冲突时自动更新】on duplicate key update 字段=值【这样的话,新插入的数据会进行覆盖】 其实用的不多。实际使用时,基本上不会在数据插入时进行指定主键

    7.select 基本查询语句的结构: select 字段表达式列表【这里能够使用表达式是关键count之类的聚合函数】 (from 子句【表示查询的来源,可以做多表】)(where 子句

    【where+表示条件子句,对条件的判断和表达式一定要区别。mysql的匹配和正则的区别要注意】)(group by 子句)(order by子句) (limit

    子句);

    查询中字段别名的问题【表的别名】 另外mysql中为了表达式更方便使用,有一个虚拟表名的概念 where语句一定要加【匹配的语法需要注意】 between和and关键字的使用【in、not in、or等逻辑运算判断】

    以上是简单的查询语句的结构 复杂的是join和多表查询

    【数据库方面操作的命令需要自己在完成这些之后进行统一处理】

  • 相关阅读:
    文件处理
    集合 字符编码
    3-11作业
    win 10 在vs2017下对mpi的安装以及认识
    java中二维数组的排序
    java中Arrays的用法
    java中随机二维数组中寻找最大值并输出坐标
    用java打印图形
    面向对象object与constructor
    for each in for in 与for of
  • 原文地址:https://www.cnblogs.com/shuoshuren/p/4201885.html
Copyright © 2011-2022 走看看