SQL数据库学习日记(三)

最近考试月,备考压力大,不能日更

主键:同一个表中用于区别其他记录的字段
外键:将多个表连接到一起的字段,实现方式为定义外键约束

ALTER TABLE 语句用于在已有的表中添加、删除或修改列

ALTER TABLE students
ADD CONSTRAINT fk_class_id
FOREIGN KEY (class_id)
REFERENCES classes (id);

其中外键约束fk_class_id可以任意,FOREIGN KEY(class_id)指定class_id为外键REFERENCES classes (id)指定该外键将关联到classes表的id列(即classes表的主键)
定义外键约束可以保证无法插入无效数据,但是会降低性能,所以大部分交互程序中不会设置外键约束,而是靠程序自身逻辑进行剔除(有漏洞可挖)所以在此情况下,class_id仅是一个普通的列,只是起到了外键的作用
若删除外键约束也是通过

ALTER TABLE students
DROP FOREIGN KEY fk_class_id;

并不是删除外键,而是类似解绑,如果要删除外键这一列,要用到 DROP COLUMN ...
多对多的关系是多个一对多靠中间表进行关联

索引:
将数据库内某一列或者多个列的值进行预排序的数据结构,类似图书馆查书,先查表,再查列,再查值
对某一列创建索引

ALTER TABLE students
ADD INDEX idx_score (score);//创建一个名为idx_score,使用列score的索引,索引名称是任意的。
如果索引有多列可以在括号中依次写上

ALTER TABLE students
ADD INDEX idx_name_score (name, score);

索引的效率取决于索引列的值是否散列,如果该列的值如果越互不相同,则索引效率越高,若对于一个列大量值相同情况,则对该列创建索引就没有太多意义

可以对一个表创建多个索引,索引的有点是提高了查询效率,
缺点是在插入,更新和删除记录时,要同时修改索引,所以,索引越多,插入,更新和删除记录的速度就越慢,例如图书馆查书,如果分得过于细致,也不利于简化查询

对于主键,关系书库会自动对其创建主键索引,用主键索引的效率最高,因为主键会保证绝对唯一

设计关系数据表时,某些唯一的列因为具有业务含义(例如身份证),不宜作为主键,但是因为业务要求必须有唯一约束时,可以添加唯一索引

ALTER TABLE students
ADD UNIQUE INDEX uni_name (name);//通过UNIQUE关键字添加了唯一索引

也可以对某一列添加一个唯一约束而不创建唯一索引
ALTER TABLE students
ADD CONSTRAINT uni_name UNIQUE (name);//name列无索引,但是具有唯一性保证

索引对于用户与应用而言在使用中没有太大区别,但是在数据结构上可以优化查询效率

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值