zoukankan      html  css  js  c++  java
  • 数据库实习

      1 create table usr
      2 (
      3     usr_id varchar2(10),
      4     nackname varchar2(15) not null,
      5     name varchar2(15) not null,
      6     gender varchar2(10),
      7     age number,
      8     sno varchar2(15) unique,
      9     school varchar2(20),
     10     college varchar2(20),
     11     major varchar2(20),
     12     class varchar2(20),
     13     phone varchar2(15) unique,
     14     email varchar2(20) unique,
     15     credit number,
     16     pwd varchar2(20) not null,
     17     logtime date,
     18     constraint pk_usr primary key (usr_id),
     19     constraint ck_age check (age > 0 and age <100),
     20     constraint ck_credit check (credit >= 0 and credit <= 100),
     21     constraint ck_gender check (gender in ('ÄÐ', 'Å®'))
     22 );
     23 
     24 create table goods
     25 (
     26     goods_id varchar2(10),
     27     name varchar2(15) not null,
     28     type varchar2(15),
     29     seller varchar2(10) not null,
     30     describe varchar2(100),
     31     buytime date,
     32     price number not null,
     33     clickrate number,
     34     state varchar2(10),
     35     constraint pk_goods primary key (goods_id),
     36     constraint fk_seller foreign key (seller) references usr(usr_id),
     37     constraint ck_price check (price >= 0),
     38     constraint ck_clickrate check (clickrate >= 0),
     39     constraint ck_state check (state in ('ÔÚÊÛ', 'ÊÛ³ö', 'δÉϼÜ'))
     40 );
     41 
     42 create table deal
     43 (
     44     buyer_id varchar2(10),
     45     goods_id varchar2(10),
     46     ordertime date,
     47     arrivaltime date,
     48     score number,
     49     constraint pk_buyer_goods primary key(buyer_id, goods_id),
     50     constraint fk_buyer foreign key (buyer_id) references usr(usr_id),
     51     constraint fk_goods foreign key (goods_id) references goods(goods_id),
     52     constraint ck_score check (score >= 0 and score <= 10),
     53     constraint ck_arrivaltime check (arrivaltime >= ordertime)
     54 );
     55 
     56 create table login
     57 (
     58     log_id varchar2(10),
     59     usr_id varchar2(10),
     60     logintime date,
     61     logouttime date,
     62     constraint pk_log primary key(log_id),
     63     constraint fk_usr foreign key (usr_id) references usr(usr_id),
     64     constraint ck_logout check (logouttime > logintime)
     65 );
     66 
     67 create table oos
     68 (
     69     oos_id varchar2(10),
     70     oosname varchar2(15) not null,
     71     oostype varchar2(15) not null,
     72     oosprice number,
     73     oosbuyer varchar2(10) not null,
     74     constraint pk_oos primary key (oos_id),
     75     constraint fk_oosbuyer foreign key (oosbuyer) references usr(usr_id),
     76     constraint ck_oosprice check (oosprice > 0)
     77 );
     78 
     79 create table favorites
     80 (
     81     fav_id varchar2(10),
     82     name varchar2(15) not null,
     83     createtime date,
     84     owner varchar2(10),
     85     constraint pk_fav primary key (fav_id),
     86     constraint fk_owner foreign key (owner) references usr(usr_id)
     87 );
     88 
     89 create table collection
     90 (
     91     coll_id varchar2(10),
     92     fav_id varchar2(10) not null,
     93     goods varchar2(10) not null,
     94     colltime date,
     95     constraint pk_coll primary key (coll_id),
     96     constraint fk_fav foreign key (fav_id) references favorites(fav_id),
     97     constraint fk_fav_goods foreign key (goods) references goods(goods_id)
     98 );
     99 
    100 create table returnlist
    101 (
    102     re_id varchar2(10),
    103     buyer varchar2(10),
    104     seller varchar2(10),
    105     reason varchar2(100),
    106     price number not null,
    107     constraint pk_re primary key (re_id) ,
    108     constraint fk_re_buyer foreign key(buyer) references usr(usr_id),
    109     constraint fk_re_seller foreign key (seller) references usr(usr_id),
    110     constraint ck_re_price check (price > 0) 
    111 );
    112 
    113 create table commlist
    114 (
    115     comm_id varchar2(10),
    116     buyer varchar2(10),
    117     seller varchar2(10),
    118     result varchar2(50),
    119     commtime date,
    120     constraint pk_comm primary key (comm_id),
    121     constraint fk_comm_buyer foreign key(buyer) references usr(usr_id),
    122     constraint fk_comm_seller foreign key (seller) references usr(usr_id)
    123 );
    124 
    125 create table valuelist
    126 (
    127     val_id varchar2(10),
    128     goods_id varchar2(10),
    129     price number not null,
    130     constraint pk_val primary key (val_id),
    131     constraint fk_val_goods foreign key (goods_id) references goods(goods_id),
    132     constraint ck_val_price check (price > 0)
    133 );
    134 
    135 create table pwdcglist
    136 (
    137     pwd_id varchar2(10),
    138     usr_id varchar2(10),
    139     oldpwd varchar2(20),
    140     newpwd varchar2(20),
    141     cgtime date,
    142     constraint pk_pwd primary key (pwd_id),
    143     constraint fk_pwd_usr foreign key (usr_id) references usr(usr_id),
    144     constraint ck_newpwd check (newpwd != oldpwd)
    145 );
    146 
    147 create table sugglist
    148 (
    149     sugg_id varchar2(10),
    150     usr_id varchar2(10),
    151     sugg_mess varchar2(100),
    152     dispose varchar2(50),
    153     constraint pk_sugg primary key (sugg_id),
    154     constraint fk_sugg_usr foreign key (usr_id) references usr(usr_id)
    155 );
    156 
    157 create table discountlist
    158 (
    159     dis_id varchar2(10),
    160     goods varchar2(10),
    161     disprice number,
    162     bgtime date,
    163     edtime date,
    164     constraint pk_dis primary key (dis_id),
    165     constraint pk_disgoods foreign key (goods) references goods(goods_id),
    166     constraint ck_disprice check (disprice > 0),
    167     constraint ck_edtime check (edtime >= bgtime)
    168 );
    169 
    170 create table unshelve
    171 (
    172     unshe_id varchar2(10),
    173     goods varchar2(10),
    174     unshetime date,
    175     constraint pk_unshe primary key (unshe_id),
    176     constraint fk_unshe_goods foreign key (goods) references goods(goods_id)
    177 );
    178 
    179 create table browselist
    180 (
    181     usr varchar2(10),
    182     goods varchar2(10),
    183     browsetime date not null,
    184     constraint pk_browse primary key (usr, goods),
    185     constraint fk_browse_usr foreign key (usr) references usr(usr_id),
    186     constraint fk_browse_goods foreign key (goods) references goods(goods_id)
    187 );
    188 
    189 create table commentlist
    190 (
    191     comment_id    varchar2(10),
    192     buyer varchar2(10),
    193     goods varchar2(10),
    194     message varchar2(100),
    195     commtime date,
    196     constraint pk_comment primary key (comment_id),
    197     constraint fk_comment_buyer foreign key (buyer) references usr(usr_id),
    198     constraint fk_comment_goods    foreign key (goods) references goods(goods_id)
    199 );
    200 
    201 create view deal_view(buyer_nackname, seller_nackname, goods_name, goods_type, goods_describe, deal_price, deal_time, score)
    202 as
    203 select A.nackname, B.nackname, goods.name, goods.type, goods.describe, goods.price, deal.ordertime, deal.score
    204 from usr A, usr B, goods, deal
    205 where A.usr_id = deal.buyer_id and
    206       goods.goods_id = deal.goods_id and
    207       B.usr_id = goods.seller;
    208 
    209 create view goods_onsale_view(goods_name, goods_type, goods_describe, price, clickrate, seller_nackname, seller_credit, seller_buytime)
    210 as
    211 select goods.name, goods.type, goods.describe, goods.price, goods.clickrate, usr.nackname, usr.credit, goods.buytime
    212 from usr, goods
    213 where goods.seller = usr.usr_id and
    214       goods.state = 'ÔÚÊÛ';
    215 
    216 create view discount_view(name, type, describe, discount_price, startTime, endTime,  clickrate, seller_nackname, seller_credit, seller_buytime)
    217 as
    218 select goods.name, goods.type, goods.describe, discountlist.disprice, discountlist.bgtime, discountlist.edtime, goods.clickrate, usr.nackname, usr.credit, goods.buytime
    219 from usr, goods, discountlist
    220 where discountlist.goods = goods.goods_id and
    221       goods.seller = usr.usr_id;
    222 
    223 create view collection_view(favorites_name, goods_name, goods_type, goods_describe, price, collect_time)      
    224 as
    225 select favorites.name, goods.name, goods.type, goods.describe, goods.price, collection.colltime
    226 from favorites, collection, goods
    227 where favorites.fav_id = collection.fav_id and
    228       collection.goods = goods.goods_id;
    229 
    230 create or replace trigger insert_deal
    231     before insert on deal 
    232     for each row
    233 begin 
    234     update goods
    235     set goods.state = 'ÊÛ³ö'
    236     where goods.goods_id = :new.goods_id;    
    237 end;
    238 
    239 create or replace trigger insert_unshelve
    240     before insert on unshelve
    241     for each row
    242 begin
    243     update goods
    244     set goods.state = 'δÉϼÜ'
    245     where goods.goods_id = :new.goods;
    246 end;
    247 
    248 create or replace trigger insert_discountlist
    249     before insert on discountlist
    250     for each row
    251 begin
    252     update goods
    253     set goods.price = :new.disprice
    254     where goods.goods_id = :new.goods;
    255 end;
    256 
    257 create or replace trigger insert_pwdcglist
    258     before insert on pwdcglist
    259     for each row
    260 begin
    261     update usr
    262     set usr.pwd = :new.newpwd
    263     where usr.usr_id = :new.usr_id;
    264 end;
    265 
    266 create or replace procedure query_onsale_byName(
    267     v_goods_name in goods_onsale_view.goods_name%type,
    268     out_return out sys_refcursor
    269 )as
    270 begin 
    271     open out_return for 'select *
    272     from goods_onsale_view
    273     where v_goods_name = goods_onsale_view.goods_name';
    274 end;    
    275 
    276 create or replace procedure query_onsale_byType(
    277     v_goods_type in goods_onsale_view.goods_type%type,
    278     out_return out sys_refcursor
    279 )as
    280 begin 
    281     open out_return for 'select *
    282     from goods_onsale_view
    283     where v_goods_type = goods_onsale_view.goods_type';
    284 end;
    285 
    286 --1)ÐÂÓû§×¢²áÒµÎñ
    287 create or replace procedure new_usr(
    288     v_usr_id in usr.usr_id%type,
    289     v_nackname in usr.nackname%type,
    290     v_name in usr.name%type,
    291     v_gender in usr.gender%type,
    292     v_age in usr.age%type,
    293     v_sno in usr.sno%type,
    294     v_school in usr.school%type,
    295     v_college in usr.college%type,
    296     v_major in usr.major%type,
    297     v_class in usr.class%type,
    298     v_phone in usr.phone%type,
    299     v_email in usr.email%type,
    300     v_credit in usr.credit%type,
    301     v_pwd in usr.pwd%type,
    302     v_logtime in usr.logtime%type
    303 )as
    304 begin 
    305     insert into usr
    306     values(v_usr_id, v_nackname, v_name, v_gender, v_age, v_sno, v_school, v_college, v_major, v_class, v_phone, v_email, v_credit, v_pwd, v_logtime);
    307     commit;
    308 end;    
    309 
    310 create or replace procedure new_goods(
    311     v_goods_id in goods.goods_id%type,
    312     v_name in goods.name%type,
    313     v_type in goods.type%type,
    314     v_seller in goods.seller%type,
    315     v_describe in goods.describe%type,
    316     v_buytime in goods.buytime%type,
    317     v_price in goods.price%type,
    318     v_clickrate in goods.clickrate%type,
    319     v_state in goods.state%type
    320 )as
    321 begin 
    322     insert into goods
    323     values(v_goods_id, v_name, v_type, v_seller, v_describe, v_buytime, v_price, v_clickrate, v_state);
    324     commit;
    325 end;
    326 
    327 create or replace procedure new_deal(
    328     v_buyer_id in deal.buyer_id%type,
    329     v_goods_id in deal.goods_id%type,
    330     v_ordertime in deal.ordertime%type,
    331     v_arrivaltime in deal.arrivaltime%type,
    332     v_score in deal.score%type
    333 )as
    334 begin 
    335     insert into deal
    336     values(v_buyer_id, v_goods_id, v_ordertime, v_arrivaltime, v_score);
    337     commit;
    338 end;
    339 
    340 create or replace procedure new_login(
    341     v_log_id in login.log_id%type,
    342     v_usr_id in login.usr_id%type,
    343     v_logintime in login.logintime%type,
    344     v_logouttime in login.logouttime%type
    345 )as
    346 begin 
    347     insert into login
    348     values(v_log_id, v_usr_id, v_logintime, v_logouttime);
    349     commit;
    350 end;
    351 
    352 -- declare 
    353 --  a login.log_id%type:='1';
    354 --     b login.usr_id%type:='2';
    355 --     c login.logintime%type:=to_date('2017/01/12', 'yyyy/mm/dd');
    356 --     d login.logouttime%type:=to_date('2017/01/13', 'yyyy/mm/dd');
    357 -- begin 
    358 --   new_login(a, b, c, d);
    359 --   dbms_output.put_line(a||b||c||d);
    360 -- end;
    361 
    362 create or replace procedure new_oos(
    363     v_oos_id in oos.oos_id%type,
    364     v_oosname in oos.oosname%type,
    365     v_oostype in oos.oostype%type,
    366     v_oosprice in oos.oosprice%type,
    367     v_oosbuyer in oos.oosbuyer%type
    368 )as
    369 begin 
    370     insert into oos(oos_id, oosname, oostype, oosprice, oosbuyer)
    371     values(v_oos_id, v_oosname, v_oostype, v_oosprice, v_oosbuyer);
    372     commit;
    373 end;
    374 
    375 create or replace procedure new_favorites(
    376     v_fav_id in favorites.fav_id%type,
    377     v_name in favorites.name%type,
    378     v_createtime in favorites.createtime%type,
    379     v_owner in favorites.owner%type
    380 )as
    381 begin 
    382     insert into favorites
    383     values(v_fav_id, v_name, v_createtime, v_owner);
    384     commit;
    385 end;
    386 
    387 -- declare 
    388 --  a favorites.fav_id%type:='1';
    389 --     b favorites.name%type:='СÃ×ÊÖ»·';
    390 --     c favorites.createtime%type:=to_date('2017/01/12', 'yyyy/mm/dd');
    391 --     d favorites.owner%type:='3';
    392 -- begin 
    393 --   new_favorites(a, b, c, d);
    394 --   dbms_output.put_line(a||b||c||d);
    395 -- end;
    396 
    397 create or replace procedure new_collection(
    398     v_coll_id in collection.coll_id%type,
    399     v_fav_id in collection.fav_id%type,
    400     v_goods in collection.goods%type,
    401     v_colltime in collection.colltime%type
    402 )as
    403 begin 
    404     insert into collection
    405     values(v_coll_id, v_fav_id, v_goods, v_colltime);
    406     commit;
    407 end;
    408 
    409 create or replace procedure new_returnlist(
    410     v_re_id in returnlist.re_id%type,
    411     v_buyer in returnlist.buyer%type,
    412     v_seller in returnlist.seller%type,
    413     v_reason in returnlist.reason%type,
    414     v_price in returnlist.price%type
    415 )as
    416 begin 
    417     insert into returnlist
    418     values(v_re_id, v_buyer, v_seller, v_reason, v_price);
    419     commit;
    420 end;
    421 
    422 create or replace procedure new_commlist(
    423     v_comm_id in commlist.comm_id%type,
    424     v_buyer in commlist.buyer%type,
    425     v_seller in commlist.seller%type,
    426     v_result in commlist.result%type,
    427     v_commtime in commlist.commtime%type
    428 )as
    429 begin 
    430     insert into commlist
    431     values(v_comm_id, v_buyer, v_seller, v_result, v_commtime);
    432     commit;
    433 end;
    434 
    435 create or replace procedure new_valuelist(
    436     v_val_id in valuelist.val_id%type,
    437     v_goods_id in valuelist.goods_id%type,
    438     v_price in valuelist.price%type
    439 )as
    440 begin 
    441     insert into valuelist
    442     values(v_val_id, v_goods_id, v_price);
    443     commit;
    444 end;
    445 
    446 create or replace procedure new_pwdcglist(
    447     v_pwd_id in pwdcglist.pwd_id%type,
    448     v_usr_id in pwdcglist.usr_id%type,
    449     v_oldpwd in pwdcglist.oldpwd%type,
    450     v_newpwd in pwdcglist.newpwd%type,
    451     v_cgtime in pwdcglist.cgtime%type
    452 )as
    453 begin 
    454     insert into pwdcglist
    455     values(v_pwd_id, v_usr_id, v_oldpwd, v_newpwd, v_cgtime);
    456     commit;
    457 end;
    458 
    459 create or replace procedure new_sugglist(
    460     v_sugg_id in sugglist.sugg_id%type,
    461     v_usr_id in sugglist.usr_id%type,
    462     v_sugg_mess in sugglist.sugg_mess%type,
    463     v_dispose in sugglist.dispose%type
    464 )as
    465 begin 
    466     insert into sugglist
    467     values(v_sugg_id, v_usr_id, v_sugg_mess, v_dispose);
    468     commit;
    469 end;
    470 
    471 create or replace procedure new_discountlist(
    472     v_dis_id in discountlist.dis_id%type,
    473     v_goods in discountlist.goods%type,
    474     v_disprice in discountlist.disprice%type,
    475     v_bgtime in discountlist.bgtime%type,
    476     v_edtime in discountlist.edtime%type
    477 )as
    478 begin 
    479     insert into discountlist
    480     values(v_dis_id, v_goods, v_disprice, v_bgtime, v_edtime);
    481     commit;
    482 end;
    483 
    484 create or replace procedure new_unshelve(
    485     v_unshe_id in unshelve.unshe_id%type,
    486     v_goods in unshelve.goods%type,
    487     v_unshetime in unshelve.unshetime%type
    488 )as
    489 begin 
    490     insert into unshelve
    491     values(v_unshe_id, v_goods, v_unshetime);
    492     commit;
    493 end;
    494 
    495 create or replace procedure new_browselist(
    496     v_usr in browselist.usr%type,
    497     v_goods in browselist.goods%type,
    498     v_browsetime in browselist.browsetime%type
    499 )as
    500 begin 
    501     insert into browselist
    502     values(v_usr, v_goods, v_browsetime);
    503     commit;
    504 end;
    505 
    506 create or replace procedure new_commentlist(
    507     v_comment_id in commentlist.comment_id%type,
    508     v_buyer in commentlist.buyer%type,
    509     v_goods in commentlist.goods%type,
    510     v_message in commentlist.message%type,
    511     v_commtime in commentlist.commtime%type
    512 )as
    513 begin 
    514     insert into commentlist
    515     values(v_comment_id, v_buyer, v_goods, v_message, v_commtime);
    516     commit;
    517 end;
    518 
    519 --Óû§¸ÄÃÜÂëÒµÎñ
    520 create or replace procedure change_pwd(
    521   v_usr in usr.nackname%type,
    522   v_oldpwd in usr.pwd%type,
    523   v_newpwd in usr.pwd%type
    524 )is v_pwd usr.pwd%type;
    525   v_cnt number;
    526   v_usr_id usr.usr_id%type;
    527 begin
    528   select usr_id, pwd into v_usr_id, v_pwd
    529   from usr
    530   where nackname = v_usr;
    531   if(v_pwd = v_oldpwd) then
    532     update usr
    533     set pwd = v_newpwd
    534     where nackname = v_usr;
    535 
    536     select count(pwd_id) into v_cnt
    537     from pwdcglist;
    538 
    539     new_pwdcglist(to_char(v_cnt+1, '00000'),  v_usr_id, v_oldpwd, v_newpwd, sysdate);
    540   end if;
    541 end;
    542 
    543 declare 
    544     a usr.nackname%type:='A';
    545     b usr.pwd%type:='000000';
    546     c usr.pwd%type:='123456';
    547 begin 
    548   change_pwd(a, b, c);
    549   dbms_output.put_line(a||' '||b||' '||c);
    550 end;
    551 
    552 --Âò¼Òä¯ÀÀ²éѯҵÎñ
    553 create or replace procedure browse_goods(
    554       v_usr in usr.nackname%type,
    555       v_goods in goods.name%type
    556 )is v_cnt number;
    557       v_usr_id usr.usr_id%type;
    558       v_type goods.type%type;
    559       v_seller usr.name%type;
    560       v_describe goods.describe%type;
    561       v_buytime goods.buytime%type;
    562       v_price goods.price%type;
    563       v_clickrate goods.clickrate%type;
    564       v_goods_id goods.goods_id%type;
    565 cursor c is
    566       select goods.goods_id, goods.type, usr.nackname, goods.describe, goods.price, goods.buytime, goods.clickrate
    567       from goods, usr
    568       where goods.name like '%'||v_goods||'%' and
    569             goods.state = 'ÔÚÊÛ' and
    570             goods.seller = usr.usr_id;
    571 begin 
    572       select usr_id into v_usr_id 
    573       from usr
    574       where nackname = v_usr;
    575       open c;
    576       fetch c into v_goods_id, v_type, v_seller, v_describe, v_price, v_buytime, v_clickrate;
    577       if(c%notfound)then
    578            select count(oos_id) into v_cnt
    579         from oos;
    580         insert into oos values(to_char(v_cnt+1, '00000'), v_goods, 'δ֪', null, v_usr_id);
    581         dbms_output.put_line('out of store');
    582         --commit;
    583       else  
    584           dbms_output.put_line(v_goods||' '||v_type||' '||v_seller||' '||v_describe||' '||v_price||' '||v_buytime||' '||v_clickrate);
    585           new_browselist(v_usr_id, v_goods_id, sysdate);
    586           loop 
    587             fetch c into v_goods_id, v_type, v_seller, v_describe, v_price, v_buytime, v_clickrate;
    588             exit when c%notfound;
    589             dbms_output.put_line(v_goods||' '||v_type||' '||v_seller||' '||v_describe||' '||v_price||' '||v_buytime||' '||v_clickrate);
    590             new_browselist(v_usr_id, v_goods_id, sysdate);
    591           end loop;
    592     end if;
    593 end;    
    594 
    595 
    596 declare 
    597       a usr.nackname%type:='A';
    598     b goods.name%type:='Сѧ';
    599 begin 
    600       browse_goods(a, b);
    601   --dbms_output.put_line(a||' '||b);
    602 end;
  • 相关阅读:
    ServU和win2003防火墙的设置
    面试题02.05 链表求和
    【每日一题】LeetCode1. 两数之和
    【每日一题】Leetcode50. Pow(x,n)
    ASP连接查询access和sqlserver的代码
    各种播放器(视频点播)代码大全 
    电脑操作最忌讳的小动作
    网络小知识
    C#、Java比较
    10年互联网十大失败案例
  • 原文地址:https://www.cnblogs.com/Penn000/p/6306428.html
Copyright © 2011-2022 走看看