果子日常笔记七(MYSQL)

1, 三大范式
第一范式(1NF):要求数据库表的每一列都是不可分割的原子数据项
第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)

第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。
第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)

第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关
2,常见数据库类型约束
2.1、主键PRIMARY KEY
作用:DBMS为了方查找数据库,设计的一个规则
特点:
一张表里面主键是唯一的;
主键可以用来唯一的标识一行数据,主键不能为空,
联合主键:表中字段不能作为唯一标识每一行数据时,选取表中两个或者多个字段作为联合主键
联合主键的特点:如果去掉联合主键某个字段,剩下的字段任然可以构成联合主键,那么说明之前的联合主键是错误的

在修改表时添加主键
alter table user add primary key(id);
删除主键:
alter table user drop primary key;
创建表的时候设置主键:
方式一:
create table class(
-> id int(11) primary key,
-> name varchar(12)
-> );

方式二:
create table class1(
-> id int(11),
-> name varchar(12),
-> primary key(id)
-> );

创建联合主键:
create table user1(
-> name char(16),
-> gender char(10),
-> birthday date,
-> city varchar(16),
-> primary key(name,city)
-> );

2.2、主键自增 AUTO_INCREMENT
通过auto_increment设置主键自增
特点:
和主键结合使用,
自增字段的数据类型是整数类型
自增的数据开始值是1,没增加一行数据,自增1

添加自增
create table tb_dept10(
id INT(11) PRIMARY key AUTO_INCREMENT,
name VARCHAR(25),
location VARCHAR(50)
);

设置自增默认值
CREATE TABLE tb_dept11(
id INT(11) PRIMARY key auto_increment,
name VARCHAR(25),
location VARCHAR(50)
)auto_increment=100;

删除自增
ALTER TABLE tb_dept10 MODIFY id int(11);

在修改表时设置自增
ALTER TABLE tb_dept12 CHANGE COLUMN id id INT(11) auto_increment;

修改表时指定初始值
ALTER TABLE tb_dept12 auto_increment=100;

2.3、外键CONSTRAINT fk_rl FOREIGN KEY(deptId) REFERENCES tb_dept1(id)

表间关系:
一对一
一对多
多对多
MySQL5.6中文支持问题
DEFAULT CHARSET=GB2312;

查看创建表是sql
show create table 表名;

外键特点:
外键关联时主表要先去从表创建
外键字段的值必然在主表中是可以一一对应的
外键可以为空,但是不为空的外键必然可以在主表中跟它对于
外键关联的必然是主表的主键
创建外键约束
CREATE TABLE score (
id int(10) NOT NULL PRIMARY KEY auto_increment,
sid INT(10),
name varchar(50) DEFAULT NULL,
subject varchar(50) DEFAULT NULL,
score varchar(50) DEFAULT NULL,
CONSTRAINT fk_sid
FOREIGN KEY(sid) REFERENCES studentinfo(id)
)ENGINE=InnoDB DEFAULT CHARSET=GB2312;

修改变时添加外键约束
alter table 表名 add CONSTRAINT fk_sid FOREIGN KEY(sid) REFERENCES studentinfo(id)

删除外键约束
ALTER TABLE score drop FOREIGN KEY 外键名

2.4、唯一约束UNIQUE
特点:
主键在一个表里面只能有一个
但是唯一性约束可以有多个
设置了唯一性约束的字段表中有且只能有一个空值

创建表的时候设置唯一性约束
CREATE TABLE tb_dept1(
id INT(11) PRIMARY KEY,
name VARCHAR(25) UNIQUE,
location VARCHAR(50)
);

修改表的时候添加唯一性约束
ALTER TABLE tb_dept2 ADD UNIQUE(name);
起别名:
ALTER TABLE tb_dept2 ADD CONSTRAINT 别名 UNIQUE(字段);

删除唯一性约束
ALTER TABLE tb_dept2 DROP INDEX name;

2.5、默认值DEFAULT ‘Beijing’
特点:
在插入数据时,如果不写入就使用默认值,如果写入就使用新值

新建表时创建
CREATE TABLE tb_dept3(
id INT(11) PRIMARY KEY,
name VARCHAR(25),
location VARCHAR(50) DEFAULT ‘shanghai’
);

修改表时创建
ALTER TABLE tb_dept1 CHANGE location location VARCHAR(25) DEFAULT ‘beijing’;

2.6、非空约束(NOT NULL)
特点:
一张表中可以设置多个字段非空,主键默认非空

新建表时设置
CREATE TABLE tb_dept4(
id INT(11) NOT NULL,
name VARCHAR(35),
location VARCHAR(50)
);

修改表时设置
ALTER TABLE tb_dept3 CHANGE name name VARCHAR(34) not NULL;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值