Dies ist eine statische Kopie unseres alten Forums. Es sind keine Interaktionen möglich.
This is a static copy of our old forum. Interactions are not possible.

AnyKey

Erfahrener Schreiberling

  • "AnyKey" started this thread

Posts: 451

Date of registration: Dec 11th 2001

Location: H-Town

Occupation: Student

1

Saturday, November 29th 2003, 12:52pm

SQL - Blatt07

Schreibt man:
SELECT *
FROM all_constraints;

bekommt man eine echt schlecht lesbare Ausgabe.
Kennt einer nen Befehl, mit dem man die Spaltenbreite formatieren kann? Es gibt ja de Systemvariable "linesize", das bezieht sich dann aber eher auf die Breite der Ergebnistabelle.

"Der Mensch braucht Schubladen." -- Any Key

migu

free rider

  • "migu" is male

Posts: 2,643

Date of registration: Dec 11th 2001

Occupation: Developer

2

Saturday, November 29th 2003, 1:40pm

RE: SQL - Blatt07

Meine Idee ist, SQL*Plus zu nutzen:

COLUMN table_name FORMAT A15
SELECT table_name, constraint_name, constraint_type, owner
FROM all_constraints;

Ausgabe (etwa):

Source code

1
2
3
4
5
6
7
8
9
10
11
TABLE_NAME    |CONSTRAINT_NAME               |C|OWNER
PRESIDENT     |SYS_C007885                   |C|PRESDB
PRESIDENT     |SYS_C007886                   |C|PRESDB
PRESIDENT     |SYS_C007887                   |C|PRESDB
PRESIDENT     |SYS_C007888                   |C|PRESDB
PRESIDENT     |PK_PRES                       |P|PRESDB
STATE         |SYS_C007890                   |C|PRESDB
STATE         |PK_STATE                      |P|PRESDB
PRES_HOBBY    |SYS_C007892                   |C|PRESDB
PRES_HOBBY    |SYS_C007893                   |C|PRESDB
...


(Bei mir ist colsep = "|".)

Zu empfehlen ist auch diese Anfrage:
SELECT table_name, constraint_name, constraint_type, owner
FROM all_constraints
WHERE UPPER(owner) LIKE 'DBS__'
ORDER BY owner;

So kann man sehen, welche Benutzer die aktuelle Aufgabe schon bearbeitet haben. ;) ;) :D
tar: Anlegen eines leeren Archivs wird feige verweigert.

This post has been edited 1 times, last edit by "migu" (Nov 29th 2003, 1:41pm)


Der Micha

Trainee

  • "Der Micha" is male

Posts: 38

Date of registration: Mar 28th 2003

Location: Hannover Südstadt

3

Tuesday, December 2nd 2003, 5:15pm

Aufgabe 2

Mann mann mann Migu du fuchs!

aber mal ne andere Frage:

Warum sollen wir autocommit auf off setzen wenn es sowieso schon auf off ist (bei mir zumindest) ???
Irgendwie funktioniert diese Aufgabe bei mir nicht so wie sie sollte...

migu

free rider

  • "migu" is male

Posts: 2,643

Date of registration: Dec 11th 2001

Occupation: Developer

4

Tuesday, December 2nd 2003, 6:03pm

RE: Aufgabe 2

Quoted

Original von Der Micha
Mann mann mann Migu du fuchs!


Naja, es scheint, als könne man nur die eigenen Daten sehen. Da bin ich aber noch unsicher. Vielleicht frage ich mal die Betreuer, denn in der Oracle-Dokumentation habe ich leider noch nichts dazu gefunden. Suche ich falsch?

Quoted

Original von Der Micha
Warum sollen wir autocommit auf off setzen wenn es sowieso schon auf off ist (bei mir zumindest) ???


Das habe ich mich auch gefragt, so dass ich kurzerhand autocommit im zweiten Fenster auf on gesetzt habe, damit die Aufgabe irgendeinen Sinn ergibt. Gerade habe ich aber noch einmal darüber nachgedacht und mir ist eingefallen, dass autocommit natürlich nur in dem Fenster auf off sein muss, in dem DDL- oder DML-Befehle ausgeführt werden.

