Kefungsian bahasa SQL. SQL: bahasa universal untuk bekerja dengan pangkalan data

Bahasa pengaturcaraan

SQL (Bahasa Pertanyaan Berstruktur) ialah bahasa pengurusan pangkalan data untuk pangkalan data hubungan. SQL sendiri bukanlah bahasa pengaturcaraan lengkap Turing, tetapi piawaiannya membenarkan penciptaan sambungan prosedur untuknya yang memanjangkan fungsinya ke dalam bahasa pengaturcaraan sepenuhnya.

Bahasa ini dicipta pada tahun 1970-an di bawah nama "SEQUEL" untuk sistem pengurusan pangkalan data Sistem R (DBMS). Ia kemudiannya dinamakan semula sebagai "SQL" untuk mengelakkan konflik tanda dagangan. Pada tahun 1979, SQL pertama kali diterbitkan sebagai produk komersial, Oracle V2.

Piawaian bahasa rasmi pertama telah diterima pakai oleh ANSI pada tahun 1986 dan ISO pada tahun 1987. Sejak itu, beberapa lagi versi piawaian telah dicipta, sebahagian daripadanya mengulangi versi sebelumnya dengan variasi kecil, yang lain menggunakan ciri baharu yang ketara.

Walaupun wujudnya piawaian, kebanyakan pelaksanaan SQL yang paling biasa berbeza sehinggakan kod itu jarang boleh dialihkan dari satu sistem pengurusan pangkalan data ke sistem pengurusan pangkalan data yang lain tanpa membuat perubahan ketara. Ini disebabkan oleh panjang dan kerumitan standard, serta kekurangan spesifikasi dalam beberapa bidang pelaksanaan yang penting.

SQL dicipta sebagai cara yang mudah dan standard untuk mendapatkan dan memanipulasi data yang terkandung dalam pangkalan data hubungan. Ia kemudiannya menjadi lebih kompleks daripada yang dimaksudkan dan menjadi alat pembangun dan bukannya alat pengguna akhir. Pada masa ini, SQL (kebanyakannya seperti yang dilaksanakan oleh Oracle) kekal sebagai bahasa pengurusan pangkalan data yang paling popular, walaupun terdapat beberapa alternatif.

SQL terdiri daripada empat bahagian yang berbeza:

  1. Bahasa Definisi Data (DDL) digunakan untuk mentakrifkan struktur data yang disimpan dalam pangkalan data. Penyataan DDL membolehkan anda mencipta, mengubah suai dan memadam objek individu dalam pangkalan data. Jenis objek yang sah bergantung pada DBMS yang digunakan dan biasanya termasuk pangkalan data, pengguna, jadual dan beberapa objek sokongan yang lebih kecil seperti peranan dan indeks.
  2. Bahasa manipulasi data (DML) digunakan untuk mendapatkan dan mengubah suai data dalam pangkalan data. Penyataan DML membolehkan anda mendapatkan semula, memasukkan, mengubah suai dan memadam data dalam jadual. Kadangkala penyataan pilih pengambilan data tidak dianggap sebagai sebahagian daripada DML kerana ia tidak mengubah keadaan data. Semua pernyataan DML bersifat deklaratif.
  3. Bahasa definisi capaian data (DCL) digunakan untuk mengawal capaian kepada data dalam pangkalan data. Penyata DCL dikenakan pada keistimewaan dan membenarkan anda memberikan dan membatalkan hak untuk menggunakan penyata DDL dan DML tertentu pada objek pangkalan data tertentu.
  4. Transaction Control Language (TCL) digunakan untuk mengawal pemprosesan transaksi dalam pangkalan data. Biasanya penyata TCL termasuk komitmen untuk melakukan perubahan yang dibuat semasa urus niaga, gulung balik untuk gulung balik dan titik simpan untuk memecahkan urus niaga kepada beberapa bahagian yang lebih kecil.

Perlu diingatkan bahawa SQL melaksanakan paradigma pengaturcaraan deklaratif: setiap pernyataan hanya menerangkan tindakan yang diperlukan, dan DBMS membuat keputusan tentang cara melaksanakannya, i.e. merancang operasi asas yang diperlukan untuk melaksanakan tindakan dan melaksanakannya. Walau bagaimanapun, untuk menggunakan keupayaan SQL dengan berkesan, pembangun mesti memahami cara DBMS menghuraikan setiap pernyataan dan mencipta pelan pelaksanaannya.

Contoh:

Hai dunia!:

Contoh untuk versi Oracle 10g SQL, Oracle 11g SQL

Rentetan 'Hello, World!' dipilih daripada dwi jadual terbina dalam, yang digunakan untuk pertanyaan yang tidak memerlukan akses kepada jadual sebenar.

pilih "Hello, World!" daripada dual ;

Faktorial:

Contoh untuk versi Oracle 10g SQL, Oracle 11g SQL

SQL tidak menyokong gelung, rekursi atau fungsi yang ditentukan pengguna. Contoh ini menunjukkan penyelesaian yang mungkin menggunakan:

  • tahap pseudo-lajur untuk mencipta jadual pseudo t1 dan t2 yang mengandungi nombor dari 1 hingga 16,
  • fungsi agregat sum , yang membolehkan anda menjumlahkan elemen set tanpa menggunakan gelung secara eksplisit,
  • dan fungsi matematik ln dan exp, yang membolehkan anda menggantikan produk (diperlukan untuk mengira faktorial) dengan jumlah (disediakan oleh SQL).

Baris "0! = 1” tidak akan disertakan dalam set baris yang terhasil, kerana cuba menilai ln(0) menghasilkan pengecualian.

Nombor Fibonacci:

Contoh untuk versi Oracle 10g SQL, Oracle 11g SQL

SQL tidak menyokong gelung atau rekursi, dan menggabungkan medan daripada baris berbeza dalam jadual atau pertanyaan bukanlah fungsi agregat standard. Contoh ini menggunakan:

  • Formula Binet dan fungsi matematik ROUND, POWER dan SQRT untuk mengira nombor Fibonacci ke-;
  • tahap pseudo-lajur untuk mencipta jadual pseudo t1 yang mengandungi nombor dari 1 hingga 16;
  • fungsi terbina dalam SYS_CONNECT_BY_PATH untuk penyatuan tertib nombor yang diterima.

PILIH GANTI (MAX (SYS_CONNECT_BY_PATH (fib || ", " , "/")), "/" , "" ) || "..." fiblist FROM ( PILIH n , fib , ROW_NUMBER () OVER (ORDER BY n ) r FROM ( pilih n , bulat ((kuasa ((1 + sqrt (5 ))) * 0 . 5 , n ) - kuasa ((1 - sqrt (5 )) * 0 . 5 , n )) / sqrt (5 )) fib from (pilih tahap n daripada dwi sambung mengikut tahap<= 16 ) t1 ) t2 ) START WITH r = 1 CONNECT BY PRIOR r = r - 1 ;

Hai dunia!:

Contoh untuk versi Microsoft SQL Server 2005, Microsoft SQL Server 2008 R2, Microsoft SQL Server 2012, MySQL 5, PostgreSQL 8.4, PostgreSQL 9.1, sqlite 3.7.3

pilih "Hello, World!" ;

Faktorial:

Contoh untuk versi Microsoft SQL Server 2005, Microsoft SQL Server 2008 R2, Microsoft SQL Server 2012

Takrif rekursif faktorial digunakan, dilaksanakan melalui pertanyaan rekursif. Setiap baris pertanyaan mengandungi dua medan berangka, n dan n!, dan setiap baris berikutnya dikira menggunakan data daripada yang sebelumnya.

Anda hanya boleh mengira faktorial integer sehingga 20!. Apabila cuba mengira 21! Ralat "Ralat limpahan aritmetik" berlaku, i.e. grid bit melimpah.

Untuk nombor nyata, faktorial ialah 100! (Untuk melakukan ini, dalam contoh anda perlu menggantikan bigint dengan float dalam baris ke-3)

Nombor Fibonacci:

Contoh untuk versi Microsoft SQL Server 2005, Microsoft SQL Server 2008 R2, Microsoft SQL Server 2012

Penentuan berulang nombor Fibonacci digunakan, dilaksanakan melalui pertanyaan rekursif. Setiap baris pertanyaan mengandungi dua nombor bersebelahan dalam jujukan, dan baris seterusnya dikira sebagai (nombor terakhir, jumlah nombor) baris sebelumnya. Oleh itu, semua nombor kecuali yang pertama dan terakhir muncul dua kali, jadi hasilnya termasuk hanya nombor pertama setiap baris.

Faktorial:

Contoh untuk versi Oracle 10g SQL, Oracle 11g SQL

Contoh ini menunjukkan penggunaan operator model, tersedia dalam Oracle 10g, yang membolehkan rentetan pertanyaan dianggap sebagai elemen tatasusunan. Setiap baris mengandungi dua medan - nombor baris n dan faktorialnya f.

pilih n || "! = " || f faktorial daripada model dwi mengembalikan semua dimensi baris dengan ( 0 d ) ukuran ( 0 f , 1 n ) peraturan lelaran ( 17 ) ( f [ lelaran_nombor ] = nyahkod ( lelaran_nombor , 0 , 1 , f [ lelaran_nombor - 1 ] * lelaran_nombor ) , n [ nombor_ lelaran ] = nombor_ lelaran );

Nombor Fibonacci:

Contoh untuk versi Oracle 10g SQL, Oracle 11g SQL

Contoh ini menunjukkan penggunaan operator model, tersedia dalam Oracle 10g, yang membolehkan rentetan pertanyaan dianggap sebagai elemen tatasusunan. Setiap baris mengandungi dua medan - nombor Fibonacci itu sendiri dan gabungan semua nombor yang kurang daripada atau sama dengannya. Menggabungkan nombor secara berulang dalam pertanyaan yang sama yang menghasilkannya adalah lebih mudah dan cepat daripada mengagregatkan sebagai operasi berasingan.

pilih maks || ", ..." daripada (pilih s daripada model dwi mengembalikan semua dimensi baris dengan ( 0 d ) ukuran ( cast ( " " sebagai varchar2 (200 )) s , 0 f ) peraturan berulang ( 16 ) ( f [ lelaran_nombor ] = nyahkod (nombor_lelaran, 0, 1, 1, 1, f [ nombor_lelaran - 1 ] + f [ nombor_ lelaran - 2 ]), s [ nombor_ lelaran ] = nyahkod ( nombor_ lelaran , 0 , to_char (f [ nombor_ lelaran ]), s - [ nombor_ lelaran ] 1 ] || ", " || to_char (f [ lelaran_nombor ])) ) );

Faktorial:

Contoh untuk versi MySQL 5

pilih concat (cast (t2 . n as char ), "!= " , cast (exp (sum (log (t1. n ))) as char )) daripada ( pilih @ i : = @ i + 1 AS n daripada JADUAL , (pilih @ i : = 0 ) sebagai sel1 had 16 ) t1 , ( pilih @ j : = @ j + 1 AS n daripada JADUAL , (pilih @ j : = 0 ) sebagai sel1 had 16 ) t2 di mana t1 . n<= t2 . n group by t2 . n

Nombor Fibonacci:

Contoh untuk versi MySQL 5

Gantikan TABLE dengan mana-mana jadual yang boleh anda akses, seperti mysql.help_topic .

pilih concat (kumpulan_concat (pemisah f ", " ), ", ..." ) daripada (pilih @ f : = @ i + @ j sebagai f , @ i : = @ j , @ j : = @ f dari JADUAL , (pilih @ i : = 1 , @ j : = 0 ) sel1 had 16 ) t

Hai dunia!:

Contoh untuk versi Oracle 10g SQL, Oracle 11g SQL

Contoh ini menggunakan blok PL/SQL tanpa nama yang mencetak mesej kepada output standard menggunakan pakej dbms_output.

mulakan dbms_output . put_line("Hello, Dunia!"); akhir ;

Faktorial:

Contoh untuk versi Oracle 10g SQL, Oracle 11g SQL

Contoh ini menunjukkan pengiraan berulang bagi faktorial menggunakan PL/SQL.

isytiharkan n nombor := 0 ; nombor f := 1 ; bermula sementara (n<= 16 ) loop dbms_output . put_line (n || "! = " || f ); n : = n + 1 ; f : = f * n ; end loop ; end ;

Nombor Fibonacci:

Contoh untuk versi Oracle 10g SQL, Oracle 11g SQL

Contoh ini menggunakan penentuan berulang nombor Fibonacci. Nombor yang telah dikira disimpan dalam struktur data varray - analog tatasusunan.

mengisytiharkan jenis vektor ialah varray (16) nombor; vektor fib := vektor(); i nombor; s varchar2(100); mulakan fib. memanjangkan(16); fib (1) := 1; fib (2) := 1; s : = fib (1 ) || "," || fib(2) || "," ; untuk i dalam 3 .. 16 gelung fib (i) : = fib (i - 1) + fib (i - 2); s := s || fib(i) || "," ; gelung hujung ; dbms_output. put_line (s || "..." ); akhir ;

Persamaan kuadratik:

Contoh untuk versi Oracle 10g SQL, Oracle 11g SQL

Contoh ini telah diuji dalam SQL*Plus, TOAD dan PL/SQL Developer.

SQL tulen membolehkan anda memperkenalkan pembolehubah semasa pelaksanaan pertanyaan dalam bentuk pembolehubah yang boleh diganti. Untuk mentakrifkan pembolehubah sedemikian, namanya (dalam kes ini, A, B dan C) mesti digunakan dengan ampersand & di hadapannya apabila pembolehubah itu perlu dirujuk. Apabila pertanyaan dilaksanakan, pengguna digesa untuk memasukkan nilai semua pembolehubah gantian yang digunakan dalam pertanyaan. Sebaik sahaja nilai dimasukkan, setiap rujukan kepada pembolehubah tersebut digantikan dengan nilainya, dan permintaan yang terhasil dilaksanakan.

