0% fanden dieses Dokument nützlich (0 Abstimmungen)
7 Ansichten22 Seiten

Oracle Programmierung - SQL Spickzettel

Dieses Dokument bietet eine Zusammenfassung der Oracle SQL- und PL/SQL-Funktionen in Form eines Spickzettels. Es behandelt grundlegende Abfragen, DDL-Anweisungen, Zeichenfolgenfunktionen und PL/SQL-Konzepte. Die Ressource soll als schnelle Referenz für sowohl neue als auch erfahrene Oracle-Entwickler und Datenbankadministratoren dienen. Die Abschnitte umfassen Beschreibungen gängiger Befehle wie SELECT, INSERT, UPDATE und DELETE sowie Programmierkonzepte wie Sequenzen, gespeicherte Prozeduren und Funktionen zur Zeichenfolgenmanipulation.

Übersetzt von

ScribdTranslations
Copyright
© All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
0% fanden dieses Dokument nützlich (0 Abstimmungen)
7 Ansichten22 Seiten

Oracle Programmierung - SQL Spickzettel

Dieses Dokument bietet eine Zusammenfassung der Oracle SQL- und PL/SQL-Funktionen in Form eines Spickzettels. Es behandelt grundlegende Abfragen, DDL-Anweisungen, Zeichenfolgenfunktionen und PL/SQL-Konzepte. Die Ressource soll als schnelle Referenz für sowohl neue als auch erfahrene Oracle-Entwickler und Datenbankadministratoren dienen. Die Abschnitte umfassen Beschreibungen gängiger Befehle wie SELECT, INSERT, UPDATE und DELETE sowie Programmierkonzepte wie Sequenzen, gespeicherte Prozeduren und Funktionen zur Zeichenfolgenmanipulation.

Übersetzt von

ScribdTranslations
Copyright
© All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen

Oracle Programmierung/SQL-Spickzettel

Dieses "Spickzettel" deckt die meisten grundlegenden Funktionen ab, die ein Oracle DBA benötigt, um grundlegende Abfragen auszuführen.
und grundlegende Aufgaben auszuführen. Es enthält auch Informationen, die ein PL/SQL-Programmierer häufig verwendet, um zu schreiben
gespeicherte Prozeduren. Die Ressource ist nützlich als Einführung für Personen, die neu in Oracle sind, oder als
Referenz für diejenigen, die Erfahrung im Umgang mit Oracle haben.

Es gibt eine Menge Informationen über Oracle im Netz. Wir haben diese Ressource entwickelt, um es zu ermöglichen.
Es ist einfacher für Programmierer und DBAs, die meisten Grundlagen an einem Ort zu finden. Themen, die über den Umfang eines
"Spickzettel" bietet in der Regel einen Link für weiterführende Recherchen.

Weitere Oracle-Referenzen

Oracle XML Referenz—die XML-Referenz befindet sich noch in der Kindheit, entwickelt sich aber gut.

Inhalt
1 WÄHLEN
2 Wählen Sie in
3 EINFÜGEN
4 LÖSCHEN
5AKTUALISIEREN
5.1 Einschränkungen auf einer Tabelle festlegen
5.2 Eindeutiger Index auf einer Tabelle
6 SEQUENZEN
6.1 SEQUENZ ERSTELLEN
6.2 SEQUENZ ÄNDERN
7 Generiere eine Abfrage aus einem String
8 Zeichenoperationen
8.1 Länge
8.2 Instr
8.3 Ersetzen
8.4 Substr
8,5 Trim
9 DDL SQL
9.1 Tabellen
9.1.1 Tabelle erstellen
9.1.2 Spalte hinzufügen
9.1.3 Spalte ändern
9.1.4 Spalte löschen
9.1.5 Einschränkungen
[Link] Einschränkungstypen und -codes
[Link] Anzeige von Einschränkungen
[Link] Auswahl referenzieller Einschränkungen
[Link] Erstellen von einzigartigen Einschränkungen
[Link] Einschränkungen löschen
9.2 INDEXE
9.2.1 Ein Index erstellen
9.2.2 Erstellen Sie einen funktionsbasierten Index
9.2.3 Benennen Sie einen Index um
9.2.4 Statistiken zu einem Index sammeln
9.2.5 Einen Index löschen
10 DBA-bezogene
10.1 Benutzerverwaltung
10.1.1 Einen Benutzer erstellen
10.1.2 Erteilung von Berechtigungen
10.1.3 Passwort ändern
10.2 Importieren und Exportieren
10.2.1 Importieren einer Dump-Datei mit IMP
11 PL/SQL
11.1 Betreiber
11.1.1 Arithmetische Operatoren
[Link] Beispiele
11.1.2 Vergleichsoperatoren
[Link] Beispiele
11.1.3 Zeichenfolgenoperatoren
11.1.4 Datumsoperatoren
11.2 Typen
11.2.1 Grundlegende PL/SQL-Typen
11.2.2 %TYPE - verankerte Typvariablendeklaration
11.2.3 Sammlungen
11.3 Gespeicherte Logik
11.3.1 Funktionen
11.3.2 Verfahren
11.3.3 anonymer Block
11.3.4 Übergabe von Parametern an gespeicherte Logik
[Link] Positionale Notation
[Link] Benannte Notation
[Link] Gemischte Notation
11.3.5 Tabellenfunktionen
11.4 Flusskontrolle
11.4.1 Bedingte Operatoren
11.4.2 Beispiel
11.4.3 Wenn/dann/sonst
11.5 Arrays
11.5.1 Assoziative Arrays
11.5.2 Beispiel
12 APEX
12.1 String substitution
13 Externe Links
14 Weitere Wikibücher