Aufgabe 2 ist insgesamt etwas seltsam. Ich kann mir nur vorstellen, wir sollen erkennen, dass DDL-Befehle immer sofort ausgeführt werden. DROP TABLE gehört dazu. Nach meinem bisherigen Verständnis muss man diesen Befehl nicht mit COMMIT aktivieren.
So ganz genau weiß ich es aber auch noch nicht.
tar: Anlegen eines leeren Archivs wird feige verweigert.

  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

5

Wednesday, December 3rd 2003, 12:06pm

RE: Aufgabe 2

Quoted

Original von migu
Aufgabe 2 ist insgesamt etwas seltsam. Ich kann mir nur vorstellen, wir sollen erkennen, dass DDL-Befehle immer sofort ausgeführt werden. DROP TABLE gehört dazu. Nach meinem bisherigen Verständnis muss man diesen Befehl nicht mit COMMIT aktivieren.
So ganz genau weiß ich es aber auch noch nicht.
Exakt so ist es. Nach DDL-Befehlen wird IMMER implizit ein COMMIT ausgeführt.
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

MAX

Senior Schreiberling

  • "MAX" is male

Posts: 822

Date of registration: Dec 11th 2001

Location: Hannover

6

Wednesday, December 3rd 2003, 2:28pm

frage

Was sagt mir folgende Information???

Source code

1
2
3
SUBSTR(TABLE_NAME,1, SUBSTR(CONSTRAINT_NAME,1,30)   S
-------------------- ------------------------------ -
DIRECTS              PK_DIRECTS                     P

mfg
MAX

  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

7

Wednesday, December 3rd 2003, 4:09pm

RE: frage

Quoted

Original von MAX
Was sagt mir folgende Information???

Source code

1
2
3
SUBSTR(TABLE_NAME,1, SUBSTR(CONSTRAINT_NAME,1,30)   S
-------------------- ------------------------------ -
DIRECTS              PK_DIRECTS                     P
Das sagt Dir, daß die Integritätsbedingung PK_DIRECTS in der Tabelle DIRECTS eine Primärschlüssel-Bedingung ist. Wenn Du auch noch wissen willst, auf welche Spalte(n) der Tabelle sich diese Bedingung bezieht, dann mußt Du noch einen passenden Join mit der Tabelle ALL_CONS_COLUMNS machen.
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

ap

Erfahrener Schreiberling

Posts: 269

Date of registration: Feb 14th 2002

Occupation: Student ;-)

8

Wednesday, December 3rd 2003, 4:35pm

RE: Aufgabe 2

Quoted

Original von migu
Das habe ich mich auch gefragt, so dass ich kurzerhand autocommit im zweiten Fenster auf on gesetzt habe, damit die Aufgabe irgendeinen Sinn ergibt. Gerade habe ich aber noch einmal darüber nachgedacht und mir ist eingefallen, dass autocommit natürlich nur in dem Fenster auf off sein muss, in dem DDL- oder DML-Befehle ausgeführt werden.


Was sind DDL- bzw. DML-Befehle? Auf Übungsblatt 6 steht dazu nix, auch sonst sagt mir das nichts.
Nachdem ich dann in einem Fenster "set autocommit on" gesetzt hatte, habe ich nur bei der Ausgabe der Tabelle unterschiede gesehen. Aber so ganz verstehe ich die Aufgabe nicht, vielleicht wird's ja, wenn mir einer DDL und DML erklärt.
Who the fuck is General Failure and why does he read my hard disk? ?(

  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

9

Wednesday, December 3rd 2003, 4:40pm

RE: Aufgabe 2

Quoted

Original von ap

Quoted

Original von migu
Das habe ich mich auch gefragt, so dass ich kurzerhand autocommit im zweiten Fenster auf on gesetzt habe, damit die Aufgabe irgendeinen Sinn ergibt. Gerade habe ich aber noch einmal darüber nachgedacht und mir ist eingefallen, dass autocommit natürlich nur in dem Fenster auf off sein muss, in dem DDL- oder DML-Befehle ausgeführt werden.


Was sind DDL- bzw. DML-Befehle? Auf Übungsblatt 6 steht dazu nix, auch sonst sagt mir das nichts.
Nachdem ich dann in einem Fenster "set autocommit on" gesetzt hatte, habe ich nur bei der Ausgabe der Tabelle unterschiede gesehen. Aber so ganz verstehe ich die Aufgabe nicht, vielleicht wird's ja, wenn mir einer DDL und DML erklärt.
http://www.dbs.uni-hannover.de/lehre/sql…erial/Les09.pdf

Vereinfacht gesagt: Bei DDL- und DML-Statements handelt es sich um zwei Gruppen von Oracle-SQL-Statements.
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

This post has been edited 1 times, last edit by "Joachim" (Dec 3rd 2003, 4:42pm)


ap

Erfahrener Schreiberling

Posts: 269

Date of registration: Feb 14th 2002

Occupation: Student ;-)

10

Wednesday, December 3rd 2003, 4:54pm

RE: Aufgabe 2

Danke Joachim, hatte ich scheints entweder überlesen oder (wahrscheinlicher) verdrängt. Vor allem ist "Script 9" für mich etwas anderes als "Übungsblatt 6" ;)

