SQL "for dummies": apa yang perlu diketahui pemula? Pengantar MS SQL Server dan T-SQL

Terjemahan: Alexandr Pyramidin

Artikel ini memperkenalkan Anda pada struktur bahasa SQL, serta beberapa konsep umum seperti jenis bidang data yang dapat dikandungnya dan beberapa ambiguitas yang ada dalam SQL. Anda tidak perlu mengingat setiap detail yang disebutkan dalam artikel ini. Ini hanyalah gambaran singkat; banyak detail yang diberikan sehingga Anda dapat merujuknya nanti saat Anda menguasai bahasanya.

Bagaimana cara kerja SQL?

SQL adalah bahasa yang dirancang khusus untuk database relasional (RDB). Ini melakukan banyak pekerjaan yang harus Anda lakukan jika Anda menggunakan bahasa pemrograman tujuan umum seperti C. Untuk membentuk RDB di C, Anda harus memulai dari awal. Anda akan mendefinisikan objek yang disebut tabel yang dapat bertambah hingga memiliki jumlah baris berapa pun, lalu membuat prosedur tambahan untuk menyisipkan dan mengambil nilai.

Jika Anda ingin menemukan beberapa string tertentu, Anda perlu mengikuti prosedur langkah demi langkah seperti berikut:

  • Pertimbangkan baris tabel.
  • Periksa untuk melihat apakah string ini adalah salah satu string yang Anda butuhkan.
  • Jika ya, simpan di suatu tempat sampai seluruh tabel telah diperiksa.
  • Periksa apakah ada baris lain di tabel.
  • Jika ada, kembali ke langkah 1.
  • Jika tidak ada baris lagi, cetak semua nilai yang disimpan pada langkah 3.

(Tentu saja, ini bukan kumpulan perintah C yang sebenarnya, hanya logika langkah-langkah yang akan disertakan dalam program nyata.) SQL akan melakukan semua ini untuk Anda. Perintah dalam SQL dapat beroperasi pada semua grup tabel sebagai satu kesatuan dan dapat memproses sejumlah informasi yang diekstraksi atau diturunkan dari tabel tersebut sebagai satu unit.

Apa yang dilakukan ANSI?

Seperti yang kami katakan di Pendahuluan, standar SQL didefinisikan menggunakan kode ANSI (American National Standards Institute). SQL tidak ditemukan oleh ANSI. Ini pada dasarnya adalah penemuan IBM. Namun perusahaan lain langsung menggunakan SQL. Setidaknya satu perusahaan (Oracle) telah memenangkan hak untuk memasarkan produk SQL dari IBM.

Setelah sejumlah program SQL yang bersaing muncul di pasar, ANSI menetapkan standar yang harus dipatuhi. (Mendefinisikan standar tersebut adalah fungsi ANSI.) Namun, setelah itu muncul beberapa masalah. Mereka muncul sebagai akibat dari standardisasi ANSI, berupa beberapa batasan. Karena ANSI tidak selalu mendefinisikan apa yang paling berguna, program mencoba untuk menyesuaikan diri dengan standar ANSI tanpa membiarkannya membatasinya terlalu banyak. Hal ini, pada gilirannya, menyebabkan inkonsistensi acak. Program database biasanya menambahkan fitur tambahan ke ANSI SQL dan sering kali melonggarkan banyak batasan. Oleh karena itu, varian ANSI yang umum juga akan dipertimbangkan. Meskipun kami jelas tidak dapat mencakup setiap pengecualian atau variasi, ide-ide bagus cenderung diadopsi dan digunakan dalam berbagai program, bahkan ketika ide-ide tersebut tidak ditentukan oleh standar ANSI. ANSI adalah jenis standar minimum, dan Anda dapat melakukan lebih dari yang diizinkan, meskipun Anda harus mengikuti pedomannya saat melakukan tugas yang ditentukan.

SQL interaktif dan bersarang

Ada dua SQL: Interaktif dan Bersarang. Secara umum, kedua bentuk ini berfungsi sama, namun penggunaannya berbeda. SQL Interaktif digunakan untuk dijalankan langsung pada database untuk menghasilkan output untuk digunakan oleh pelanggan. Dalam SQL ini - ketika Anda memasukkan suatu perintah, itu akan segera dieksekusi, dan Anda dapat langsung melihat hasilnya (jika ada).

SQL Bersarang terdiri dari perintah SQL yang ditempatkan di dalam program yang biasanya ditulis dalam bahasa lain (seperti COBOL atau PASCAL). Hal ini membuat program-program tersebut lebih kuat dan efektif.

Namun, mengizinkan bahasa ini hadir dengan struktur SQL dan gaya manajemen data yang memerlukan beberapa ekstensi SQL interaktif. Meneruskan perintah SQL ke dalam SQL bersarang "diteruskan" untuk variabel atau parameter yang digunakan oleh program di mana perintah tersebut disarangkan.

Dalam buku ini, kami akan menyajikan SQL secara interaktif. Ini akan memberi kita kemampuan untuk mendiskusikan perintah dan tindakannya tanpa khawatir tentang bagaimana perintah tersebut dihubungkan dengan bahasa lain. SQL Interaktif adalah bentuk yang paling berguna bagi non-programmer. Segala sesuatu yang Anda pelajari tentang SQL interaktif umumnya berlaku untuk formulir bersarang. Perubahan yang diperlukan untuk menggunakan formulir bertingkat akan dibahas di bab terakhir buku ini.

Subbagian SQL

Bentuk SQL interaktif dan bersarang memiliki banyak bagian, atau subbagian. Karena Anda mungkin akan menemukan terminologi ini saat membaca SQL, kami akan memberikan beberapa klarifikasi. Sayangnya, istilah-istilah ini tidak digunakan secara universal di semua implementasi. Mereka ditentukan oleh ANSI dan berguna pada tingkat konseptual, namun sebagian besar program SQL tidak banyak menanganinya secara terpisah, sehingga pada dasarnya mereka menjadi kategori fungsional dari perintah SQL.

  • DDL (Data Definition Language) - disebut Schema Description Language di ANSI - terdiri dari perintah yang membuat objek (tabel, indeks, tampilan, dan sebagainya) dalam database.
  • DML (Data Manipulation Language) adalah sekumpulan perintah yang menentukan nilai apa yang direpresentasikan dalam tabel pada waktu tertentu.
  • DCD (Data Control Language) terdiri dari alat yang menentukan apakah pengguna diperbolehkan melakukan tindakan tertentu atau tidak. Mereka adalah bagian dari ANSI DDL.

Jangan lupakan nama-nama ini. Ini bukan bahasa yang berbeda, tetapi bagian dari perintah SQL yang dikelompokkan berdasarkan fungsinya.

Berbagai Tipe Data

Tidak semua jenis nilai yang dapat ditemukan di bidang tabel secara logis sama. Perbedaan paling kentara adalah antara angka dan teks. Anda tidak dapat menyusun angka berdasarkan abjad atau mengurangi satu nama dari nama lainnya.

Karena sistem DDB didasarkan pada hubungan antar potongan informasi, jenis data yang berbeda harus dibedakan satu sama lain sehingga proses dan perbandingan yang tepat dapat dilakukan antar data. Dalam SQL, hal ini dilakukan dengan menetapkan tipe data pada setiap bidang yang menunjukkan jenis nilai yang dapat ditampung oleh bidang tersebut. Semua nilai di bidang ini harus bertipe sama. Dalam tabel Pelanggan, misalnya, cname dan city berisi baris teks untuk dievaluasi, dan snum dan cnum adalah angka. Karena alasan ini, Anda tidak bisa memasukkan nilai tertinggi atau nilai tidak ada di bidang peringkat, yang merupakan tipe data numerik. Batasan ini bagus karena menerapkan beberapa struktur pada data Anda. Anda akan sering membandingkan beberapa atau semua nilai dalam bidang tertentu, jadi Anda mungkin hanya ingin melakukan tindakan pada baris tertentu, bukan semuanya. Anda tidak dapat melakukan ini jika nilai bidang bertipe data campuran.

