数据结构和数据库的区别
数据库是应用软件级别研究数据的存储和操作(主要针对磁盘上的数据)
数据结构是在系统软件级别研究数据的存储和操作(主要是针对内存中的数据)
对硬盘数操作是数据库的强项,是数据库研究的核心问题。
什么是连接
客户端和数据库其实是分离的,客户端只是我们管理数据发送命令显示数据的工具,实际上的数据库和这个客户端没有什么关系。
客户端通过连接访问数据库,如果没有开启数据库服务就无法进行访问。
命令通过客户端发送给数据库执行。有些命令可以一起执行,有些命令无法一起执行。
数据库创建和删除
- 数据文件
- 主键约束:不允许重复数据,避免数据冗余(实体完整性)
- 外键约束:通过外键约束从语法上保证本事物所关联的其他事物一定是存在的(引用完整性),事物和事物之间的关系是通过外键来体现的
- check约束:保证事物属性的取值在合法的范围内
- default约束:保证事物的属性一定会有一个值
- 唯一约束:保证事物属性的取值不允许重复,但允许为空
- not null约束:要求用户必须为该属性赋一个值,否则语法出错。默认允许为空,如果不写not null 则不允许为空
- 关联的实体共享一个主键
- 其中一个实体通过外键关联到另外一个实体的主键,需要在外键列添加唯一约束
- 通过外键表表示实体之间的关系
- 主键通常都是整数(不建议使用字符串当作主键,除非是用于集群式服务的时候)。
集群式服务:用户的一个请求可能需要使用不同主机的数据库才能够完成一个服务 - 主键的值通常不允许修改,除非本记录被删除(如果该主键作为其他表的外键的时候如果修改可能导致数据丢失)
- 主键一般定义为表名_id,或者表名Id
- 要用代理主键,不要使用业余主键。即不要使用有业务含义的字段当作主键
需要注意的是有可能附加失败,弹出:附加操作系统错误5什么的,需要修改文件的权限:
创建表
创建表之前需要创建库
表示国家化编码可以变化的字符串(支持汉字)
允许NULL值表示是否允许这个属性不填
点击感叹 后执行,然后刷新数据库中的表,就可以看到新建的表。
约束
对一个表中属性操作的限制叫做约束
分类:
如果在前面省略了插入字段的集合,则在后面必须给所有属性赋值
允许为空和default之间:可以认为允许为空为为
insert如果没有给所有的字段赋值,则必须在表后面加上所赋值字段的集合,无论没有赋值的字段是为空还是有default值
和可以组合使用,这样也不能为空了
虽然允许其中一个为空,但是不能有多个空但是Orecal里面允许多个字段为空
唯一约束和主键约束之间的关系
表和约束之间的区别:
通过表来解决事物的存储
通过约束来解决事物取值的有效性和合法性的问题
建表的过程就是指定事物属性以及事物属性各种约束的过程
关系
一对一
一对多
多对多
通过设置不同的外键来表示表和表的不同关系
一对一
一对多(A表和B表)
B表添加外键关联到A的主键,不需要在外键列添加唯一约束。即在多的一方添加外键。本质上要满足函数关系
多对多(A表和B表)
多对多必须通过单独的一张表来表示

主键
主键:能够唯一标识事物的一个字段或者多个字段的组合
主键的特征:
外键
外键:如果一个表中的若干个字段是来自若干个表的主键或者唯一键,则这若干个字段就是外键
注意:外键通常是来自另外表的主键而不是唯一键,因为唯一键可能为Null或者被修改
外键不一定来自其他表,也可能来自本表的主键。例如,员工表里面上司字段就是员工表的主键
含有外键的表叫做外键表,外键字段来自的那张表叫做主键表
主键表和外键表的删除问题
应该先删除外键表。先删除主键表,则使得外键表的数据引用失败。如果坚持删除,应该先删除关系。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!