Java初学者笔记16—数据库约束,关系,范式

一.约束

 概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性,更准确说约束的是列。

 分类:

 1. 主键约束:primary key

 2. 非空约束:not null

 3. 唯一约束:unique

 4. 外键约束:foreign key

 

1 非空约束:not null,某一列的值不能为null

 1创建表的时候添加 create table 表名( 列名 数据类型 not null )

 创建表完后,添加非空约束

Alter table 表名 modefy 列名 数据类型 NOT NULL;

 

  3. 删除非空约束

Alter table 表名 modefy 列名 数据类型;

 

2唯一约束:unique,某一列的值不能重复

    1 在创建表时,添加唯一约束 create table 表名(列名 数据类型 unique)

 

 2 删除唯一约束

Alter table 表名 drop index 列名;

 3 在表创建完后,添加唯一约束

Alter table表名modefy 列名 数据类型 unique;

     注意:唯一约束可以有null值,但是只能有一条记录为null

 

3 主键约束:primary key:非空且唯一,一张表只能有一个字段为主键,也是表中数据唯一标识

 1 在创建表时,添加主键约束

create table stu(列名 数据类型 primary key, );

 2 删除主键

alter table 表名 drop primary key;

 3 创建完表后,添加主键

alter table 表名 modify 列名 数据类型 primary key

 4 自动增长:概念:如果某一列是数值类型的,使用auto_increment 可以来完成  1 在创建表时,添加主键约束,并且完成主键自增长

create table stu(列名 数据类型 primary key auto_increment);

2 删除自动增长

alter table表名modify 列名 数据类型;

3 添加自动增长

alter table表名 modify列名 数据类型 AUTO_INCREMENT;

           注意:删除自动生长之前,要先删除主键,添加随意

 

 

4 外键约束:foreign key,让表于表产生关系.

  1. 在创建表时,可以添加外键 create table 表名(....外键列,

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

  1. 删除外键alter table 表名 drop foreign key 外键名称;

3. 创建表之后,添加外键: alter table 表名 add constraint 外键名称foreign key (外键列名称) references 主表名称(主表列名称)

 4. 级联操作

        1. 添加级联操作(级联更新+级联删除)

语法:Aalter table 表名 add constraint 外键名称foreign key (外键列名称) references 主表名称(主表列名称)on update cascade on delete cascade

         2. 分类:

        级联更新:on update cascade (一个更改都更改)

        级联删除:on delete cascade(一个删除,与之相关的全部删除)

 

  • 关系

数据库中,表与表之间的关系分为三种

       1 一对一(不常用):一对一的关系,是创建一个外键,对应另一个表中的主键,因为是一对一,所以要保证创建的外键是唯一的(用唯一约束)。

                        这种关系之所以不常用,是因为不如创建一个新的列了。

       2 一对多:就是正常操作,创建一个外键,去对应另一个表的主键,数据多的一方对应数据少的一方,一个表的主键可以对应另一个表的多个外键。

       3 多对多:需要一个中间表,创建两个外键,分别对应其他两个表的主键,这两个外键也叫做主键对(必须是唯一的,使用主键约束),中间表可以设置很多主键对,与相连接的表的主键是一(外表)对多(中间表)。

 

  • 范式

范式就是数据库表的设计,需要遵循的规则,可以优化数据的存储,并看起来更为清晰。

常规设计,只需要满足三大范式即可。

 

1 第一范式:每一个列都是不可以再次拆分的,这是设计的基础(因为想拆分可能也做不到)。

第二范式和第三范式,之间有一些模糊,又是每一个列必须完全依赖主键(第二范式),又是不得间接传递(第三范式)。

个人总结:表中的设计,我一个表只叙述一件事情,首先不能有重复的主键,其次不能有带有含主键性质的其他数据。

主键性质:通过这个数据,可以确定其他数据。

  •  
  • 数据库备份和还原

   备份: mysqldump -u用户名 -p密码 数据库名称 > 保存的路径

还原:1. 登录数据库

  2. 创建数据库

  3. 使用数据库

  4. 执行文件。source 文件路径

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值