0% menganggap dokumen ini bermanfaat (0 suara)
2 tayangan22 halaman

Cheat Sheet SQL dan PL/SQL Oracle

Dokumen ini memberikan ringkasan tentang fungsi Oracle SQL dan PL/SQL dalam bentuk lembar contekan. Ini mencakup kueri dasar, pernyataan DDL, fungsi string, dan konsep PL/SQL. Sumber daya ini dimaksudkan untuk menjadi referensi cepat bagi pengembang Oracle dan administrator basis data yang baru maupun yang berpengalaman. Bagian-bagian termasuk deskripsi perintah umum seperti SELECT, INSERT, UPDATE, dan DELETE serta konsep pemrograman seperti urutan, prosedur tersimpan, dan fungsi manipulasi string.

Diterjemahkan oleh

ScribdTranslations
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
2 tayangan22 halaman

Cheat Sheet SQL dan PL/SQL Oracle

Dokumen ini memberikan ringkasan tentang fungsi Oracle SQL dan PL/SQL dalam bentuk lembar contekan. Ini mencakup kueri dasar, pernyataan DDL, fungsi string, dan konsep PL/SQL. Sumber daya ini dimaksudkan untuk menjadi referensi cepat bagi pengembang Oracle dan administrator basis data yang baru maupun yang berpengalaman. Bagian-bagian termasuk deskripsi perintah umum seperti SELECT, INSERT, UPDATE, dan DELETE serta konsep pemrograman seperti urutan, prosedur tersimpan, dan fungsi manipulasi string.

Diterjemahkan oleh

ScribdTranslations
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd

Kumpulan Cheat Sheet Oracle Programming/SQL

Lembar contekan ini mencakup sebagian besar fungsi dasar yang dibutuhkan DBA Oracle untuk menjalankan kueri dasar
dan melakukan tugas dasar. Ini juga berisi informasi yang sering digunakan oleh programmer PL/SQL untuk menulis
prosedur yang disimpan. Sumber daya ini berguna sebagai pengantar bagi individu yang baru mengenal Oracle, atau sebagai
referensi bagi mereka yang berpengalaman menggunakan Oracle.

Banyak informasi tentang Oracle tersedia di seluruh internet. Kami mengembangkan sumber daya ini untuk membuatnya
lebih mudah bagi programmer dan DBA untuk menemukan sebagian besar dasar-dasar di satu tempat. Topik di luar cakupan
"cheatsheet" umumnya menyediakan tautan untuk penelitian lebih lanjut.

Referensi Oracle Lainnya

Referensi XML Oracle-- referensi XML masih dalam tahap awal, tetapi sedang berkembang dengan baik.

Daftar Isi
1 PILIH
2 PILIH KE DALAM
3 INSERT
4 HAPUS
5 PEMBARUAN
5.1 Menetapkan batasan pada sebuah tabel
5.2 Indeks unik pada tabel
6 URUTAN
6.1 BUAT SEKUENS
6.2 UBAH SEKUENSI
7 Menghasilkan kueri dari sebuah string
8 Operasi string
8.1 Panjang
8.2 Instr
8.3 Ganti
8.4 Substr
8.5 Trim
9 DDL SQL
9.1 Tabel
9.1.1 Buat tabel
9.1.2 Tambahkan kolom
9.1.3 Ubah kolom
9.1.4 Hapus kolom
9.1.5 Batasan
[Link] Jenis dan kode batasan
[Link] Menampilkan batasan
[Link] Memilih batasan referensial
[Link] Membuat batasan unik
[Link] Menghapus batasan
9.2 INDEKS
9.2.1 Membuat indeks
9.2.2 Buat indeks berbasis fungsi
9.2.3 Ganti Nama Indeks
9.2.4 Mengumpulkan statistik pada suatu indeks
9.2.5 Hapus indeks
10 Terkait DBA
10.1 Manajemen Pengguna
10.1.1 Membuat pengguna
10.1.2 Pemberian hak istimewa
10.1.3 Ganti kata sandi
10.2 Impor dan ekspor
10.2.1 Impor file dump menggunakan IMP
11 PL/SQL
11.1 Operator
11.1.1 Operator aritmatika
[Link] Contoh
11.1.2 Operator perbandingan
[Link] Contoh
11.1.3 Operator string
11.1.4 Operator tanggal
11.2 Jenis
11.2.1 Tipe Dasar PL/SQL
11.2.2 %TIPE - deklarasi variabel tipe terikat
11.2.3 Koleksi
11.3 Logika yang Disimpan
11.3.1 Fungsi
11.3.2 Prosedur
11.3.3 blok anonim
11.3.4 Mengoper parameter ke logika tersimpan
[Link] Notasi posisi
[Link] Notasi bernama
[Link] Notasi campuran
11.3.5 Fungsi tabel
11.4 Kontrol aliran
11.4.1 Operator Bersyarat
11.4.2 Contoh
11.4.3 Jika/kemudian/selain itu
11.5 Array
11.5.1 Array Asosiatif
11.5.2 Contoh
12 APEX
12.1 Substitusi string
13 Tautan eksternal
14 Wikibook Lainnya