SELECT

The SELECT statement is used to retrieve rows selected from one or more tables, object tables, views,
Objektansichten oder materialisierte Ansichten.

WÄHLENSIEALLES

VON Getränken
WHEM field1 = 'Kona'
UND field2 = 'kaffee'
UND field3 = 122;

INTO AUSWÄHLEN

SELECT INTO nimmt die Werte name, adresse und telefonnummer aus der Tabelle Mitarbeiter und platziert sie.
into the variablesv_employee_name,v_employee_address, andv_employee_phone_number.
Das funktioniert nur, wenn die Abfrage mit einem einzigen Element übereinstimmt. Wenn die Abfrage keine Zeilen zurückgibt, wird ein Fehler ausgelöst.
NO_DATA_FOUND eingebaute Ausnahme. Wenn Ihre Abfrage mehr als eine Zeile zurückgibt, löst Oracle die.
Ausnahme ZUVIELE_REIHEN.

SELECT name,address,phone_number
INTO v_employee_name,v_employee_address,v_employee_phone_number
VON Mitarbeiter
WO employee_id = 6;

EINFÜGEN
Die INSERT-Anweisung fügt eine oder mehrere neue Datenzeilen zu einer Datenbanktabelle hinzu.

Einfügen mit dem VALUES-Schlüsselwort

FÜGE IN tabellen_name WERTE EIN ('Wert1', 'Wert2', ... );


FÜGE EIN IN tabelle_name( Spalte1, Spalte2, ... ) WERTE ( 'Wert1', 'Wert2', ... );

Einfügen mit einer SELECT-Anweisung

FÜGE IN tabellen_name ein ( WÄHLE Wert1, Wert2, ... von tabellen_name );


INSERT INTO table_name (Column1, Column2, ...) (SELECT Value1, Value2, ... FROM table_name);

LÖSCHEN
Die DELETE-Anweisung wird verwendet, um Zeilen in einer Tabelle zu löschen.

löscht Zeilen, die den Kriterien entsprechen

LÖSCHE AUS tabelle_name WENN some_column=some_value


LÖSCHEN VON kunden WO verkauft = 0;

AKTUALISIEREN
Die UPDATE-Anweisung wird verwendet, um Zeilen in einer Tabelle zu aktualisieren.

aktualisiert die gesamte Spalte dieser Tabelle

UPDATE kunde SET bundesland='CA';

aktualisiert den spezifischen Datensatz der Tabelle z.B.:


AKTUALISIEREN Sie den Kunden SET name='Joe' WHERE customer_id=10;

Aktualisiert die Spalte Rechnung als bezahlt, wenn die Spalte bezahlt mehr als null hat.

UPDATE filme SET rechnung='bezahlt' WHERE bezahlt > 0;

Einschränkungen für eine Tabelle festlegen

Die Syntax zum Erstellen einer Prüfklausel mit einer CREATE TABLE-Anweisung lautet:

TABELLE erstellen table_name


(
Spalte1 Datentyp null/nicht null,
column2 datatype null/not null,
...
EINSCHRÄNKUNG constraints_name ÜBERPRÜFEN (spalten_name bedingung) [DEAKTIVIEREN]
);

Zum Beispiel:

TABELLE Lieferanten ERSTELLEN


(
supplier_id numeric(4),
supplier_name varchar2(50),
EINSCHRÄNKUNG prüfe_lieferanten_id
ÜBERPRÜFEN (supplier_id ZWISCHEN 100 und 9999)
);

Eindeutiger Index auf einer Tabelle

Die Syntax zum Erstellen einer einzigartigen Einschränkung mit einem CREATE TABLE-Befehl lautet:

TABELLE erstellen table_name


(
Spalte1 Datentyp null/nicht null,
Spalte2 Datentyp null/nicht null,
...
EINSCHRÄNKUNG einschränkung_name EINFAVN (spalte1, spalte2, spalte_n)
);

Zum Beispiel:

TABELLE erstellen kunde


(
id ganzzahlig nicht null,
name varchar2(20)
EINSCHRÄNKUNG customer_id_constraint EINFACH (id)
);

Beispiel CREATE TABLE OOP (ID NUMMER(20), NAME VARCHAR2(20));

Tabelle erstellt
SQL> ALTER TABLE OPP ADD CONSTRAINT OPP_ID_UK UNIQUE(ID);

'TABLE ALTERED'

SEQUENCES
Sequenzen sind Datenbankobjekte, die von mehreren Benutzern verwendet werden können, um eindeutige ganze Zahlen zu generieren. Die Sequenz
Der Generator erzeugt sequenzielle Zahlen, die dabei helfen können, automatisch eindeutige Primärschlüssel zu generieren, und
Koordinaten Schlüssel über mehrere Zeilen oder Tabellen hinweg.

SEQUENZ ERSTELLEN

Die Syntax für eine Sequenz lautet:

SEQUENZ erstellen sequence_name


MINWERT Wert
MAXVALUE Wert
BEGINNEN MIT Wert
INCREMENTIEREN UM Wert
CACHE-Wert;

Zum Beispiel:

SEQUENZ supplier_seq erstellen


MINDESTWERT 1
MAXVALUE 999999999999999999999999999
START WITH 1
INCREMENTIEREN UM 1
CACHE 20;

SEQUENZ ÄNDERN

Increment a sequence by a certain amount:

ÄNDERE SEQUENZ <sequence_name> ERHÖHE UM <integer>;


