Tujuan

Hari ini Anda mempelajari konsep di balik menghasilkan satu atau lebih pernyataan dari query SQL. Pada akhir hari Anda harus memahami berikut:

  • Manfaat dari menghasilkan pernyataan SQL query
  • Bagaimana membuat output dari query muncul dalam bentuk lain pernyataan SQL
  • Cara menggunakan kamus data, tabel database, atau keduanya untuk membentuk pernyataan SQL

Tujuan Menggunakan SQL untuk Menghasilkan Laporan SQL

Membangkitkan SQL dari statemen SQL lain hanya berarti menulis pernyataan SQL yang output bentuk lain pernyataan SQL atau perintah. Sampai saat ini, semua pernyataan SQL bahwa Anda telah belajar menulis baik melakukan sesuatu, seperti memanipulasi data dalam sebuah tabel, satu baris pada satu waktu, atau memproduksi beberapa jenis laporan dari query. Hari ini Anda belajar bagaimana menulis sebuah permintaan yang output bentuk lain permintaan atau pernyataan SQL.

Mengapa kau perlu untuk menghasilkan pernyataan SQL dari query? Pada awalnya, itu adalah masalah kesederhanaan dan efisiensi. Anda tidak mungkin perlu  untuk menghasilkan pernyataan SQL, tetapi tanpa pernah melakukan hal itu Anda akan mengabaikan salah satu yang paling kuat fitur SQL, yang terlalu banyak orang tidak menyadari ada.

Membangkitkan SQL jarang wajib karena Anda dapat secara manual membuat dan menerbitkan semua pernyataan SQL, meskipun proses dapat membosankan dalam situasi tertentu. Pada catatan yang sama menghasilkan pernyataan SQL mungkin diperlukan bila Anda memiliki tenggat waktu yang ketat. Misalnya, atasan Anda ingin memberikan akses pada tabel baru untuk semua pengguna di 90 departemen pemasaran (dan Anda ingin pulang untuk makan malam). Karena beberapa pengguna database ini tidak bekerja di bidang pemasaran, Anda tidak bisa hanya memberikan akses pada meja untuk publik. Bila Anda memiliki beberapa kelompok pengguna dengan berbagai jenis akses, Anda mungkin ingin untuk menegakkan peran keamanan, yang merupakan built-in metode untuk mengendalikan akses ke data pengguna. Dalam situasi ini Anda dapat membuat suatu pernyataan SQL yang menghasilkan pernyataan GRANT kepada semua orang di departemen pemasaran, artinya, setiap individu hibah peranan yang tepat (s).

Anda akan menemukan banyak situasi yang menguntungkan untuk menghasilkan pernyataan SQL sebagai output ke laporan lain. Sebagai contoh, Anda mungkin perlu untuk menjalankan pernyataan SQL yang sama banyak sebagai sebuah kelompok atau Anda mungkin perlu untuk menumbuhkan DDL dari kamus data kamus. Ketika memproduksi SQL sebagai output lain dari pernyataan, akan Anda selalu mendapatkan data Anda untuk output baik dari data atau tabel skema dalam database. Gambar 17,1 mengilustrasikan prosedur ini.

Seperti yang dapat Anda lihat pada Gambar 17.1, perintah SELECT dapat dikeluarkan ke database, gambar hasil output yang baik dari kamus data atau dari tabel dalam database aplikasi.Pernyataan Anda dapat mengatur data diambil ke dalam satu atau lebih pernyataan SQL. Misalnya, jika satu baris dikembalikan, Anda akan telah menghasilkan satu pernyataan SQL. Jika 100 baris yang dikembalikan dari pernyataan Anda, Anda akan memiliki 100 dihasilkan pernyataan SQL. Bila Anda berhasil menghasilkan kode SQL dari database, Anda dapat menjalankan kode terhadap database, yang dapat melakukan serangkaian pertanyaan atau tindakan database.

Sisa hari itu dikhususkan untuk contoh yang menunjukkan kepada Anda bagaimana untuk menghasilkan output dalam bentuk pernyataan SQL. Sebagian besar informasi Anda akan datang dari kamus data, sehingga Anda mungkin ingin meninjau’s materi kemarin. (Lihat Hari 16, “Menggunakan Tampilan Informasi Berguna untuk Ambil dari Data Dictionary.”)

Gambar 17,1.

Proses menghasilkan SQL dari database.


CATATAN: Today’s contoh penggunaan pribadi Oracle7. Seperti biasa, Anda harus menerapkan konsep-konsep yang dibahas hari ini untuk sintaks implementasi database tertentu Anda.


Miscellaneous Perintah SQL * Plus

contoh hari ini menggunakan beberapa perintah baru. Perintah-perintah ini, dikenal sebagai perintah SQL * Plus, khusus untuk pribadi Oracle7 dan kontrol format hasil keluaran Anda. (Lihat Hari 20, “SQL * Plus).” SQL * Plus perintah dikeluarkan pada> SQL prompt, atau mereka dapat digunakan dalam file.


CATATAN: Walaupun perintah ini adalah khusus untuk Oracle, perintah sejenis yang tersedia dalam implementasi lain, misalnya, Transact-SQL. (Juga lihat Hari 19, “Transact-SQL: Sebuah Pengantar.”)


set echo on / off