Sayangnya, mendefinisikan tipe data ini adalah area utama dimana sebagian besar program database komersial dan standar SQL resmi tidak selalu setuju. Standar ANSI SQL hanya mengenali teks dan angka, sedangkan sebagian besar program komersial menggunakan tipe khusus lainnya. Seperti DATA dan TIME, pada kenyataannya, hampir merupakan tipe standar (walaupun format pastinya berbeda-beda). Beberapa paket juga mendukung tipe seperti MONEY dan BINARY. (UANG adalah sistem "mata uang" khusus yang digunakan oleh komputer.)

Semua informasi di komputer ditransmisikan dalam bilangan biner dan kemudian diubah ke sistem lain sehingga kita dapat dengan mudah menggunakan dan memahaminya.

ANSI mendefinisikan beberapa tipe numerik, perbedaan di antara keduanya cukup halus dan terkadang membingungkan. Tipe data ANSI yang diizinkan tercantum dalam Lampiran B. Kompleksitas tipe numerik ANSI dapat dikaitkan, setidaknya sebagian, dengan upaya untuk membuat SQL bersarang kompatibel dengan sejumlah bahasa lain. Dua jenis angka ANSI, INTEGER dan DECIMAL (yang masing-masing dapat disingkat INT dan DEC), akan memadai untuk tujuan kita, serta untuk tujuan sebagian besar aplikasi bisnis praktis. Biasanya, tipe INTEGER dapat direpresentasikan sebagai ANGKA DESIMAL, yang tidak mengandung angka apa pun di sebelah kanan koma desimal.

Tipe teksnya adalah CHAR (atau CHAR), mengacu pada string teks. Bidang CHAR memiliki panjang yang ditentukan oleh jumlah maksimum karakter yang dapat dimasukkan ke dalam bidang tersebut. Sebagian besar implementasi juga memiliki tipe non-standar yang disebut VARCHAR, yang merupakan string teks dan panjangnya dapat berapa pun hingga maksimum yang ditentukan implementasi (biasanya 254 karakter). Nilai CHARACTER dan VARCHAR diapit dalam tanda petik tunggal sebagai “teks”. Perbedaan antara CHAR dan VARCHAR adalah CHAR harus mencadangkan memori yang cukup untuk panjang maksimum string, sedangkan VARCHAR mengalokasikan memori sesuai kebutuhan.

Tipe karakter terdiri dari semua karakter yang dapat dicetak, termasuk angka. Namun angka 1 tidak sama dengan simbol “1”. Karakter "1" hanyalah potongan teks yang dicetak, tidak ditentukan oleh sistem sebagai nilai numerik 1. Misalnya, 1 + 1 = 2, tetapi "1" + "1" tidak sama dengan "2". Nilai karakter disimpan di komputer sebagai nilai biner, tetapi ditampilkan kepada pengguna sebagai teks tercetak.

Konversi dilakukan dalam format yang ditentukan oleh sistem yang Anda gunakan. Format konversi ini akan menjadi salah satu dari dua tipe standar (mungkin dengan ekstensi) yang digunakan dalam sistem komputer: kode ASCII (digunakan di semua komputer pribadi dan kecil) dan kode EBCDIC (Extracted Binary Decimal Information Interchange Code) (digunakan di komputer besar). Operasi tertentu, seperti mengurutkan nilai bidang berdasarkan abjad, akan berubah sesuai format.

Kita harus mengikuti pasar, bukan ANSI, dalam penggunaan tipe DATE. (Pada sistem yang tidak mengenali tipe DATE, tentu saja Anda dapat mendeklarasikan tanggal sebagai kolom karakter atau numerik, namun hal ini akan membuat sebagian besar operasi menjadi lebih padat karya.)

Anda harus meninjau dokumentasi paket perangkat lunak yang akan Anda gunakan untuk mengetahui tipe data apa yang didukungnya.

SQL. Inkonsistensi.

Anda dapat memahami dari diskusi sebelumnya bahwa ada perbedaan terpisah antara produk-produk dunia SQL. SQL muncul dari dunia database komersial sebagai alat dan kemudian dikembangkan menjadi standar ANSI. Sayangnya, ANSI tidak selalu menentukan apa yang paling berguna, sehingga program mencoba menyesuaikan diri dengan standar ANSI tanpa membiarkannya terlalu membatasinya. ANSI adalah sejenis standar minimum - Anda dapat melakukan lebih dari yang diizinkan, namun Anda harus bisa mendapatkan hasil yang sama saat melakukan tugas yang sama.

APA ITU "PENGGUNA"?

SQL biasanya berada pada sistem komputer yang memiliki lebih dari satu pengguna dan oleh karena itu perlu membedakan antara mereka (keluarga PC Anda dapat memiliki sejumlah pengguna, namun biasanya tidak memiliki cara untuk membedakan satu pengguna dari yang lain).

Biasanya, dalam sistem seperti itu, setiap pengguna memiliki semacam kode verifikasi hak yang mengidentifikasi dirinya (terminologinya berbeda-beda). Pada awal sesi dengan komputer, pengguna log in (mendaftar), memberi tahu komputer siapa pengguna tersebut dengan mengidentifikasi dirinya menggunakan ID tertentu. Sejumlah orang yang menggunakan ID akses adalah pengguna individu; dan demikian pula, satu orang dapat mewakili sejumlah besar pengguna (pada waktu yang berbeda) menggunakan ID akses SQL yang berbeda. Tindakan di sebagian besar lingkungan SQL dipetakan ke Access Identifier tertentu yang sama persis dengan pengguna tertentu. Sebuah tabel atau objek lain dimiliki oleh pengguna yang memiliki kendali penuh atas tabel tersebut. Pengguna mungkin atau mungkin tidak memiliki hak istimewa untuk melakukan suatu tindakan pada objek. Untuk tujuan kami, kami akan setuju bahwa setiap pengguna memiliki hak istimewa yang diperlukan untuk melakukan tindakan apa pun sampai kita kembali secara khusus ke pembahasan hak istimewa di Bab 22. Nilai khusus USER dapat digunakan sebagai argumen dalam sebuah perintah. Ini menunjukkan ID yang tersedia dari pengguna yang mengeluarkan perintah.

Konvensi dan terminologi

Kata kunci adalah kata-kata yang memiliki arti khusus dalam SQL. Itu bisa berupa perintah, tapi bukan nama teks atau objek. Kami akan menyorot kata-kata kunci dengan mengetikkannya dalam HURUF BESAR. Anda harus berhati-hati agar tidak mengacaukan kata kunci dengan istilah.

SQL memiliki istilah khusus tertentu yang digunakan untuk menggambarkannya. Diantaranya adalah kata-kata seperti "query", "clause" dan "predikat", yang merupakan yang paling penting dalam deskripsi dan pemahaman bahasa, namun tidak berarti sesuatu yang independen untuk SQL.

Perintah atau pernyataan adalah instruksi yang digunakan untuk mengakses database SQL.

Perintah terdiri dari satu atau lebih bagian logis terpisah yang disebut klausa.

Kalimat dimulai dengan kata kunci dan terdiri dari kata kunci dan argumen. Misalnya, klausa yang mungkin Anda temui adalah "FROM Salespeope" dan "WHERE city = "London"". Argumen melengkapi atau mengubah makna sebuah kalimat. Dalam contoh di atas, Tenaga Penjualan adalah argumennya dan FROM adalah kata kunci dari klausa FROM. Demikian pula, "city = "London"" adalah argumen terhadap klausa WHERE.

Objek adalah struktur database yang diberi nama dan disimpan dalam memori. Ini termasuk tabel dasar, tampilan, dan indeks.