Terdapat beberapa cara untuk memasukkan nilai bagi pembolehubah gantian. Dalam contoh ini, rujukan pertama kepada setiap pembolehubah didahului oleh ampersand berganda && bukannya ampersand tunggal. Dengan cara ini, nilai untuk setiap pembolehubah dimasukkan sekali sahaja, dan semua rujukan berikutnya kepadanya akan digantikan dengan nilai yang sama (apabila menggunakan satu ampersand dalam SQL*Plus, nilai untuk setiap rujukan kepada pembolehubah yang sama mesti dimasukkan secara berasingan ). Dalam Pembangun PL/SQL, semua rujukan pembolehubah mesti didahului oleh satu & aksara, jika tidak, ralat "Tidak semua pembolehubah terikat" ORA-01008 akan berlaku.

Baris pertama contoh menentukan aksara untuk pemisah perpuluhan, yang digunakan apabila menukar nombor akar kepada rentetan.

Permintaan itu sendiri terdiri daripada empat permintaan yang berbeza. Setiap pertanyaan mengembalikan rentetan yang mengandungi hasil pengiraan dalam salah satu kes (A=0, D=0, D>0 dan D<0) и ничего — в трех остальных случаях. Результаты всех четырех запросов объединяются, чтобы получить окончательный результат.

alter session set NLS_NUMERIC_CHARACTERS = "." ; pilih "Bukan persamaan kuadratik." ans dari dwi di mana && A = 0 kesatuan pilih "x = " || to_char (-&& B / 2 /& A ) dari dwi mana & A != 0 dan & B *& B - 4 *& A *&& C = 0 kesatuan pilih "x1 = " || to_char ((-& B + sqrt (& B *& B - 4 *& A *& C )) / 2 /& A ) || ", x2 = " || to_char (-& B - sqrt (& B *& B - 4 *& A *& C )) / 2 /& A dari dwi mana & A != 0 dan & B *& B - 4 *& A *& C > 0 kesatuan pilih "x1 = (" || to_char (-& B / 2 /& A ) || "," || to_char (sqrt (-& B *& B + 4 *& A *& C ) / 2 /& A ) || "), " || "x2 = (" || to_char (-& B / 2 /& A ) || "," || to_char (- sqrt (-& B *& B + 4 *& A *& C ) / 2 /& A ) || ")" daripada dwi mana & A != 0 dan & B *& B - 4 *& A *& C< 0 ;

Adakah anda baru dalam pengaturcaraan atau adakah anda hanya mengelak daripada mempelajari SQL pada masa lalu? Kemudian anda telah sampai ke alamat yang betul, kerana mana-mana pembangun akhirnya berhadapan dengan keperluan untuk mengetahui bahasa pertanyaan ini. Anda mungkin bukan pereka pangkalan data utama, tetapi hampir mustahil untuk mengelak daripada bekerja dengan mereka. Saya harap gambaran ringkas sintaks pertanyaan SQL asas ini akan membantu pembangun yang berminat dan sesiapa sahaja yang memerlukannya.

Apakah pangkalan data SQL?

Bahasa Pertanyaan Berstruktur ( S tersusun Q uery L anguage) ialah standard komunikasi pangkalan data yang disokong oleh ANSI. Versi terbaharu ialah SQL-99, walaupun standard baharu sudah dalam pembangunan. Kebanyakan pangkalan data mematuhi piawaian ANSI-92. Terdapat banyak perbincangan tentang memperkenalkan piawaian yang lebih moden, tetapi vendor pangkalan data komersial beralih daripada ini dengan membangunkan konsep baharu mereka sendiri untuk menyimpan data yang disimpan. Hampir setiap pangkalan data menggunakan beberapa set sintaks yang unik, walaupun sangat serupa dengan standard ANSI. Dalam kebanyakan kes, sintaks ini adalah lanjutan daripada standard asas, walaupun terdapat kes di mana sintaks ini menghasilkan hasil yang berbeza untuk pangkalan data yang berbeza. Adalah idea yang baik untuk menyemak dokumentasi pangkalan data, terutamanya jika anda mendapat hasil yang tidak dijangka.

Jika anda baru menggunakan SQL, terdapat beberapa konsep asas yang perlu anda fahami.

Secara umum, "pangkalan data" ialah nama generik untuk sistem pengurusan pangkalan data hubungan(RDBMS). Untuk sesetengah sistem, "pangkalan data" juga merujuk kepada sekumpulan jadual, data atau maklumat konfigurasi yang merupakan bahagian yang berasingan daripada binaan lain yang serupa. Dalam kes ini, setiap pemasangan pangkalan data SQL mungkin terdiri daripada beberapa pangkalan data. Dalam sistem lain, ia dirujuk sebagai jadual.

Jadual ialah struktur pangkalan data yang terdiri daripada lajur mengandungi garisan data. Biasanya, jadual dicipta untuk mengandungi maklumat berkaitan. Berbilang jadual boleh dibuat dalam pangkalan data yang sama.

Setiap lajur mewakili atribut atau set atribut objek, seperti nombor pengenalan pekerja, ketinggian, warna kereta, dsb. Istilah yang sering digunakan untuk merujuk kepada lajur ialah padang menunjukkan nama, contohnya "dalam medan Nama". Medan baris ialah elemen minimum jadual. Setiap lajur dalam jadual mempunyai nama, jenis data dan saiz tertentu. Nama lajur mestilah unik dalam jadual.

Setiap baris (atau rekod) mewakili koleksi atribut objek tertentu, contohnya, satu baris mungkin mengandungi nombor pengenalan pekerja, gajinya, tahun kelahirannya, dsb. Baris jadual tidak mempunyai nama. Untuk mengakses baris tertentu, pengguna mesti menentukan beberapa atribut (atau set atribut) yang mengenal pastinya secara unik.

Salah satu operasi terpenting yang dilakukan apabila bekerja dengan data ialah mendapatkan semula maklumat yang disimpan dalam pangkalan data. Untuk melakukan ini, pengguna mesti melaksanakan permintaan(pertanyaan).

Sekarang mari kita lihat jenis pertanyaan pangkalan data utama yang menumpukan pada memanipulasi data dalam pangkalan data. Untuk tujuan kami, semua contoh disediakan dalam SQL standard untuk disesuaikan dengan mana-mana persekitaran.

Jenis Pertanyaan Data

Terdapat empat jenis pertanyaan data utama dalam SQL, yang dirujuk sebagai bahasa manipulasi data(Bahasa Manipulasi Data atau DML):

  • PILIH– pilih baris daripada jadual;
  • INSERT– tambah baris pada jadual;
  • KEMASKINI– tukar baris dalam jadual;
  • PADAM– padam baris dalam jadual;