PILIH
Pernyataan SELECT digunakan untuk mengambil baris yang dipilih dari satu atau lebih tabel, tabel objek, tampilan,
tampilan objek, atau tampilan materialisasi.

PILIH *
DARI minuman
DIMANA field1 = 'Kona'
DAN field2 = 'kopi'
DAN field3 = 122;

PILIH KE DALAM

Pilih menjadi mengambil nilai nama, alamat dan nomor telepon dari tabel karyawan, dan menempatkannya
ke dalam variabel v_employee_name, v_employee_address, dan v_employee_phone_number.

Ini hanya berfungsi jika kueri cocok dengan satu item. Jika kueri tidak mengembalikan baris, itu akan menimbulkan
Pengecualian built-in NO_DATA_FOUND. Jika kueri Anda mengembalikan lebih dari satu baris, Oracle mengeluarkan
eksepsi TERLALU_BANYAK_BARIS.

PILIH nama, alamat, nomor_telepon


v_nama_karyawan
DARI karyawan
DIMANA employee_id = 6;

SISIPKAN

Pernyataan INSERT menambahkan satu atau lebih baris data baru ke tabel basis data.

masukkan menggunakan kata kunci VALUES

MASUKKAN KE dalam_nama_tabel NILAI (' Nilai1', 'Nilai2', ... );


MASUKKAN KE dalam_table_nama( Kolom1, Kolom2, ... ) NILAI ( 'Nilai1', 'Nilai2', ... );

masukkan menggunakan pernyataan SELECT

MASUKKAN KE dalam table_name( PILIH Value1, Value2, ... dari table_name );


INSERT INTO nama_tabel(Kolom1, Kolom2, ...) ( SELECT Nilai1, Nilai2, ... dari nama_tabel );

HAPUS
Pernyataan DELETE digunakan untuk menghapus baris dalam sebuah tabel.

menghapus baris yang sesuai dengan kriteria

HAPUS DARI nama_tabel DI MANA some_column=some_value


HAPUS DARI pelanggan DI MANA terjual = 0;

PERBARUI
Pernyataan UPDATE digunakan untuk memperbarui baris dalam sebuah tabel.

memperbarui seluruh kolom tabel itu

UPDATE customer SET state='CA';

memperbarui catatan spesifik dari tabel misalnya:


UPDATE customer SET name='Joe' WHERE customer_id=10;

memperbarui kolom faktur sebagai dibayar ketika kolom dibayar memiliki lebih dari nol.

UPDATE movies SET invoice='dibayar' WHERE paid > 0;

Menetapkan batasan pada tabel

Sintaksis untuk membuat batasan cek menggunakan pernyataan CREATE TABLE adalah:

Buat TABEL nama_tabel


(
kolom1 tipe data null/tidak null,
kolom2 tipe data null/tidak null,
...
KENDALA constraint_name PERIKSA (column_name kondisi) [NONAKTIFKAN]
);

Sebagai contoh:

Buat TABEL pemasok


(
supplier_id numeric(4)
varchar2(50)
PEMERIKSAAN_ID_PASOKAN
PERIKSA (supplier_id ANTARA 100 dan 9999)
);

Indeks unik pada tabel

Sintaksis untuk membuat batasan unik menggunakan pernyataan CREATE TABLE adalah:

BUAT TABEL nama_tabel


(
kolom1 tipe data null/tidak null,
tipe data kolom2 null/tidak null,
...
KONSTRAN kunci_kontra UNIK (kolom1, kolom2, kolom_n)
);

Misalnya:

BUAT TABEL pelanggan


(
id integer tidak null,
nama varchar2(20),
BATASAN customer_id_constraint UNIK (id)
);

Contoh CREATE TABLE OOP (ID NUMBER(20), NAME VARCHAR2(20));

TABEL DIBUAT
SQL> ALTER TABLE OPP ADD CONSTRAINT OPP_ID_UK UNIQUE(ID);

TABEL DIUBAH

URUTAN
Urutan adalah objek basis data yang dapat digunakan oleh banyak pengguna untuk menghasilkan bilangan bulat unik. Urutan
generator menghasilkan nomor urut, yang dapat membantu secara otomatis menghasilkan kunci primer yang unik, dan
koordinasikan kunci di antara beberapa baris atau tabel.

BUAT SEKUENS

Sintaksis untuk suatu urutan adalah:

BUAT SEKUENS sequence_name


Nilai MINVALUE
nilai MAXVALUE
MULAI DENGAN nilai
TAMBAHKAN NILAI
nilai CACHE;

Sebagai contoh:

Buat urutan supplier_seq


MINVALUE 1
MAXVALUE 999999999999999999999999999
MULAI DENGAN 1
TINGKATKAN DENGAN 1
CACHE 20;

Ubah Urutan

Tingkatkan suatu urutan sebesar jumlah tertentu:

UBAH URUTAN <nama_urut> TAMBAH <bilangan>;


Ubah SEQUENCE seq_inc_by_ten INCREMENT BY 10;

Ubah nilai maksimum dari suatu urutan:

Ubah SEQUENCE <sequence_name> MAXVALUE <integer>;


UBAH SEKUENS seq_maxval MAXVALUE 10;

Atur urutan untuk siklus atau tidak siklus:

UBAH SEKUENSI <nama_sekuens> <SILANG | TANPA SILANG>;


Ubah SEQUENCE seq_cycle NOCYCLE;

Konfigurasi urutan untuk menyimpan nilai dalam cache:

ALTER SEQUENCE <sequence_name> CACHE <integer> | NOCACHE;


UBAH SEKUENS seq_cache TANPA CACHE;
Atur apakah akan mengembalikan nilai dalam urutan atau tidak

UBAH SEQUENSI <nama_sekuens> <URUTAN | TIDAKURUTAN>;


UBAH SEKUENS seq_order TANPA URUTAN;

URUTAN SEKUENSI LTER

Buat kueri dari sebuah string

Terkadang perlu untuk membuat kueri dari string. Artinya, jika programmer ingin membuat kueri
pada saat runtime (menghasilkan kueri Oracle secara langsung), berdasarkan seperangkat keadaan tertentu, dll.

Perhatian harus diambil untuk tidak menyisipkan data yang diberikan pengguna langsung ke dalam string kueri dinamis, tanpa terlebih dahulu
memeriksa data dengan sangat ketat untuk karakter pelarian SQL; jika tidak, Anda akan menghadapi risiko signifikan untuk mengaktifkan
serangan injeksi data pada kode Anda.

Ini adalah contoh yang sangat sederhana tentang bagaimana kueri dinamis dilakukan. Tentu saja, ada banyak cara yang berbeda.
untuk melakukan ini; ini hanyalah contoh dari fungsionalitas.

PROSEDUR oracle_runtime_query_pcd ADALAH


TIPE ref_cursor ADALAH REF KURSOR;
l_kursor ref_cursor;

v_query varchar2(5000);
v_nama varchar2(64);
MULAI
v_query := 'PILIH nama DARI karyawan DIMANA employee_id=5';
BUKA l_cursor UNTUK v_query;
GILIRAN
AMBIL l_cursor KE dalam v_name;
KELUAR KETIKAl_cursor%TIDAKDITEMUKAN;
Akhir LOOP;
TUTUP l_cursor;
AKHIR;

Operasi string

Panjang

Length mengembalikan sebuah bilangan bulat yang mewakili panjang dari sebuah string yang diberikan. Ini dapat dirujuk sebagai: lengthb,
lengthc,length2, danlength4.

panjang( string1 );

PILIH panjang('halo dunia') DARI ganda;


ini mengembalikan 11, karena argumen terdiri dari 11 karakter termasuk spasi

PILIH panjangb('halo dunia') DARI ganda;


PILIH panjangc('hello world') DARI dual;
PILIH panjang2('halo dunia') DARI ganda;
PILIH length4('hello world') DARI dual;
ini juga mengembalikan 11, karena fungsi yang dipanggil setara
Instr

Instr mengembalikan sebuah bilangan bulat yang menentukan lokasi dari sub-string dalam sebuah string. Programmer dapat
menentukan tampilan mana dari string yang ingin mereka deteksi, serta posisi awal. Sebuah ketidakberhasilan
pencarian menghasilkan 0.

instr( string1, string2, [ posisi_mulai ], [ kemunculan_ke-n ] )

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


ini mengembalikan 10, karena kemunculan pertama dari " / " adalah karakter kesepuluh

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


ini mengembalikan 17, karena kemunculan kedua dari "e" adalah karakter ketujuh belas

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


ini mengembalikan 0, karena kemunculan pertama dari "/" terjadi sebelum titik awal, yaitu yang ke-12

Ganti

Ganti melihat melalui sebuah string, mengganti satu string dengan yang lain. Jika tidak ada string lain yang ditentukan, itu menghapus
string yang ditentukan dalam parameter string pengganti.

ganti( string1, string_yang_diganti, [ string_pengganti ] );


saya tidak di sini
saya tidak di sini

Substr

Substr mengembalikan sebagian dari string yang diberikan. "start_position" bersifat 1-based, bukan 0-based. Jika "start_position"
adalah negatif, substr menghitung dari akhir string. Jika "panjang" tidak diberikan, substr secara default menjadi
panjang sisa dari string.

substr(string, posisi_awal [, panjang])

PILIH substr('cheatsheet oracle pl/sql', 8, 6) DARI dual;