ÄNDERE SEQUENZ seq_inc_by_ten INCREMENT BY 10;

Ändern Sie den Maximalwert einer Sequenz:

ÄNDERE SEQUENZ <sequence_name> MAXVALUE <integer>;


ÄNDERE SEQUENZ seq_maxval MAXVALUE 10;

Setze die Reihenfolge auf Zyklen oder keinen Zyklus:

ALTER SEQUENZ <sequence_name> <CYCLE | NOCYCLE>;


ÄNDERE SEQUENZ seq_cycle NOCYCLE;

Konfigurieren Sie die Reihenfolge, um einen Wert zwischenzuspeichern:

ÄNDERE SEQUENZ <sequence_name> CACHE <integer> | NOCACHE;


ÄNDERE SEQUENZ seq_cache NOCACHE;
Legen Sie fest, ob die Werte in Reihenfolge zurückgegeben werden sollen oder nicht

ÄNDERE SEQUENZ <sequence_name> <ORDER | KEINORDER>;


ÄNDERE SEQUENZ seq_order KEINE REIHENFOLGE;

LTER SEQUENZ seq_order

Generate query from a string


Es ist manchmal notwendig, eine Abfrage aus einem String zu erstellen. Das heißt, wenn der Programmierer eine Abfrage erstellen möchte.
zur Laufzeit (eine Oracle-Abfrage dynamisch generieren), basierend auf einem bestimmten Satz von Umständen, usw.

Es sollte darauf geachtet werden, keine vom Benutzer bereitgestellten Daten direkt in eine dynamische Abfragezeichenfolge einzufügen, ohne vorher
vetting the data very strictly for SQL escape characters; otherwise you run a significant risk of enabling
Dateninjektionsangriffe auf Ihren Code.

Hier ist ein sehr einfaches Beispiel, wie eine dynamische Abfrage durchgeführt wird. Es gibt natürlich viele verschiedene Möglichkeiten.
to do this; this is just an example of the functionality.

VERFAHREN oracle_runtime_query_pcd IST


TYPE ref_cursor IS REF CURSOR;
l_cursor ref_cursor;

v_query varchar2(5000);
v_name varchar2(64);
ANFANG
v_query := 'SELECT name FROM employee WHERE employee_id=5';
ÖFFNEN l_cursor FÜR v_query;
SCHLEIFE
FETCH l_cursor INTO v_name;
BEENDEN WENN l_cursor%NICHT_GEFUNDEN;
END LOOP;
SCHLIEßE l_cursor;
ENDE;

String-Operationen

Length

Die Länge gibt eine Ganzzahl zurück, die die Länge eines bestimmten Strings darstellt. Sie kann als lengthb bezeichnet werden.
lengthc,length2, andlength4.

länge( string1 );

WÄHLEN Sie Länge('Hallo Welt') AUS dual;


dies gibt 11 zurück, da das Argument aus 11 Zeichen einschließlich des Leerzeichens besteht

WÄHLEN Sie lengthb('hallo welt') AUS dual;


WÄHLEN Sie lengthc('hallo welt') AUS dual;
WÄHLEN Sie length2('hallo Welt') VON dual;
WÄHLEN Sie length4('hallo Welt') VON dual;
Diese geben ebenfalls 11 zurück, da die aufgerufenen Funktionen gleichwertig sind.
Instr

Instr gibt eine Ganzzahl zurück, die den Standort eines Teilstrings innerhalb eines Strings angibt. Der Programmierer kann
geben Sie an, welches Erscheinungsbild der Zeichenfolge sie erkennen möchten, sowie eine Startposition. Ein erfolgloser
Die Suche ergibt 0.

instr( string1, string2, [ start_position ], [ nth_appearance ] )

instr( 'oracle pl/sql spickzettel', '/');


this returns 10, since the first occurrence of "/" is the tenth character

instr( 'oracle pl/sql spickzettel', 'e', 1, 2);


this returns 17, since the second occurrence of "e" is the seventeenth character

instr( 'oracle pl/sql spickzettel', '/', 12, 1);


dies gibt 0 zurück, da das erste Vorkommen von "/" vor dem Ausgangspunkt liegt, der der 12. ist

Ersetzen

Ersetzt sieht durch einen String, ersetzt einen String durch einen anderen. Wenn kein anderer String angegeben ist, entfernt er
der im Parameter der Ersetzungszeichenfolge angegebene String.

ersetze( string1, zu_ersetzender_string, [ ersatz_string ] );


i am not here
this returns "i am not here"

Teilstring

Substr gibt einen Teil des gegebenen Strings zurück. Die "start_position" ist 1-basiert, nicht 0-basiert. Wenn die "start_position"
ist negativ, substr zählt vom Ende der Zeichenkette. Wenn "length" nicht angegeben ist, verwendet substr standardmäßig die
verbleibende Länge des Strings.

substr(string, start_position [, Länge])

WÄHLEN Sie substr('oracle pl/sql spickzettel', 8, 6) VON dual;

Rückgabenpl/sqlDa das "p" in "pl/sql" an der 8. Stelle im String steht (gezählt ab 1 bei dem
"o" in "oracle")

WÄHLEN Sie substr('oracle pl/sql cheatsheet',15) VON dual;

RückgabenSpickzettel"da "c" an der 15. Stelle in der Zeichenkette steht und "t" das letzte Zeichen ist
String.

WÄHLEsubstr('oracle pl/sql spickzettel', -10,5)VONdual;


Rücksendungenbetrügenda "c" das 10. Zeichen im String ist, wenn man vom Ende des Strings zählt mit
"t" als Position 1.