Setiap pertanyaan ini mempunyai pengendali dan fungsi berbeza yang digunakan untuk melaksanakan beberapa tindakan pada data. Pertanyaan SELECT mempunyai bilangan pilihan yang paling banyak. Terdapat juga jenis pertanyaan tambahan yang digunakan bersama dengan SELECT, seperti JOIN dan UNION. Tetapi buat masa ini, kami hanya akan menumpukan pada pertanyaan asas.

Menggunakan pertanyaan SELECT untuk memilih data yang anda mahu

Untuk mendapatkan semula maklumat yang disimpan dalam pangkalan data, pertanyaan SELECT digunakan. Kesan asas pertanyaan ini terhad kepada satu jadual, walaupun terdapat reka bentuk yang membolehkan anda memilih daripada berbilang jadual pada masa yang sama. Untuk mendapatkan semua baris data untuk lajur tertentu, pertanyaan seperti ini digunakan:

PILIH lajur1, lajur2 DARI nama_jadual;

Anda juga boleh mendapatkan semua lajur daripada jadual menggunakan * kad bebas:

PILIH * DARI nama_jadual;

Ini boleh berguna apabila anda akan memilih data dengan klausa WHERE tertentu. Pertanyaan berikut akan mengembalikan semua lajur daripada semua baris di mana "column1" mengandungi nilai "3":

Selain = (sama), terdapat pengendali bersyarat berikut:

Selain itu, anda boleh menggunakan syarat BITWEEN dan LIKE untuk membandingkan dengan keadaan WHERE, serta gabungan operator AND dan OR.

Maksud dalam terjemahan Rusia: pilih semua baris daripada jadual table_name, di mana nilai lajur umur lebih besar daripada atau sama dengan 18, dan nilai lajur Nama Akhir berada dalam julat abjad dari Ivanov hingga Sidorov termasuk, atau nilai daripada lajur Syarikat ialah Motorola.

Menggunakan pertanyaan INSERT untuk memasukkan data baharu

Pertanyaan INSERT digunakan untuk ciptaan baris data baharu. Untuk mengemas kini data sedia ada atau medan baris kosong, anda mesti menggunakan pertanyaan KEMASKINI.

Contoh sintaks pertanyaan INSERT:

INSERT IN TO table_name (column1, column2, column3) NILAI ("data1", "data2", "data3");

Jika anda akan memasukkan semua nilai dalam susunan lajur jadual muncul, anda boleh meninggalkan nama lajur, walaupun ini lebih baik untuk kebolehbacaan. Selain itu, jika anda menyenaraikan lajur, anda tidak perlu menyenaraikannya mengikut susunan ia muncul dalam pangkalan data, selagi nilai yang anda masukkan sepadan dengan susunan tersebut. Anda tidak seharusnya menyenaraikan lajur yang tidak mengandungi maklumat.

Maklumat sedia ada dalam pangkalan data diubah dengan cara yang hampir sama.

KEMASKINI Pertanyaan dan WHERE Keadaan

UPDATE digunakan untuk menukar nilai sedia ada atau mengosongkan medan berturut-turut, jadi nilai baharu mesti sepadan dengan jenis data sedia ada dan memberikan nilai yang boleh diterima. Jika anda tidak mahu menukar nilai dalam semua baris, maka anda perlu menggunakan klausa WHERE.

Anda boleh menggunakan WHERE pada mana-mana lajur, termasuk lajur yang ingin anda ubah. Ini digunakan apabila perlu untuk menggantikan satu nilai tertentu dengan yang lain.

Berhati-hati! DELETE pertanyaan memadamkan keseluruhan baris

Pertanyaan DELETE memadam sepenuhnya baris daripada pangkalan data. Jika anda ingin memadamkan satu medan, maka anda perlu menggunakan permintaan KEMASKINI dan tetapkan medan ini kepada nilai yang serupa dengan NULL dalam program anda. Berhati-hati untuk menghadkan pertanyaan DELETE anda kepada klausa WHERE, jika tidak, anda mungkin kehilangan keseluruhan kandungan jadual.

Sebaik sahaja baris telah dipadamkan daripada pangkalan data anda, ia tidak boleh dipulihkan, jadi adalah dinasihatkan untuk mempunyai lajur bernama "IsActive", atau sesuatu seperti itu, yang anda boleh tukar kepada null, yang akan menunjukkan bahawa paparan data daripada barisan itu dikunci.

Sekarang anda tahu asas pertanyaan SQL

SQL ialah bahasa pangkalan data dan kami telah merangkumi arahan yang paling penting dan asas yang digunakan dalam pertanyaan data. Terdapat banyak konsep teras yang tidak diliputi (SUM dan COUNT, sebagai contoh), tetapi beberapa arahan yang kami berjaya senaraikan di atas harus menggalakkan anda untuk menjadi aktif dan menggali lebih mendalam ke dalam bahasa pertanyaan indah yang dipanggil SQL.

Kemas kini terakhir: 24/06/2017

SQL Server adalah salah satu sistem pengurusan pangkalan data (DBMS) yang paling popular di dunia. DBMS ini sesuai untuk pelbagai jenis projek: daripada aplikasi kecil kepada projek besar yang sangat dimuatkan.

SQL Server telah dicipta oleh Microsoft. Versi pertama dikeluarkan pada tahun 1987. Dan versi semasa ialah versi 16, yang keluar pada 2016 dan akan digunakan dalam panduan semasa.

SQL Server telah lama menjadi sistem pengurusan pangkalan data secara eksklusif untuk Windows, tetapi bermula dengan versi 16, ia juga tersedia di Linux.

SQL Server dicirikan oleh ciri-ciri seperti:

    Prestasi. SQL Server sangat pantas.

    Kebolehpercayaan dan keselamatan. SQL Server menyediakan penyulitan data.

    Kesederhanaan. DBMS ini agak mudah untuk digunakan dan ditadbir.

Aspek utama dalam MS SQL Server, seperti mana-mana DBMS, ialah pangkalan data. Pangkalan data ialah repositori data yang disusun dengan cara tertentu. Selalunya pangkalan data secara fizikal mewakili fail pada cakera keras, walaupun surat-menyurat ini tidak diperlukan. Sistem pengurusan pangkalan data atau DBMS digunakan untuk menyimpan dan mentadbir pangkalan data. Dan hanya MS SQL Server adalah salah satu daripada DBMS tersebut.

MS SQL Server menggunakan model hubungan untuk mengatur pangkalan data. Model pangkalan data ini telah dibangunkan pada tahun 1970 oleh Edgar Codd. Dan hari ini ia sebenarnya adalah standard untuk mengatur pangkalan data.

Model relasional melibatkan penyimpanan data dalam bentuk jadual yang setiap satunya terdiri daripada baris dan lajur. Setiap baris menyimpan objek yang berasingan, dan lajur mengandungi atribut objek itu.

