简述:
复习一下数据库基本操作创建表和触发器
1. 创建一张表
注意: 一个表只能有一个PRIMARY KEY
例如下面我加了两个primary key
create table table1( id1 int primary key, id2 int primary key, name varchar(8) );
就会出现,下面错误,因为只能有一个主键primary key
如果想创建联合主键,就需要使用关键字constraint
create table table1( id1 int, id2 int, name varchar(8), constraint table_id1_id2_primarykey primary key(id1, id2) );
之后调用
describe table1;
查看表信息,
上面是建表的样例,下面的person是一个实用的表
新建了一个人的表
create table person( id int NOT NULL AUTO_INCREMENT primary key, name varchar(8) not null, sex bit, age int check(age > 0 and age < 200), addr varchar(100) default '' not null );
之后插入了一条数据,
insert into person(name, sex, age, addr) values('Jeremy', 1, 20, 'SH');
输出:
2. 建一个触发器TRIGGER
实现每一次在上面Person表中添加一条记录,之后都可修改countPerson表中人员的总数+1
新建countPerson表以及插入初始值totalNum = 0
drop table if exists countPerson; create table countPerson( totalnum int default 0 ); insert into countPerson(totalnum) values(0);
创建触发器TIRGGER
DROP TRIGGER IF EXISTS insertTrigger; delimiter // CREATE TRIGGER insertTrigger AFTER INSERT ON person FOR EACH ROW BEGIN update countPerson set totalNum = totalNum + 1; END;//
测试(从头开始走一遍流程):
1)创建Person表:
drop table person; create table person( id int NOT NULL AUTO_INCREMENT primary key, name varchar(8) not null, sex bit, age int check(age > 0 and age < 200), addr varchar(100) default '' not null ); select * from person;
此时Person表为空
2)创建countPerson表
drop table if exists countPerson; create table countPerson( totalnum int default 0 ); insert into countPerson(totalnum) values(0); select * from countPerson;
此时初始totalNum = 0
3) 创建触发器
DROP TRIGGER IF EXISTS insertTrigger; delimiter // CREATE TRIGGER insertTrigger AFTER INSERT ON person FOR EACH ROW BEGIN update countPerson set totalNum = totalNum + 1; END;//
4)在Person表中添加记录insert
insert into person(name, sex, age, addr) values('Jeremy', 1, 20, 'SH'); insert into person(name, sex, age, addr) values('Hellon', 1, 22, 'SH'); select * from person;
此时Person表中记录如下,
5)看一下触发器有没有起作用
select * from countPerson;
发现有作用了。
附:
此外使用下面语句可以看到数据库的触发器信息
SELECT * FROM information_schema.`TRIGGERS`;