a) 创建表(
i. 有主键,主键自增长
ii. 有一个数值类型,数据不能为空
iii. 有一个字符串类型,内容随意
b) 写一个存储过程,插入10000条数据
c) 统计这张表的
i. 记录数
ii. 数据类型字段的平均值、最大值、最小值、汇总求和
D)将c查询出来的记录,写入另外一张或多张表。
create table users
( id integer primary key,
name varchar2(20),
age integer
);
CREATE SEQUENCE seq
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
NOCACHE;
CREATE or replace TRIGGER trig BEFORE
insert ON users FOR EACH ROW
begin
select seq.nextval into:New.id from dual;
end;
--insert into users(name,age) values('zhangsan',20);
--select * from users;
--delete from users where id<=6 and id>=1;
create table huizong
(
id integer primary key,
v_avg integer,
v_max integer,
v_min integer,
v_sum integer
);
CREATE SEQUENCE seq2
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
NOCACHE;
CREATE or replace TRIGGER trig2 BEFORE
insert ON huizong FOR EACH ROW
begin
select seq2.nextval into:New.id from dual;
end;
create or replace procedure pro_01 is
i integer;
num_of_rows integer; --保存数据条数
avg_age integer; --保存年龄平均值
max_age integer; --保存年龄最大值
min_age integer; --保存年龄最小值
sum_age integer; --保存年龄总和
begin
for i in 1 .. 1000 LOOP
insert into users (name, age) values ('zhangsan', mod(i, 50) + 10);
commit;
END LOOP;
EXECUTE IMMEDIATE 'TRUNCATE TABLE huizong';
select count(*), avg(age), max(age), min(age), sum(age)
into num_of_rows, avg_age, max_age, min_age, sum_age
from users;
insert into huizong
(v_avg, v_max, v_min, v_sum)
values
(num_of_rows, max_age, min_age, sum_age);
commit;
end;
begin
pro_01;
end;
select * from users;