mengembalikanpl/sqlkarena "p" dalam "pl/sql" berada di posisi ke-8 dalam string (menghitung dari 1 pada
o dalam "oracle"

PILIH substr('oracle pl/sql cheatsheet',15) DARI dual;

mengembalikanlembar contekankarena "c" berada di posisi ke-15 dalam string dan "t" adalah karakter terakhir dalam
string.

PILIH substr('oracle pl/sql cheatsheet', -10,5) DARI dual;


mengembalikanmenipu" karena "c" adalah karakter ke-10 dalam string, menghitung dari akhir string dengan
"t" sebagai posisi 1.

Pangkas

Fungsi-fungsi ini dapat digunakan untuk memfilter karakter yang tidak diinginkan dari string. Secara default, mereka menghapus spasi, tetapi
set karakter dapat ditentukan untuk dihapus juga.

trim ( [ leading | trailing | both ] [ trim-char ] dari string-yang-akan-dipotong );


potong (' menghapus spasi di kedua sisi ');
ini menghapus spasi di kedua sisi

ltrim ( string-yang-akan-ditrim [, set-karakter-pemangkasan ] );


ltrim ( menghapus spasi di sisi kiri ');
ini menghapus spasi di sisi kiri "

rtrim ( string-yang-akan-dipotong [, set-karakter-pemangkas ] );


rtrim ( menghapus spasi di sisi kanan ');
inimengembalikan" menghapus spasi di sisi kanan

DDL SQL
Meja

Buat tabel

Sintaksis untuk membuat tabel adalah:

BUAT TABEL [nama tabel]


( [nama kolom] [tipe data], ... );

Misalnya:

BUAT TABEL karyawan


(id int, nama varchar(20));

Tambahkan kolom

Sintaksis untuk menambahkan kolom adalah:

ALTER TABLE [nama tabel]


TAMBAHKAN ( [nama kolom] [tipe data], ... );

Misalnya:

UBAH TABEL karyawan


TAMBAH (id int)
Ubah kolom

Sintaksis untuk memodifikasi kolom adalah:

ALTER TABLE [nama tabel]


UBAH ( [nama kolom] [jenis data baru] );

Sintaks dan contoh perintah ALTER table:

Sebagai contoh:

UBAH TABEL karyawan


MODIFIKASI( jamSakit s float );

Hapus kolom

Sintaksis untuk menghapus kolom adalah:

Ubah Tabel [nama tabel]


HAPUS KOLOM [nama kolom];

Sebagai contoh:

UBAH TABEL karyawan


HAPUS KOLOM vacationPay;

Keterbatasan

Jenis dan kode pembatasan

Kode Tipe Deskripsi Tipe Tindakan Pada Tingkat

C Periksa di atas meja Kolom


O Hanya Baca pada tampilan Objek
P Kunci Utama Objek
R Referensi AKA Kunci Asing Kolom
U Kunci Unik Kolom
V Periksa Opsi pada tampilan Objek

Menampilkan batasan

Pernyataan berikut menunjukkan semua kendala dalam sistem:

PILIH
nama_tabel
nama_konstraint
tipe_konstraint
DARI user_constraints;
pilih * nama_tabel;

Memilih batasan referensial

Pernyataan berikut menunjukkan semua batasan referensial (kunci asing) dengan sumber dan
pasangan tabel/kolom tujuan:

PILIH
c_list.CONSTRAINT_NAME sebagai NAMA,
c_src.TABLE_NAME sebagai SRC_TABLE
c_src.COLUMN_NAME sebagai SRC_COLUMN
c_dest.TABLE_NAME sebagai DEST_TABLE,
c_dest.COLUMN_NAME
DARI SEMUA_KONSTRIAN c_list,
SEMUA_KONS_COL c_src,
SEMUA_KOLOM_KONS c_dest
DI MANA c_list.CONSTRAINT_NAME = c_src.CONSTRAINT_NAME
DAN c_list.R_CONSTRAINT_NAME = c_dest.CONSTRAINT_NAME
DAN c_list.CONSTRAINT_TYPE = 'R'
GROUP BY c_list.CONSTRAINT_NAME,
c_src.NAMA_TABEL,
c_src.NAMA_KOLOM,
c_dest.NAMA_TABEL,
c_dest.NAMA_KOLOM;

Membuat batasan unik

Sintaksis untuk batasan unik adalah:

UBAH TABEL [nama tabel]


TAMBAHKAN BATASAN [nama batasan] UNIK( [nama kolom] ) MENGGUNAKAN INDEKS [nama indeks];

Sebagai contoh:

UBAH TABEL karyawan


TAMBAHKAN KETENTUAN uniqueEmployeeId UNIK(employeeId) MENGGUNAKAN INDEKS ourcompanyIndx_tbs;

Menghapus batasan

Sintaksis untuk menghapus (menghilangkan) suatu batasan adalah:

UBAH TABEL [nama tabel]


HAPUS KETERBATASAN [nama batasan];

Sebagai contoh:

UBAH TABEL karyawan


HAPUS BATAS uniqueEmployeeId;

Lihat juga:Keterbatasan Oracle ([Link]

INDIKATOR
Indeks adalah metode yang mengambil catatan dengan efisiensi yang lebih besar. Indeks membuat entri untuk setiap
nilai yang muncul di kolom yang diindeks. Secara default, Oracle membuatPohon Bindeks.

Buat indeks

Sintaksis untuk membuat indeks adalah:

BUAT INDEKS [UNIK] nama_indeks


DI table_name (kolom1, kolom2, . kolom_n)
[ HITUNG STATISTIK ]

UNIQUE menunjukkan bahwa kombinasi nilai dalam kolom yang diindeks harus unik.

KOMPUTE STATISTIK memberi tahu Oracle untuk mengumpulkan statistik selama pembuatan indeks. Statistik
kemudian digunakan oleh pengoptimal untuk memilih rencana eksekusi yang optimal saat pernyataan dijalankan.

Sebagai contoh:

BUAT INDEKS customer_idx


PADA pelanggan (nama_pelanggan);

Dalam contoh ini, sebuah indeks telah dibuat pada tabel pelanggan yang disebut customer_idx. Ini hanya terdiri dari
field customer_name.

Yang berikut membuat indeks dengan lebih dari satu bidang:

BUAT INDEKS customer_idx


PADA pemasok (nama_pelanggan, negara);

Yang berikut mengumpulkan statistik saat pembuatan indeks:

BUAT INDEKS customer_idx


ON supplier (customer_name, country)
HITUNG STATISTIK;

Buat indeks berbasis fungsi

Di Oracle, Anda tidak dibatasi untuk hanya membuat indeks pada kolom. Anda dapat membuat indeks berbasis fungsi.
indeks.

Sintaksis yang membuat indeks berbasis fungsi adalah:

BUAT INDeks [UNIK] index_name


PADA table_name (fungsi1, fungsi2, . fungsi_n)
[ HITUNG STATISTIK ]

Misalnya:

BUAT INDEKS customer_idx


PADApelanggan (HURUF BESAR(nama_pelanggan));
Sebuah indeks, berdasarkan evaluasi huruf kapital dari bidang customer_name, telah dibuat.

Untuk memastikan bahwa optimizer Oracle menggunakan indeks ini saat menjalankan pernyataan SQL Anda, pastikan bahwa
UPPER(customer_name) tidak mengevaluasi menjadi nilai NULL. Untuk memastikan ini, tambahkan
UPPER(customer_name) TIDAK NULL pada klausa WHERE Anda sebagai berikut:

PILIH customer_id, customer_name, UPPER(customer_name)


DARI pelanggan
DI MANA UPPER(nama_pelanggan) TIDAK NULL
URUTKAN MENURUT UPPER(nama_pelanggan);

Ganti Nama Indeks

Sintaksis untuk mengganti nama indeks adalah:

Ubah Indeks index_name


GANTI NAMAMENJADI new_index_name;

Misalnya:

UBAH INDEKSKAN customer_id


GANTI NAMAMENJADI new_customer_id;

Dalam contoh ini, customer_id diganti namanya menjadi new_customer_id.

Kumpulkan statistik pada suatu indeks

Jika Anda perlu mengumpulkan statistik tentang indeks setelah pertama kali dibuat atau Anda ingin memperbarui statistik, Anda
Anda selalu dapat menggunakan perintah ALTER INDEX untuk mengumpulkan statistik. Anda mengumpulkan statistik sehingga oracle dapat
gunakan indeks dengan cara yang efektif. Ini menghitung ulang ukuran tabel, jumlah baris, blok, segmen
dan memperbarui tabel kamus sehingga oracle dapat menggunakan data secara efektif saat memilih eksekusi
rencana.

Sintaksis untuk mengumpulkan statistik pada suatu indeks adalah:

ALTER INDEX index_name


Membangun Kembali Statistik Komputasi;

Sebagai contoh:

UBAH INDEKS customer_idx


DIBANGUN KEMBALI STATISTIK KOMPUTASI;

Dalam contoh ini, statistik dikumpulkan untuk indeks yang disebut customer_idx.

Hapus indeks

Sintaksis untuk menghapus indeks adalah:


HAPUS INDEKS index_name;

Misalnya:

HAPUS INDEKS customer_idx;

Dalam contoh ini, customer_idxis dihapus.

Terkait DBA
Manajemen Pengguna

Membuat pengguna

ggOracle Pemrograman/Panduan SQL Sintaks untuk membuat pengguna adalah:

BUAT PENGGUNAusername DIIDENTIFIKASI DENGAN kata_sandi;

Sebagai contoh:

BUAT USER brian DIIDENTIFIKASI DENGAN brianpass;

Memberikan hak istimewa

Sintaksis untuk memberikan hak istimewa adalah:

BERIKAN hak istimewa KE Gulfnet_krishna(pengguna);

Misalnya:

BERIKAN dba KEPADAbrian;

Ganti kata sandi

Sintaksis untuk mengubah kata sandi pengguna adalah:

UBAH USER username DIIDENTIFIKASI DENGAN password;

Misalnya:

UBAHPENGGUNAbrianDIIDENTIFIKASIDENGANkatasandibrianpassword;

Impor dan ekspor


Ada dua metode untuk mencadangkan dan memulihkan tabel dan data basis data. Alat 'exp' dan 'imp' adalah
alat yang lebih sederhana ditujukan untuk basis data yang lebih kecil. Jika struktur basis data menjadi lebih kompleks atau sangat
besar ( > 50 GB misalnya) maka menggunakan alat RMAN lebih sesuai.

Impor file dump menggunakan IMP

Perintah ini digunakan untuk mengimpor tabel Oracle dan data tabel dari file *.dmp yang dibuat oleh alat 'exp'.
Ingatlah bahwa ini adalah perintah yang dieksekusi dari baris perintah melalui $ORACLE_HOME/bin
dan tidak di dalam SQL*Plus.

Sintaksis untuk mengimpor file dump adalah:

imp KATA_KUNCI=nilai

Ada sejumlah parameter yang dapat Anda gunakan untuk kata kunci.

Untuk melihat semua kata kunci:

imp BANTUAN=ya

Sebuah contoh:

imp brian/brianpassword FILE=[Link] FULL=yes

PL/SQL
Operator

(tidak lengkap)

Operator aritmatika

Penambahan: +
Pengurangan: -
Perkalian: *
Pembagian: /
Daya (hanya PL/SQL): **

Contoh

memberikan semua karyawan kenaikan 5%

PERBARUI karyawan SET gaji = gaji * 1.05


DIMANA customer_id = 5;

menentukan gaji setelah pajak untuk semua karyawan


PILIH gaji - pajak DARI karyawan;

Operator perbandingan

Lebih Besar Dari: >


Lebih Besar Dari atau Sama Dengan: >=
Kurang Dari: <
Kurang Dari atau Sama Dengan: <=
=
Tidak sama: != ^= <> ¬= (tergantung pada platform)

Contoh

PILIH nama, gaji, email DARI karyawan DI MANA gaji > 40000;

PILIH nama DARI pelanggan DI MANA customer_id < 6;

Operator String

Gabungkan: ||

Operator tanggal

Penjumlahan: +
Pengurangan: -

Tipe

Tipe Dasar PL/SQL

Tipe skalar (didefinisikan dalam paket STANDAR): ANGKA, KARAKTER, VARCHAR2, BOOLEAN,
BINARY_INTEGER, LONG\LONG RAW, TANGGAL, STAMPS WAKTU (dan keluarganya termasuk interval)

Tipe komposit (tipe yang ditentukan pengguna): TABEL, REKAM, TABEL NESTED dan VARRAY

Tipe data LOB: digunakan untuk menyimpan sejumlah besar data yang tidak terstruktur

%TIPE - deklarasi variabel tipe berlabuh

Sintaksis untuk deklarasi tipe yang teranchor adalah

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

Misalnya

nama [Link]%tipe; /* nama didefinisikan sebagai tipe yang sama dengan kolom 'judul' dari tabel Buku

nomor komisi(5,2) := 12.5;


x komisi%tipe; /* x didefinisikan sebagai jenis yang sama dengan variabel 'komisi' */

Catatan:

Variabel berlabuh memungkinkan sinkronisasi otomatis jenis variabel berlabuh dengan


jenis <obj> ketika ada perubahan pada tipe <obj>.
2. Tipe yang terikat dievaluasi pada waktu kompilasi, jadi recompiles program untuk mencerminkan perubahan tersebut.
<obj> jenis dalam variabel yang terdampar.

Koleksi

Koleksi adalah sekelompok elemen yang teratur, semua dari jenis yang sama. Ini adalah konsep umum yang mencakup
daftar, array, dan tipe data lain yang familiar. Setiap elemen memiliki subskrip unik yang menentukan posisinya
dalam koleksi.

--Definisikan tipe catatan PL/SQL yang mewakili sebuah buku:


TIPE book_rec ADALAH RECORD
judul [Link]%Tipe
pengarang book.author_last_name%TIPE
tahun_diterbitkan book.published_date%TIPE);

--definisikan tabel PL/SQL yang berisi entri dari jenis book_rec:


Tipe book_rec_tab ADALAH TABEL DARI book_rec%TYPE
INDIS OLEH BINARY_INTEGER;

my_book_rec book_rec%TIPE;
my_book_rec_tab book_rec_tab%TIPE;
...
my_book_rec := my_book_rec_tab(5);
temukan_buku_penulis(my_book_rec.penulis);
...

Ada banyak alasan baik untuk menggunakan koleksi.

Kecepatan eksekusi yang jauh lebih cepat, berkat peningkatan kinerja yang transparan termasuk yang baru
kompiler yang dioptimalkan, kompilasi native yang lebih terintegrasi, dan tipe data baru yang membantu dengan
aplikasi pengolahan angka.

Pernyataan FORALL, menjadi lebih fleksibel dan berguna. Misalnya, FORALL sekarang
mendukung indeks yang tidak berurutan.

Ekspresi reguler tersedia di PL/SQL dalam bentuk tiga fungsi baru


(REGEXP_INSTR, REGEXP_REPLACE, dan REGEXP_SUBSTR) dan REGEXP_LIKE
operator untuk perbandingan. (Untuk informasi lebih lanjut, lihat "Ekspresi Pertama" oleh Jonathan Gennick di
masalah ini.)

Koleksi, ditingkatkan untuk mencakup hal-hal seperti perbandingan koleksi untuk kesetaraan dan dukungan untuk
operasi himpunan pada tabel bersarang.

lihat juga:

Mengambil Koleksi ([Link]


Pemrograman Oracle dengan Koleksi PL/SQL ([Link]

Logika yang disimpan


Fungsi

Sebuah fungsi harus mengembalikan nilai kepada pemanggil.

Sintaks untuk sebuah fungsi adalah

BUAT [ATAU GANTI] FUNGSI nama_fungsi [ (parameter [,parameter]) ]


KEMBALIKAN[jenis_data_yang_dikembalikan]

ADA
declaration_section
AWAL
bagian_eksekusi
kembalikan [nilai_kembali]

[PENGECUALIAN
bagian_pengecualian
AKHIR [nama_prosedur];

Misalnya:

BUAT ATAU GANTI FUNGSI to_date_check_null(dateString DI VARCHAR2, dateFormat DI VARCHAR2)


TANGGALKEMBALIADALAH
MULAI
JIKA dateString NULL MAKA
kembali NULL;
LAINNYA
kembali ke_tanggal(tanggalString, formatTanggal);
SELESAIJIKA;

SELESAI;

Prosedur

Sebuah prosedur berbeda dari sebuah fungsi karena ia tidak harus mengembalikan nilai kepada pemanggil.

Sintaks untuk sebuah prosedur adalah:

BUAT [ATAU GANTI] PROSEDUR nama_prosedur [ (parameter [,parameter]) ]


ADALAH
declaration_section
MULAI
bagian_dapat_dieksekusi
PENGECUALIAN
bagian_pengecualian
END [nama_prosedur];

Ketika Anda membuat prosedur atau fungsi, Anda dapat mendefinisikan parameter. Ada tiga jenis parameter.
itu dapat dinyatakan:

[Link]- Parameter dapat dirujuk oleh prosedur atau fungsi. Nilai parameter dapat
tidak akan ditimpa oleh prosedur atau fungsi.
[Link]- Parameter tidak dapat dirujuk oleh prosedur atau fungsi, tetapi nilai dari
parameter dapat ditimpa oleh prosedur atau fungsi.
[Link] OUT- Parameter dapat dirujuk oleh prosedur atau fungsi dan nilai dari
parameter dapat ditimpa oleh prosedur atau fungsi.

Anda juga dapat menyatakan nilai DEFAULT;


BUAT [ATAU GANTI] PROSEDUR nama_prosedur [ (parameter [IN|OUT|IN OUT] [DEFAULTvalue] [,para

Berikut adalah contoh sederhana dari sebuah prosedur:

/* tujuan: menunjukkan siswa dalam kursus yang ditentukan oleh courseId */

BUAT ATAU GANTI Prosedur GetNumberOfStudents


courseId IN angka
ADALAH

/* meskipun ada cara yang lebih baik untuk menghitung jumlah siswa, */
ini adalah kesempatan baik untuk menunjukkan kursor dalam aksi */

cursor student_cur adalah


pilih studentId, studentName
dari kursus
di mana [Link] = courseId;
rekaman_siswa student_cur%ROWTYPE;

MULAI
BUKA student_cur;
LOOP
AMBIL student_cur KE student_rec;
KELUAR SAAT student_cur%TIDAK DITEMUKAN;
numberOfStudents := numberOfStudents + 1;
AKHIR LOOP;
TUTUP student_cur;

PEMBERIAN KEPEMIMPINAN
KAPAN ORANG LAIN MAKA
raise_application_error(-20001,'Terjadi kesalahan - '||SQLCODE||' -KESALAHAN- '||SQL
END DapatkanJumlahMahasiswa;

blok anonim

MENYATAKAN
x NOMOR(4) := 0;
MEMULAI
x := 1000;
MULAI
x := x + 100;
KECUALI
KAPAN ORANG LAIN
x := x + 2;
SELESAI;
x := x + 10;
dbms_output.put_line(x);
KECUALI
KETIKAORANG LAIN MAKA
x := x + 3;
AKHIR;

Meneruskan parameter ke logika yang disimpan

Ada tiga sintaks dasar untuk melewatkan parameter ke prosedur tersimpan: notasi posisi, bernama
notasi dan notasi campuran.

Contoh berikut memanggil prosedur ini untuk masing-masing sintaks dasar untuk pengoperasian parameter:

BUAT ATAU GANTI PROCEDUR create_customer( p_name DALAM varchar2,


p_id DI nomor,
IN varchar2
p_phone IN varchar2 ) IS
AWAL
MASUKKAN KE customer ( nama, id, alamat, telepon )
NILAI ( p_nama, p_id, p_alamat, p_telephone );
SELESAI buat_pelanggan;

Notasi posisi

Tentukan parameter yang sama dalam urutan yang sama seperti yang dinyatakan dalam prosedur. Notasi ini adalah
kompak, tetapi jika Anda menentukan parameter (terutama literal) dalam urutan yang salah, bugnya bisa sulit untuk
deteksi. Anda harus mengubah kode Anda jika daftar parameter prosedur berubah.

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

Notasi bernama

Specify the name of each parameter along with its value. An arrow (=>) serves as the association operator.
Urutan parameter tidak signifikan. Notasi ini lebih verbose, tetapi membuat kode Anda lebih mudah untuk
baca dan pertahankan. Anda terkadang dapat menghindari mengubah kode jika daftar parameter prosedur berubah, untuk
contoh jika parameter diubah urutannya atau parameter opsional baru ditambahkan. Notasi bernama adalah baik
latihan untuk digunakan untuk kode apa pun yang memanggil API orang lain, atau mendefinisikan API untuk digunakan orang lain.

buat_pelanggan(p_alamat => '301 Anystreet', p_id => 33, p_nama => 'James Whitfield', p_telepon =

Notasi campuran

Tentukan parameter pertama dengan notasi posisi, kemudian beralih ke notasi bernama untuk parameter terakhir.
Anda dapat menggunakan notasi ini untuk memanggil prosedur yang memiliki beberapa parameter yang diperlukan, diikuti oleh beberapa
parameter opsional.

create_customer(v_name, v_id, p_address=> '301 Anystreet', p_phone => '251-222-3154');

Fungsi tabel

BUAT JENIS object_row_type sebagai OBJEK (


object_type VARCHAR(18)
VARCHAR(30)
);

BUAT TIPE object_table_type SEBAGAI TABEL DARI object_row_type;

BUAT ATAU GANTI FUNGSI get_all_objects


KEMBALI object_table_type PIPELINED SEBAGAI
MULAI
UNTUK cur DI (PILIH * DARI all_objects)
LOOP
PIPE ROW(jenis_baris_objek_tipe(cur.tipe_objek, cur.nama_objek));
AKHIR LOOP;
KEMBALI;
AKHIR;
PILIH * DARI TABEL(get_all_objects);

Kontrol aliran

Operator Kondisional

DAN
atau
tidak

Contoh

JIKA gaji > 40000 DAN gaji <= 70000 MAKA

Jika/kemudian/jika tidak

JIKA [kondisi] MAKA


statements
JIKA [kondisi] MAKA
statements
JIKA [kondisi] MAKA
statements
JIKA [kondisi] MAKA
statements
ELSIF [kondisi] MAKA
pernyataan
ELSE JIKA [kondisi] MAKA
statements
JIKATIDAK [kondisi] MAKA
pernyataan
ELSE IF [kondisi] MAKA
statements
LAINNYA
statements
SELESAIJIKA;

Array

Array asosiatif

Array dengan tipe yang kuat, berguna sebagai tabel dalam memori

Contoh

Contoh yang sangat sederhana, indeks adalah kunci untuk mengakses array jadi tidak perlu melakukan pengulangan.
seluruh tabel kecuali jika Anda bermaksud menggunakan data dari setiap baris array.
Indeks juga dapat berupa nilai numerik.

MENYATAKAN
--Array asosiatif yang diindeks dengan string:

-- Tipe array asosiasi


TIPE populasi ADALAH TABEL DARI ANGKA
INDeks OLEH VARCHAR2(64);
-- Variabel array asosiatif
populasi_kota
saya VARCHAR2(64);
MULAI
-- Tambahkan elemen baru ke array asosiatif:
city_population('Smallville') := 2000;
jumlah_penduduk_kota('Midland') 750000;
city_population('Megalopolis') := 1000000;

-- Ubah nilai yang terkait dengan kunci 'Smallville':


city_population('Smallville') := 2001;

-- Cetak array asosiatif dengan melakukan loop di dalamnya:


i := populasi_kota.PERTAMA;

SELAMA i TIDAK NULL LOOP


DBMS_OUTPUT.PUT_LINE
Populasi dari
i := populasi_kota.NEXT(i);
AKHIR LOOP;

-- Cetak nilai yang dipilih dari array asosiatif:


DBMS_OUTPUT.PUT_LINE('Nilai terpilih');
DBMS_OUTPUT.PUT_LINE('Jumlah Penduduk dari
SELESAI;
/

-- Hasil yang dicetak:


Populasi Megalopolis adalah 1000000
Populasi Midland adalah 750000
Populasi Smallville adalah 2001

Contoh yang lebih kompleks, menggunakan catatan

MENYATAKAN
-- Jenis catatan
TIPE apollo_recADALAH REKAMAN
(
komandan VARCHAR2(100)
luncurkan TANGGAL
);
-- Tipe array asosiatif
TIPE apollo_type_arrADALAH TABEL DARI apollo_rec INDEKS OLEH VARCHAR2(100);
Variabel array asosiasi
apollo_arr apollo_type_arr;
MULAI
apollo_arr('Apollo 11').commander := 'Neil Armstrong';
Peluncuran Apollo 11 TO_DATE('16 Juli 1969','Bulan dd, yyyy');
apollo_arr('Apollo 12').commander := 'Pete Conrad';
Apollo 12 TO_DATE('14 November 1969','Bulan dd, yyyy');
apollo_arr('Apollo 13').commander := 'James Lovell';
Apollo 13 TO_DATE('April 11, 1970','Bulan dd, yyyy');
apollo_arr('Apollo 14').commander := 'Alan Shepard';
Apollo 14 TO_DATE('31 Januari 1971','Bulan dd, yyyy');

DBMS_OUTPUT.PUT_LINE(apollo_arr('Apollo 11').komandan);
DBMS_OUTPUT.PUT_LINE(apollo_arr('Apollo 11').peluncuran);
akhir;
/

-- Hasil cetak:
Neil Armstrong
16-JUL-69

APEX
Substitusi string
* Dalam SQL: :VARIABLE
* Dalam PL/SQL: V('VARIABEL') atau NV('VARIABEL')
* Dalam teks: &VARIABLE.

Tautan eksternal
Referensi PSOUG ([Link]

Lebih Banyak Wikibuku

Pendahuluan ke SQL

Diambil dari "[Link]


Oracle_Pemrograman/SQL_Cheat_sheet&oldid=2680244

Halaman ini terakhir dimodifikasi pada 10 Juli 2014, pukul 16:49.


Teks tersedia di bawahLisensi Creative Commons [Link] tambahan
mungkin berlaku. Dengan menggunakan situs ini, Anda setuju denganSyarat dan KetentuandanKebijakan Privasi.

Anda mungkin juga menyukai