Den Sinn von Aufgabe 2 verstehe ich dennoch nicht. Hier bitte ich die Aufgabensteller, doch bitte eine genaue Aufgabenstellung zu geben. Wenn ich mich 1:1 an die Aufgabenstellung gehalten hätte, hätte ich z. B. zwei identische Ausgaben gehabt, da bei mir autocommit von vornherein ausgeschaltet war.
Who the fuck is General Failure and why does he read my hard disk? ?(

  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

11

Wednesday, December 3rd 2003, 6:57pm

RE: Aufgabe 2

Quoted

Original von ap
Den Sinn von Aufgabe 2 verstehe ich dennoch nicht. Hier bitte ich die Aufgabensteller, doch bitte eine genaue Aufgabenstellung zu geben. Wenn ich mich 1:1 an die Aufgabenstellung gehalten hätte, hätte ich z. B. zwei identische Ausgaben gehabt, da bei mir autocommit von vornherein ausgeschaltet war.
Ich denke, daß genau dieses Ergebnis herauskommen sollte.
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

NullAhnung

Erfahrener Schreiberling

  • "NullAhnung" is female

Posts: 332

Date of registration: Apr 28th 2003

12

Wednesday, December 3rd 2003, 7:18pm

Woher weiß ich ob ich nen Foreign Key oder nen Primary Key habe ? Kann ich dafür die Tabellen auf dem Blatt 5 von DBS nehmen oder muß ich das irgendwie anders machen?

Muß ich die Tabelle erst wieder löschen bevor ich Aufg 1a) lösen kann? Hab irgendwie nichts gefunden, wo steht wie das geht wenn die Tabelle schon da ist. HILFE!

This post has been edited 1 times, last edit by "NullAhnung" (Dec 3rd 2003, 7:22pm)


Informatik Minister

Senior Schreiberling

  • "Informatik Minister" is male

Posts: 1,234

Date of registration: Dec 11th 2001

13

Wednesday, December 3rd 2003, 7:26pm

Quoted

Original von NullAhnung
Woher weiß ich ob ich nen Foreign Key oder nen Primary Key habe ? Kann ich dafür die Tabellen auf dem Blatt 5 von DBS nehmen oder muß ich das irgendwie anders machen?

Muß ich die Tabelle erst wieder löschen bevor ich Aufg 1a) lösen kann? Hab irgendwie nichts gefunden, wo steht wie das geht wenn die Tabelle schon da ist. HILFE!


http://www.dbs.uni-hannover.de/lehre/sql…erial/Les11.pdf

Seite 17

Dort steht, wie man bei einer bestehenden Tabelle die constraints ändert.

Um zu wissen, was für constraints definiert werden müssen, hilft die all_constraints Tabelle (Attribut constraint_type), die in Aufgabe 1a erwähnt ist. Darüberhinaus natürlich auch die Übersicht auf Blatt 2 oder 5.
"Fliegenpilze! Löwen!! Das Leben ist gefährlich." -- www.katzundgoldt.de

This post has been edited 2 times, last edit by "Informatik Minister" (Dec 3rd 2003, 7:28pm)