Untuk menunjukkan kepada Anda bagaimana tim dibentuk, kami akan melakukannya dengan contoh. Namun, ada metode yang lebih formal untuk mendeskripsikan perintah yang menggunakan konvensi standar. Kami akan menggunakannya di bab selanjutnya untuk memudahkan memahami konvensi ini jika Anda menemukannya di dokumen SQL lainnya.

Tanda kurung siku () akan menunjukkan bagian-bagian yang tidak boleh digunakan, dan elips (...) menunjukkan bahwa segala sesuatu yang mendahuluinya dapat diulang beberapa kali. Kata-kata dalam tanda kurung siku () adalah istilah khusus yang menjelaskan maksudnya. Kami telah menyederhanakan terminologi SQL standar tanpa membuatnya sulit untuk dipahami.

Melanjutkan

Kami membahas secara singkat dasar-dasarnya dalam bab ini. Namun niat kami adalah untuk segera membahas dasar-dasar SQL sehingga Anda dapat mencakup seluruh cakupan informasi.

Sekarang Anda mengetahui beberapa hal tentang SQL: apa strukturnya, bagaimana penggunaannya, bagaimana ia merepresentasikan data dan bagaimana ia didefinisikan (dan beberapa ketidakkonsistenan yang menyertainya), beberapa konvensi dan istilah yang digunakan untuk menggambarkannya. Semua ini terlalu banyak informasi untuk satu bab; Kami tidak mengharapkan Anda mengingat semua detail ini, namun Anda dapat merujuknya kembali nanti jika perlu.

Bahasa SQL

Jadi, kita sudah familiar dengan konsep dasar teori database, menginstal dan mengkonfigurasi MySQL agar berfungsi. Sekaranglah waktunya mempelajari cara memanipulasi data yang disimpan dalam database. Untuk ini kita perlu SQL – bahasa kueri terstruktur. Bahasa ini memungkinkan untuk membuat, mengedit dan menghapus informasi yang disimpan dalam database, membuat database baru dan banyak lagi. SQL adalah standar ANSI (American National Standards Institute) dan ISO (International Organization for Standardization).

Sedikit sejarah

Standar bahasa internasional pertama SQL diadopsi pada tahun 1989 dan sering disebut SQL/89 . Di antara kelemahan standar ini, yang paling menonjol adalah standar ini menetapkan banyak properti penting yang ditentukan oleh implementasi. Hal ini mengakibatkan banyak perbedaan dalam implementasi bahasa oleh produsen yang berbeda.

Ada juga keluhan tentang kurangnya referensi standar terhadap aspek praktis bahasa tersebut, seperti integrasinya ke dalam bahasa pemrograman C. SQL Standar Bahasa Internasional Berikutnya SQL/92 diadopsi pada akhir tahun 1992 dan dikenal sebagai SQL/89 , meskipun bukan tanpa kekurangannya. Saat ini, sebagian besar sistem menerapkan standar ini hampir sepenuhnya. Namun, seperti yang Anda ketahui, kemajuan tidak dapat dihentikan, dan pada tahun 1999 muncul standar baru SQL :1999, juga dikenal sebagai SQL3. SQL3 dicirikan sebagai "berorientasi objek" SQL ” dan merupakan dasar dari beberapa sistem manajemen basis data relasional objek (misalnya, ORACLE8 Oracle, Server Universal Informix, dan Basis Data Universal DB2 IBM). Standar ini bukan sekedar merger SQL-92 dan teknologi objek. SQL Ini berisi sejumlah perluasan dari yang tradisional

, dan dokumen itu sendiri dirancang untuk memfasilitasi pekerjaan standardisasi yang lebih efektif di masa depan.

MySQL adalah SQL92 entry-level, berisi beberapa ekstensi untuk standar tersebut, dan berupaya untuk sepenuhnya mendukung standar ANSI SQL99 tanpa mengorbankan kecepatan dan kualitas kode. SQL Selanjutnya, berbicara tentang dasar-dasar bahasa

, kami akan mematuhi implementasinya di DBMS MySQL. SQL

Operator bahasa dasar

  1. Fungsi dari setiap DBMS meliputi:
  2. membuat, menghapus, mengubah database (DB);
  3. menambah, mengubah, menghapus, memberikan hak pengguna;
  4. memasukkan, menghapus dan mengubah data dalam database (tabel dan catatan);

mengambil data dari database.

Hanya administrator DBMS atau pengguna istimewa yang memiliki akses ke dua fungsi pertama. SQL Mari kita lihat bagaimana dua masalah terakhir diselesaikan (sebenarnya ada tujuh masalah). Sebelum Anda melakukan apa pun dengan data, Anda perlu membuat tabel di mana data ini akan disimpan, mempelajari cara mengubah struktur tabel ini dan menghapusnya jika perlu. Untuk tujuan ini dalam bahasa, ada operator BUAT TABEL MENGUBAH TABEL.

Dan

JATUHKAN MEJA pernyataan BUAT TABEL

mysql>CREATE TABLE Persons (id INT PRIMARY KEY AUTO_INCREMENT, nama_depan VARCHAR(50), nama_akhir VARCHAR(100), tanggal_kematian INT, TEKS deskripsi, foto INT, kewarganegaraan CHAR(50) DEFAULT "Rusia");

Contoh 10.1. Membuat tabel Orang

Dengan menggunakan perintah SHOW khusus MySql, Anda dapat melihat database yang ada, tabel dalam database, dan bidang dalam tabel.

Tampilkan semua database:

mysql>TAMPILKAN database;

Jadikan database buku terkini dan tampilkan semua tabel di dalamnya:

mysql>gunakan buku; mysql>tampilkan tabel;

Tampilkan semua kolom di tabel Orang:

mysql> tampilkan kolom dari Orang; MENGUBAH TABEL menghapus satu atau lebih tabel. Semua data dan definisi tabel dihapus, jadi berhati-hatilah saat menggunakan perintah ini.

Sintaksis:

DROP TABLE nama_tabel [, nama_tabel,...]

Di MySQL 3.22 dan yang lebih baru, Anda dapat menggunakan kata kunci IF EXISTS untuk memunculkan kesalahan jika tabel yang ditentukan tidak ada.

Opsi RESTRICT dan CASCADE memudahkan transfer program dari DBMS lain. Saat ini mereka tidak digunakan.

mysql> DROP TABLE JIKA ADA Orang, Artefak, tes; Contoh 10.2. Menggunakan pernyataan DROP TABLE

Pernyataan ALTER TABLE

mysql> tampilkan kolom dari Orang; ada operator memberikan kemampuan untuk mengubah struktur tabel yang ada.

Sintaksis:

Misalnya, Anda bisa menambah atau menghapus kolom, membuat atau menghancurkan indeks, atau mengganti nama kolom atau tabel itu sendiri.

Anda juga dapat mengubah komentar untuk tabel dan tipenya.

  • ALTER TABLE nama_tabel alter_spesifikasi [, alter_spesifikasi ...]

    Anda dapat membuat perubahan berikut pada tabel (semuanya dicatat dalam alter_spesifikasi ):

    menambahkan bidang:

  • TAMBAHKAN definisi_kolom

    TAMBAHKAN (definisi_kolom, definisi_kolom,...) menambahkan indeks: MENAMBAHKAN INDEKS [nama_indeks] (nama_kolom,...) MENAMBAHKAN atau TAMBAHKAN KUNCI UTAMA (nama_kolom,...) UNIK [nama_indeks] (nama_kolom,...)

  • atau

    TAMBAHKAN TEKS LENGKAP [nama_indeks] (nama_kolom,...) KUNCI UTAMA (nama_kolom,...) perubahan bidang: KUNCI UTAMA (nama_kolom,...) ALTER nama_kolom (ATUR literal DEFAULT | DROP DEFAULT)

  • GANTI nama_kolom lama definisi_kolom

    MODIFIKASI kolom_definisi

  • menghapus bidang, indeks, kunci:

    DROP nama_kolom DROP PRIMARY KEY DROP INDEX nama_indeks

  • mengganti nama tabel:

    GANTI NAMA_nama_tabel baru

    menyusun ulang bidang tabel:

