未分类

不常用的sql

不常用的是最难记住的。

Alter

添加列

1
alter table table_name add column_name data_type unique/default/not-null comment 'comments';

删除列

1
alter table table_name drop column_name;

更新列

1
alter table table_name change old_column_name new_column_name data_type unique/default/not-null comment 'comments';

添加约束

1
alter table table_name add constraint fk_name foreign key(foreign_column_name) references foreign_table_name(references_column_name) on delete/update xxx;

mysql 外键约束 on delete和on update

on delete rule:

  • restrict:约束
    如果存在从数据,不允许删除主数据。
  • no action
    如果存在从数据,不允许删除主数据。
  • cascade:级联
    删除主数据,顺便也删掉从数据。
  • set null
    删除主数据,从数据外键的值设为null。

on update rule:

  • restrict:约束
    修改主数据中被关联的field,如果有该主数据有从数据,不允许修改。
  • no action
    修改主数据中被关联的field,如果有该主数据有从数据,不允许修改。
  • cascade
    修改主数据中被关联的field,如果有该主数据有从数据,顺便一起修改从数据的外键值。
  • set null
    修改主数据中被关联的field,如果有该主数据有从数据,从数据的外键值设为null。

删除约束

删除外键示例

1
alter table table_name drop foreign key fk_name;

Trigger

添加trigger

1
2
3
4
5
6
7
8
9
10
11
delimiter $$

create trigger trigger_name
before update on table_name
for each row
begin
SET new.updated = NOW();

end;
$$

delimiter ;

删除trigger

1
drop trigger trigger_name;

(未完待续)