furmann

Praktikant

Posts: 9

Date of registration: Nov 13th 2003

14

Wednesday, December 3rd 2003, 8:56pm

hI,

erstmal danke fuer die Hinweise oben.
habe nun mit Alter Table experimentiert; my_movie einen primary key hinzugefuegt; allerdings scheitert selbiges jetzt my my_plays; my_person...

ALTER TABLE my_person ADD CONSTRAINT PK_PERSON PRIMAR KEY (ID);
*
ERROR at line 1:
ORA-02437: cannot validate (DBS82.PK_PERSON) - primary key violated

kann mir wer sagen, woran das liegt ?
achja, die alten keys (sys...) in my_*; was habt ihr damit gemacht ? DROPed?

gruss
Matthias

  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

15

Wednesday, December 3rd 2003, 9:42pm

Quoted

Original von furmann
habe nun mit Alter Table experimentiert; my_movie einen primary key hinzugefuegt; allerdings scheitert selbiges jetzt my my_plays; my_person...

ALTER TABLE my_person ADD CONSTRAINT PK_PERSON PRIMAR KEY (ID);
*
ERROR at line 1:
ORA-02437: cannot validate (DBS82.PK_PERSON) - primary key violated

kann mir wer sagen, woran das liegt ?
In deiner Tabelle befinden sich offenbar mehrere Einträge, die die selbe ID besitzen. Wahrscheinlich ist beim Einfügen der Datensätze etwas schiefgelaufen.

Quoted

achja, die alten keys (sys...) in my_*; was habt ihr damit gemacht ? DROPed?
Was für alte Keys?
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

MAX

Senior Schreiberling

  • "MAX" is male

Posts: 822

Date of registration: Dec 11th 2001

Location: Hannover

16

Wednesday, December 3rd 2003, 10:01pm

ehh

Quoted


ALTER TABLE my_person ADD CONSTRAINT PK_PERSON PRIMAR KEY (ID);
*

Müsste man eigentlich nicht so schreiben???
alter table my_person add constraint my_person_id_pk primary key (id);

mfg
MAX

  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

17

Wednesday, December 3rd 2003, 10:09pm

RE: ehh

Quoted

Original von MAX

Quoted


ALTER TABLE my_person ADD CONSTRAINT PK_PERSON PRIMAR KEY (ID);
*

Müsste man eigentlich nicht so schreiben???
alter table my_person add constraint my_person_id_pk primary key (id);
Wie man die Integritätsbedingung benennt sollte eigentlich egal sein.
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

furmann

Praktikant

Posts: 9

Date of registration: Nov 13th 2003

18

Wednesday, December 3rd 2003, 10:10pm

oracle muss dringend an den fehlermeldungen arbeiten :)
Du hattest recht; ein select * vs. select distinct brachte unterschiedliche werte ... danke.

bezueglich der sys... contraints; dabei handelte es sich um 'C'hecks; wurden gesetzt als eine NOT NULL constraint ueber create table veranlasst wurde.

gruss &

bis dahin
Matthias

This post has been edited 1 times, last edit by "furmann" (Dec 3rd 2003, 10:43pm)


migu

free rider

  • "migu" is male

Posts: 2,643

Date of registration: Dec 11th 2001

Occupation: Developer

19

Thursday, December 4th 2003, 10:15am

Die Tabelle all_constraints macht mich stutzig, denn in ihr erscheinen (bei mir) nur Einträge der Besitzer DBS10, DBS63, DBS75, DBS78 und DBS86. Es müssten aber Einträge vieler anderer Benutzer auftauchen!
Meine Anfrage:
SELECT table_name,constraint_name,constraint_type,last_change,owner
FROM all_constraints
WHERE UPPER(owner) LIKE 'DBS%'
ORDER BY owner;

Weiter oben meinte ich, man könne ja nun die Constraints aller Teilnehmer sehen; das ist aber offenbar nicht richtig.
Gut, wenn die Constraints nur im jeweiligen Benutzer-Raum sichtbar sind, dann ist dieses Verhalten logisch.
tar: Anlegen eines leeren Archivs wird feige verweigert.