Ketika Anda menetapkan echo, Anda akan melihat laporan SQL Anda saat mereka menjalankan echo. Set off berarti bahwa Anda tidak ingin melihat laporan SQL Anda saat mereka menjalankan – Anda hanya ingin melihat output.

  SET ECHO [ON | OFF] 

umpan balik set on / off

Saran atau masukan adalah jumlah output baris Anda. Misalnya, jika Anda dieksekusi perintah SELECT yang kembali 30 baris data, umpan balik Anda akan

  30 baris yang dipilih. 

KOMENTAR SET ON menampilkan jumlah baris; SET KOMENTAR MATI menghilangkan jumlah baris dari output Anda.

  SET KOMENTAR [ON | OFF] 

menetapkan pos on / off

Judul yang dimaksud di sini adalah judul kolom di output dari perintah SELECT, seperti LAST_NAME, atau CUSTOMER_ID Pos. SET ON, yang menjadi defaultnya, menampilkan judul kolom data Anda sebagai bagian dari output Pos. SET OFF , tentu saja, menghilangkan kolom judul dari output Anda.

  SET pos [ON | OFF] 

spool filename / off

Spooling adalah proses mengarahkan hasil pencarian Anda ke sebuah file. Untuk membuka file spool, Anda masukkan

  spool filename 

Untuk menutup file spool Anda, Anda akan ketik

  spool off 

mulai nama file

Sebagian besar perintah SQL yang telah kita pelajari sejauh ini telah diterbitkan di> SQL prompt. Metode lain untuk mengeluarkan pernyataan SQL adalah untuk menciptakan dan kemudian jalankan file. Di SQL * Plus perintah untuk menjalankan file SQL MULAI FILENAME.

  MULAI FILENAME 

ed nama file

ED adalah perintah Oracle7 pribadi yang membuka file (atau file yang ada). Bila Anda membuka file dengan ed, Anda menggunakan editor layar penuh, yang sering lebih mudah daripada mencoba untuk mengetik sebuah pernyataan SQL yang panjang di> SQL prompt . Anda akan menggunakan perintah ini untuk memodifikasi isi dari file spul Anda. Anda akan menemukan bahwa Anda menggunakan perintah ini sering saat membuat skrip SQL karena Anda mungkin harus mengubah isi dari file untuk kustomisasi. Namun, Anda dapat mencapai kustomisasi terbanyak melalui perintah SQL * Plus.

ED FILENAME

Menghitung Baris di Semua Tabel

Contoh pertama menunjukkan Anda bagaimana untuk mengedit file spool Anda untuk menghapus baris yang tidak relevan dalam kode yang dihasilkan Anda, sehingga memungkinkan pernyataan SQL Anda berjalan tanpa ternoda dengan kesalahan sintaks.


CATATAN: Mencatat teknik editing yang digunakan dalam contoh ini karena kita tidak akan menunjukkan langkah dalam sisa itu contoh hari ini. Kami berasumsi bahwa Anda mengetahui sintaks dasar pernyataan SQL sekarang. Selain itu, Anda dapat memilih untuk mengedit file spool dalam berbagai cara.


Mulailah dengan mengingat fungsi untuk menghitung semua baris dalam tabel: COUNT (*). Anda sudah tahu bagaimana untuk memilih jumlah pada semua baris dalam sebuah tabel tunggal.Sebagai contoh:

INPUT:
  SELECT COUNT (*) 
  DARI TBL1;
OUTPUT:
  COUNT (*) 
  -------- 
        29 

teknik itu berguna, tapi anggaplah Anda ingin mendapatkan jumlah baris pada semua tabel yang Anda miliki atau yang dalam skema Anda. Sebagai contoh, berikut adalah daftar tabel Anda sendiri:

INPUT / OUTPUT:
  SELECT * FROM CAT; 

  TABLE_NAME TABLE_TYPE 
  ------------------------------ ----------- 
  TABEL ACCT_PAY 
  TABEL ACCT_REC 
  TABEL PELANGGAN 
  TABEL KARYAWAN 
  TABEL SEJARAH 
  Faktur TABEL 
  TABEL Pesanan 
  TABEL PRODUK 
  TABEL PROYEK 
  TABEL Vendor 

  10 baris yang dipilih. 
ANALISIS:

Jika Anda ingin mendapatkan jumlah baris pada seluruh tabel Anda, Anda bisa secara manual masalah COUNT (*) Pernyataan di atas meja masing-masing. Umpan balik akan

  10 baris yang dipilih. 

Pernyataan SELECT SELECT berikut membuat laporan lebih untuk mendapatkan jumlah baris pada semua tabel sebelumnya.

INPUT / OUTPUT:
  SQL> SET ECHO OFF 
  SQL> SET OFF KOMENTAR 
  SQL> SET berangkat 
  SQL> spool CNT.SQL 
  SQL> SELECT 'SELECT COUNT (*) FROM' | TABLE_NAME | | | ';' 
    2 DARI CAT 
    3 / 

  SELECT COUNT (*) FROM ACCT_PAY; 
  SELECT COUNT (*) DARI ACCT_REC; 
  SELECT COUNT (*) FROM PELANGGAN; 
  SELECT COUNT (*) FROM KARYAWAN; 
  SELECT COUNT (*) FROM SEJARAH; 
  SELECT COUNT (*) FROM faktur; 
  SELECT COUNT (*) dari pesanan; 
  SELECT COUNT (*) FROM PRODUK; 
  SELECT COUNT (*) DARI PROYEK; 
  pilih count (*) dari vendor; 
