MYSQL 索引 主鍵 外鍵
解釋:
索引可分爲普通索引和唯一索引,主要用於提高訪問速度,普通索引允許索引列內容重複,唯一索引不允許重複;
主鍵具有唯一索引的特性,用於唯一標識記錄,一個表只能一個主鍵;
外鍵具有普通索引的的特性,是關聯表的主鍵,用於多表級聯,維護多表數據一致性。
注意:外鍵必須是一個索引,數據庫引擎必須是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 ;