bidang ORDER BERDASARKAN pilihan_tabel Jika operator MENGUBAH TABEL digunakan untuk mengubah definisi tipe kolom, tapi

mysql> tampilkan kolom dari Orang; pilihan_tabel DESCRIBE nama_tabel ada operator tabel asli dapat dibaca oleh klien lain. Operasi pembaruan dan penulisan pada tabel ini ditangguhkan hingga tabel baru siap.

Perlu dicatat bahwa ketika menggunakan opsi lain untuk ALTER TABLE selain RENAME, MySQL akan selalu membuat tabel sementara, bahkan jika data tidak benar-benar perlu disalin (misalnya, ketika nama kolom diubah). Contoh 10.3

. Mari tambahkan field ke tabel Persons yang dibuat untuk mencatat tahun lahir orang tersebut: mysql> ALTER TABLE Orang TAMBAHKAN BDAY INTEGER SETELAH last_name;

Contoh 10.3. Menambahkan field pada tabel Persons untuk mencatat tahun lahir seseorang

Jadi, kita telah mempelajari cara bekerja dengan tabel: membuat, menghapus, dan memodifikasinya. Sekarang mari kita cari tahu cara melakukan hal yang sama dengan data yang disimpan dalam tabel ini.

mysql> tampilkan kolom dari Orang; pernyataan PILIH MEMILIH

digunakan untuk mengambil baris yang dipilih dari satu atau lebih tabel. Artinya, dengan bantuannya kami menentukan kolom atau ekspresi yang perlu diambil (select_expressions), tabel (table_references), dari mana pemilihan harus dilakukan, dan, mungkin, kondisi (where_definition), dimana data di dalamnya kolom harus sesuai dengan, dan urutan penerbitan data ini. pernyataan PILIH Selain itu, operator

dapat digunakan untuk mengambil baris yang dihitung tanpa referensi ke tabel mana pun. Misalnya, untuk menghitung 2*2, Anda cukup menulis

mysql> PILIH 2*2; pernyataan PILIH Struktur operator yang disederhanakan

dapat direpresentasikan sebagai berikut:

Tanda kurung siku berarti operator di dalamnya adalah opsional;

berarti daftar opsi yang memungkinkan. Setelah kata kunci ORDER BY, tunjukkan nama kolom, nomor (unsigned integer) atau rumus dan metode pengurutan (ascending - ASC, atau descending - DESC). Urutan defaultnya adalah menaik. Saat kita menulis “*” di select_expression, ini berarti memilih semua kolom. Selain “*”, fungsi seperti max , min dan avg dapat digunakan di select_expressions.

Contoh 10.4

. Pilih dari tabel Orang semua data yang bidang nama_depannya memiliki nilai "Alexander":

mysql> tampilkan kolom dari Orang; Pilih nama dan deskripsi (judul, deskripsi) artefak nomor 10: menyisipkan baris baru ke dalam tabel yang sudah ada. Operator memiliki beberapa bentuk. Parameter table_name di semua formulir ini menentukan tabel di mana baris harus ditulis. Kolom yang nilainya ditetapkan ditentukan dalam daftar nama kolom (nama_kolom) atau di bagian SET.

Sintaksis:

    MASUKKAN nama_tabel [(nama_kolom,...)] NILAI (ekspresi,...),(...),...

    Bentuk perintah ini Pilih nama dan deskripsi (judul, deskripsi) artefak nomor 10: menyisipkan baris sesuai dengan nilai persis yang ditentukan dalam perintah. Kolom dicantumkan dalam tanda kurung setelah nama tabel, dan nilainya dicantumkan setelah kata kunci VALUES.

    Misalnya:

    mysql> INSERT INTO Persons (last_name, bday) VALUES ("Ivanov", "1934");

    akan memasukkan baris ke dalam tabel Persons di mana nilai nama belakang ( last_name ) dan tanggal lahir ( bday ) akan ditetapkan masing-masing sebagai “Ivanov” dan “1934”.

    MASUKKAN nama_tabel [(nama_kolom,...)] PILIH ...

    Bentuk perintah ini Pilih nama dan deskripsi (judul, deskripsi) artefak nomor 10: menyisipkan baris yang dipilih dari tabel atau tabel lain.

    Misalnya:

    akan memasukkan ke dalam tabel Artefak di bidang "penulis" nilai pengidentifikasi yang dipilih dari tabel Orang dengan syarat nama belakang orang tersebut adalah Ivanov.

    MASUKKAN nama_tabel SET nama_kolom=ekspresi, nama_kolom=ekspresi, ...

    Misalnya:

    mysql> MASUKKAN KE Orang SET last_name="Petrov", first_name="Ivan";

    Perintah ini akan memasukkan nilai “Petrov” ke dalam tabel Persons di kolom nama_belakang, dan string “Ivan” ke dalam kolom nama_depan.

Membentuk MASUKKAN...NILAI dengan daftar beberapa nilai didukung di MySQL 3.22.5 dan yang lebih baru. Sintaks Ekspresi nama_kolom=ekspresi

didukung di MySQL versi 3.22.10 dan yang lebih baru.

  • Perjanjian berikut ini berlaku. Jika tidak ada daftar kolom yang ditentukan KUNCI UTAMA (nama_kolom,...) MASUKKAN...NILAI MASUKKAN...PILIH pernyataan PILIH, maka nilai untuk semua kolom harus ditentukan dalam daftar VALUES() atau sebagai hasilnya MENGUBAH TABEL.
  • . Jika urutan kolom dalam tabel tidak diketahui, Anda bisa menggunakannya
  • Kolom apa pun yang tidak diberi nilai secara eksplisit akan ditetapkan ke nilai defaultnya. Misalnya, jika daftar kolom tertentu tidak menentukan semua kolom dalam tabel tertentu, maka kolom yang tidak disebutkan akan diatur ke nilai defaultnya.

    ekspresi dapat merujuk ke kolom mana pun yang sebelumnya disertakan dalam daftar nilai. Misalnya, Anda dapat menentukan hal berikut:

    mysql> MASUKKAN KE nama_tabel (col1,col2) NILAI(15,col1*2);

    Namun Anda tidak dapat menentukan:

mysql> MASUKKAN KE nama_tabel (col1,col2) NILAI(col2*2,15);

Parameter LOW_PRIORITY dan DELAYED digunakan ketika sejumlah besar pengguna bekerja dengan tabel. Mereka mengharuskan operasi tertentu diberi prioritas di atas operasi pengguna lain. Pilih nama dan deskripsi (judul, deskripsi) artefak nomor 10: Jika kata kunci LOW_PRIORITY ditentukan, maka jalankan perintah ini akan ditunda sampai klien lain selesai membaca tabel ini. Dalam hal ini, klien harus menunggu hingga perintah penyisipan selesai, yang dapat memakan banyak waktu jika tabel sering digunakan. Sebaliknya, perintah MASUKKAN TERTUNDA

memungkinkan klien tertentu untuk segera melanjutkan operasi, terlepas dari pengguna lainnya. Pilih nama dan deskripsi (judul, deskripsi) artefak nomor 10: Jika di tim Jika kata kunci IGNORE ditentukan, maka semua baris yang memiliki kunci duplikat UTAMA atau UNIK

pada tabel ini akan diabaikan dan tidak dimasukkan ke dalam tabel. Jika Anda tidak menentukan IGNORE , operasi penyisipan akan dibatalkan ketika menemukan baris yang memiliki nilai duplikat untuk kunci yang ada.

Sintaksis:

mysql> tampilkan kolom dari Orang; pernyataan PEMBARUAN MEMPERBARUI

Memperbarui nilai kolom tabel yang ada sesuai dengan nilai yang dimasukkan. Pernyataan SET menentukan kolom mana yang harus diubah dan nilai apa yang harus ditetapkan di dalamnya. Klausa WHERE, jika ada, menentukan baris mana yang diperbarui. Jika tidak, semua baris akan diperbarui. Jika ekspresi ORDER BY ditentukan, baris akan diperbarui sesuai urutan yang ditentukan di dalamnya. pernyataan PEMBARUAN Jika kata kunci LOW_PRIORITY ditentukan, maka jalankan perintah ini

ditunda sampai klien lain selesai membaca tabel ini.

Jika kata kunci IGNORE ditentukan, perintah pembaruan tidak akan dibatalkan meskipun terjadi kesalahan kunci duplikat. Baris yang menyebabkan konflik tidak akan diperbarui. pernyataan PEMBARUAN Jika ekspresi yang menentukan nilai kolom baru menggunakan nama bidang tersebut, maka perintahnya

menggunakan nilai kolom ini saat ini. Misalnya, perintah berikut menyetel kolom tanggal_kematian ke nilai yang lebih besar dari nilai saat ini:

mysql> UPDATE Orang SET death_date=tanggal_kematian+1;

Di MySQL versi 3.23, Anda dapat menggunakan parameter LIMIT # untuk memastikan bahwa hanya jumlah baris tertentu yang telah diubah.

Misalnya, operasi seperti itu akan menggantikan judul judul di baris pertama tabel pameran kami dengan string "Komputer tabung":" Limit 1;!}

mysql> PERBARUI Artefak SET title="Komputer tabung

mysql> tampilkan kolom dari Orang; pernyataan HAPUS menghapus baris dari tabel nama_tabel yang memenuhi kondisi yang ditentukan di mana_definisi dan mengembalikan jumlah catatan yang dihapus.

bidang ORDER BERDASARKAN pernyataan HAPUS dijalankan tanpa definisi WHERE, semua baris akan dihapus.

Sintaksis:

Misalnya, perintah berikut akan dihapus dari tabel Persons

BAHASA SQL: MANIPULASI DATA

DALAM KULIAH INI...

· Tujuan dari Structure Query Language (SQL) dan peran khususnya ketika bekerja dengan database.

· Sejarah kemunculan dan perkembangan bahasa SQL.

· Menulis pernyataan SQL.

· Mengambil informasi dari database menggunakan pernyataan SELECT.

· konstruksi pernyataan SQL ditandai dengan fitur-fitur berikut:

· menggunakan konstruksi WHERE untuk memilih baris yang memenuhi berbagai kondisi;

· mengurutkan hasil query menggunakan konstruk ORDER BY;

· penggunaan fungsi agregasi SQL;

· mengelompokkan data terpilih menggunakan konstruk GROUP BY;

· penggunaan subkueri;

· menggunakan gabungan tabel;

· penerapan operasi dengan himpunan (UNION, INTERSECT, EXCEPT).

· Melakukan perubahan pada database menggunakan pernyataan INSERT, UPDATE dan DELETE.

Salah satu bahasa yang muncul akibat berkembangnya model data relasional adalah SQL yang kini sudah sangat luas dan sebenarnya sudah menjadi bahasa standar untuk database relasional. Standar bahasa SQL dirilis oleh US National Standards Institute (ANSI) pada tahun 1986, dan pada tahun 1987 Organisasi Internasional untuk Standardisasi (ISO) mengadopsi standar ini sebagai standar internasional. Saat ini, bahasa SQL didukung oleh ratusan jenis DBMS, yang dikembangkan untuk berbagai platform komputasi, mulai dari komputer pribadi hingga mainframe.

Kuliah ini menggunakan definisi ISO dari SQL.

Pengantar SQL

Pada bagian ini, kita akan melihat tujuan dari bahasa SQL, mengenal sejarahnya, dan menganalisis alasan mengapa bahasa SQL kini menjadi begitu penting untuk aplikasi database.

Tujuan dari bahasa SQL

Bahasa apa pun yang dirancang untuk bekerja dengan database harus memberikan kemampuan berikut kepada pengguna:

· membuat database dan tabel dengan penjelasan lengkap tentang strukturnya;



· Melakukan operasi manipulasi data dasar, seperti menyisipkan, mengubah dan menghapus data dari tabel;

· Lakukan pertanyaan sederhana dan kompleks.

Selain itu, bahasa database harus menyelesaikan semua masalah di atas dengan sedikit usaha dari pengguna, dan struktur serta sintaksis perintahnya harus cukup sederhana dan mudah dipelajari.

Dan terakhir, bahasanya harus bersifat universal, yaitu. memenuhi beberapa standar yang diakui, yang memungkinkan penggunaan sintaksis dan struktur perintah yang sama ketika berpindah dari satu DBMS ke DBMS lainnya. Standar bahasa SQL modern memenuhi hampir semua persyaratan ini.

SQL adalah contoh bahasa transformasi data, atau bahasa yang dirancang untuk bekerja dengan tabel untuk mengubah data masukan menjadi bentuk keluaran yang diinginkan. Bahasa SQL, yang didefinisikan oleh standar ISO, memiliki dua komponen utama:

· Data Definition Language (DDL), dirancang untuk mendefinisikan struktur database dan mengontrol akses ke data;

· Data Manipulation Language (DML), dirancang untuk mengambil dan memperbarui data.

Sebelum munculnya standar SQL3, SQL hanya menyertakan perintah untuk mendefinisikan dan memanipulasi data; ia tidak memiliki perintah apa pun untuk mengontrol kemajuan perhitungan. Dengan kata lain, bahasa ini tidak memiliki IF...THN...ELSE, GO TO, DO...WHILE dan perintah lain yang dirancang untuk mengontrol kemajuan proses komputasi. Tugas-tugas tersebut harus diselesaikan secara terprogram, menggunakan bahasa pemrograman atau kontrol tugas, atau secara interaktif, sebagai hasil dari tindakan yang dilakukan oleh pengguna sendiri. Karena ketidaklengkapan ini, dari sudut pandang pengorganisasian proses komputasi, bahasa SQL dapat digunakan dalam dua cara. Yang pertama melibatkan pekerjaan interaktif, yang terdiri dari pengguna yang memasukkan pernyataan SQL individual dari terminal. Yang kedua adalah menanamkan pernyataan SQL ke dalam program bahasa prosedural.

Keuntungan bahasa SQL3, definisi formal yang diadopsi pada tahun 1999:

· Bahasa SQL relatif mudah dipelajari.

· Ini adalah bahasa non-prosedural, sehingga perlu menentukan informasi apa yang harus diperoleh, bukan bagaimana cara memperolehnya. Dengan kata lain, bahasa SQL tidak memerlukan penentuan metode akses data.

· Seperti kebanyakan bahasa modern, SQL mendukung format gratis untuk menulis pernyataan. Artinya, elemen operator individual tidak dikaitkan dengan posisi tetap di layar saat Anda mengetik.

· Struktur perintah ditentukan oleh sekumpulan kata kunci, yang merupakan kata-kata bahasa Inggris biasa, seperti CREATE TABLE - Buat tabel, INSERT - Sisipkan, SELECT - Pilih.

Misalnya:

BUAT TABEL [Penjualan] ( (S), [Nama objek] VARCHAR(15), [Biaya] DECIMAL(7,2));

MASUKKAN KE NILAI [Objek] ("SG16", "Brown", 8300);

SELECT , [Nama objek], [Biaya];

DARI [Penjualan]

DIMANA [Biaya] > 10.000;

· Bahasa SQL dapat digunakan oleh berbagai pengguna, termasuk administrator basis data (DBA), personel manajemen perusahaan, pemrogram aplikasi, dan banyak pengguna akhir lainnya dari berbagai kategori.

