MYSQL 索引 主键 外键

MYSQL 索引 主键 外键

解释:

  1. 索引可分为普通索引和唯一索引,主要用于提高访问速度,普通索引允许索引列内容重复,唯一索引不允许重复;

  2. 主键具有唯一索引的特性,用于唯一标识记录,一个表只能一个主键;

  3. 外键具有普通索引的的特性,是关联表的主键,用于多表级联,维护多表数据一致性。

注意:外键必须是一个索引,数据库引擎必须是InnoDB;

索引:

创建:①直接创建:
                例如:
                    create [unique]index index_name
                    on table_name(column_name,... [desc/asc]);
      ②修改表结构添加:
                例如:
                    alter table table_name
                    add [unique]index index_name (column_name,...[desc/asc]);
删除:①直接删除:
                例如:
                    drop index index_name on table_name;
      ②修改表结构删除:
                例如:
                    alter table table_name
                    drop index index_name;

主键:

创建:① 创建表的时候创建:
                    例如:
                        create table table_name(
                        id int not null auto_increment,
                        name varchar(20)not null,
                        primary key(id)
                        );
                    或:
                        create table table_name(
                        id int not null auto_increment primary key,
                        name varchar(20)not null,
                        );
      ② 修改表结构添加:
                    例如:
                        alter table table_name 
                        add primary key (id);
删除:① 修改表结构删除:
                    例如:
                        alter table table_name 
                        drop primary key;

外键:

创建:①创建表的时候创建:
                        例如:
                            create table table_name(
                            id int not null auto_increment,
                            foreign_id varchar(20)not null,
                            primary key(id),
                            constraint constraint_name foreign key (column_name)
                            references relation_table_name(relation_table_column_name)
                            on [delete|update][no action|cascade|set null|restrict|set default]
                            );
                        或:
                            create table table_name(
                            id int not null auto_increment,
                            foreign_id varchar(20)not null,
                            primary key(id),
                            foreign key (column_name)
                            references relation_table_name(relation_table_column_name)
                            on [delete|update][no action|cascade|set null|restrict|set default]
                            );
      ②修改表结构添加:
                    例如:
                        alter table table_name
                        add foreign key (column_name)
                        references relation_table_name(relation_table_column_name)
                        on[delete|update][no action|cascade|set null|restrict|set default];
                    或:
                        alter table table_name
                        add constraint constraint_name
                        foreign key (column_name)
                        references relation_table_name(relation_table_column_name);

删除:①修改表结构删除:
                    例如:
                        alter table table_name
                        drop foreign key constraint_name;

delimiter :分隔符

触发器trigger:

说明:①tri是触发器名字②ball是表名③score是ball表中的字段④”-“ 是使用的limiter 定义的分隔符,为了begin ···end 语句的使用 ⑤此触发器的目的是当更新ball表中score列数据,如果新值<旧值,拒绝更新;

delimiter -

create trigger tri after update on ball
for each row
begin
if old.score> new.score
then
update ball set score=old.score where id= old.id;
end if;
end-

delimiter ;

发布了18 篇原创文章 · 获赞 6 · 访问量 2441

猜你喜欢

转载自blog.csdn.net/INK_FUNC/article/details/72050671