现在的位置: 首页 > 综合 > 正文

数据库基本操作(创建表和添加触发器)

2018年04月15日 ⁄ 综合 ⁄ 共 1774字 ⁄ 字号 评论关闭

简述:

复习一下数据库基本操作创建表和触发器

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`;

抱歉!评论已关闭.