前言
学无止境,笔勤不辍。首先祝大家五四青年节快乐!今天主要分享的是MySQL完整性、触发器、安全性等实际操作中的一些语法。
一、安全性语法
前面,我们介绍了安全性的理论知识,现在就来看看实际操作中,可能遇到的问题(大部分是笔者遇到的问题)
1.已建表如何修改约束
A.修改为主键
ALTER TABLE TABLE_NAME
//第一种写法:
ADD CONSTRAINT primary_name PRIMARY KEY(column_name);
//第二种写法
ADD PRIMARY KEY(column_name);
B.修改为外键
ALTER TABLE TABLE_NAME
//第一种写法:
ADD CONSTRAINT foreign_name FOREIGN KEY(column_name) REFERENCES table2(column2_name);
//第二种写法
ADD FOREIGN KEY(column_name) REFERENCES table2(column2_name);
//若要增加级联、限制、置空、默认值操作则可以写成一下格式
//1.级联:
ADD FOREIGN KEY(column_name) REFERENCES table2(column2_name)
ON DELETE CASCADE; or ON UPDATE CASCADE;
//2.限制:
ADD FOREIGN KEY(column_name) REFERENCES table2(column2_name)
ON DELETE RESTRICT/NO ACTION; or ON UPDATE RESTRICT/NO ACTION;
//3.置空:
ADD FOREIGN KEY(column_name) REFERENCES table2(column2_name)
ON DELETE SET NULL; or ON UPDATE SET NULL;
//4.设置默认值:
ADD FOREIGN KEY(column_name) REFERENCES table2(column2_name)
ON DELETE SET DEFAULT; or ON UPDATE SET DEFAULT;
C.增加check操作
ALTER TABLE TABLE_NAME
ADD CHECK( column_name 条件);
tips:check语句中不能使用内置函数
D.设置默认值
ALTER TABLE table_name
ALTER COLUMN column_name SET DEFAULT '';
//有一点点不一样
tips: ALTER TABLE 语句,不需要()
二、触发器
1.在MySQL中的可用格式
不同的DBMS语法不同,笔者尝试了很长时间,终于找到了MySQL的语法(太离谱了)
CREATE TRIGGER<trigger_name>
< BEFORE | AFTER > <INSERT | UPDATE | DELETE >//MySQL没有instead of 这个关键词....如果不符合需要用
// SIGNAL SQLSTATE'45000‘中断
ON <表名>
FOR EACH Row
<执行语句>
笔者只能说,真的输麻了,MySQL的语法没想到这么坑…
emmm,还有 MySQL 中 inserted表 叫做 NEW deleted表 叫做 OLD
IF语句 后应该 跟上 THEN关键词,且要有 END IF;语句
可以使用 DELIMITER // 语句 // 的格式来写MySQL语句,中间的语句可以用; 有些语句必须要用; 但是 在控制台操作的时候就不方便操作,就可以用以上的形式
触发器有些复杂…笔者也需要再去了解…
总结
例如:以上就是今天要讲的内容,理论和实操着实是有很大的不同的,如果大家在实操中出现了问题欢迎评论/私信博主,一起讨论、解决问题… AND 下一篇blog 可能今天/明天发布,也有可能要过段时间啦,希望博主的帖子能对大家有帮助!