Saat ini, terdapat standar internasional untuk bahasa SQL yang secara formal mendefinisikannya sebagai bahasa standar untuk membuat dan memanipulasi database relasional, yang sebenarnya memang demikian.

Sejarah bahasa SQL

Sejarah model data relasional, dan secara tidak langsung bahasa SQL, dimulai pada tahun 1970 dengan diterbitkannya artikel penting oleh E. F. Codd, yang saat itu bekerja di laboratorium penelitian IBM di San Jose. Pada tahun 1974, D. Chamberlain, yang bekerja di laboratorium yang sama, menerbitkan definisi bahasa yang disebut “Bahasa Kueri Bahasa Inggris Terstruktur”, atau SEQUEL. Versi revisi dari bahasa ini, SEQUEL/2, dirilis pada tahun 1976; kemudian namanya harus diubah menjadi SQL karena alasan hukum - singkatan SEQUEL sudah digunakan oleh para filolog. Namun hingga saat ini, banyak orang yang masih mengucapkan akronim SQL sebagai "sekuel", meskipun secara resmi disarankan untuk dibaca sebagai "es-qu-el".

Pada tahun 1976, IBM merilis prototipe DBMS berdasarkan bahasa SEQUEL/2, yang disebut "System R". Tujuan dari uji coba ini adalah untuk menguji kelayakan penerapan model relasional. Di antara aspek positif lainnya, hasil terpenting dari proyek ini adalah pengembangan bahasa SQL itu sendiri. Namun, akar dari bahasa ini kembali ke bahasa SQUARE (Specifying Queries as Rational Expressions), yang merupakan pendahulu dari bahasa SQL. Proyek Sistem R. Bahasa SQUARE dikembangkan sebagai alat penelitian untuk mengimplementasikan aljabar relasional melalui frasa yang disusun dalam bahasa Inggris.

Pada akhir tahun 1970-an, perusahaan yang kini menjadi Oracle Corporation merilis Oracle DBMS. Mungkin ini adalah implementasi komersial pertama dari DBMS relasional yang dibangun menggunakan bahasa SQL.

Beberapa saat kemudian, DBMS INGRES muncul, menggunakan bahasa query QUEL.

Bahasa ini lebih terstruktur daripada SQL, tetapi semantiknya kurang mirip dengan bahasa Inggris biasa. Kemudian, ketika SQL diadopsi sebagai bahasa standar untuk database relasional, DBMS INGRES sepenuhnya dikonversi untuk menggunakannya. Pada tahun 1981, IBM merilis DBMS relasional komersial pertamanya, yang disebut SQL/DS (untuk lingkungan DOS/VSE). Pada tahun 1982, versi sistem ini dirilis untuk lingkungan VM/CMS, dan pada tahun 1983 - untuk lingkungan MVS, tetapi sudah dengan nama DB2.

Pada tahun 1982, Institut Standar Nasional AS (ANSI) mulai mengerjakan Relation Database Language (RDL), dipandu oleh dokumen konsep yang diterima dari IBM Corporation. Pada tahun 1983, Organisasi Internasional untuk Standardisasi (ISO) terlibat dalam pekerjaan ini. Upaya bersama kedua organisasi mencapai puncaknya dengan dirilisnya standar bahasa SQL. Nama RDL ditinggalkan pada tahun 1984, dan rancangan bahasanya didesain ulang agar lebih mendekati implementasi bahasa SQL yang ada.

Versi asli standar tersebut, yang dirilis oleh ISO pada tahun 1987, menuai banyak kritik. Secara khusus, Date, seorang peneliti terkenal di bidang ini, menunjukkan bahwa standar tersebut menghilangkan fungsi-fungsi penting, termasuk kontrol integritas referensial, dan beberapa operator relasional.

Selain itu, ia mencatat redundansi bahasa yang berlebihan - permintaan yang sama dapat ditulis dalam beberapa versi berbeda. Sebagian besar kritik dianggap adil, dan penyesuaian yang diperlukan dilakukan terhadap standar sebelum dipublikasikan. Namun, diputuskan bahwa lebih penting untuk merilis standar ini secepat mungkin sehingga dapat berfungsi sebagai landasan bersama dimana bahasa itu sendiri dan implementasinya dapat dikembangkan lebih lanjut, daripada menunggu sampai semua fitur berbeda. para ahli yang dianggap wajib didefinisikan dan disepakati untuk bahasa yang sama.

Pada tahun 1989, ISO menerbitkan amandemen standar yang mendefinisikan fungsi integritas data. Pada tahun 1992, versi standar ISO pertama yang direvisi secara substansial, terkadang disebut SQL2 atau SQL-92, dirilis. Meskipun beberapa fungsi didefinisikan dalam standar ini untuk pertama kalinya, banyak di antaranya telah diimplementasikan secara keseluruhan atau sebagian dalam satu atau lebih implementasi komersial bahasa SQL.

Dan versi standar berikutnya, yang biasa disebut SQL3, baru dirilis pada tahun 1999. Versi ini memberikan dukungan tambahan untuk fitur manajemen data berorientasi objek.

Fungsi yang ditambahkan ke standar bahasa oleh pengembang implementasi komersial disebut ekstensi. Misalnya, standar bahasa SQL mendefinisikan enam tipe data berbeda yang dapat disimpan dalam database. Dalam banyak implementasi, daftar ini dilengkapi dengan berbagai ekstensi. Setiap implementasi suatu bahasa disebut dialek. Tidak ada dua dialek yang sepenuhnya identik, dan saat ini tidak ada dialek yang sepenuhnya memenuhi standar ISO.

Selain itu, ketika pengembang database menambahkan fungsionalitas baru ke sistem mereka, mereka terus memperluas dialek SQL mereka, menyebabkan dialek individual menjadi semakin berbeda satu sama lain. Namun, inti dasar bahasa SQL kurang lebih tetap terstandarisasi di semua implementasi.

Meskipun konsep asli bahasa SQL dikembangkan oleh IBM, pentingnya bahasa ini segera mendorong pengembang lain untuk membuat implementasi mereka sendiri. Saat ini, ada ratusan produk yang tersedia di pasar yang dibuat menggunakan bahasa SQL, dan kami terus-menerus mendengar tentang peluncuran versi baru yang semakin banyak,

SQL adalah bahasa kueri terstruktur. SQL tidak ada tanpa database - Anda tidak dapat menulis program di dalamnya, dan dalam hal ini SQL bukanlah bahasa pemrograman seperti PHP, tetapi ketika Anda harus berurusan dengan DBMS tertentu, Anda tidak dapat lagi melakukannya tanpa pengetahuan tentang SQL. Anda dapat menulis kueri sederhana di dalamnya, atau Anda dapat melakukan transaksi besar yang terdiri dari beberapa kueri kompleks. Kueri SQL adalah sejenis perintah ke database. Perintah tersebut dapat meminta pengembalian informasi yang memenuhi kriteria tertentu, atau memberikan instruksi untuk menghapus catatan apa pun, dll. Perintah SQL adalah string sederhana, misalnya:

PILIH * DARI Staf DIMANA departemen

Kueri SQL biasanya mirip dengan ekspresi sederhana dalam bahasa Inggris. Perintah di atas dapat diterjemahkan ke dalam bahasa Rusia sebagai berikut

PILIH SEMUA DARI Staf DI MANA clwjiertme"

Ini adalah perintah yang sepenuhnya dapat dimengerti, sayang sekali perintah ini ditulis secara eksklusif dalam bahasa Inggris. Sebagai hasil dari mengeksekusi query seperti itu, DBMS akan mengembalikan semua record dari tabel Staff yang field berangkat* Mit_id sama dengan tiga. Dalam contoh kita, kueri ini sebenarnya hanya memilih pemrogram dari seluruh basis karyawan.

