Author Topic: DBS  (Read 49764 times)

xxx3

  • Hero Member
  • *****
  • Posts: 1010
    • View Profile
Re: DBS
« Reply #50 on: 27.02.2012, 18:17:04 »
na linux, konkretne ubuntu niekto skusal davat tu databazu s sql plus ?

zaky

  • Jr. Member
  • **
  • Posts: 95
    • View Profile
Re: DBS
« Reply #51 on: 27.02.2012, 18:20:28 »
vidim ze veteran sa rozbehol tak teda prosim ta ako na to :
• hodnoty v stĺpci evc sú autoincrement
najprv som si vytvoril sekvenciu s_evc start with 1 increment by 1
a teraz si vytvaram tabulku a pre evc mam podla zadania
evc number(6) primary key xxx
ale ma to byt autoincrement, co este mam dopisat namiesto xxx
?

92% teenagerů neposlouchá svojí maminku. Patříš-li mezi zbývajících 8%, dej si tohle do podpisu

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: DBS
« Reply #52 on: 27.02.2012, 18:45:46 »
hodnoty v stĺpci evc sú autoincrement
najprv som si vytvoril sekvenciu s_evc start with 1 increment by 1
a teraz si vytvaram tabulku a pre evc mam podla zadania
evc number(6) primary key xxx
ale ma to byt autoincrement, co este mam dopisat namiesto xxx
Nič také ako auto increment tam nemôžeš napísať. Oracle by ti vyhodilo hlášku ORA-00907: missing right parenthesis.

Na auto increment máš práve tú sekvenciu. Do definície tabuľky netreba vpisovať nič. Keď budeš vkladať riadky do tejto tabuľky, potom zavoláš sekvenciu cez s_evc.nextVal. Do evc ti to vloží jednotku a aktuálnu hodnotu sekvencie (s_evc.currVal) inkrementne o 1 (na dvojku). Pri vkladaní ďalšieho riadku do tabuľky bude do evc vložená dvojka a hodnota sekvencie sa inkrementne na trojku.

AUTO_INCREMENT sa do definície tabuľky píše v MySQL. Oracle na to má sekvencie... V MySQL by definícia tabuľky zamestnanec vyzerala asi takto:
CREATE TABLE zamestnanec (
     evc int(6) NOT NULL AUTO_INCREMENT,
     ..................
     PRIMARY KEY (evc)
) ENGINE=MyISAM;
« Last Edit: 27.02.2012, 18:52:20 by veteran »

xxx3

  • Hero Member
  • *****
  • Posts: 1010
    • View Profile
Re: DBS
« Reply #53 on: 27.02.2012, 20:57:15 »
s tym editf suborom, do ktoreho sa zapisuje to co pisem do sql plus nemate taky problem, ze sa vam tam zapisuje vsetko len ak zadate tie prikazy
Code: [Select]
set editf c:\temp\ab123cd.txt
set long 100000
spool c:\temp\zaznam.txt

a potom ked zatvorite sql plus a znovu otvorite tak vam to tam uz nezapisuje ? Lebo mne to takto robi .. ze uz po druhom otvoreni mi to tam nezapisuje, musim zas zadat tie prikazy a pritom mi zmaze predchadzajuci obsah toho suboru

Domino_666

  • Jr. Member
  • **
  • Posts: 88
    • View Profile
    • Dudo Aliens Racing Team
Re: DBS
« Reply #54 on: 28.02.2012, 01:46:11 »
s tym editf suborom, do ktoreho sa zapisuje to co pisem do sql plus nemate taky problem, ze sa vam tam zapisuje vsetko len ak zadate tie prikazy
Code: [Select]
set editf c:\temp\ab123cd.txt
set long 100000
spool c:\temp\zaznam.txt

a potom ked zatvorite sql plus a znovu otvorite tak vam to tam uz nezapisuje ? Lebo mne to takto robi .. ze uz po druhom otvoreni mi to tam nezapisuje, musim zas zadat tie prikazy a pritom mi zmaze predchadzajuci obsah toho suboru

