九眼智能信息过滤 大数据助力产品升级解析
679
2022-11-11
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 aaa FOREIGN 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_index on fulltext_test(content,tag);
2)
alter table fulltext_test add 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数据库的索引类型
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~