Jika Anda belum pernah bekerja dengan DBMS sebelumnya, Anda mungkin memiliki pertanyaan yang masuk akal: di mana dan bagaimana Anda dapat menjalankan kueri ini? Ada tiga cara untuk mengeksekusi query SQL.

1. Lingkungan interaktif untuk interaksi dengan DBMS. Untuk sebagian besar server DBMS, terdapat program klien (bawaan atau disediakan oleh pihak ketiga), di lingkungan kerjanya Anda dapat menulis kueri SQL, menjalankannya, dan mendapatkan hasilnya. Biasanya, alat tersebut digunakan oleh administrator database dan tidak berhubungan langsung dengan pemrograman PHP. Contoh program klien untuk bekerja dengan MySQL adalah program Administrator MySQL (http: /www.mysgl.coin/product-s/administratoT/) atau sistem PHP phpMyAdmin yang sangat populer (http: / /www.phpmyadi'ln. r»et /itummjiage/index.php). Untuk memulai, kit distribusi yang sudah terinstal dan memiliki antarmuka konsol sudah cukup. Di Linux, Anda perlu mengetikkan perintah mysql dari baris perintah untuk membuka jendela yang meminta Anda memasukkan kueri SQL, dan di Windows, untuk meluncurkan antarmuka yang sama, Anda perlu menjalankan file mysql. exe dari direktori bin.

2. Kueri SQL statis. Biasanya, pertanyaan seperti itu ditulis di dalam prosedur tersimpan di database itu sendiri atau dikodekan ke dalam aplikasi itu sendiri. Kueri SQL statis telah ditentukan sebelumnya dan hanya berubah jika program atau kode prosedur tersimpan ditulis ulang secara manual. Dari PHP, query SQL tersebut dieksekusi menggunakan fungsi khusus, yang akan dibahas nanti.

3. Kueri SQL dinamis. Jenis ini mencakup kueri yang tidak dapat ditentukan sepenuhnya saat menulis aplikasi. i" contoh, ketika menulis program untuk mendapatkan daftar karyawan" mt divisi perusahaan yang berbeda, programmer tidak tahu, ci "> tentang divisi di perusahaan dan karyawan mana yang akan dimasukkan di dalamnya i„. Tentu saja , data ini dapat ditulis dalam program secara ketat, tetapi ketika perubahan pertama dalam struktur perusahaan, program dapat dikeluarkan atau perlu ditulis ulang. Kueri dinamis memungkinkan Anda membuat program yang fleksibel terhadap perubahan data. Dalam PHP, query tersebut dijalankan dengan fungsi yang hampir sama dengan yang statis, hanya saja berbeda. '^v'> Tidak mungkin untuk meneruskan beberapa parameter.

Sebagai ringkasan dari tiga poin yang dijelaskan di atas, kita dapat mengatakan bahwa query SQL dieksekusi dari program administratif khusus atau dengan berbagai cara dari skrip PHP.

Karena DBMS memecahkan banyak masalah, SQL juga dipaksa menjadi bahasa yang multifungsi. Ada beberapa jenis operasi yang bisa dilakukan< \ ществлять с помощью SQL.

1. Pengertian struktur database. Tipe ini mencakup kueri yang membuat dan mengubah tabel dan indeks. Ini biasanya berupa perintah CRE; “E TA' LE, ALI'R TA' LE, ' ” '.TE INDEX Dll.

2. Manipulasi data. Tipe ini mencakup query untuk menyisipkan (memindahkan), menghapus, atau mengubah data dalam tabel. Ini adalah tiga perintah utama: INSERT. HAPUS DAN PERBARUI.

3. Pemilihan Data Ini hanya mencakup satu perintah SELECT. Itu tidak membuat perubahan pada data itu sendiri, tetapi memungkinkan Anda mengambilnya dari database. Meskipun hanya satu perintah yang digunakan untuk mengambil data, perintah ini sangat kuat dan sangat sering digunakan dalam aplikasi.

4. Manajemen server DBMS. Jenis ini terutama mencakup kueri untuk mengelola pengguna dan hak akses mereka (misalnya, perintah GRANT).

Pengetahuan yang baik tentang SQL sangat memudahkan pekerjaan seorang programmer ketika bekerja dengan database. Aplikasi bisa berukuran kecil, tetapi memiliki fungsionalitas yang hebat hanya karena SQL melakukan banyak tugas.

Seperti di bidang TI lainnya, ada standar dalam SQL - ini adalah ANSI SQL. Singkatan ANSI adalah singkatan dari Amrican National Standards Institute. Namun, paling tidak karena perbedaan fungsi dari DBMS SQL itu sendiri yang berbeda-beda

DBMS masih berbeda satu sama lain. Saat ini hampir setiap DBMS memiliki dialeknya masing-masing, yang biasanya tidak jauh berbeda dengan standar umum, namun memiliki ciri khas tersendiri. Misalnya, bahasa PL/SQL kompatibel dengan Oracle dan PostgreSQL, dan T-SQL digunakan untuk bekerja dengan MS SQL Server.

Untuk pekerjaan selanjutnya dengan database, kami menyarankan Anda segera mempelajari standar yang Anda rencanakan untuk digunakan di masa mendatang. Bagi sebagian besar pengembang Web saat ini, fungsionalitas DBMS MySQL sudah cukup (dan dapat digunakan secara gratis), jadi dalam buku ini semua contoh MySQL akan diberikan, sesuai dengan dialek DBMS ini. Dokumentasi bahasa query untuk MySQL dapat ditemukan di www.mysql.com.

Setiap perintah SQL dimulai dengan kata kunci, kata kerja yang menjelaskan tindakan yang dilakukan perintah, seperti CREATE. Sebuah tim dapat memiliki satu atau lebih kalimat. Kalimat tersebut mendeskripsikan data yang sedang dikerjakan oleh perintah atau berisi informasi klarifikasi tentang tindakan yang dilakukan perintah. Setiap klausa dimulai dengan kata kunci, seperti WHERE. Beberapa klausa dalam perintah diperlukan, yang lainnya tidak. Beberapa kalimat mungkin mengandung kata kunci dan ekspresi tambahan. Banyak kalimat menyertakan nama tabel atau bidang. Nama harus terdiri dari 1 hingga 18 karakter, diawali dengan huruf, dan tidak mengandung spasi atau karakter tanda baca khusus. Kata kunci tidak dapat digunakan sebagai nama.

52. SQL (Bahasa Kueri Terstruktur) - Bahasa Kueri Terstruktur adalah bahasa kueri standar untuk bekerja dengan database relasional.

SQL tidak berisi pernyataan tradisional yang mengontrol eksekusi program, SQL hanya berisi sekumpulan pernyataan standar untuk mengakses data yang disimpan dalam database.

SQL dapat digunakan untuk mengakses database dalam dua mode: pekerjaan interaktif dan masuk program aplikasi.

Dengan bantuan SQL, pengguna dapat secara interaktif dan cepat mendapatkan jawaban atas pertanyaan apa pun, termasuk pertanyaan yang cukup rumit, sedangkan untuk mengimplementasikan pertanyaan ini dalam bahasa lain, seseorang harus mengembangkan program yang sesuai. Program aplikasi yang ditulis dalam bahasa pemrograman tertentu menggunakan SQL sebagai bawaan bahasa untuk mengakses database.

Mencirikan bahasa SQL secara keseluruhan, kita dapat menyoroti fitur-fitur berikut:

· struktur tingkat tinggi, mengingatkan pada bahasa Inggris;

· independensi dari DBMS tertentu;

Ketersediaan standar yang berkembang;

· kemampuan untuk melakukan kueri interaktif untuk mengambil data dan mengubah strukturnya;

· menyediakan akses perangkat lunak ke database;

· dukungan arsitektur klien/server;

· ekstensibilitas dan dukungan untuk teknologi berorientasi objek;



· kemampuan untuk mengakses data di Internet.

Fungsi utama bahasa SQL:

SQL – bahasa kueri interaktif. Pengguna memasukkan perintah SQL secara interaktif untuk mengambil data dan menampilkannya di layar, dan untuk membuat perubahan pada database;

SQL – bahasa pemrograman basis data. Untuk mengakses database, perintah SQL dimasukkan ke dalam program aplikasi;

SQL – bahasa administrasi basis data. Administrator basis data dapat menggunakan SQL untuk menentukan struktur basis data dan mengontrol akses ke data;

SQL – bahasa aplikasi klien/server. Dalam program aplikasi, SQL digunakan sebagai sarana mengatur komunikasi melalui jaringan lokal dengan server database, yang menyimpan data bersama, dll.

55. Kemampuan bahasa Bahasa SQL, yang sesuai dengan standar terbaru SQL:2003, SQL:1999, adalah bahasa yang sangat kaya dan kompleks, semua kemampuannya sulit untuk segera dipahami, apalagi dipahami. Oleh karena itu, kita harus membagi bahasa menjadi beberapa tingkatan. Dalam salah satu klasifikasi yang diberikan oleh standar SQL, bahasa ini dibagi menjadi level “dasar” (entri), “menengah” (intermediate) dan “penuh”. Tingkat dasar berisi sekitar empat puluh perintah, yang dapat dikelompokkan ke dalam kategori sesuai dengan fungsinya.

BUAT Detail TABEL (NOMZ INT, NAMA LENGKAP CHAR(15), TAHUN INT, GENDER CHAR(3))

DROP TABEL Detail

ALTER TABLE Detail (SAMPEL CHAR(10))

BUAT LIHAT Kemajuan Akademik M1 SEBAGAI PILIH *DARI Prestasi Akademik WHERE GROUP= "M-1"

MASUKKAN KE DALAM NILAI Informasi (980101, "IVANOV I. I.", 1980, "SUAMI")

HAPUS DARI Detail DIMANA NOMZ=980201

UPDATE Informasi SET Nama Lengkap = "KRAVTSOVA I. I." DIMANA NOMZ=980201

PILIH * DARI Informasi DI MANA NAMA LENGKAP = "SIDOROV S. S." ATAU NAMA LENGKAP="PETROV P.P."

54. Tipe dan ekspresi data Untuk mengakses tabel relasional di SQL, Anda perlu menulis (menentukan) perintah. PILIH (pilih)kata kunci memberitahu DBMS tindakan apa yang akan dilakukan perintah ini. Perintah kueri dimulai dengan kata kunci. Selain SELECT, ini bisa berupa kata-kata MEMBUAT- membuat, MENYISIPKAN-menyisipkan, MENGHAPUS- menghapus, MELAKUKAN– lengkap, dll.

DARI - kata kunci, seperti SELECT, yang ada di setiap perintah. Diikuti spasi kemudian nama tabel yang dijadikan sumber informasi. Nama tabel dan field harus terdiri dari 1 sampai 18 karakter, diawali dengan huruf dan tidak mengandung spasi atau karakter khusus.

DI MANA kata kunci yang diikuti oleh predikat—suatu kondisi yang dikenakan pada entri tabel yang harus dipenuhi agar dapat dimasukkan dalam seleksi.

DIPESAN OLEH – pengurutan record yang ditampilkan (Asc – ascending, Desc – descending. Jika jenis pengurutan tidak ditentukan, maka pengurutan terjadi dalam urutan menaik).

CHAR(panjang) KARAKTER(panjang)String karakter dengan panjang konstan

BULAT INTEGERbilangan bulat

KECILbilangan bulat kecil

NUMERIK(presisi, derajat) DECIMAL(presisi, derajat DEC(presisi, derajat)Nomor titik tetap

MENGAPUNG (presisi)Nomor titik mengambang

Presisi gandaangka dengan kunci mengambang, akurasi tinggi

Ekspresi dalam SQL digunakan untuk menentukan kriteria pemilihan data atau melakukan operasi pada nilai yang dibaca dari database. Ekspresi adalah urutan tertentu dari bidang database, konstanta, fungsi yang dihubungkan oleh operator.

Konstanta digunakan untuk menunjukkan nilai data tertentu. Konstanta titik tetap, misalnya: 21 -375.18 62.3

Konstanta titik mengambang, misalnya: 1.5E7 -3.14E9 2.5E-6 0.783E24

Konstanta string harus diapit tanda kutip tunggal. Contoh konstanta seperti: “Minsk” “New York” “Ivanov I. I.”

Nilai yang hilang(BATAL). SQL mendukung penanganan data yang hilang menggunakan konsep nilai yang hilang.

Kebanyakan DBMS berorientasi SQL mendukung apa yang disebut fungsi agregat (total).. Fungsi agregat yang umum digunakan meliputi yang berikut:

· MENGHITUNG– jumlah nilai pada kolom tabel;

· JUMLAH– jumlah nilai dalam kolom;

· rata-rata– rata-rata aritmatika dari nilai-nilai dalam kolom;

· MAKS– nilai maksimum pada kolom;

· menit– nilai minimum di kolom.

Ekspresi berikut dapat digunakan: jenis operator:

· hitung: + (tambahan), - (pengurangan), * (perkalian), / (divisi);

· hubungan: = (sama), > (lebih besar),< (меньше), >= (lebih besar atau sama dengan),<= (меньше или равно), <>(tidak setara);

· logis: DAN(logis "DAN"), ATAU(logis "ATAU"), BUKAN(negasi logis);

56. Perintah Pengendalian Transaksi memungkinkan Anda untuk memastikan integritas database.

transaksi SQL adalah beberapa perintah SQL berurutan yang harus dijalankan sebagai satu unit.

Dalam bahasa SQL, pemrosesan transaksi diimplementasikan menggunakan dua perintah - MELAKUKAN BUAT TABEL KEMBALI. Mereka mengelola perubahan yang dibuat oleh sekelompok tim. Tim MELAKUKAN melaporkan keberhasilan penyelesaian transaksi. Ini memberi tahu DBMS bahwa transaksi telah selesai, semua perintahnya telah diselesaikan dengan sukses, dan tidak ada ketidakkonsistenan yang muncul dalam database. Tim KEMBALI melaporkan kegagalan penyelesaian transaksi. Ini memberitahu DBMS bahwa pengguna tidak ingin menyelesaikan transaksi, dan DBMS harus membuang setiap perubahan yang dibuat pada database sebagai akibat dari transaksi tersebut. Dalam hal ini, DBMS mengembalikan database ke keadaan sebelum transaksi dieksekusi.

Tim MELAKUKAN BUAT TABEL KEMBALI digunakan terutama dalam mode program, meskipun dapat juga digunakan secara interaktif.

57. Untuk mengakses perintah kontrol Ini adalah perintah untuk menjalankan fungsi administratif yang memberikan atau mencabut hak (privilege) untuk menggunakan tabel database dengan cara tertentu. Setiap pengguna database mempunyai hak tertentu sehubungan dengan objek database.

Hak– ini adalah tindakan dengan objek yang dapat dilakukan pengguna. Hak dapat berubah seiring waktu: hak yang lama dapat dibatalkan, hak yang baru dapat ditambahkan. Hak-hak berikut diberikan:

· INSERT – hak untuk menambahkan data ke tabel;

· UPDATE – hak untuk mengubah data tabel;

· DELETE – hak untuk menghapus data dari tabel;

· REFERENSI – hak untuk menentukan kunci utama.

58 Menanamkan bahasa dalam program aplikasi..Ke bawaan Ini adalah perintah yang dirancang untuk mengimplementasikan akses ke database dari program aplikasi yang ditulis dalam bahasa pemrograman tertentu.

  • Sergei Savenkov

    semacam ulasan "pendek"... seolah-olah mereka sedang terburu-buru di suatu tempat