ANALISIS:

Tindakan pertama pada contoh sebelumnya adalah dengan menggunakan beberapa perintah SQL * Plus. Menetapkan echo off, umpan balik dari, dan berangkat mengembun output ke apa yang sebenarnya sedang dipilih. Ingat, output tidak digunakan sebagai laporan, tetapi lebih sebagai pernyataan SQL yang siap untuk dijalankan. Langkah selanjutnya adalah dengan menggunakan perintah spool untuk mengarahkan output ke file, yang ditetapkan sebagai cnt.sql. Langkah terakhir adalah untuk mengeluarkan pernyataan SELECT, yang akan menghasilkan output dalam bentuk pernyataan lain. Perhatikan penggunaan tanda kutip tunggal untuk memilih sebuah string literal. Kombinasi tanda kutip tunggal dan gabungan | (|) memungkinkan Anda untuk menggabungkan data aktual dan string literal untuk membentuk pernyataan SQL lain. Contoh ini memilih data dari kamus data. Perintah menutup MATI spool spool file.


TIP: Selalu mengedit output file sebelum menjalankannya untuk menghilangkan perbedaan sintaks dan untuk menyesuaikan lebih lanjut file yang telah Anda buat.


INPUT:
  SQL> spool MATI 
  SQL> ED CNT.SQL
OUTPUT:
  SQL> SELECT 'SELECT COUNT (*) FROM' | TABLE_NAME | ||';' 
    2 DARI CAT; 

  SELECT COUNT (*) FROM ACCT_PAY; 
  COUNT SELECT (*) FROM ACCT_REC; 
  SELECT COUNT (*) FROM PELANGGAN; 
  SELECT COUNT (*) FROM KARYAWAN; 
  SELECT COUNT (*) FROM SEJARAH; 
  SELECT COUNT (*) FROM faktur; 
  SELECT COUNT (*) dari pesanan; 
  SELECT COUNT (*) FROM PRODUK; 
  SELECT COUNT (*) DARI PROYEK; 
  SELECT COUNT (*) dari vendor; 
  SQL> spul MATI 
ANALISIS:

Perintah menutup MATI spool spool file. Maka perintah ED suntingan file. Pada titik ini Anda berada di dalam file yang Anda buat. Anda harus menghapus baris yang tidak perlu dari file, sepertiSELECT, yang digunakan untuk mencapai hasil, dan MATI spool pada akhir file.

Berikut adalah bagaimana file Anda akan terlihat setelah edit. Perhatikan bahwa setiap baris adalah pernyataan SQL yang valid.

  SELECT COUNT (*) FROM ACCT_PAY; 
  SELECT COUNT (*) FROM ACCT_REC; 
  SELECT COUNT (*) FROM PELANGGAN; 
  SELECT COUNT (*) FROM KARYAWAN; 
  SELECT COUNT (*) FROM SEJARAH; 
  SELECT COUNT (*) FROM faktur; 
  SELECT COUNT (*) dari pesanan; 
  SELECT COUNT (*) FROM PRODUK; 
  SELECT COUNT (*) DARI PROYEK; 
  SELECT COUNT (*) FROM Vendor; 

Sekarang, jalankan file:

INPUT / OUTPUT:
  SQL SET> ECHO ON 
  SQL> SET ON pos 
  SQL> START CNT.SQL 

  SQL> SELECT COUNT (*) FROM ACCT_PAY; 

   COUNT (*) 
  --------- 
          7 
  SQL> SELECT COUNT (*) FROM ACCT_REC; 

   COUNT (*) 
  --------- 
          9 
  SQL> SELECT COUNT (*) FROM PELANGGAN; 

   COUNT (*) 
  --------- 
          5 
  SQL> SELECT COUNT (*) FROM KARYAWAN; 

   COUNT (*) 
  --------- 
         10 

  SQL> SELECT COUNT (*) FROM SEJARAH; 

   COUNT (*) 
  --------- 
         26 
  SQL> SELECT COUNT (*) FROM faktur; 

   COUNT (*) 
  --------- 
          0 
  SQL> SELECT COUNT (*) dari pesanan; 

   COUNT (*) 
  --------- 
          0 
  SQL> SELECT COUNT (*) FROM PRODUK; 

   COUNT (*) 
  --------- 
         10 
  SQL> SELECT COUNT (*) FROM PROYEK; 

   COUNT (*) 
  --------- 
         16 
  SQL> SELECT COUNT (*) dari vendor; 

   COUNT (*) 
  --------- 
         22 
  SQL> 
ANALISIS:

Set echo pada memungkinkan Anda untuk melihat setiap pernyataan yang dieksekusi). Tetapkan pos pada menampilkan judul kolom COUNT (* untuk setiap pernyataan SELECT. Jika Anda memasukkan

  set umpan balik 

kemudian

  1 baris yang dipilih. 

akan ditampilkan setelah setiap hitungan. Contoh ini mengeksekusi skrip SQL dengan menggunakan perintah SQL * Plus MULAI. Namun, bagaimana jika Anda sedang berurusan dengan 50 tabel, bukan hanya 10?


CATATAN: Penggunaan yang tepat dari tanda kutip tunggal saat membuat skrip SQL sangat penting. Gunakan kutipan dengan murah hati dan pastikan bahwa Anda termasuk semua elemen yang akan membuat pernyataan yang dihasilkan Anda lengkap. Dalam contoh ini menyertakan tanda kutip tunggal komponen laporan Anda dihasilkan (output) yang tidak dapat dipilih dari meja, misalnya, 'SELECT COUNT (*) FROM' dan ';'.


Keistimewaan Pemberian System untuk Pengguna Multiple

Sebagai database administrator atau individu yang bertanggung jawab untuk menjaga pengguna, Anda akan sering menerima permintaan untuk ID pengguna. Selain memiliki untuk memberikan hak istimewa kepada pengguna yang memungkinkan mereka mengakses database yang tepat, Anda juga harus memodifikasi ‘hak pengguna untuk mengakomodasi perubahan kebutuhan mereka.Anda bisa mendapatkan database untuk menghasilkan laporan GRANT untuk memberikan hak istimewa sistem atau peran untuk banyak pengguna.

INPUT:
  SQL> SET ECHO OFF 
  SQL> SET berangkat 
  SQL> SET OFF KOMENTAR 
  SQL> spool GRANTS.SQL 
  SQL> SELECT 'GRANT CONNECT, RESOURCE ALAM ATAS' | | USERNAME | | ';' 
    2 DARI SYS.DBA_USERS 
    3 WHERE USERNAME TIDAK DI ('SYS', 'SYSTEM', 'SCOTT ",' Ryan ',' PO7 ',' DEMO ') 
    4 /
OUTPUT:
  GRANT CONNECT, RESOURCE ALAM ATAS KEVIN; 
  GRANT CONNECT, RESOURCE ALAM ATAS JOHN; 
  GRANT CONNECT, RESOURCE ALAM ATAS JUDITH; 
  GRANT CONNECT, RESOURCE ALAM ATAS Steve; 
  GRANT CONNECT, RESOURCE ALAM UNTUK RON; 
  GRANT CONNECT, RESOURCE ALAM ATAS MARY; 
  GRANT CONNECT, RESOURCE ALAM ATAS Debra; 
  GRANT CONNECT, RESOURCE ALAM UNTUK CHRIS; 
  GRANT CONNECT, RESOURCE ALAM ATAS CAROL; 
  GRANT CONNECT, RESOURCE ALAM ATAS EDWARD; 
  GRANT CONNECT, RESOURCE ALAM ATAS Brandon; 
  GRANT CONNECT, RESOURCE ALAM ATAS JACOB;
INPUT / OUTPUT:
 SQL> spool off> SQL mulai grants.sql SQL> CONNECT GRANT, RESOURCE ALAM ATAS KEVIN; Grant berhasil>. SQL GRANT CONNECT, RESOURCE ALAM ATAS JOHN; Grant berhasil>. SQL GRANT CONNECT, RESOURCE ALAM ATAS JUDITH, Grant berhasil>. SQL GRANT CONNECT , RESOURCE ALAM ATAS Steve; Grant berhasil>. SQL GRANT CONNECT, RESOURCE ALAM UNTUK RON; Grant berhasil>. SQL GRANT CONNECT, RESOURCE ALAM ATAS MARIA; Grant berhasil>. SQL GRANT CONNECT, RESOURCE ALAM ATAS Debra; Grant berhasil>. SQL GRANT CONNECT, RESOURCE UNTUK CHRIS; Grant berhasil>. SQL GRANT CONNECT, RESOURCE ALAM ATAS CAROL; Grant berhasil>. SQL GRANT CONNECT, RESOURCE ALAM ATAS EDWARD; Grant berhasil>. SQL GRANT CONNECT, RESOURCE ALAM ATAS Brandon; Grant berhasil>. SQL GRANT CONNECT, RESOURCE TO JACOB ; Grant berhasil.
ANALISIS:

Dalam contoh ini Anda disimpan keystrokes membosankan banyak dengan menghasilkan  GRANT laporan menggunakan pernyataan SQL sederhana, daripada mengetik setiap satu secara manual.


CATATAN: Contoh berikut menghilangkan langkah di mana Anda mengedit output file. Anda dapat mengasumsikan bahwa file sudah diedit.


Pemberian Keistimewaan pada Tabel Anda untuk Pengguna lain

Pemberian hak istimewa di atas meja untuk pengguna lain cukup sederhana, seperti memilih jumlah baris di atas meja. Tapi jika Anda memiliki beberapa tabel yang Anda ingin memberikan akses ke peran atau pengguna, Anda dapat membuat SQL menghasilkan script untuk Anda – kecuali jika Anda suka untuk mengetik.

Pertama, tinjauan GRANT sederhana untuk satu meja:

INPUT:
  SQL> GRANT SELECT ON SEJARAH ATAS Brandon;
OUTPUT:
  Grant berhasil. 

Apakah Anda siap beraksi beberapa? Pernyataan selanjutnya membuat pernyataan GRANT untuk masing-masing dari 10 tabel dalam skema Anda.

INPUT / OUTPUT:
  SQL> SET ECHO OFF 
  SQL> SET OFF KOMENTAR 
  SQL> SET berangkat 
  SQL> spool GRANTS.SQL 
  SQL> SELECT 'GRANT SELECT ON' | | TABLE_NAME | | 'ATAS Brandon;' 
    2 DARI CAT 
    3 / 

  GRANT SELECT ON ACCT_PAY ATAS Brandon; 
  GRANT SELECT ON ACCT_REC ATAS Brandon; 
  GRANT SELECT ON NASABAH ATAS Brandon; 
  GRANT SELECT ON KARYAWAN ATAS Brandon; 
  GRANT SELECT ON SEJARAH ATAS Brandon; 
  GRANT SELECT ON faktur kepada Brandon; 
  GRANT SELECT ON perintah untuk Brandon; 
  GRANT SELECT ON PRODUK UNTUK Brandon; 
  SELECT GRANT PADA PROYEK ATAS Brandon; 
  GRANT SELECT ON vendor untuk Brandon; 
ANALISIS:

Pernyataan GRANT telah secara otomatis disiapkan untuk setiap tabel. Brandon adalah memiliki akses Pilih di meja masing-masing.

Sekarang tutup file output dengan perintah spool, dan dengan asumsi bahwa file tersebut telah diedit, file siap dijalankan.

INPUT / OUTPUT:
  SQL> spool MATI 

  SQL SET> ECHO ON 
  SQL> SET ON KOMENTAR 
  SQL> START GRANTS.SQL 

  SQL> GRANT SELECT ON ACCT_PAY ATAS Brandon; 

  Grant berhasil. 

  SQL> GRANT SELECT ON ACCT_REC ATAS Brandon; 

  Grant berhasil. 

  SQL> GRANT SELECT ON NASABAH ATAS Brandon; 

  Grant berhasil. 

  SQL> GRANT SELECT ON KARYAWAN ATAS Brandon; 

  Grant berhasil. 

  SQL> GRANT SELECT ON SEJARAH ATAS brandon; 

  Grant berhasil. 

  SQL> GRANT SELECT ON faktur kepada Brandon; 

  Grant berhasil. 

  SQL> GRANT SELECT ON perintah untuk Brandon; 

  Grant berhasil. 

  SQL> SELECT GRANT PADA PRODUK UNTUK Brandon; 

  Grant berhasil. 

  SQL> GRANT SELECT ON PROYEK ATAS Brandon; 

  Grant berhasil. 

  SQL> SELECT ON GRANT vendor untuk Brandon; 

  Grant berhasil. 
ANALISIS:

Echo ditetapkan dan umpan balik di set pada juga. Setting umpan balik pada laporan Grant ditampilkan berhasil. Pilih hak yang telah diberikan kepada Brandon pada semua 10 meja dengan sedikit usaha yang sangat. Sekali lagi, ingatlah bahwa Anda akan sering berurusan dengan banyak lebih dari 10 tabel.

Menonaktifkan Kendala Tabel Load Data

Ketika memasukkan data ke dalam tabel, Anda kadang harus menonaktifkan kendala pada tabel Anda. Misalkan Anda telah dipotong meja Anda dan Anda memasukkan data ke tabel Anda dari nol. Kemungkinan besar, tabel Anda akan memiliki batasan integritas referensial, seperti kunci asing. Karena database tidak akan membiarkan Anda memasukkan baris data dalam tabel yang lain tabel referensi (jika kolom referensi tidak ada dalam tabel lain), Anda mungkin harus menonaktifkan kendala untuk awalnya beban data Anda. Tentu saja, setelah beban berhasil, Anda akan ingin mengaktifkan kendala.

INPUT:
  SQL> SET ECHO OFF 
  SQL> SET AKTIF KOMENTAR 
  SQL> SET berangkat 
  SQL> spool DISABLE.SQL 
  SQL> SELECT 'ALTER TABLE' | TABLE_NAME | | | 
    2 'DISABLE kendala' | | CONSTRAINT_NAME | | ';' 
    3 DARI SYS.DBA_CONSTRAINTS 
    4 WHERE PEMILIK 'Ryan =' 
    5 /
OUTPUT:
  ALTER TABLE ACCT_PAY kendala FK_ACCT_ID DISABLE; 
  ALTER TABLE DISABLE kendala FK_ACCT_ID ACCT_REC; 
  ALTER TABLE PELANGGAN kendala FK_CUSTOMER_ID DISABLE; 
  ALTER TABLE SEJARAH kendala FK_ACCT_ID DISABLE; 
  ALTER TABLE Faktur kendala FK_ACCT_ID DISABLE; 
  Perintah ALTER TABLE DISABLE FK_ACCT_ID kendala; 
ANALISIS:

Tujuannya adalah untuk menghasilkan serangkaian laporan ALTER TABLE yang akan menonaktifkan kendala pada seluruh tabel yang dimiliki oleh Ryan. titik koma ini concatenated sampai akhir apa yang dipilih menyelesaikan setiap pernyataan SQL.

INPUT / OUTPUT:
SQL> spool MATI SQL> SET ECHO OFF SQL> SET ON KOMENTAR SQL> START DISABLE.SQL Kendala cacat. Kendala cacat. Kendala cacat. Kendala cacat. Kendala cacat. Kendala cacat.
ANALISIS:

Perhatikan bahwa echo diatur ke off, yang berarti bahwa Anda tidak akan melihat laporan individu. Karena umpan balik diatur ke atas, Anda dapat melihat hasilnya.

  Kendala cacat. 

Jika kedua gema dan umpan balik ditetapkan untuk mati, tidak akan ditampilkan. Tidak hanya akan jeda selama yang dibutuhkan untuk menjalankan ALTER TABLE dan kemudian laporan SQL>prompt akan dikembalikan.

Sekarang Anda dapat membuka data anda tanpa perlu khawatir menerima kesalahan yang disebabkan oleh kendala Anda. Kendala yang baik, tetapi mereka dapat hambatan selama data beban.Anda dapat menggunakan ide yang sama untuk mengaktifkan tabel kendala.

Sinonim Membuat Sejumlah dalam Single Bound

Lain dan melelahkan tugas yang membosankan adalah menciptakan banyak sinonim, apakah mereka pemerintah atau swasta. Hanya DBA dapat membuat sinonim publik, tetapi user dapat membuat sinonim pribadi.

Contoh berikut membuat sinonim umum untuk semua tabel yang dimiliki oleh Ryan.

INPUT:
  SQL> SET ECHO OFF 
  SQL> SET KOMENTAR MATI 
  SQL> SET berangkat 
  SQL> spool PUB_SYN.SQL 
  SQL> SELECT 'CREATE sinonim PUBLIK' | | TABLE_NAME | | 'FOR' | | 
    2 PEMILIK | | '. "  | | TABLE_NAME | | ';' 
    3 DARI SYS.DBA_TABLES 
    4 WHERE PEMILIK 'Ryan =' 
    5 /
OUTPUT:
 CREATE ACCT_PAY PUBLIK sinonim untuk RYAN.ACCT_PAY; CREATE ACCT_REC sinonim PUBLIK UNTUK RYAN.ACCT_REC; CREATE PUBLIK UNTUK NASABAH sinonim RYAN.CUSTOMERS; CREATE PUBLIK UNTUK KARYAWAN sinonim RYAN.EMPLOYEES; CREATE SEJARAH sinonim PUBLIK UNTUK RYAN.HISTORY; membuat tagihan sinonim PUBLIK UNTUK RYAN.INVOICES; perintah CREATE sinonim PUBLIK UNTUK RYAN.ORDERS; CREATE PUBLIK UNTUK PRODUK sinonim RYAN.PRODUCTS; CREATE sinonim PROYEK PUBLIK UNTUK RYAN.PROJECTS; CREATE vendor sinonim PUBLIK UNTUK RYAN.VENDORS;

Sekarang jalankan file.

INPUT / OUTPUT:
  SQL> spool MATI 
  SQL> ED PUB_SYN.SQL 
  SQL SET> ECHO ON 
  SQL> SET ON KOMENTAR 
  SQL> START PUB_SYN.SQL 

  SQL> CREATE ACCT_PAY sinonim PUBLIK UNTUK RYAN.ACCT_PAY; 

  Sinonim dibuat. 

  SQL> CREATE ACCT_REC sinonim PUBLIK UNTUK RYAN.ACCT_REC; 

  Sinonim dibuat. 

  SQL> CREATE NASABAH sinonim PUBLIK UNTUK RYAN.CUSTOMERS; 

  Sinonim dibuat. 

  SQL> CREATE KARYAWAN sinonim PUBLIK UNTUK RYAN.EMPLOYEES; 

  Sinonim dibuat. 

  SQL> CREATE SEJARAH sinonim PUBLIK UNTUK RYAN.HISTORY; 

  Sinonim dibuat. 

  SQL> CREATE faktur sinonim PUBLIK UNTUK RYAN.INVOICES; 

  Sinonim dibuat. 

  SQL> CREATE perintah sinonim PUBLIK UNTUK RYAN.ORDERS; 

  Sinonim dibuat. 

  SQL> CREATE PUBLIK UNTUK PRODUK sinonim RYAN.PRODUCTS; 

  Sinonim dibuat. 

  SQL> CREATE sinonim PROYEK PUBLIK UNTUK RYAN.PROJECTS; 

  Sinonim dibuat. 

  SQL> CREATE vendor sinonim PUBLIK UNTUK RYAN.VENDORS; 

  Sinonim dibuat. 
ANALISIS:

Hampir segera, semua pengguna memiliki akses ke database sinonim umum untuk semua tabel yang memiliki Ryan. Sekarang pengguna tidak perlu memenuhi syarat meja ketika melakukan operasi SELECT. (Kualifikasi berarti mengidentifikasi pemilik meja, seperti di RYAN.VENDORS.)

Bagaimana jika nama-muradif publik tidak ada? Misalkan Brandon yang memiliki akses Pilih untuk seluruh tabel yang dimiliki oleh Ryan dan ingin membuat sinonim pribadi.

INPUT / OUTPUT:
  SQL> CONNECT Brandon 
  ENTER PASSWORD: ******* 
  Dihubungi. 

  SQL> SET ECHO OFF 
  SQL> SET OFF KOMENTAR 
  SQL> SET berangkat 
  SQL> spool PRIV_SYN.SQL 
  SQL> SELECT 'CREATE sinonim' | | TABLE_NAME | | 'FOR' | | 
    2 PEMILIK | | '. "  | | TABLE_NAME | | ';' 
    3 DARI ALL_TABLES 
    4 / 

  CREATE SYS.DUAL sinonim DUAL UNTUK; 
  CREATE sinonim AUDIT_ACTIONS UNTUK SYS.AUDIT_ACTIONS; 
  CREATE sinonim USER_PROFILE UNTUK SYSTEM.USER_PROFILE; 
  CREATE sinonim PELANGGAN UNTUK RYAN.CUSTOMERS; 
  CREATE sinonim pesanan untuk RYAN.ORDERS; 
  CREATE sinonim PRODUK UNTUK RYAN.PRODUCTS; 
  CREATE sinonim faktur untuk RYAN.INVOICES; 
  UNTUK MENCIPTAKAN sinonim ACCT_REC RYAN.ACCT_REC; 
  CREATE sinonim ACCT_PAY UNTUK RYAN.ACCT_PAY; 
  CREATE sinonim vendor untuk RYAN.VENDORS; 
  CREATE sinonim KARYAWAN UNTUK RYAN.EMPLOYEES; 
  CREATE sinonim PROYEK UNTUK RYAN.PROJECTS; 
  UNTUK MENCIPTAKAN SEJARAH sinonim RYAN.HISTORY;
INPUT / OUTPUT:
  SQL> spool MATI 
  SQL> 

  SQL> SET ECHO OFF 
  SQL> SET ON KOMENTAR 
  SQL> START PRIV_SYN.SQL 

  Sinonim dibuat. 

  Sinonim dibuat. 

  Sinonim dibuat. 

  Sinonim dibuat. 

  Sinonim dibuat. 

  Sinonim dibuat. 

  Sinonim dibuat. 

  Sinonim dibuat. 

  Sinonim dibuat. 

  Sinonim dibuat. 

  Sinonim dibuat. 

  Sinonim dibuat. 

  Sinonim dibuat. 
ANALISIS:

Dengan hampir setiap usaha, Brandon telah sinonim untuk semua tabel yang dimiliki oleh Ryan dan tidak diperlukan lagi untuk memenuhi syarat nama tabel.

Membuat Tampilan pada Tabel Anda

Jika Anda ingin membuat pemandangan pada kelompok tabel, Anda bisa mencoba sesuatu yang mirip dengan contoh berikut:

INPUT:
  SQL> SET ECHO OFF 
  SQL> SET OFF KOMENTAR 
  SQL> SET berangkat 
  SQL> spool VIEWS.SQL 
  SQL> SELECT 'CREATE VIEW' | TABLE_NAME | | | '_VIEW AS SELECT * FROM' | | 
    2 TABLE_NAME | | ';' 
    3 DARI CAT 
    4 /
OUTPUT:
 CREATE VIEW AS * ACCT_PAY_VIEW SELECT FROM ACCT_PAY; CREATE VIEW AS ACCT_REC_VIEW SELECT * FROM ACCT_REC; CREATE VIEW AS * SELECT CUSTOMERS_VIEW NASABAH; CREATE VIEW AS * EMPLOYEES_VIEW SELECT FROM KARYAWAN; CREATE VIEW AS * SELECT HISTORY_VIEW DARI SEJARAH; CREATE VIEW AS SELECT INVOICES_VIEW * FROM Faktur; CREATE VIEW AS ORDERS_VIEW SELECT * FROM pesanan; CREATE VIEW AS * SELECT PRODUCTS_VIEW DARI PRODUK; CREATE VIEW AS * SELECT PROJECTS_VIEW DARI PROYEK; CREATE VIEW AS * SELECT VENDORS_VIEW dari vendor;
INPUT / OUTPUT:
  SQL> spool MATI 
  SQL> SET ECHO OFF 
  SQL> SET ON KOMENTAR 
  SQL> START VIEWS.SQL 

  Lihat Dibuat. 

  Lihat Dibuat. 

  Lihat Dibuat. 

  Lihat Dibuat. 

  Lihat Dibuat. 

  Lihat Dibuat. 

  Lihat Dibuat. 

  Lihat Dibuat. 

  Lihat Dibuat. 

  Lihat Dibuat. 
ANALISIS:

The views.sql file ini dibuat oleh pernyataan SQL sebelumnya. Output file ini menjadi file lain pernyataan SQL dan berisi laporan untuk menciptakan pandangan pada semua tabel yang ditentukan.Setelah menjalankan views.sql, Anda dapat melihat bahwa pandangan telah diciptakan.

Truncating Semua Tabel dalam sebuah Skema

Truncating tabel adalah suatu peristiwa yang terjadi di lingkungan pengembangan. Untuk secara efektif mengembangkan dan menguji data rutinitas beban dan kinerja pernyataan SQL, data reloaded sering. Proses ini mengidentifikasi dan exterminates bug, dan aplikasi yang dikembangkan atau diuji adalah pindah ke sebuah lingkungan produksi.

Contoh berikut memotong semua tabel dalam skema tertentu.

INPUT:
  SQL> SET ECHO OFF 
  SQL> SET OFF KOMENTAR 
  SQL> SET berangkat 
  SQL> spool TRUNC.SQL 
  SQL> SELECT 'truncate TABLE' | | TABLE_NAME | | ';' 
    2 DARI ALL_TABLES 
    3 WHERE PEMILIK 'Ryan =' 
    4 /
OUTPUT:
  TABEL truncate ACCT_PAY; 
  TABEL truncate ACCT_REC; 
  Truncate TABEL NASABAH; 
  Truncate TABEL KARYAWAN; 
  TABEL truncate SEJARAH; 
  TABEL truncate Faktur; 
  Truncate TABLE pesanan; 
  Truncate TABEL PRODUK; 
  TABEL truncate PROYEK; 
  TABEL truncate Vendor; 

Silakan menjalankan script Anda jika Anda berani.

INPUT / OUTPUT:
  SQL> spool MATI 
  SQL> SET ON KOMENTAR 
  SQL> START TRUNC.SQL 

  Tabel dipotong. 

  Tabel dipotong. 

  Tabel dipotong. 

  Tabel dipotong. 

  Tabel dipotong. 

  Tabel dipotong. 

  Tabel dipotong. 

  Tabel dipotong. 

  Tabel dipotong. 

  Tabel dipotong. 
ANALISIS:

Truncating seluruh tabel yang dimiliki oleh Ryan menghapus semua data dari tabel tersebut. Tabel pemotongan mudah. Anda dapat menggunakan teknik ini jika Anda berencana untuk terisi kembali meja Anda dengan data baru.


TIP: Sebelum melakukan operasi seperti tabel dalam skema truncating, Anda selalu harus memiliki cadangan yang baik dari tabel Anda berencana untuk memotong, bahkan jika Anda yakin bahwa Anda tidak akan memerlukan data lagi. (Anda akan – seseorang yakin meminta Anda untuk mengembalikan data yang lama.)


Menggunakan SQL untuk Menghasilkan Skrip Shell

Anda juga dapat menggunakan SQL untuk menghasilkan bentuk-bentuk lain dari script, seperti skrip shell. Sebagai contoh, sebuah RDBMS server Oracle dapat berjalan di lingkungan UNIX, yang biasanya jauh lebih besar dari lingkungan sistem operasi PC. Oleh karena itu, UNIX memerlukan pendekatan yang lebih terorganisir untuk file manajemen. Anda dapat menggunakan SQL dengan mudah untuk mengelola database file dengan membuat skrip shell.

Skenario berikut tetes tablespace di database. Meskipun tablespace dapat menjatuhkan menggunakan SQL, data sebenarnya file yang berhubungan dengan tablespace ini harus dihilangkan dari sistem operasi terpisah.

Langkah pertama adalah untuk menghasilkan skrip SQL untuk drop tablespace.

INPUT:
  SQL> SET ECHO OFF 
  SQL> SET OFF KOMENTAR 
  SQL> SET berangkat 
  SQL> spool DROP_TS.SQL 
  SQL> SELECT 'DROP Tablespace' | | TABLESPACE_NAME | | 'TERMASUK ISI;' 
    2 DARI SYS.DBA_TABLESPACES 
    3 /
OUTPUT:
  DROP tablespace SISTEM TERMASUK ISI; 
  DROP tablespace RBS TERMASUK ISI; 
  DROP tablespace TEMP TERMASUK ISI; 
  DROP tablespace TERMASUK ALAT ISI; 
  DROP tablespace TERMASUK PENGGUNA ISI; 

Selanjutnya Anda harus membuat script shell untuk menghapus data file dari sistem operasi setelah tablespace telah dijatuhkan.

INPUT / OUTPUT:
  SQL> spool MATI 
  SQL> spool RM_FILES.SH 
  SQL> SELECT 'RM-' | F FILE_NAME | 
    2 DARI SYS.DBA_DATA_FILES 
    3 / 

  rm-f / disk01/orasys/db01/system0.dbf 
  rm-f / disk02/orasys/db01/rbs0.dbf 
  rm-f / disk03/orasys/db01/temp0.dbf 
  rm-f / disk04/orasys/db01/tools0.dbf 
  rm-f / disk05/orasys/db01/users0.dbf 
  SQL> spool off 
  SQL> 
ANALISIS:

Sekarang bahwa Anda telah dihasilkan kedua script, Anda dapat menjalankan script untuk drop tablespace dan kemudian jalankan shell script sistem operasi untuk menghapus file data yang sesuai. Anda juga akan menemukan banyak cara lain untuk mengelola file dan menghasilkan script non-SQL menggunakan SQL.

Tabel Reverse Rekayasa dan Indeks

Meskipun banyak alat KASUS memungkinkan Anda untuk reverse-insinyur tabel dan indeks, Anda selalu bisa menggunakan SQL langsung untuk tujuan ini. Anda dapat mengambil semua informasi yang Anda butuhkan dari kamus data untuk membangun kembali tabel dan indeks, namun hal ini secara efektif adalah sulit tanpa menggunakan bahasa prosedural, seperti PL / SQL atau shell script.

Kami biasanya menggunakan embedded SQL dalam skrip shell. fungsi bahasa prosedural yang diperlukan untuk steker pada bahan yang sesuai sintaks, seperti koma. Script harus cukup pintar untuk tahu mana kolom adalah yang terakhir, sehingga tidak terjadi koma setelah kolom terakhir. Script juga harus tahu di mana menempatkan kurung, dan seterusnya. Carilah alat yang tersedia untuk menumbuhkan objek dari kamus data, apakah Anda menggunakan C, Perl, shell scripts, COBOL, atau PL / SQL.

Ringkasan

Membangkitkan laporan langsung dari database suku cadang pekerjaan Anda membosankan sering coding pernyataan SQL. Terlepas dari lingkup pekerjaan Anda, dengan menggunakan teknik generasi pernyataan SQL membebaskan Anda untuk bekerja pada fase-fase lain proyek Anda.

Apa yang telah Anda pelajari hari ini adalah dasar, dan meskipun contoh-contoh ini menggunakan database Oracle, Anda dapat menerapkan konsep-konsep untuk database relasional. Pastikan untuk memeriksa implementasi spesifik Anda untuk variasi dalam sintaks dan struktur data kamus. Jika Anda tetap berpikiran terbuka, Anda akan terus menemukan cara untuk menghasilkan script SQL, dari pernyataan sederhana untuk sistem manajemen tingkat tinggi yang kompleks.

Sumber ; http://www.webbasedprogramming.com