po každom spustení SQL+ si tie 3 riadky napíš furt, nepamätá si to...
ďalej, do buffra ide výstup až potom, čo klienta zavrieš, teda ak pracuješ ale SQL+ stále beží, ten súbor sa nezmení, až keď ho zavrieš

a veľmi odporúčam na koniec toho posledného príkazu dopísať app (zrejme od slova append - pridať) - miesto prepísania celého buffru Ti to len pridá na koniec nový obsah, mne je takto lepšie, neviem ako ostatným. Takže posledný riadok bude vyzerať:
spool c:\temp\zaznam.txt app

Domino_666

  • Jr. Member
  • **
  • Posts: 88
    • View Profile
    • Dudo Aliens Racing Team
Re: DBS
« Reply #55 on: 28.02.2012, 13:59:59 »
dá sa nejako aspoň čiastočne zrýchliť INSERT viacerých riadkov? Syntax z MySQL mi nefunguje a pre tento krát som to vložil všetko ako ťulpas manuálne, ale ak existuje elegentnejšie riešenie v oracli, rád sa to naučím...

Ako postupovať v poslednej úlohe? Opäť to nainsertovať manuálne, alebo je na to nejaký iný (aspoň čiastočne automatický) postup, keďže sú tam už nejaké vzťahy (FK) ?

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: DBS
« Reply #56 on: 28.02.2012, 16:33:48 »
dá sa nejako aspoň čiastočne zrýchliť INSERT viacerých riadkov? Syntax z MySQL mi nefunguje a pre tento krát som to vložil všetko ako ťulpas manuálne, ale ak existuje elegentnejšie riešenie v oracli, rád sa to naučím...
Syntax z MySQL je super, v Oracli je niečo takéto:

insert all
into tablename values (......)
into tablename values (......)
.......
select * from dual;


Takže veľa znakov neušetríš :D

Problém ale nastáva, keď musíš použiť sekvenciu. Predošlý príklad sa v takom prípade použiť nedá. Treba urobiť čosi také:

insert into tablename(id,col2,col3)
      select sequencename, inner_view.*
      from (select 'value_for_col2','value_for_col3' someval from dual union all
            select 'value_for_col2','value_for_col3' someval from dual union all
            .......................................
            select 'value_for_col2','value_for_col3' someval from dual)
inner_view;


Na môj vkus trošku komplikované...
« Last Edit: 28.02.2012, 16:45:24 by veteran »

esperian

  • Hero Member
  • *****
  • Posts: 873
    • View Profile
Re: DBS
« Reply #57 on: 28.02.2012, 18:12:33 »
niekto kto sa rozumie do tej autoopravovne ?? potreboval by som skontrolovat to co som spravil  :)

edit// mas to tam , dik  ;)
« Last Edit: 28.02.2012, 18:53:02 by esperian »

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: DBS
« Reply #58 on: 28.02.2012, 18:18:34 »
niekto kto sa rozumie do tej autoopravovne ?? potreboval by som skontrolovat to co som spravil  :)
šup do PM  ;)

edit// nz  ;)
« Last Edit: 28.02.2012, 19:05:45 by veteran »

DarthVader

  • Hero Member
  • *****
  • Posts: 507
    • View Profile
Re: DBS
« Reply #59 on: 02.03.2012, 14:52:07 »
lol ze cviko bez domacej to ja som o takom lem snival :D sme na kazdom mali nove a horsie zadania :D
skym si mal cviko ?

ja som mal trosku insie databazy nez inf :D

Luk1

  • Sr. Member
  • ****
  • Posts: 401
    • View Profile
Re: DBS
« Reply #60 on: 02.03.2012, 23:27:47 »
Keby niekto ma problemy, tak http://www.tu-ke.com/forum/2-rocnik-56/!!!!!!!!-databazove-systemy-zadania-!!!!!!!!!-6255/

