Sie sind nicht angemeldet.

AnyKey

Erfahrener Schreiberling

  • »AnyKey« ist der Autor dieses Themas

Beiträge: 451

Registrierungsdatum: 11.12.2001

Wohnort: H-Town

Beruf: Student

1

29.11.2003, 12:52

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« ist männlich

Beiträge: 2 643

Registrierungsdatum: 11.12.2001

Wohnort: Hannover

Beruf: Developer

2

29.11.2003, 13:40

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

Quellcode

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.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »migu« (29.11.2003, 13:41)


Der Micha

Trainee

  • »Der Micha« ist männlich

Beiträge: 38

Registrierungsdatum: 28.03.2003

Wohnort: Hannover Südstadt

3

02.12.2003, 17:15

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« ist männlich

Beiträge: 2 643

Registrierungsdatum: 11.12.2001

Wohnort: Hannover

Beruf: Developer

4

02.12.2003, 18:03

RE: Aufgabe 2

Zitat

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?

Zitat

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« ist männlich

Beiträge: 2 863

Registrierungsdatum: 11.12.2001

Wohnort: Hämelerwald

Beruf: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

5

03.12.2003, 12:06

RE: Aufgabe 2

Zitat

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« ist männlich

Beiträge: 822

Registrierungsdatum: 11.12.2001

Wohnort: Hannover

6

03.12.2003, 14:28

frage

Was sagt mir folgende Information???

Quellcode

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

mfg
MAX

  • »Joachim« ist männlich

Beiträge: 2 863

Registrierungsdatum: 11.12.2001

Wohnort: Hämelerwald

Beruf: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

7

03.12.2003, 16:09

RE: frage

Zitat

Original von MAX
Was sagt mir folgende Information???

Quellcode

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

Beiträge: 269

Registrierungsdatum: 14.02.2002

Beruf: Student ;-)

8

03.12.2003, 16:35

RE: Aufgabe 2

Zitat

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« ist männlich

Beiträge: 2 863

Registrierungsdatum: 11.12.2001

Wohnort: Hämelerwald

Beruf: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

9

03.12.2003, 16:40

RE: Aufgabe 2

Zitat

Original von ap

Zitat

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

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Joachim« (03.12.2003, 16:42)


ap

Erfahrener Schreiberling

Beiträge: 269

Registrierungsdatum: 14.02.2002

Beruf: Student ;-)

10

03.12.2003, 16:54

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« ist männlich

Beiträge: 2 863

Registrierungsdatum: 11.12.2001

Wohnort: Hämelerwald

Beruf: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

11

03.12.2003, 18:57

RE: Aufgabe 2

Zitat

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« ist weiblich

Beiträge: 332

Registrierungsdatum: 28.04.2003

12

03.12.2003, 19:18

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!

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »NullAhnung« (03.12.2003, 19:22)


Informatik Minister

Senior Schreiberling

  • »Informatik Minister« ist männlich

Beiträge: 1 234

Registrierungsdatum: 11.12.2001

13

03.12.2003, 19:26

Zitat

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

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Informatik Minister« (03.12.2003, 19:28)


furmann

Praktikant

Beiträge: 9

Registrierungsdatum: 13.11.2003

14

03.12.2003, 20:56

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« ist männlich

Beiträge: 2 863

Registrierungsdatum: 11.12.2001

Wohnort: Hämelerwald

Beruf: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

15

03.12.2003, 21:42

Zitat

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.

Zitat

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« ist männlich

Beiträge: 822

Registrierungsdatum: 11.12.2001

Wohnort: Hannover

16

03.12.2003, 22:01

ehh

Zitat


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« ist männlich

Beiträge: 2 863

Registrierungsdatum: 11.12.2001

Wohnort: Hämelerwald

Beruf: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

17

03.12.2003, 22:09

RE: ehh

Zitat

Original von MAX

Zitat


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

Beiträge: 9

Registrierungsdatum: 13.11.2003

18

03.12.2003, 22:10

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

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »furmann« (03.12.2003, 22:43)


migu

free rider

  • »migu« ist männlich

Beiträge: 2 643

Registrierungsdatum: 11.12.2001

Wohnort: Hannover

Beruf: Developer

19

04.12.2003, 10:15

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.