数据库主键、外键、索引

毕业论文终于交给导师了,要给自己充充电,好久没学新知识了,惭愧惭愧,后面计划把科班基础都学一下,弥补弥补不足。先把数据库简单记一下,有两本书还在路上,之后再做补充。

关系型数据库相当于一个二维表,行被称为记录,列被称为字段。

数据类型记录

名称类型说明
INT整型4字节 ±22亿的范围
BIGINT长整型8字节 ±922亿
REAL浮点型4字节浮点数,±10^38
DOUBLE浮点型8字节浮点,±10^308
DECIMAL(M,N)高精度小数DECIMAL(20,10)20位中10位小数
CHAR(N)字符串固定长度N,只能存长度N的字符串
VARCHAR(N)可变字符串可变长度,最大为N,可取0-N位
BOOLEAN布尔True False
DATE日期1995-08-24
TIME时间11:30:21
DATETIME日期时间1995-08-24 11:30:21

主键

主键是某一个具有唯一标识的字段,不能与业务相关,类型有自增整数(BIGINT NOT NULL AUTO_INCREMENT,主键自动增长)和全局唯一GUID类型,不允许有NULL,还有联合主键这种,多个字段同时作为主键,可单独一个有重复,但不能多个同时重复。

外键

外键是在另一个表作为主键,但在当前表存在,为了将当前表与另一张表联系在一起。

定义方式:
ALTER TABLE students 表名
ADD CONSTRAINT yueshu_id 外键约束名
FOREIGN KEY (class_id) 外键在本表的字段名
REFERENCES class(id) 与class表中的id关联
删除方式:
ALTER TABLE  students
DROP FOREIGN KEY yueshu_id

外键主要起约束作用,即另一个表中无99这个主键名,当前表由于被约束了,就无法添加外键为99的记录。
但一般不用外键,因为外键效率低,通过逻辑对其进行约束。
上面说的主要是一对多或多对一的关系。对于多对多的关系,采用中间表,即再建立一张表将那两张表的主键对应存入;对于一对一关系,再建立一张表存入另一个表的主键,以及其他信息,为什么这样做而不是直接在原表添加一列?因为原表中未必所有记录都有这个信息,可能有的为NULL,而且这样可将频繁使用的字段单独拿出来进行查询,效率高。

索引

索引是对某一个或多个字段进行预排序的数据结构B-TREE,数据库可直接定位索引,而不是从头搜索表。索引中重复的越少,效率越高。被查询次数最多的(在where中出现的)且尽量不重复的字段适合作为索引。默认主键自动被创建索引,因为主键唯一效率最高。

创建方式:
ALTER TABLE students
ADD INDEX idx_score(score) 创建了一个以socre字段的索引idx_score,如果是以score为依据的频繁查询,可提高查询效率。也可以多个为依据。

唯一性索引
就是添加唯一性约束,很多字段希望他是唯一的不重复,可通过添加它的唯一性索引或者唯一性约束。

添加唯一性索引
ALTER TABLE students
ADD UNIQUE INDEX uni_id(id) 为id列添加了唯一性unique的索引
唯一性约束
ALTER TABLE students
ADD CONSTRAINT uni_id UNIQUE(id) 这个对id没添加索引,而是使其有唯一性约束。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值