Kunci utama digunakan untuk mengenal pasti setiap baris dalam jadual. Kunci utama boleh menjadi satu atau lebih lajur. Menggunakan kunci utama, kita boleh merujuk baris tertentu dalam jadual. Oleh itu, dua baris tidak boleh mempunyai kunci utama yang sama.

Melalui kekunci, satu jadual boleh dikaitkan dengan yang lain, iaitu, hubungan boleh diatur antara dua jadual. Dan jadual itu sendiri boleh diwakili sebagai hubungan.

Untuk berinteraksi dengan pangkalan data, bahasa SQL (Structured Query Language) digunakan. Pelanggan (contohnya, program luaran) menghantar permintaan dalam SQL menggunakan API khas. DBMS mentafsir dan melaksanakan permintaan dengan betul, dan kemudian menghantar hasil pelaksanaan kepada klien.

SQL pada asalnya dibangunkan oleh IBM untuk sistem pangkalan data yang dipanggil System/R. Pada masa yang sama, bahasa itu sendiri dipanggil SEQUEL (Bahasa Pertanyaan Bahasa Inggeris Berstruktur). Walaupun pangkalan data mahupun bahasa itu sendiri tidak diterbitkan secara rasmi kemudiannya, secara tradisinya istilah SQL itu sendiri sering disebut sebagai "sekuel."

Pada tahun 1979, Relational Software Inc. membangunkan sistem pengurusan pangkalan data pertama, dipanggil Oracle, yang menggunakan bahasa SQL. Disebabkan kejayaan produk ini, syarikat itu dinamakan semula sebagai Oracle.

Selepas itu, sistem pangkalan data lain yang menggunakan SQL mula muncul. Akibatnya, pada tahun 1989, American National Standards Institute (ANSI) mengkodifikasikan bahasa tersebut dan menerbitkan standard pertamanya. Selepas ini, standard telah dikemas kini dan ditambah secara berkala. Kemas kini terakhirnya berlaku pada tahun 2011. Tetapi walaupun wujudnya standard, pengeluar DBMS sering menggunakan pelaksanaan bahasa SQL mereka sendiri, yang sedikit berbeza antara satu sama lain.

Terdapat dua jenis bahasa SQL: PL-SQL dan T-SQL. PL-SQL digunakan dalam DBMS seperti Oracle dan MySQL. T-SQL (Transact-SQL) digunakan dalam SQL Server. Malah, inilah sebab mengapa T-SQL akan dipertimbangkan dalam panduan semasa.

Bergantung pada tugas yang dilakukan oleh arahan T-SQL, ia boleh menjadi salah satu daripada jenis berikut:

    DDL (Bahasa Definisi Data). Jenis ini termasuk pelbagai arahan yang mencipta pangkalan data, jadual, indeks, prosedur tersimpan, dsb. Secara umum, data ditentukan.

    Khususnya, kita boleh mengklasifikasikan arahan berikut sebagai jenis ini:

    • CREATE : mencipta objek pangkalan data (pangkalan data itu sendiri, jadual, indeks, dll.)

      ALTER: mengubah suai objek pangkalan data

      DROP: Mengalih keluar objek pangkalan data

      TRUNCATE: mengalih keluar semua data daripada jadual

    DML (Bahasa Manipulasi Data). Jenis ini termasuk arahan untuk memilih data, mengemas kininya, menambahnya, memadamnya - secara umum, semua arahan yang boleh kita gunakan untuk mengurus data.

    Perintah berikut tergolong dalam jenis ini:

    • SELECT: mengambil data daripada pangkalan data

      KEMASKINI: mengemas kini data

      INSERT: menambah data baharu

      PADAM: memadam data

    DCL (Bahasa Kawalan Data / Bahasa Kawalan Capaian Data). Jenis ini termasuk perintah yang mengurus hak akses data. Khususnya, ini adalah arahan berikut:

    • GRANT: memberikan kebenaran untuk mengakses data

      BATALKAN: membatalkan hak capaian data

Program pelanggan

Protokol TFTP

TFTP- juga protokol FTP, tetapi di atas protokol UDP (iaitu, protokol tanpa penghantaran terjamin). Boleh digunakan pada rangkaian tempatan di mana kelajuan penghantaran adalah lebih penting. Dalam amalan ia jarang digunakan.

FTP- program ini dilancarkan dari baris arahan.

Komander Windows- boleh bekerja sebagai klien FTP. Membolehkan anda bekerja dengan direktori jauh dengan cara yang sama seperti dengan direktori tempatan.

NetVampire - Pelanggan FTP khusus yang membolehkan anda memuat turun fail besar dan memuat turun melalui saluran yang tidak baik.

SQL (Bahasa Pertanyaan Berstruktur) ialah bahasa pertanyaan berstruktur untuk pangkalan data hubungan. Dalam bahasa ini, anda boleh merumuskan ungkapan (pertanyaan) yang mendapatkan semula data yang diperlukan, mengubah suainya, mencipta jadual dan mengubah strukturnya, menentukan hak akses kepada data dan banyak lagi.

Pertanyaan dilaksanakan oleh sistem pengurusan pangkalan data (DBMS). Jika anda bukan pakar dalam pembangunan dan pentadbiran pangkalan data, maka anda mungkin pengguna pangkalan data yang melihat dan/atau menukar data dalam jadual sedia ada. Dalam banyak kes, ini dan operasi pangkalan data lain dilakukan menggunakan aplikasi khas yang menyediakan pengguna dengan antara muka yang mudah. Biasanya, aplikasi ditulis dalam bahasa pengaturcaraan khas (C, Pascal, Visual Basic, dsb.) dan paling kerap dibuat menggunakan persekitaran pembangunan bersepadu, contohnya, Delphi, C++ Builder, dll. Walau bagaimanapun, akses kepada pangkalan data boleh diperoleh tanpa mereka - hanya menggunakan SQL. Ia juga harus diperhatikan bahawa aplikasi khusus biasanya menggunakan serpihan kod SQL apabila mengakses pangkalan data.

Oleh itu, SQL ialah bahasa standard yang digunakan secara meluas untuk bekerja dengan pangkalan data hubungan. Sintaks bahasa ini cukup mudah sehingga boleh digunakan oleh pengguna biasa, bukan hanya pengaturcara. Pada masa kini, pengguna komputer biasa sekurang-kurangnya harus mahir dalam pemproses perkataan (seperti Microsoft Word) dan program hamparan (seperti Microsoft Excel). Lagi bagus kalau dia pun tahu guna database. Terdapat banyak DBMS yang berbeza, tetapi hanya terdapat satu alat universal untuk bekerja dengan pangkalan data - SQL. Pengetahuan tentang SQL, sekurang-kurangnya asasnya, dan keupayaan untuk menggunakannya untuk mencari dan menganalisis data adalah bahagian asas celik komputer, walaupun untuk pengguna biasa.

