主键自增长

网友投稿 264 2022-09-22

主键自增长

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 BEFOREinsert ON users FOR EACH ROWbeginselect 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 BEFOREinsert ON huizong FOR EACH ROWbeginselect 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;

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:顺序队列的C语言实现
下一篇:北控喜提三连胜,马布里肯定第二阵容表现!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~