Oracle Programmierung - SQL Spickzettel
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.
LÖSCHEN
Die DELETE-Anweisung wird verwendet, um Zeilen in einer Tabelle zu löschen.
AKTUALISIEREN
Die UPDATE-Anweisung wird verwendet, um Zeilen in einer Tabelle zu aktualisieren.
Aktualisiert die Spalte Rechnung als bezahlt, wenn die Spalte bezahlt mehr als null hat.
Die Syntax zum Erstellen einer Prüfklausel mit einer CREATE TABLE-Anweisung lautet:
Zum Beispiel:
Die Syntax zum Erstellen einer einzigartigen Einschränkung mit einem CREATE TABLE-Befehl lautet:
Zum Beispiel:
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
Zum Beispiel:
SEQUENZ ÄNDERN
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.
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 );
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.
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.
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.
Rückgabenpl/sqlDa das "p" in "pl/sql" an der 8. Stelle im String steht (gezählt ab 1 bei dem
"o" in "oracle")
RückgabenSpickzettel"da "c" an der 15. Stelle in der Zeichenkette steht und "t" das letzte Zeichen ist
String.
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.
DDL SQL
Tische
Tabelle erstellen
Zum Beispiel:
ERSTELLENTABELLE mitarbeiter
(id int, name varchar(20));
Spalte hinzufügen
ÄNDERNSIEDIETABELLE[Tabellenname]
HINZUFÜGEN ( [Spaltenname] [Datentyp], ... );
Zum Beispiel:
ÄNDERNSIEDIETABELLE[Tabellenname]
Zum Beispiel:
Spalte löschen
Zum Beispiel:
Einschränkungen
WÄHLEN
table_name,
constraint_name,
constraint_type
VON user_constraints;
Wählen Sie * tabellen_name;
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;
Zum Beispiel:
Einschränkungen löschen
Zum Beispiel:
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.
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:
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:
Die folgenden Statistiken werden bei der Erstellung des Index gesammelt:
In Oracle sind Sie nicht darauf beschränkt, Indizes nur auf Spalten zu erstellen. Sie können funktionsbasierte Indizes erstellen.
Indizes.
Zum Beispiel:
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:
Zum Beispiel:
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:
Zum Beispiel:
In diesem Beispiel werden Statistiken für den Index namens customer_idx gesammelt.
Zum Beispiel:
DBA-Verwandt
User Management
Einen Benutzer erstellen
Zum Beispiel:
Zum Beispiel:
Change password
Zum Beispiel:
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.
imp SCHLÜSSELWORT=Wert
Es gibt eine Reihe von Parametern, die Sie für Schlüsselwörter verwenden können.
imp HELP=yes
Ein Beispiel:
PL/SQL
Betriebsarten
(unvollständig)
Arithmetische Operatoren
Addition: +
Subtraktion: -
Multiplikation: *
Division: /
Power (PL/SQL only): **
Beispiele
Vergleichsoperatoren
Beispiele
WÄHLEN Sie name, gehalt, e-mail AUS mitarbeitern WO gehalt > 40000;
Stringoperatoren
Verketten: ||
Datumsoperatoren
Addition: +
Subtraktion: -
Types
Grundlegende PL/SQL-Typen
Zusammengesetzte Typen (benutzerdefinierte Typen): TABELLE, DATENREKORD, VERSCHACHTELTE TABELLE und VARRAY
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.
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);
...
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:
Gespeicherte Logik
Funktionen
[AUSNAHME
exception_section]
ENDE [verfahren_name];
Zum Beispiel:
Verfahren
Ein Verfahren unterscheidet sich von einer Funktion darin, dass es keinen Wert an den Aufrufer zurückgeben muss.
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.
/* Zweck: zeigt die Studenten im Kurs, der durch courseId angegeben ist */
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;
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:
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.
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.
Tabellenfunktionen
RÜCKGABE;
ENDE;
WÄHLEN SIE * AUS TABELLE(get_all_objects);
Flusskontrolle
Bedingte Operatoren
UND
oder
not: NOT
Beispiel
Wenn/dann/ansonsten
Arrays
Assoziative Arrays
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;
-- 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.
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
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.