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 ;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章