Za slovensky narod bije mi srdce v hrudi.

xxx3

  • Hero Member
  • *****
  • Posts: 1010
    • View Profile
Re: DBS
« Reply #61 on: 04.03.2012, 18:22:46 »
ako zmazat vsetky data z tabulky ? Z asz to islo prikazom truncate table asz; ale z ostanych nejde kvoli tym vztahom, ako to teda odtial zmazem ?

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: DBS
« Reply #62 on: 04.03.2012, 18:58:14 »
ako zmazat vsetky data z tabulky ? Z asz to islo prikazom truncate table asz; ale z ostanych nejde kvoli tym vztahom, ako to teda odtial zmazem ?
delete from table_name;

Ak si pri vytváraní tabuliek použil ON DELETE CASCADE, tak po vymazaní napr. tabuľky auto, sa vymažú údaje aj z tabuľky asz.

xxx3

  • Hero Member
  • *****
  • Posts: 1010
    • View Profile
Re: DBS
« Reply #63 on: 04.03.2012, 19:57:25 »
nedal som tam to on delete cascade ..

a este nieco ... ako vlozit do asz tabulky nejake hodnoty pre konkretne auto ? Autu KE111-XX boli poskytnuté nasledovné služby:
dna 30.12.2010 vymena oleja zamestnancom Janko Hrasko
dna 2.1.2011 vymena vody zamestnancom Juro Janosik
dna 2.1.2011 vysavanie zamestnancom Juro Janosik

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: DBS
« Reply #64 on: 04.03.2012, 20:30:07 »
nedal som tam to on delete cascade ..

Fungovať by to aj tak malo  ;) Najprv vymaž asz a potom sa budú dať aj tie ostatné.

a este nieco ... ako vlozit do asz tabulky nejake hodnoty pre konkretne auto ? Autu KE111-XX boli poskytnuté nasledovné služby:
dna 30.12.2010 vymena oleja zamestnancom Janko Hrasko
dna 2.1.2011 vymena vody zamestnancom Juro Janosik
dna 2.1.2011 vysavanie zamestnancom Juro Janosik
Tabuľka asz má stĺpce spz, kod_sluzby, evc, datum_sluzby.

Čiže "dna 30.12.2010 vymena oleja zamestnancom Janko Hrasko":
do stĺpca spz vložíš reťazec KE111-XX. Výmena oleja má v tabuľke sluzba kód 1, teda do stĺpca kod_sluzby vložíš 1. Zákazku vykonal zamestnanec Janko Hraško, ktorý má v tabuľke zamestnanec evc 1, teda do stĺpca evc v tabuľke asz vložíš 1.
« Last Edit: 04.03.2012, 20:37:22 by veteran »

xxx3

  • Hero Member
  • *****
  • Posts: 1010
    • View Profile
Re: DBS
« Reply #65 on: 04.03.2012, 21:34:47 »
preco ked napisem: insert into asz values('KE111-XX','22','23','2/1/2011');

mi napise: ORA-02291: integrity constraint (xy123ab.FK_ASZ_ASZ2_SLUZBA) violated - parent
key not found

