触发器
1.什么是触发器
在数据库中,响应一个特殊的动作,insert,update,delete ,而自动执行的程序代码
(数据库中的程序,存储过程)
2.创建触发器
语法:
create trigger 触发器的名字
{befor|after} \\ 触发的时间
{insert|update|delete} // 触发的动作
on 表名 for each row
要触发的sql语句(存储过程)
-
---------------------------------------
使用别名 old / new 能够引用与触发器程序的表中的列
old.列名 在更新或删除它之前,引用已经有的行中的列
new.列名 在更新它之后引用将要插入的新行的列或已有的行的列
-----------------------------------------
订单的例子
// 要有外键
AFTER
INSERT
on orderitem for each ROW
BEGIN
declare newid int default 0;
declare newprice float(10,2) default 0.00;
DECLARE newcounts int default 0;
declare totalprice float(10,2) default 0;
select oid,price,counts into newid,newprice,newcounts from orderitem where id=new.id;
set totalprice = newprice*newcounts;
update orders set totalprices = totalprice where oid = new.oid;
end $$
delimiter ;
insert into orders(name) values('订单明细01');
insert into orderitem(name,price,counts,oid) values('娃娃',1000,20,1);
insert into orders(name) values('订单明细02');
insert into orderitem(name,price,counts,oid) values('铅笔',50,200,2);
------------------------------
备份和还原
备份
1.备份数据库和库中部分数据表
mysqldump 选项 数据库名 [表名]
2.备份指定一个活多个数据库
mysqldump 选项 --database 数据库1,数据库2
3.备份所有数据库
mysqldump 选项 --all-database
-
-----------------------------------------
常用选项
-u 用户名
-p 密码
-h 连接服务器ip
-P 端口号 默认是3306
------------------------------------
数据还原
< 命令
mysql -u 用户名 -p -D数据库 < sql文件名
数据库必须是存在才可以成功
-
----------------------------------
先use一个数据库
source sql文件名
------------------------------------
数据库的设计
设计数据库的规范化的三大范式
三个范式,递进的规范,范式预告,数据库的冗余越小
第一个规范 (1NF first Normal Fromate)
第二个规范 (2NF second Normal Fromate)
第三个规范 (3NF third Normal Fromate)
-----------------------------
第一范式 (1NF) 每一列都是不可再分的最小的单元 (也叫做最小原子单元)
id address
1 中国北京
2 美国纽约
3 日本东京
---------------------------
经过第一范式转换为
——————————————
id Country city
1 中国 北京
2 美国 纽约
3 日本 东京
------------------------------
第二范式;如果一个关系满足1NF,并且除了主键之外的其他列,都依赖于该主键,则满足第二范式(2NF) 第二范式要求每个表只能描述一件事情。也就是说一个表中只能有一个主键
order
字段 值
订单编号 001
产品编号 A001
订购日期 2012-3-4
价格 $29.0
---------------------------
order
字段 值
订单编号 A001
订购日期 2014-3-4
Produce
字段 值
产品编号 A001
价格 $29.0
-----------------------------------
第三范式 如果一个关系满足2NF,并且非主键的列都不传递依赖于主键的列,则满足第三范式(3NF)
第三范式要求一个表中不能包含在其他表中已经存在的非主键的列
order
字段 值
订单编号 A001
订购日期 2014-3-4
顾客编号 AB001
顾客姓名 Tony
-------------------------------
order
字段 值
订单编号 A001
订购日期 2014-3-4
顾客编号 AB001
mysql下载add produce
User
字段 值
顾客编号 AB001
顾客姓名 Tony
-------------------------------------
E_R 图
实体关系图 ,用来产生数据库中保存信息的表的结构的
绘画工具
微软的viso
sybase PowerDesigner
---------------------------------
订单
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论