Perkembangan pertama sistem pengurusan pangkalan data hubungan (DBMS hubungan) telah dijalankan di IBM pada awal 1970-an. Pada masa yang sama, bahasa data telah dicipta untuk berfungsi dalam sistem ini. Versi percubaan bahasa ini dipanggil SEQUEL - daripada bahasa Inggeris. Bahasa QUEry Bahasa Inggeris Berstruktur (bahasa pertanyaan Bahasa Inggeris berstruktur). Walau bagaimanapun, versi rasmi dipanggil lebih pendek - SQL (Bahasa Pertanyaan Berstruktur). Lebih tepat lagi, SQL ialah subbahasa data, kerana DBMS mengandungi alat bahasa lain.

Pada tahun 1981, IBM mengeluarkan DBMS SQL/DS relasional. Pada masa ini, Relation Software Inc. (hari ini ialah Oracle Corporation) telah pun mengeluarkan DBMS hubungannya. Produk ini segera menjadi standard untuk sistem pengurusan pangkalan data. Produk ini juga termasuk SQL, yang menjadi standard de facto untuk subbahasa data. Pengeluar DBMS lain telah mengeluarkan versi SQL mereka sendiri. Ia termasuk lebih daripada sekadar keupayaan teras produk IBM. Untuk mendapatkan beberapa kelebihan untuk DBMS "mereka", pengeluar memperkenalkan beberapa sambungan SQL. Pada masa yang sama, kerja bermula untuk mencipta standard SQL yang diiktiraf secara umum.

Pada tahun 1986, Institut Piawaian Kebangsaan Amerika (ANSI) mengeluarkan standard rasmi SQL-86, yang dikemas kini pada tahun 1989 dan dinamakan semula SQL-89. Pada tahun 1992, piawaian ini dinamakan SQL-92 (ISO/IEC 9075:1992). Versi terkini standard SQL ialah SQL:2003 (ISO/IEC 9075X:2003).

Sebarang pelaksanaan SQL dalam DBMS tertentu agak berbeza daripada piawaian yang diisytiharkan pematuhan oleh pengeluar. Oleh itu, banyak DBMS (contohnya, Microsoft Access 2003, PostgreSQL 7.3) tidak menyokong sepenuhnya SQL-92, tetapi hanya dengan beberapa tahap pematuhan. Di samping itu, mereka juga menyokong elemen yang tidak termasuk dalam standard. Walau bagaimanapun, pembangun DBMS berusaha untuk memastikan bahawa versi baharu produk mereka mematuhi sedekat mungkin dengan standard SQL.

Perhatian. Tutorial ini menerangkan elemen SQL2003, tidak semuanya disokong oleh DBMS sedia ada. Sebelum anda mempraktikkannya, anda harus memastikan bahawa ia akan berfungsi dalam DBMS anda. Anda boleh belajar tentang ini daripada dokumentasi teknikal. Kebanyakan elemen yang diterangkan sepadan dengan versi awal SQL, khususnya SQL-92 yang digunakan secara meluas.

SQL difikirkan sebagai bahasa pertanyaan mudah untuk pangkalan data hubungan, hampir dengan bahasa semula jadi (lebih tepat, kepada bahasa Inggeris). Diharapkan kedekatan dalam bentuk dengan bahasa semula jadi akan menjadikan SQL sebagai alat yang boleh digunakan secara meluas oleh pengguna pangkalan data biasa, bukan hanya pengaturcara. Pada mulanya, SQL tidak mengandungi sebarang struktur kawalan yang terdapat dalam bahasa pengaturcaraan konvensional. Permintaan, yang sintaksnya agak mudah, dimasukkan terus dari konsol secara berurutan satu demi satu dan dilaksanakan dalam urutan yang sama. Walau bagaimanapun, SQL tidak pernah menjadi alat untuk pekerja bank, penjual tiket penerbangan dan kereta api, ahli ekonomi, dan pekerja lain dari pelbagai syarikat yang menggunakan maklumat yang disimpan dalam pangkalan data. Bagi mereka, SQL mudah ternyata terlalu rumit dan menyusahkan, walaupun dekat dengan bahasa semula jadi soalan.

Dalam amalan, pangkalan data biasanya digunakan melalui aplikasi yang ditulis oleh pengaturcara dalam bahasa prosedur, contohnya, C, Visual Basic, Pascal, Java, dll. Aplikasi sering dicipta dalam persekitaran pembangunan visual khas, seperti Delphi, Microsoft Access, Visual dBase, dsb. dsb. Pada masa yang sama, pembangun aplikasi secara praktikalnya tidak perlu menulis kod program, kerana sistem pembangunan melakukannya untuknya. Walau apa pun, kerja dengan kod program ternyata minimum. Aplikasi ini mempunyai antara muka grafik yang mesra pengguna yang tidak memaksa pengguna untuk terus memasukkan pertanyaan dalam SQL. Aplikasi melakukan ini sebaliknya. Walau bagaimanapun, aplikasi mungkin atau mungkin tidak menggunakan SQL untuk mengakses pangkalan data. SQL bukan satu-satunya, walaupun ia adalah cara yang sangat berkesan untuk mendapatkan semula, menambah dan menukar data, dan jika mungkin untuk menggunakannya dalam aplikasi, maka ia harus dilakukan.

Pangkalan data perhubungan boleh dan memang wujud bebas daripada aplikasi yang menyediakan antara muka pengguna. Jika atas sebab tertentu tidak ada antara muka sedemikian, maka pangkalan data boleh diakses menggunakan SQL, menggunakan konsol atau beberapa aplikasi yang boleh anda sambungkan ke pangkalan data, masukkan dan hantar pertanyaan SQL (contohnya, Borland SQL Explorer ).

Bahasa SQL dianggap sebagai bahasa deklaratif (deskriptif), berbeza dengan bahasa di mana program ditulis. Ini bermakna ungkapan SQL menerangkan perkara yang perlu dilakukan, bukan bagaimana.

Sebagai contoh, untuk memilih maklumat tentang nama dan jawatan pekerja jabatan 102 daripada jadual pekerja, hanya jalankan pertanyaan berikut:

PILIH Nama keluarga, Jawatan DARI Pekerja DI MANA Jabatan=102;

Dalam bahasa Rusia ungkapan ini berbunyi seperti ini:

PILIH Nama keluarga, jawatan DARI Pekerja DENGAN SYARAT ITU Jabatan = 102;

Untuk menukar nilai " Ivanov "pada" Petrov " kolum Nama keluarga , jalankan pertanyaan berikut:

KEMASKINI SET Pekerja Nama keluarga = "Petrov" WHERE Nama keluarga = "Ivanov";

Dalam bahasa Rusia ungkapan ini kelihatan seperti ini:

KEMASKINI Pekerja DIPASANG Nama keluarga SAMA" Petrov " MANA Nama keluarga = "Ivanov" ;

Anda tidak perlu menerangkan secara terperinci tindakan yang mesti dilakukan oleh DBMS untuk memilih data yang dinyatakan dalam pertanyaan daripada jadual. Anda hanya menerangkan apa yang anda mahu terima. Hasil daripada melaksanakan pertanyaan, DBMS mengembalikan jadual yang mengandungi data yang anda minta. Jika tiada data dalam pangkalan data yang sepadan dengan pertanyaan, jadual kosong akan dikembalikan.