(cisluje mi od 21 .. a nie je tam '22','22' lebo som spravil preklep pri vkladani Jura Janosika tak preskocilo sa jedno cislo

// prve mi zobralo a toto druhe uz nie
// aj nasledujuce insert into asz values('KE111-XX','29','22','2/1/2011'); mi vezme normalne
// toto tiez neberie: insert into asz values('PO11-XX','23','22','3/1/2011');
// dalsei neberie: insert into asz(spz,kod_sluzby,evc) values('ZA111-XX','26','22');

co s tym moze byt ? ostatne vsetko zobralo
« Last Edit: 04.03.2012, 22:04:12 by xxx3 »

esperian

  • Hero Member
  • *****
  • Posts: 873
    • View Profile
Re: DBS
« Reply #66 on: 04.03.2012, 22:22:46 »
a to tam mas az 22 pracovnikov a 23 sluzieb (alebo naopak nepamatam presne) lebo za normalnych okolnosti tak bolo len okolo  7 pracovnikov a taktiez cca 7 sluzieb... alebo mas tu sekvenciu posunutu ?

// toto tiez neberie: insert into asz values('PO11-XX','23','22','3/1/2011'); - nema tam byt nahodou PO111-XX
// dalsei neberie: insert into asz(spz,kod_sluzby,evc) values('ZA111-XX','26','22'); - nemas tam datum , ak ma bzt aktualny´musis tam dat datasys
« Last Edit: 04.03.2012, 22:31:02 by esperian »

xxx3

  • Hero Member
  • *****
  • Posts: 1010
    • View Profile
Re: DBS
« Reply #67 on: 04.03.2012, 22:29:30 »
hej od 21 zacinaju cisla ... aj ked neviem preco
daval som starts with 1 increment by 1

esperian

  • Hero Member
  • *****
  • Posts: 873
    • View Profile
Re: DBS
« Reply #68 on: 04.03.2012, 22:34:31 »
// toto tiez neberie: insert into asz values('PO11-XX','23','22','3/1/2011'); - nema tam byt nahodou PO111-XX
// dalsei neberie: insert into asz(spz,kod_sluzby,evc) values('ZA111-XX','26','22'); - nemas tam datum , ak ma bzt aktualny´musis tam dat datasys,  bez datumu to nemozes dat sa mi zda lebo v tabulke asz je datum not null..

a tu insert into asz values('KE111-XX','22','23','2/1/2011'); skus pozriet ci mas v tabulke sluzba take cislo sluzby, select *from nazov_tabulkz;
« Last Edit: 04.03.2012, 22:40:01 by esperian »

xxx3

  • Hero Member
  • *****
  • Posts: 1010
    • View Profile
Re: DBS
« Reply #69 on: 04.03.2012, 22:39:04 »
mal som ... teraz som chcel pozriet a nic z toho co som vkladal mi tam neostalo !!! ako to je mozne ?????
Som dal select * from sluzba; a mi to vypisalo iba jedno co som skusal niekedy minuly tyzden vkladat xD WTF ?

esperian

  • Hero Member
  • *****
  • Posts: 873
    • View Profile
Re: DBS
« Reply #70 on: 04.03.2012, 22:41:27 »
 ;D ;D  zda sa mi ze na cviku nas upozornoval ze po tom ako tam tie svoje hodnoty nahadzes musis zadat prikaz commit; aby sa tie tvoje data realne zapisali a ostali tam..
« Last Edit: 04.03.2012, 22:44:17 by esperian »

xxx3

  • Hero Member
  • *****
  • Posts: 1010
    • View Profile
Re: DBS
« Reply #71 on: 04.03.2012, 22:47:59 »
kurnik, to mohla aj Lalova povedat :D ... som sa s tym sral zbytocne, mozem odznova, super :D

do rici ani v tom subore to neni :D
« Last Edit: 04.03.2012, 22:49:55 by xxx3 »

esperian

  • Hero Member
  • *****
  • Posts: 873
    • View Profile
Re: DBS
« Reply #72 on: 04.03.2012, 22:51:54 »
jj no mozes xDD a ukoncuj aj SQLko korektne prikazom exit...

xxx3

  • Hero Member
  • *****
  • Posts: 1010
    • View Profile
Re: DBS
« Reply #73 on: 04.03.2012, 22:56:38 »
fajn, dik

Rajo

  • Sr. Member
  • ****
  • Posts: 346
    • View Profile
Re: DBS
« Reply #74 on: 04.03.2012, 23:43:52 »
ja som si pekne sekvencie vymazal a nanovo nahodil aby mi to nehádzalo dementne čísla :P pekne od 1 mi to čisluje a kedže som daval pozor a nepomýlil som sa, tak to mám všetko o +1 inkrementovane a je v tom poriadok :)