SQL adalah segalanya bagi kami

Seperti yang mungkin sudah Anda duga, semua perintah ke server SQL dapat diberikan melalui kueri SQL. Semuanya.

Tim-tim ini secara resmi dibagi menjadi 4 grup:

  • pernyataan definisi data (Data Definition Language, DDL ):

    • CREATE membuat objek basis data (database itu sendiri, tabel, tampilan, pengguna, dan sebagainya)
    • ALTER mengubah objek
    • DROP menghapus objek
  • operator manipulasi data (Data Manipulation Language, DML ):

    • SELECT memilih data yang memenuhi kondisi yang diberikan
    • INSERT menambahkan data baru
    • UPDATE mengubah data yang ada
    • HAPUS menghapus data
  • operator definisi akses data (Data Control Language, DCL ):

    • GRANT memberikan izin kepada pengguna (grup) untuk melakukan operasi tertentu pada suatu objek
    • REVOKE mencabut izin yang dikeluarkan sebelumnya
    • DENY menetapkan larangan yang lebih diutamakan daripada izin
  • Pernyataan Bahasa Kontrol Transaksi ( TCL ) :

    • COMMIT menerapkan transaksi
    • ROLLBACK mengembalikan semua perubahan yang dibuat dalam konteks transaksi saat ini
    • SAVEPOINT membagi transaksi menjadi bagian-bagian yang lebih kecil

Dan dua level pertama, kami hanya mempelajari variasi pernyataan SELECT. Bayangkan betapa banyak hal menarik yang menanti kita di masa depan.

Tapi kami mempersiapkan di sini terutama tentang programmer Java, jadi kami akan mempelajari skenario yang pasti akan Anda temui di tempat kerja.

Administrator sistem pada proyek kemungkinan besar akan membuat semua database, tetapi Anda pasti harus memilih sendiri dari data tersebut berkali-kali.

Selain itu, terkadang kode Anda tidak akan menulis semua data ke database atau menulisnya dengan cara yang salah, jadi Anda sering kali harus memanjatnya dengan pena dan melihat apa yang sebenarnya disimpan di sana.

Mari kita bahas lagi hal-hal yang kita singgung di kuliah sebelumnya.

Membuat skema dalam database

Untuk membuat skema baru di DBMS, Anda perlu menjalankan perintah:

CREATE SCHEMA Name;

Ini adalah opsi termudah. Selain itu, saat membuat skema baru, Anda dapat menentukan format penyandian data dan parameter lainnya.

Jika Anda ingin menghapus skema, tetapi Anda tidak yakin apakah itu ada, maka Anda perlu menjalankan perintah:

DROP SCHEMA IF EXIST Name;

Anda akan sering melihat perintah ini di file dengan cadangan dari database yang berbeda, itulah mengapa saya membawanya ke sini.

Memilih skema saat ini

Jika Anda memiliki banyak skema di DBMS Anda, maka dapat dengan mudah terjadi bahwa skema yang berbeda memiliki tabel yang sama. Untuk menghindari kebingungan, Anda dapat melakukan dua hal:

  • Selalu cantumkan nama skema sebelum nama tabel
  • Tentukan skema default

Mari tulis kueri yang akan memilih data dari tabel pengguna , yang ada di skema pengujian . Ini akan terlihat seperti ini:

SELECT * FROM test.user;

Ini sangat diperlukan jika Anda perlu menggabungkan (JOIN) beberapa tabel dari skema yang berbeda dalam satu kueri.

Omong-omong, dalam bahasa Java kita sering melakukan hal serupa: jika dalam kode kita perlu menggunakan kelas dengan nama yang sama dari paket yang berbeda, kita menambahkan nama paket sebelum nama kelas.

Cara kedua adalah menentukan skema default . Jika kueri menentukan nama tabel tetapi tanpa skema, skema default akan digunakan. Untuk melakukannya, gunakan pernyataan USE :

USE name - schemes;

Mari tulis ulang kueri sebelumnya menggunakan pernyataan USE:

USE test;
SELECT * FROM user;

Membuat Tampilan

Selain tabel dengan data nyata, SQL memungkinkan Anda menyimpan sesuatu seperti tabel virtual, tempat data diambil dari tabel nyata. Tabel virtual semacam itu disebut VIEW.

Tabel seperti itu tidak dapat menyimpan data nyata, dan setiap kali diakses, ia menarik data dari tabel nyata. Isi dari VIEW tersebut ditentukan menggunakan kueri SQL.

Anda dapat membuat TAMPILAN dari kueri SELECT apa pun dengan perintah seperti:

CREATE VIEW Name AS
SELECT-request;
Mari tulis kueri yang akan membuat tabel virtual public_employee berdasarkan tabel karyawan, tempat informasi gaji karyawan akan disembunyikan:
CREATE VIEW public_employee AS
SELECT id, name FROM employee

Pada contoh di atas, tabel (VIEW) public_employee kami hanya akan berisi ID karyawan dan nama mereka, tetapi bukan informasi tentang gaji mereka. Anda dapat menggunakan Tampilan tersebut di tempat yang sama dengan tabel sebenarnya.

Mengapa Tampilan diperlukan? Mereka memiliki sejumlah keunggulan:

Kontrol akses informasi yang fleksibel . Anda dapat memberikan akses kepada pengguna tertentu hanya untuk VIEW, tetapi tidak untuk memberikan akses ke tabel. Dan di View, ambil hanya informasi publik dari tabel. Selain itu, jika kolom baru dengan informasi penting ditambahkan ke tabel di masa mendatang, kolom tersebut tidak akan masuk ke Tampilan secara tidak sengaja.

Denormalisasi data . Untuk kenyamanan penyimpanan, data sering kali dibagi menjadi ratusan dan ribuan tabel, tetapi sangat tidak nyaman bagi orang biasa untuk bekerja dengan data seperti itu - Anda harus menulis kueri yang terlalu rumit. Dengan View, Anda dapat membuat tabel virtual yang menampilkan data dari lusinan tabel berbeda dalam satu tabel.

Polimorfisme dan Enkapsulasi . Anda dapat mengubah struktur database Anda. Pada saat yang sama, pengguna program yang bekerja dengan Tampilan Anda tidak akan menebak bahwa ada sesuatu yang berubah. Dan tidak perlu menulis ulang kode program yang memiliki akses ke View. Anda hanya perlu men-tweak skrip SQL yang terkait dengan VIEW.

Baca saja . Tampilan hanya dapat disetel dengan kueri SELECT, jadi bekerja dengan Tampilan tidak dapat mengubah data dalam tabel nyata dengan cara apa pun. Omong-omong, ini adalah nilai tambah lainnya yang mendukung caching kueri. Tetapi lebih banyak tentang itu lain kali.