• Welcome to TUKE FÓRUM - Fórum pre študentov Technickej Univerzity v Košiciach.
 

DBS

Started by xxx3, 16.02.2012, 15:10:05

« predchdzajce - alie »

xxx3

na linux, konkretne ubuntu niekto skusal davat tu databazu s sql plus ?

zaky

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

#52
Quote from: zaky on  27.02.2012, 19:20:28
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;

xxx3

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

Quote from: xxx3 on  27.02.2012, 21: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
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

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

#56
Quote from: Domino_666 on  28.02.2012, 14: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...
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é...

esperian

#57
niekto kto sa rozumie do tej autoopravovne ?? potreboval by som skontrolovat to co som spravil  :)

edit// mas to tam , dik  ;)

veteran

#58
Quote from: esperian on  28.02.2012, 19:12:33
niekto kto sa rozumie do tej autoopravovne ?? potreboval by som skontrolovat to co som spravil  :)
šup do PM  ;)

edit// nz  ;)

DarthVader

Quote from: Tren on  25.02.2012, 18:39:13
Quote from: DarthVader on  25.02.2012, 18:37:56
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

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

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

Quote from: xxx3 on  04.03.2012, 19: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 ?
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

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

#64
Quote from: xxx3 on  04.03.2012, 20:57:25
nedal som tam to on delete cascade ..

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

Quote from: xxx3 on  04.03.2012, 20:57:25a 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.

xxx3

#65
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

esperian

#66
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

xxx3

hej od 21 zacinaju cisla ... aj ked neviem preco
daval som starts with 1 increment by 1

esperian

#68
// 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;

xxx3

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

#70
 ;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..

xxx3

#71
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

esperian

jj no mozes xDD a ukoncuj aj SQLko korektne prikazom exit...

xxx3


Rajo

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 :)