Walau bagaimanapun, versi terkini SQL menyokong penyata kawalan pengiraan asli kepada bahasa kawalan prosedur (penyataan cawangan dan gelung bersyarat). Oleh itu, SQL kini bukan bahasa deklaratif semata-mata.

Selain mendapatkan semula, menambah, mengubah suai dan memadam data daripada jadual, SQL membolehkan anda melakukan semua tindakan yang diperlukan untuk mencipta, mengubah suai dan melindungi pangkalan data. Semua keupayaan ini diedarkan di antara tiga komponen SQL:

· DML (Bahasa Manipulasi Data - bahasa manipulasi data ) bertujuan untuk menyokong pangkalan data: pemilihan ( PILIH ), tambahan ( INSERT ), perubahan ( KEMASKINI ) dan pemadaman ( PADAM ) data daripada jadual. Pengendali (perintah) ini boleh mengandungi ungkapan, termasuk yang dikira, serta subkueri - pertanyaan yang terkandung dalam pertanyaan lain. Secara umum, ungkapan pertanyaan boleh menjadi sangat kompleks sehingga anda tidak dapat memberitahu apa yang dilakukannya dengan segera. Walau bagaimanapun, pertanyaan yang kompleks boleh dipecahkan secara mental kepada bahagian yang lebih mudah untuk dianalisis. Begitu juga, pertanyaan kompleks dicipta daripada ungkapan yang agak mudah difahami (subkueri).

· DDL (Bahasa Definisi Data - bahasa definisi data ) direka untuk mencipta, mengubah suai dan memadam jadual dan keseluruhan pangkalan data. Contoh pernyataan yang disertakan dalam DDL ialah BUAT JADUAL (buat Jadual)," CIPTA PANDANGAN (cipta pandangan), CIPTA SHEMA (buat gambar rajah), UBAH JADUAL (tukar jadual), JATUHKAN (padam), dsb.

· DCL (Bahasa Kawalan Data - bahasa pengurusan data ) direka untuk melindungi pangkalan data daripada pelbagai jenis kerosakan. DBMS menyediakan beberapa perlindungan data secara automatik. Walau bagaimanapun, dalam beberapa kes, langkah tambahan yang disediakan oleh DCL harus dipertimbangkan.

Fungsi bahasa SQL

Fungsi utama bahasa SQL diberikan di bawah.

Definisi data. Fungsi SQL ini ialah penerangan tentang struktur data yang disokong dan organisasi perhubungan hubungan (jadual). Operator untuk mencipta pangkalan data, mencipta jadual, dan mengakses data bertujuan untuk melaksanakannya.

Penciptaan pangkalan data. Untuk mencipta pangkalan data baharu, gunakan pernyataan CREATE DATABASE. Struktur pernyataan menentukan nama pangkalan data yang akan dibuat.

Mencipta jadual. Jadual asas dibuat menggunakan pernyataan CREATE TABLE. Pernyataan ini menentukan nama medan, jenis data untuknya dan panjang (untuk sesetengah jenis data). SQL menggunakan jenis data berikut:

INTEGER – integer;

CHAR – nilai aksara;

VARCHAR – nilai aksara, hanya aksara bukan kosong disimpan;

PERPULUHAN – nombor perpuluhan;

FLOAT – nombor titik terapung;

KETEPATAN BERGANDA – titik terapung berketepatan berganda;

DATETIME – tarikh dan masa;

BOOL – Nilai Boolean.

Pernyataan penciptaan jadual menentukan sekatan pada nilai lajur dan pada jadual. Sekatan yang mungkin ditunjukkan dalam jadual. 4.8

Jadual 4.8 Had ke atas data yang ditentukan

Untuk model data hubungan, menentukan kunci asing (FOREIGKEY) adalah penting. Apabila mengisytiharkan kunci asing, anda mesti mengenakan sekatan yang sesuai pada lajur, sebagai contoh, BUKAN NULL.

Dalam pernyataan SQL, CHECK menandakan kekangan semantik yang memastikan integriti data, seperti mengehadkan set nilai yang sah untuk lajur tertentu.

Anda tidak boleh menggunakan kenyataan buat jadual lebih daripada sekali pada jadual yang sama. Jika, selepas penciptaannya, ketidaktepatan ditemui dalam definisinya, maka perubahan boleh dibuat menggunakan pernyataan ALTER TABLE. Pernyataan ini direka bentuk untuk menukar struktur jadual sedia ada: anda boleh mengalih keluar atau menambah medan pada jadual sedia ada.

Manipulasi data. SQL membenarkan pengguna atau program aplikasi menukar kandungan pangkalan data dengan memasukkan data baharu, memadam atau mengubah suai data sedia ada.

Memasukkan data baharu ialah prosedur untuk menambah baris pada pangkalan data dan dilakukan menggunakan pernyataan INSERT.

Pengubahsuaian data melibatkan perubahan kepada nilai dalam satu atau lebih lajur jadual dan dilakukan menggunakan pernyataan KEMASKINI. Contoh:

SET jumlah=jumlah+1000.00

WHERE jumlah>0

Mengalih keluar baris daripada jadual menggunakan pernyataan DELETE. Sintaks operator ialah:

DARI jadual

Klausa WHERE adalah pilihan, tetapi jika ia tidak disertakan, semua entri dalam jadual akan dipadamkan. Adalah berguna untuk menggunakan pernyataan SELECT dengan sintaks yang sama seperti pernyataan DELETE untuk pra-semak rekod yang akan dipadamkan.

Memastikan integriti data. Bahasa SQL membolehkan anda mentakrifkan kekangan integriti yang agak kompleks, yang kepuasannya akan diperiksa untuk semua pengubahsuaian pangkalan data. Memantau hasil transaksi, memproses ralat yang berlaku, dan menyelaraskan kerja selari dengan pangkalan data beberapa aplikasi atau pengguna disediakan oleh COMMIT (merekodkan kejayaan menyelesaikan transaksi semasa dan permulaan yang baru) dan ROLLBACK (keperluan untuk rollback - pemulihan automatik keadaan pangkalan data kepada permulaan transaksi) pengendali.

Persampelan data adalah salah satu fungsi pangkalan data paling penting yang sepadan dengan pernyataan SELECT. Contoh penggunaan operator telah dibincangkan dalam bahagian sebelumnya.

Dalam SQL, anda boleh membuat urutan pertanyaan bersarang (subkueri). Terdapat jenis pertanyaan tertentu yang paling baik dilaksanakan menggunakan subkueri. Pertanyaan ini termasuk apa yang dipanggil semakan kewujudan. Katakan anda ingin mendapatkan data tentang pelajar yang tidak mempunyai gred tujuh mata. Jika set kosong dikembalikan, ini bermakna hanya satu perkara - setiap pelajar mempunyai sekurang-kurangnya satu gred sedemikian.

