2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > MySQL数据库基础(外键约束 添加索引)

MySQL数据库基础(外键约束 添加索引)

时间:2020-10-05 01:35:06

相关推荐

MySQL数据库基础(外键约束 添加索引)

文章目录

一、外键约束1、外键概念2、关联约束3、添加与删除外键4、集联删除二、MySQL索引1、创建唯一索引(三种方法)2、索引查询3、全文索引4、联合索引5、删除索引

一、外键约束

1、外键概念

外键:给关联字段创建关联就是添加外键,简单来说外键就是被约束条件

切记:作为外键一定要和关联主键的数据类型保持一致

--记录老师的数据表CREATE TABLE Teachers(id TINYINT PRIMARY KEY auto_increment,name VARCHAR (20),age INT,gender boolean);--给老师添加数据INSERT INTO Teachers (name,age,gender) VALUES ("Lily",12,0),("Linta",14,0),("Zahi",22,0),("Paul",20,1),("Jeans",21,1);--创建学生的表CREATE TABLE Students(id INT PRIMARY KEY auto_increment,name VARCHAR(20),Teacher_id TINYINT,FOREIGN KEY (Teacher_id) REFERENCES Teachers(id))ENGINE=INNODB;--给学生添加数据INSERT INTO Students (name,Teacher_id) VALUES ("ViewIn1",2),("ViewIn2",4),("ViewIn3",1),("ViewIn4",3),("ViewIn5",2),("ViewIn6",3),("ViewIn7",2),("ViewIn8",4);

例如,以上就是给Students的Teacher_id绑定外键为Teachers的id,这样就能将每一个学生与老师对应起来

2、关联约束

其中,Teacher是母表,Students是子表,无法单独删除母表中的字段,因为被子表约束了

要删除母表中的字段,必须将该字段的约束解除,即子表的外键不再对应该字段

因此可以选择修改作为外键的数据,来删除母表的某字段

比如要删除字段1,将Students中id=4和id=6(原本对应母表id=3)的Teacher_id值设置为4

—>这样子表中就没有与母表id=3的字段有关联了

update Students set Teacher_id=4 where id=4 or id=6;

—>之后再删除母表id=3的字段就不受影响了

delete from Teachers where id=3;

—>此时插入一个学生,绑定外键为3就会报错

INSERT INTO Students (name,Teacher_id) values ("ZaHuw",3);

3、添加与删除外键

1)给现成的表加外键

例:给Students创建一个外键,取名为aaa,外键字段为Teacher_id,将该外键关联到表Teachers的id字段

ALTER TABLE Students ADD CONSTRAINT aaaFOREIGN KEY(Teacher_id)REFERENCES Teachers(id);

2)删除已有的外键

ALTER TABLE Students drop foreign key aaa;

4、集联删除

设置集联删除:这样就不会被限制删除了;

如果删除了外键的字段,那它对应的外键也会跟着被删除;

如果删除了母表的字段,它对应的子表字段也会跟着被删除。

CREATE TABLE Students3(id INT PRIMARY KEY auto_increment,name VARCHAR(20),Teacher_id TINYINT,FOREIGN KEY (Teacher_id) REFERENCES Teachers(id) on DELETE CASCADE)ENGINE=INNODB;

二、MySQL索引

1、创建唯一索引(三种方法)

1)index 索引名 (字段名)

--创建表CREATE table test1(id INT PRIMARY KEY AUTO_INCREMENT,index index_name (name),salary INT DEFAULT 2000);--插入数据INSERT INTO test1(name,salary) values("1111",1000),("2222",2000),("3333",3000),("4444",4000);

2)KEY 索引名 (字段名)

--创建表CREATE table test1(id INT PRIMARY KEY AUTO_INCREMENT,KEY index_name (name),salary INT DEFAULT 2000);--插入数据INSERT INTO test1(name,salary) values("1111",1000),("2222",2000),("3333",3000),("4444",4000);

3)unique索引

将已经创建的表test1里的varchar作为唯一(unique)索引

alter table test1 modify name varchar (20) UNIQUE ;

2、索引查询

通过索引来查询:主键本身就是一个索引

SELECT * from test1 where id=3;SELECT * from test1 where name="3333";

3、全文索引

例:给表fulltext_test的content和tag创建索引名为test_index的索引

1)

create fulltext index test_indexon fulltext_test(content,tag);

2)

alter table fulltext_testadd fulltext index test_index(content,tag);

4、联合索引

指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用

例:给表test1的name和age添加名为name_age的联合索引

alter table test1 add unique index name_age(name,age);

5、删除索引

1)直接用drop删除

例:删除test1里索引名为index_name的索引

DROP index index_name on test1;

2)修改结束分割符(默认是;分号,用delimiter可以修改)

例:将结束分割符号改为##

delimiter ##

关于索引更详细的介绍可以查看文章:mysql数据库的索引类型

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。