Trimmen

Diese Funktionen können verwendet werden, um unerwünschte Zeichen aus Strings zu filtern. Standardmäßig entfernen sie Leerzeichen, aber
Ein Zeichensatz kann ebenfalls zur Entfernung angegeben werden.

trim ( [ führend | nachfolgend | beide ] [ trim-Zeichen ] von zu trimminendem String );


schneiden(' EntfernenvonLeerzeichenanbeidenSeiten ');
dies entfernt "Leerzeichen an beiden Seiten"

ltrim ( zu-trimmender-string [, trimming-char-set ] );


ltrim (' EntfernenvonLeerzeichenaufderlinkenSeite ');
dies entfernt Leerzeichen auf der linken Seite "

rtrim ( zu-trimmenden-string [, trimming-char-set ] );


rtrim ( LeerzeichenaufderrechtenSeiteentfernen ');
dies gibt zurück " removing spaces at the right side"

DDL SQL
Tische

Tabelle erstellen

Die Syntax zur Erstellung einer Tabelle lautet:

ERSTELLEN TABELLE [Tabellenname]


( [Spaltenname] [Datentyp], ... );

Zum Beispiel:

ERSTELLENTABELLE mitarbeiter
(id int, name varchar(20));

Spalte hinzufügen

Die Syntax zum Hinzufügen einer Spalte ist:

ÄNDERNSIEDIETABELLE[Tabellenname]
HINZUFÜGEN ( [Spaltenname] [Datentyp], ... );

Zum Beispiel:

ÄNDERE TABELLE mitarbeiter


ADD (id int)
Spalte ändern

Die Syntax zur Modifizierung einer Spalte ist:

ÄNDERNSIEDIETABELLE[Tabellenname]

ÄNDERN ( [Spaltenname] [neuer Datentyp] );

ALTER-Tabellensyntax und Beispiele:

Zum Beispiel:

ALTER TABLE employee


MODIFY( sickHours s float );

Spalte löschen

Die Syntax zum Löschen einer Spalte lautet:

ALTER TABLE [Tabellenname]


DROP COLUMN [Spaltenname];

Zum Beispiel:

ÄNDERN TABELLE Mitarbeiter


DROP COLUMN vacationPay;

Einschränkungen

Einschränkungstypen und -codes

Typcode Type Description Aktivitäten auf Ebene

C Überprüfen Sie einen Tisch Spalte


O Nur Lesezugriff auf eine Ansicht Objekt
P Primärschlüssel Objekt
R Referenzielle Integrität, auch bekannt als Fremdschlüssel Säule
U Unique Key Spalte
V Option auf einer Ansicht überprüfen Objekt

Anzeige von Einschränkungen

Die folgende Aussage zeigt alle Einschränkungen im System an:

WÄHLEN
table_name,
constraint_name,
constraint_type
VON user_constraints;
Wählen Sie * tabellen_name;

Auswahl von referenziellen Einschränkungen

Die folgende Aussage zeigt alle referenziellen Einschränkungen (Fremdschlüssel) mit sowohl Quelle als auch
Ziel-Tabellen-/Spaltenpaare:

WÄHLEN
c_list.CONSTRAINT_NAME als NAME,
c_src.TABELLE_NAME als SRC_TABELLE,
c_src.SPALTENNAME als SRC_SPALTE,
c_dest.TABLE_NAME as DEST_TABLE,
c_dest.COLUMN_NAME als DEST_COLUMN
VON ALL_CONSTRAINTS c_list,
ALL_CONS_COLUMNS c_src,
ALL_CONS_COLUMNS c_dest
WELCHE c_list.CONSTRAINT_NAME = c_src.CONSTRAINT_NAME
UND c_list.R_CONSTRAINT_NAME = c_dest.CONSTRAINT_NAME
UND c_list.CONSTRAINT_TYPE = 'R'
GRUPPIEREN NACH c_list.CONSTRAINT_NAME,
c_src.TABELLE_NAME,
c_src.SPALTENNAME,
c_dest.TABELLE_NAME,
c_dest.COLUMN_NAME;

Eindeutige Einschränkungen erstellen

Die Syntax für eine eindeutige Einschränkung ist:

ALTER TABLE [Tabellenname]


FÜGEEINEEINSCHRÄNKUNG[einschränkungsname]EINHEITLICH([spaltenname])MITVERWENDUNGDESINDEX[indexname]HINZU;

Zum Beispiel:

ALTER TABLE Mitarbeiter


ADD CONSTRAINT uniqueEmployeeId UNIQUE(employeeId) USING INDEX ourcompanyIndx_tbs;

Einschränkungen löschen

Die Syntax zum Entfernen (Löschen) einer Einschränkung lautet:

ALTER TABLE [Tabellenname]


ENTFEEGENSIEEINSCHRÄNKUNG[EinschränkungName];

Zum Beispiel:

TABELLE ändern Mitarbeiter


ENTFERNEN SIE EINSCHRÄNKUNG uniqueEmployeeId;

Siehe auch:Oracle Einschränkungen ([Link]

INDEXE
Ein Index ist ein Verfahren, das Datensätze mit größerer Effizienz abruft. Ein Index erstellt einen Eintrag für jeden
Wert, der in den indizierten Spalten erscheint. Standardmäßig erstellt OracleB-BaumIndizes.

Ein Index erstellen

Die Syntax zum Erstellen eines Index ist:

ERSTELLE [EINDEUTIG] INDEX index_name


AUF tabelle_name (spalte1, spalte2, . spalte_n)
[ STATISTIKEN BERECHNEN ]

UNIQUE bedeutet, dass die Kombination der Werte in den indizierten Spalten einzigartig sein muss.

STATISTIKEN BERECHNEN lässt Oracle Statistiken während der Erstellung des Indexes sammeln. Die Statistiken
werden dann vom Optimierer verwendet, um einen optimalen Ausführungsplan auszuwählen, wenn die Anweisungen ausgeführt werden.

Zum Beispiel:

INDEX kunden_idx ERSTELLEN


AUF Kunde (Kundenname);

In diesem Beispiel wurde ein Index auf der Kundentabelle namens customer_idx erstellt. Er besteht nur aus
das Feld customer_name.

Das Folgende erstellt einen Index mit mehr als einem Feld:

INDEX customer_idx erstellen


AUF Lieferant (Kundenname, Land);

Die folgenden Statistiken werden bei der Erstellung des Index gesammelt:

INDEX customer_idx erstellen


ON supplier (customer_name, country)
STATISTIKEN BERECHNEN;

Erstellen Sie einen funktionsbasierten Index

In Oracle sind Sie nicht darauf beschränkt, Indizes nur auf Spalten zu erstellen. Sie können funktionsbasierte Indizes erstellen.
Indizes.

Die Syntax, die einen funktionsbasierten Index erstellt, lautet:

ERSTELLE [EINZIGARTIGES] INDEX index_name


AUF tabelle_name (funktion1, funktion2, . funktion_n)
[ STATISTIKEN BERECHNEN ]

Zum Beispiel:

INDEX customer_idx erstellen


AUF kunden (GROSS(kunden_name));
Ein Index, basierend auf der Großbuchstabenauswertung des Feldes customer_name, wurde erstellt.

Um sicherzustellen, dass der Oracle-Optimierer diesen Index beim Ausführen Ihrer SQL-Anweisungen verwendet, stellen Sie sicher, dass
UPPER(customer_name) bewertet sich nicht zu einem NULL-Wert. Um dies sicherzustellen, fügen Sie hinzu
UPPER(customer_name) IST NICHT NULL in Ihrer WHERE-Klausel wie folgt:

WÄHLE kunden_id, kunden_name, GROSSKUNDEN_NAME


VON Kunde
WOHER UPPER(kunden_name) NICHT NULL IST
ORDER BY UPPER(kundenname);

Einen Index umbenennen

Die Syntax zum Umbenennen eines Index ist:

INDEX index_name ÄNDERN


UMBENENNEN IN new_index_name;

Zum Beispiel:

ALTER INDEX customer_id


UMBENENNEN IN new_customer_id;

In diesem Beispiel wird customer_id in new_customer_id umbenannt.

Statistiken zu einem Index sammeln

Wenn Sie Statistiken zum Index sammeln müssen, nachdem er zum ersten Mal erstellt wurde, oder wenn Sie die Statistiken aktualisieren möchten, dann
Man kann immer den Befehl ALTER INDEX verwenden, um Statistiken zu sammeln. Sie sammeln Statistiken, damit Oracle...
Nutzen Sie die Indizes auf effektive Weise. Dies recalculiert die Tabellengröße, die Anzahl der Zeilen, Blöcke und Segmente.
und aktualisieren Sie die Dictionary-Tabellen, damit Oracle die Daten effektiv nutzen kann, während es die Ausführung wählt
Plan.

Die Syntax zum Sammeln von Statistiken über einen Index lautet:

INDEX ändern index_name


STATISTIKEN WIEDERHERSTELLEN;

Zum Beispiel:

INDEX customer_idx ändern


STATISTIKEN NEU AUFBAUEN;

In diesem Beispiel werden Statistiken für den Index namens customer_idx gesammelt.

Index fallen lassen

Die Syntax zum Löschen eines Index lautet:


DROP INDEX index_name;

Zum Beispiel:

INDEX customer_idx FALLEN LASSEN;

In diesem Beispiel wird die customer_id achse entfernt.

DBA-Verwandt
User Management
Einen Benutzer erstellen

ggOracle-Programmierung/SQL-SpickzettelDie Syntax zur Erstellung eines Benutzers lautet:

BENUTZER username ERSTELLEN IDENTIFIZIERT DURCH passwort;

Zum Beispiel:

BENUTZER brian ERSTELLEN IDENTIFIZIERT DURCH brianpass;

Gewährung von Privilegien

Die Syntax zum Gewähren von Berechtigungen lautet:

ERTEILEN Sie das Recht an Gulfnet_krishna(Benutzer);

Zum Beispiel:

VERLEIHE dba AN brian;

Change password

Die Syntax zum Ändern des Benutzerpassworts lautet:

BENUTZERALTERIEREN username IDENTIFIZIERTDURCH password;

Zum Beispiel:

ALTER USER brian IDENTIFIED BY brianpassword;

Importieren und Exportieren


Es gibt zwei Methoden zum Sichern und Wiederherstellen von Datenbanktabellen und Daten. Die Werkzeuge 'exp' und 'imp' sind
einfachere Werkzeuge, die auf kleinere Datenbanken ausgerichtet sind. Wenn Datenbankstrukturen komplexer werden oder sehr
groß (z. B. > 50 GB), dann ist die Verwendung des RMAN-Tools geeigneter.

Importieren Sie eine Dump-Datei mit IMP

Dieser Befehl wird verwendet, um Oracle-Tabellen und Tabellendaten aus einer *.dmp-Datei zu importieren, die mit dem 'exp'-Tool erstellt wurde.
Denke daran, dass dies ein Befehl ist, der über die Befehlszeile über $ORACLE_HOME/bin ausgeführt wird.
und nicht innerhalb von SQL*Plus.

Die Syntax zum Importieren einer Dump-Datei lautet:

imp SCHLÜSSELWORT=Wert

Es gibt eine Reihe von Parametern, die Sie für Schlüsselwörter verwenden können.

Um alle Schlüsselwörter anzuzeigen:

imp HELP=yes

Ein Beispiel:

imp brian/brianpassword DATEI=[Link] VOLLE=ja

PL/SQL
Betriebsarten

(unvollständig)

Arithmetische Operatoren

Addition: +
Subtraktion: -
Multiplikation: *
Division: /
Power (PL/SQL only): **

Beispiele

gibt allen Mitarbeitern eine Gehaltserhöhung von 5%

AKTUALISIEREN Sie Mitarbeiter SETGehalt = Gehalt * 1,05


WO customer_id = 5;

bestimmt den Nettolohn für alle Mitarbeiter


WÄHLE Lohn - Steuer AUS Mitarbeiter;

Vergleichsoperatoren

Größer als: >


Größer Als oder Gleich: >=
Weniger als: <
Weniger als oder gleich: <=
Äquivalenz: =
Ungleichheit: != ^= <> ¬= (hängt von der Plattform ab)

Beispiele

WÄHLEN Sie name, gehalt, e-mail AUS mitarbeitern WO gehalt > 40000;

WÄHLEN Sie den Namen AUS Kunden WO Kunden_ID < 6;

Stringoperatoren

Verketten: ||

Datumsoperatoren

Addition: +
Subtraktion: -

Types

Grundlegende PL/SQL-Typen

Skalartyp (definiert im Paket STANDARD): NUMMER, CHAR, VARCHAR2, BOOLEAN


BINARY_INTEGER, LONG\LONG RAW, DATUM, TIMESTAMP (und seine Familie einschließlich Intervallen)

Zusammengesetzte Typen (benutzerdefinierte Typen): TABELLE, DATENREKORD, VERSCHACHTELTE TABELLE und VARRAY

LOB-Datentypen: verwendet, um große Mengen unstrukturierter Daten zu speichern

%TYPE - verankerte Typvariablendeklaration

Die Syntax für verankerte Typdeklarationen ist

<var_name> <obj>%type [not null][:= <init-val>];

Zum Beispiel

Name Bü[Link]%Typ; /* Name ist definiert als der gleiche Typ wie die Spalte 'Titel' der Tabelle Bücher

Auftragsnummer(5,2) := 12,5;
x Kommission%Typ; /* x wird als derselbe Typ wie die Variable 'Kommission' definiert */

Hinweis:

Ankern Variablen ermöglichen die automatische Synchronisierung des Typs der Anker-Variablen mit
der Typ von <obj>, wenn es eine Änderung des <obj>-Typs gibt.
Verankerte Typen werden zur Compile-Zeit bewertet, also kompilieren Sie das Programm neu, um die Änderung widerzuspiegeln.
<obj> Typ in der verankerten Variablen.

Collections

Eine Sammlung ist eine geordnete Gruppe von Elementen, die alle vom gleichen Typ sind. Es ist ein allgemeines Konzept, das umfasst
lists, arrays, and other familiar datatypes. Each element has a unique subscript that determines its position
in der Sammlung.

--Definieren Sie einen PL/SQL-Datensatztyp, der ein Buch darstellt:


TYPbook_rec IST DATENSTRUKTUR
(title [Link]%ART
author buch.autor_nachname%TYPE,
year_published book.published_date%TYPE);

--definiere eine PL/SQL-Tabelle, die Einträge vom Typ book_rec enthält:


Typ book_rec_tab IST TABELLE VON book_rec%TYP
INDEX BY BINARY_INTEGER;

my_book_rec book_rec%TYPE;
my_book_rec_tab book_rec_tab%TYPE;
...
mein_buch_empf := mein_buch_empf_tabelle(5);
finde_autoren_buecher(mein_buch_empfehlung.autor);
...

Es gibt viele gute Gründe, Sammlungen zu verwenden.

Deutlich schnellere Ausführungsgeschwindigkeit, dank transparenter Leistungssteigerungen, einschließlich eines neuen


optimierender Compiler, besser integrierte native Kompilierung und neue Datentypen, die helfen
Zahlenverarbeitungsanwendungen.
Die FORALL-Anweisung, die noch flexibler und nützlicher geworden ist. Zum Beispiel ist FORALL jetzt
unterstützt nicht aufeinanderfolgende Indizes.

Reguläre Ausdrücke sind in PL/SQL in Form von drei neuen Funktionen verfügbar.
(REGEXP_INSTR, REGEXP_REPLACE und REGEXP_SUBSTR) und das REGEXP_LIKE
Operator für Vergleiche. (Für weitere Informationen siehe "Erste Ausdrücke" von Jonathan Gennick in
dieses Problem.)

Sammlungen, verbessert um Dinge wie den Vergleich von Sammlungen auf Gleichheit und Unterstützung für
Mengenoperationen auf geschachtelten Tabellen.

Siehe auch:

Sammlungen verwenden ([Link]


Oracle-Programmierung mit PL/SQL-Sammlungen ([Link]

Gespeicherte Logik
Funktionen

Eine Funktion muss einen Wert an den Aufrufer zurückgeben.

Die Syntax für eine Funktion ist

ERSTELLEN [ODER ERSETZEN] FUNKTION funktionsname [(parameter [,parameter])]


RÜCKGABE [Rückgabedatentyp]
IST
[declaration_section]
BEGINN
executable_section
return [Rückgabewert]

[AUSNAHME
exception_section]
ENDE [verfahren_name];

Zum Beispiel:

CREATE OR REPLACE FUNCTION to_date_check_null(dateString IN VARCHAR2, dateFormat IN VARCHAR2)


RETURN DATE IS
BEGIN
IF dateString IS NULL THEN
NULLzurückgeben;
SONST
return to_date(dateString, dateFormat);
ENDE WENN;
ENDE;

Verfahren

Ein Verfahren unterscheidet sich von einer Funktion darin, dass es keinen Wert an den Aufrufer zurückgeben muss.

Die Syntax für ein Verfahren ist:

ERSTELLEN [ODER ERSETZEN] PROZEDUR prozedurname [ (parameter [,parameter]) ]


IST
[declaration_section]
BEGIN
executable_section
[AUSNAHME
exception_section]
ENDE [verfahrens_name];

Wenn Sie eine Prozedur oder Funktion erstellen, können Sie Parameter definieren. Es gibt drei Arten von Parametern.
das kann erklärt werden:

[Link]- Der Parameter kann von der Prozedur oder Funktion referenziert werden. Der Wert des Parameters kann
nicht von dem Verfahren oder der Funktion überschrieben werden.
[Link] - Der Parameter kann von der Prozedur oder Funktion nicht referenziert werden, aber der Wert des
Parameter können von der Prozedur oder Funktion überschrieben werden.
[Link] OUT- Der Parameter kann von der Prozedur oder Funktion referenziert werden und der Wert des
Parameter können durch die Prozedur oder Funktion überschrieben werden.

Sie können auch einen STANDARDwert deklarieren;


ERSTELLEN [ODER ERSETZEN] PROCEDURE prozedurname [ (parameter [EINGANG|AUSGANG|EINGANGAUSGANG] [STANDARDwert] [,para

Das folgende ist ein einfaches Beispiel für ein Verfahren:

/* Zweck: zeigt die Studenten im Kurs, der durch courseId angegeben ist */

ERSTELLEN ODER ERSETZEN Prozedur GetNumberOfStudents


( courseId IN number, numberOfStudents OUT number )
Ist

Obwohl es bessere Möglichkeiten gibt, dieAnzahl der Studierenden zu berechnen,


Dies ist eine gute Gelegenheit, einen Cursor inAktion zu zeigen. */

Cursor student_cur ist


select studentId, studentName
vom Kurs
wo [Link] = courseId;
student_rec student_cur%ROWTYPE;

BEGIN
ÖFFNEN student_cur;
SCHLEIFE
FETCH student_cur INTO student_rec;
EXIT WENN student_cur%NICHT_GEFUNDEN;
numberOfStudents := numberOfStudents + 1;
END LOOP;
SCHLIEßE student_cur;

AUSNAHME
WENN ANDERE DANN
raise_application_error(-20001,'Ein Fehler ist aufgetreten - '||SQLCODE||' -FEHLER- '||SQL
ENDE GetNumberOfStudents;

anonymer Block

DEKLARIEREN
x NUMMER(4) := 0;
BEGINN
x := 1000;
BEGINN
x := x + 100;
AUSNAHME
WENN ANDERE DANN
x := x + 2;
ENDE;
x := x + 10;
dbms_output.put_line(x);
AUSNAHME
WENN ANDERE DANN
x := x + 3;
ENDE;

Parameter an gespeicherte Logik übergeben

Es gibt drei grundlegende Syntaxen, um Parameter an eine gespeicherte Prozedur zu übergeben: Positionsnotation, benannt
Notation und gemischte Notation.

Die folgenden Beispiele rufen dieses Verfahren für jede der grundlegenden Syntaxen für Parameterübergabe auf:

ERSTELLEN ODER ERSETZEN SIE DAS VERFAHREN create_customer( p_name IN varchar2,


p_id IN nummer,
p_address IN varchar2,
p_phone IN varchar2 ) IST
BEGIN
EINFÜGEN IN Kunde ( name, id, adresse, telefon )
WERTE ( p_name, p_id, p_address, p_phone );
END create_customer;

Positionsnotation

Geben Sie die gleichen Parameter in der gleichen Reihenfolge an, wie sie im Verfahren deklariert sind. Diese Notation ist
kompakt, aber wenn Sie die Parameter (insbesondere Literale) in der falschen Reihenfolge angeben, kann der Fehler schwer zu
detect. You must change your code if the procedure's parameter list changes.

erstelle_kunden('James Whitfield', 33, '301 Anystreet', '251-222-3154');

Benannte Notation

Specify the name of each parameter along with its value. An arrow (=>) serves as the association operator.
Die Reihenfolge der Parameter ist nicht wichtig. Diese Notation ist ausführlicher, macht aber deinen Code leichter zu
lesen und warten. Manchmal können Sie vermeiden, den Code zu ändern, wenn sich die Parameterliste des Verfahrens ändert, für
example if the parameters are reordered or a new optional parameter is added. Named notation is a good
Übung zur Verwendung für jeden Code, der die API eines anderen aufruft oder eine API definiert, die von jemand anderem verwendet werden soll.

create_customer(p_address => '301 Anystreet', p_id => 33, p_name => 'James Whitfield', p_phone =

Gemischte Notation

Specify the first parameters with positional notation, then switch to named notation for the last parameters.
You can use this notation to call procedures that have some required parameters, followed by some
optionale Parameter.

erstelle_kunde(v_name, v_id, p_adresse => '301 Anystreet', p_telefon => '251-222-3154');

Tabellenfunktionen

ERSTELLEN TYP object_row_type ALS OBJECT (


object_type VARCHAR(18),
object_name VARCHAR(30)
);

ERSTELLEN SIE EINEN TYPobject_table_type als TABELLE VON object_row_type;

ERSTELLEN ODER ERSETZEN FUNKTION get_all_objects


RETURN object_table_type PIPELINED AS
BEGIN
FÜR cur IN (SELECT * FROM all_objects)
SCHLEIFE
PIPE ROW(objekt_reihen_typ(cur.objekt_typ, cur.objekt_name));
ENDEDERSCHLEIFE;

RÜCKGABE;
ENDE;
WÄHLEN SIE * AUS TABELLE(get_all_objects);

Flusskontrolle

Bedingte Operatoren

UND
oder
not: NOT

Beispiel

WENN Gehalt > 40000 UND Gehalt <= 70000 DANN

Wenn/dann/ansonsten

WENN [Bedingung] DANN


[statements]
SONSTWENN [Bedingung] DANN
[statements}
ELSEIF [Bedingung] DANN
[statements}
SONSTWENN [Bedingung] DANN
[statements}
SONST WENN [Bedingung] DANN
[statements}
SONSTWENN [Bedingung] DANN
[statements}
SONSTWENN [Bedingung] DANN
[statements}
SONSTWENN [Bedingung] DANN
[statements}
SONST
[statements}
ENDE WENN;

Arrays

Assoziative Arrays

Stark typisierte Arrays, nützlich als In-Memory-Tabellen

Beispiel

Ein sehr einfaches Beispiel, der Index ist der Schlüssel zum Zugreifen auf das Array, sodass es nicht notwendig ist, durchzulaufen.
die gesamte Tabelle, es sei denn, Sie beabsichtigen, Daten aus jeder Zeile des Arrays zu verwenden.
Der Index kann auch ein numerischer Wert sein.

ERKLÄREN
--AssoziativesArray, indiziert durch String:

-- Assoziatives Array-Typ
TYPE population IS TABLE OF NUMBER
INDEX BY VARCHAR2(64);
-- Assoziatives Array-Variablen
city_population population;
ich VARCHAR2(64);
BEGIN
-- neue Elemente zum assoziativenArray hinzufügen:
city_population('Smallville') := 2000;
city_population('Midland') := 750000;
city_population('Megalopolis') := 1000000;
--ÄnderedenWert,dermitdemSchlüssel'Smallville'verknüpftist:
city_population('Smallville') := 2001;
-- Drucken Sie ein assoziativesArray, indem Sie es durchlaufen:
i := stadt_bevö[Link];
WÄHREND i NICHTNULLISTSCHLEIFE
DBMS_OUTPUT.PUT_LINE
Die Bevölkerung von
i := stadt_bevölkerung.NÄCHSTE(i);
END LOOP;

-- Gewählten Wert aus einer assoziativenArray ausgeben:


DBMS_OUTPUT.PUT_LINE('Ausgewerteter Wert');
DBMS_OUTPUT.PUT_LINE('Bevölkerung von
ENDE;
/

-- Printed results:
Die Bevölkerung der Megalopolis beträgt 1.000.000.
Die Bevölkerung von Midland beträgt 750.000
Die Bevölkerung von Smallville beträgt 2001.

Komplexeres Beispiel mit einem Datensatz

DEKLARIEREN
--Aufzeichnungsart
TYPapollo_rec IST DATENAUFTEILUNG
(
kommandant VARCHAR2(100)
Start DATE
);
-- Assoziatives Array-Typ
TYP apollo_type_arr IST TABELLE VON apollo_rec INDEXIERT VON VARCHAR2(100);
-- Assoziatives Array-Variable
apollo_arr apollo_type_arr;
BEGINN
apollo_arr('Apollo 11').commander := 'Neil Armstrong';
apollo_arr('Apollo 11').launch := DATUM('16. Juli 1969','Monat dd, yyyy');
apollo_arr('Apollo 12').commander := 'Pete Conrad';
apollo_arr('Apollo 12').launch := DATUM('14. November 1969','Monat dd, yyyy');
apollo_arr('Apollo 13').commander := 'James Lovell';
apollo_arr('Apollo 13').launch := DATUM('11. April 1970', 'Monat dd, yyyy');
apollo_arr('Apollo 14').commander := 'Alan Shepard';
apollo_arr('Apollo 14').launch := TO_DATE('January 31, 1971','Month dd, yyyy');

DBMS_OUTPUT.PUT_LINE(apollo_arr('Apollo 11').kommandant);
DBMS_OUTPUT.PUT_LINE(apollo_arr('Apollo 11').start);
Ende;
/

-- Gedruckte Ergebnisse:
Neil Armstrong
16-JUL-69

APEX
String-Ersetzung
* In SQL: :VARIABLE
* In PL/SQL: V('VARIABLE') oder NV('VARIABLE')
* Im Text: &VARIABLE.

Externe Links
PSOUG-Referenz ([Link]

Mehr Wikibooks
Einführung in SQL

Abgerufen von "[Link]


title=Oracle_Programming/SQL_Cheatsheet&oldid=2680244"

Diese Seite wurde zuletzt am 10. Juli 2014 um 16:49 Uhr geändert.
Der Text ist verfügbar unter demCreative Commons Namensnennung-Weitergabe unter gleichen Bedingungen [Link]ätzliche Bedingungen
may apply. By using this site, you agree to the Terms of Use undDatenschutzerklärung.

Das könnte Ihnen auch gefallen