Memautkan jadual. Pernyataan SQL membolehkan anda mendapatkan semula data daripada lebih daripada satu jadual. Salah satu cara untuk melakukannya ialah dengan memautkan jadual menggunakan satu medan biasa.

Pernyataan SELECT mesti mengandungi kekangan untuk memadankan nilai lajur (medan) tertentu. Kemudian hanya baris di mana nilai padanan lajur yang ditentukan akan diambil daripada jadual yang berkaitan. Nama lajur ditunjukkan hanya bersama-sama dengan nama jadual; jika tidak kenyataan itu akan menjadi samar-samar.

Anda boleh menggunakan jenis pemautan jadual lain: pengendali INTER JOIN (gabungan dalam) memastikan set rekod yang terhasil mengandungi nilai yang sepadan dalam medan yang berkaitan. Sambungan luar (Outer JOIN) membolehkan anda memasukkan dalam hasil pertanyaan semua baris dari satu jadual dan baris yang sepadan dari yang lain

Kawalan capaian. SQL memastikan penyegerakan pemprosesan pangkalan data oleh pelbagai program aplikasi dan perlindungan data daripada capaian yang tidak dibenarkan.

Akses data dalam persekitaran berbilang pengguna dikawal menggunakan pernyataan GRANT dan REVOKE. Dalam setiap pernyataan adalah perlu untuk menentukan pengguna, objek (jadual, pandangan) yang berkaitan dengan kebenaran ditetapkan, dan kebenaran itu sendiri. Sebagai contoh, pernyataan GRANT memberikan pengguna X keupayaan untuk mendapatkan semula data daripada jadual PRODUCT:

GERAN PILIHAN PADA PRODUK KEPADA X

Kenyataan REVOKE membatalkan semua kebenaran yang diberikan sebelum ini.

Membenamkan SQL dalam Program Aplikasi. Aplikasi sebenar biasanya ditulis dalam bahasa lain yang menjana kod SQL dan menghantarnya ke DBMS sebagai teks ASCII.

Piawaian IBM untuk produk SQL mengawal penggunaan bahasa SQL terbina dalam. Semasa menulis atur cara aplikasi, teksnya ialah gabungan arahan daripada bahasa pengaturcaraan utama (contohnya, C, Pascal, Cobol, Fortran, Assembler) dan perintah SQL dengan awalan khas, contohnya. ExecSQL. Struktur pernyataan SQL telah diperluaskan untuk menampung pembolehubah bahasa hos dalam binaan SQL.



Pemproses SQL mengubah suai jenis atur cara mengikut keperluan penyusun bahasa pengaturcaraan utama. Fungsi pengkompil adalah untuk menterjemah (menterjemah) atur cara daripada bahasa pengaturcaraan sumber kepada bahasa yang hampir dengan bahasa mesin. Selepas penyusunan, program aplikasi (aplikasi) adalah modul bebas.

Dialek SQL

DBMS perhubungan moden menggunakan dialek bahasa SQL untuk menerangkan dan memanipulasi data. Subset bahasa SQL yang membolehkan anda mencipta dan menerangkan pangkalan data dipanggil DDL (Bahasa Definisi Data).

Pada mulanya, bahasa SQL dipanggil SEQUEL (Bahasa Pertanyaan Bahasa Inggeris Berstruktur), kemudian SEQUEL/2, dan kemudian hanya SQL. Hari ini, SQL ialah standard de facto untuk DBMS hubungan.

Piawaian bahasa pertama muncul pada tahun 1989 - SQL-89 dan disokong oleh hampir semua DBMS hubungan komersial. Ia bersifat umum dan tertakluk kepada tafsiran yang luas. Kelebihan SQL-89 boleh dianggap sebagai penyeragaman sintaks dan semantik operator untuk pensampelan dan manipulasi data, serta penetapan cara untuk mengehadkan integriti pangkalan data. Walau bagaimanapun, ia kehilangan bahagian penting seperti manipulasi skema pangkalan data. Ketidaklengkapan standard SQL-89 membawa kepada kemunculan pada tahun 1992. versi seterusnya bahasa SQL.

SQL2 (atau SQL-92) merangkumi hampir semua isu yang diperlukan: manipulasi skema pangkalan data, pengurusan urus niaga dan sesi, sokongan untuk seni bina pelayan pelanggan atau alat pembangunan aplikasi.

Langkah seterusnya dalam pembangunan bahasa ialah versi SQL 3. Versi bahasa ini dilengkapi dengan mekanisme pencetus, definisi jenis data arbitrari dan sambungan objek.

Pada masa ini terdapat tiga peringkat bahasa: pemula, pertengahan dan lengkap. Banyak pengeluar DBMS mereka menggunakan pelaksanaan SQL mereka sendiri, berdasarkan sekurang-kurangnya pada tahap awal standard ANSI yang sepadan, dan mengandungi beberapa sambungan khusus untuk DBMS tertentu. Dalam jadual 4.9 menyediakan contoh dialek SQL.

Jadual 4.9 Dialek SQL

DBMS Bahasa pertanyaan
Sistem R DBMS SQL
DB2 SQL
Akses SQL
SYBASE SQL Di Mana-mana Watcom-SQL
Pelayan SQL SYBASE Transact_SQL
SQL saya SQL
Oracle PL/SQL

Pangkalan data berorientasikan objek menggunakan bahasa pertanyaan objek OQL (Bahasa Pertanyaan Objek). Bahasa OQL adalah berdasarkan arahan SELECT bagi bahasa SQL2 dan menambahkan keupayaan untuk mengarahkan pertanyaan kepada objek atau koleksi objek, serta keupayaan untuk memanggil kaedah dalam satu pertanyaan.

Keserasian banyak dialek SQL yang digunakan menentukan keserasian DBMS. Oleh itu, DBMS SYBASE SQL Anywhere adalah serasi yang mungkin untuk DBMS kelas ini dengan DBMS SYBASE SQL Server. Salah satu aspek keserasian ini ialah sokongan dalam SYBASE SQL Anywhere seperti dialek bahasa SQL seperti Transact-SQL. Dialek ini digunakan dalam SYBASE SQL Server dan boleh digunakan dalam SYBASE SQL Anywhere bersama-sama dengan dialek SQL asli - Watcom-SQL.

Soalan kawalan

1. Bagaimanakah DBMS boleh dikelaskan?

2. Apakah model pangkalan data yang wujud?

3. Apakah elemen utama model maklumat?

4. Apakah jenis hubungan antara entiti yang wujud?

5. Apakah gambar rajah ER dan untuk apa ia digunakan?

6. Apakah prosedur normalisasi jadual yang anda boleh lakukan?

7. Apakah bahasa dan alatan perisian DBMS?

8. Apakah jenis MS Access DBMS itu?

9. Apakah objek utama DBMS MS Access?

10. Apakah pengendali SQL utama digunakan?