Lihat pencarian sql semua tabel. Kueri SQL Sederhana - Referensi Cepat dan Contoh

Mari kita mulai dengan kueri dasar. Tapi bagaimana tanpa mereka? Bentuk paling ringkas kueri SQL dan itu diterjemahkan sebagai "Saya ingin mendapatkan semua data dari tabel ini." Hasil query selanjutnya adalah semua record dengan semua field dari tabel D_STAFF.

PILIH * DARI D_STAFF

Memasukkan kueri SQL dalam tutorial.

Pilih [SQL section] di explorer di sebelah kiri, klik [SQL button] di atas daftar di sebelah kanan, masukkan query dan klik [SQL button] lagi. Setelah mengonfirmasi eksekusi permintaan, daftar di sebelah kanan akan terlihat seperti ini. Dalam hal ini, semuanya lebih sederhana: cukup masukkan kueri SQL di bidang yang sesuai dan klik [Jalankan].


Hasil dari mengeksekusi query SQL paling sederhana.

Gunakan (*) setelah PILIH pernyataan, tentu saja, itu nyaman, terutama jika tidak diketahui bidang apa dalam tabel sama sekali, tetapi juga mahal - struktur yang menyimpan hasil kueri menghabiskan banyak memori "ekstra", dan ini hanya menambah waktu untuk mengeksekusi kueri itu sendiri. Opsi selanjutnya jauh lebih disukai jika Anda hanya membutuhkan informasi tentang nama lengkap Anda. karyawan dan pengalamannya. Terjemahannya kira-kira seperti ini: "Saya hanya ingin tahu ini dan ini tentang semua orang dari meja ..."

PILIH S_NAME, S_EXPERIENCE DARI D_STAFF

Hasil kueri SQL terakhir memakan lebih sedikit ruang "dalam lebar".


Pemilihan nilai untuk bidang tabel tertentu.

Langkah 2. Kueri SQL dengan kriteria pemilihan sederhana

Kueri paling sederhana praktis tidak berlaku dalam praktiknya, karena mereka benar-benar "menarik" semua catatan dari tabel yang ditentukan, dan mungkin ada ratusan ribu di antaranya. DBMS mungkin menolak untuk memenuhi permintaan tersebut, dan memori akses acak pada mesin klien mungkin tidak cukup. Apa yang harus dilakukan dengan hasil kueri semacam itu, bahkan jika dieksekusi dengan benar, tidak selalu jelas, meskipun untuk beberapa hal itu akan berhasil. Untuk menerapkan batasan pada pemilihan catatan yang Anda butuhkan, kata kunci WHERE digunakan dalam SQL. Permintaan di bawah ini hanya memilih karyawan dengan pengalaman kerja kurang dari 5 tahun.

PILIH S_NAME, S_EXPERIENCE DARI D_STAFF MANA S_EXPERIENCE


Penggunaan kriteria sederhana pemilihan catatan.

Langkah 3. Kueri SQL dengan kriteria pemilihan majemuk

Untuk apa kita? kriteria seleksi gabungan catatan, saya pikir tidak perlu untuk menjelaskan. Untuk sama seperti query dengan kriteria sederhana. Istilah digabungkan menggunakan operasi logika konjungsi dan disjungsi(operator "AND" (AND) dan "OR" (OR)), dan dikelompokkan menggunakan tanda kurung. Kueri berikut akan mengembalikan catatan karyawan dengan pengalaman kurang dari 5 tahun dan dengan pembatasan tambahan ke posisi mereka.

PILIH S_NAME, S_EXPERIENCE, S_POSITION DARI D_STAFF WHERE (D_STAFF.S_POSITION 20) DAN D_STAFF.S_EXPERIENCE


Penggunaan kriteria kompleks pemilihan catatan.

Langkah 4. ANTARA operator

Operator BETWEEN menyederhanakan sintaks untuk menggambarkan kriteria yang menentukan interval nilai yang diizinkan... Alih-alih di bawah ANTARA 3 DAN 7 orang dapat menulis D_STAFF.S_EXPERIENCE> = 3 DAN D_STAFF.S_EXPERIENCE<=7 . Первый вариант способствует наглядности запроса – это раз, поиск на стороне СУБД может выполняться по отдельному алгоритму, специально оптимизированному для подобного вида ограничений – это два.

PILIH S_NAME, S_EXPERIENCE, S_POSITION DARI D_STAFF WHERE (D_STAFF.S_POSITION 20) DAN D_STAFF.S_EXPERIENCE ANTARA 3 DAN 7


Menggunakan operator ANTARA.

Langkah 5. LIKE operator

Operator yang luar biasa ini memungkinkan Anda untuk menempatkan batasan pada nilai bidang teks menggunakan templat. Saya tidak akan menjelaskan sintaks, saya pikir semuanya jelas dari contoh. Kami melakukan pencarian karyawan, dengan nama lengkap. dimulai dengan "DENGAN", di tengah harus ada "Batang" dan semuanya harus berakhir "Ich"... Di beberapa DBMS, kata kunci LIKE juga dapat digunakan dengan nilai tanggal dan waktu.

PILIH S_NAME DARI D_STAFF WHERE S_NAME LIKE "С%" AND S_NAME LIKE "% Shaft%" AND S_NAME LIKE "% ich"

PILIH S_NAME DARI D_STAFF WHERE S_NAME LIKE "С% Shaft% ich"


Menggunakan operator LIKE.

Langkah 6. Alias ​​​​untuk tabel dan bidang

Nama tabel dan bidang yang digunakan dalam kueri dapat ditentukan alias... Bagaimana ini dilakukan ditunjukkan di bawah ini. Mengapa ini dilakukan akan ditunjukkan pada langkah selanjutnya, termasuk langkah 7, dan contoh ini menggambarkan yang paling jelas menggunakan alias dalam SQL- eksekusi hasil kueri sesuai dengan persyaratan untuk kenyamanan persepsinya oleh seseorang. Kata kunci AS digunakan untuk mendefinisikan alias untuk tabel atau bidang dalam SQL. Hasil query (tabel heading) pada varian ini terlihat lebih cocok untuk membuat laporan atas dasar itu.

PILIH S_NAME SEBAGAI Karyawan, S_EXPERIENCE SEBAGAI [Pengalaman Kerja], S_POSITION SEBAGAI Jabatan DARI D_STAFF SEBAGAI STAF


Menerapkan alias tabel dan bidang.

Langkah 7. Hubungan "bos - bawahan"

Contoh ini melengkapi "langkah pertama" dalam mempelajari kueri SQL, yang paling sulit. Di sini kami "memprogram" penerbitan daftar karyawan beserta manajemen langsungnya. Kesulitannya adalah bahwa catatan tentang keduanya disimpan dalam tabel yang sama, dan di sini Anda tidak dapat melakukannya tanpa alias. DBMS, selama pemrosesan kueri, akan merujuk ke tabel D_STAFF seolah-olah itu adalah dua tabel yang berbeda (di bawah alias STAFF dan CHIEF) untuk menggabungkan catatan menjadi satu iring-iringan berdasarkan hubungan “bos – bawahan”. Hubungan dimodelkan sebagai berikut: nilai bidang S_CHIEF_ID dari bawahan sesuai dengan nilai bidang XD_IID atasannya.

PILIH STAFF.S_NAME SEBAGAI Bawahan, STAFF.S_POSITION SEBAGAI [Posisi Bawahan], CHIEF.S_NAME SEBAGAI Ketua, CHIEF.S_POSITION SEBAGAI [Posisi Kepala] FROM D_STAFF SEBAGAI STAFF, D_STAFF SEBAGAI KEPALA WHERE STAFF.S_CHIEF_ID = CHIEF


Mendapatkan hierarki "bos-bawahan" menggunakan alias tabel dalam kueri SQL.

Setiap pengembang web perlu mengetahui SQL untuk menulis kueri basis data. Meskipun phpMyAdmin belum dibatalkan, sering kali Anda perlu mengotori tangan Anda untuk menulis SQL tingkat rendah.

Itulah sebabnya kami telah menyiapkan tur singkat tentang dasar-dasar SQL. Ayo mulai!

1. Membuat tabel

Pernyataan CREATE TABLE digunakan untuk membuat tabel. Argumen harus berupa nama kolom, serta tipe datanya.

Mari kita buat tabel sederhana bernama bulan... Terdiri dari 3 kolom :

  • pengenal- Jumlah bulan dalam tahun kalender (bilangan bulat).
  • nama- Nama bulan (string, maksimal 10 karakter).
  • hari- Jumlah hari dalam bulan ini (bilangan bulat).

Ini adalah bagaimana kueri SQL yang sesuai akan terlihat seperti:

CREATE TABLE bulan (id int, nama varchar (10), hari int);

Juga, saat membuat tabel, disarankan untuk menambahkan kunci utama untuk salah satu kolom. Ini akan membuat catatan tetap unik dan mempercepat permintaan pengambilan. Biarkan nama bulan menjadi unik dalam kasus kami (kolom nama)

CREATE TABLE bulan (id int, nama varchar (10), hari int, PRIMARY KEY (nama));

tanggal dan waktu
Tipe dataKeterangan
TANGGALNilai tanggal
TANGGAL WAKTUNilai tanggal dan waktu dengan presisi mint
WAKTUNilai waktu

2. Menyisipkan baris

Sekarang mari kita isi meja kita bulan informasi berguna. Menambahkan catatan ke tabel dilakukan melalui pernyataan INSERT. Ada dua cara untuk menulis instruksi ini.

Cara pertama adalah tidak menentukan nama kolom tempat data akan disisipkan, tetapi hanya menentukan nilainya.

Cara penulisan ini sederhana, tetapi tidak aman, karena tidak ada jaminan bahwa saat Anda memperluas proyek dan mengedit tabel, kolom akan berada dalam urutan yang sama seperti sebelumnya. Cara yang aman (dan pada saat yang sama lebih rumit) untuk menulis pernyataan INSERT memerlukan penentuan nilai dan urutan kolom:

Inilah nilai pertama dalam daftar NILAI cocok dengan nama kolom yang ditentukan pertama, dan seterusnya.

3. Mengambil data dari tabel

Pernyataan SELECT adalah teman terbaik kita ketika kita ingin mengambil data dari database. Ini sangat sering digunakan, jadi harap baca bagian ini dengan sangat hati-hati.

Penggunaan paling sederhana dari pernyataan SELECT adalah kueri yang mengembalikan semua kolom dan baris dari sebuah tabel (misalnya, tabel dengan nama karakter):

PILIH * DARI "karakter"

Tanda bintang (*) berarti kita ingin mendapatkan data dari semua kolom. Karena database SQL biasanya terdiri dari lebih dari satu tabel, maka kata kunci FROM harus ditentukan, diikuti dengan nama tabel, dipisahkan dengan spasi.

Terkadang kita tidak ingin mendapatkan data dari tidak semua kolom dalam tabel. Untuk melakukan ini, alih-alih tanda bintang (*), kita harus menuliskan nama kolom yang diinginkan dipisahkan dengan koma.

PILIH id, nama DARI bulan

Juga, dalam banyak kasus, kami ingin hasil diurutkan dalam urutan tertentu. Dalam SQL, kami melakukan ini dengan ORDER BY. Ini dapat mengambil pengubah opsional - penyortiran ASC (default) dalam urutan menaik atau penyortiran DESC dalam urutan menurun:

PILIH id, nama DARI bulan ORDER DENGAN nama DESC

Saat menggunakan ORDER BY, pastikan itu akan menjadi yang terakhir dalam pernyataan SELECT. Jika tidak, pesan kesalahan akan ditampilkan.

4. Memfilter data

Anda belajar cara memilih kolom yang ditentukan secara ketat dari database menggunakan kueri SQL, tetapi bagaimana jika kita juga perlu mendapatkan baris tertentu? Klausa WHERE datang untuk menyelamatkan di sini, memungkinkan kita untuk memfilter data tergantung pada kondisinya.

Dalam kueri ini, kami hanya memilih bulan-bulan itu dari tabel bulan di mana lebih dari 30 hari menggunakan operator lebih (>).

PILIH id, nama DARI bulan MANA hari> 30

5. Penyaringan data tingkat lanjut. DAN dan ATAU Operator

Sebelumnya, kami menggunakan penyaringan data menggunakan satu kriteria. Untuk pemfilteran data yang lebih kompleks, Anda dapat menggunakan operator AND dan OR dan operator perbandingan (=,<,>,<=,>=,<>).

Di sini kami memiliki tabel yang berisi empat album terlaris sepanjang masa. Mari kita pilih yang tergolong rock dan terjual kurang dari 50 juta kopi. Ini dapat dengan mudah dilakukan dengan menempatkan operator AND di antara dua kondisi.


PILIH * FROM album WHERE genre = "rock" AND sales_in_millions<= 50 ORDER BY released

6. Di / Antara / Suka

WHERE juga mendukung beberapa perintah khusus, memungkinkan Anda dengan cepat memeriksa kueri yang paling sering digunakan. Di sini mereka:

  • IN - berfungsi untuk menunjukkan berbagai kondisi, yang mana saja dapat dipenuhi
  • ANTARA - Memeriksa apakah suatu nilai berada dalam rentang yang ditentukan
  • LIKE - mencari pola tertentu

Misalnya, jika kita ingin memilih album dengan pop dan jiwa musik, kita dapat menggunakan IN ("nilai1", "nilai2").

PILIH * FROM album WHERE genre IN ("pop", "soul");

Jika kita ingin mendapatkan semua album yang dirilis antara tahun 1975 dan 1985, kita harus merekam:

SELECT * FROM albums WHERE dirilis ANTARA 1975 DAN 1985;

7. Fungsi

SQL penuh dengan fungsi yang melakukan hal-hal yang berguna. Beberapa yang paling umum digunakan adalah:

  • COUNT () - mengembalikan jumlah baris
  • SUM () - Mengembalikan jumlah total kolom numerik
  • AVG () - Mengembalikan rata-rata dari sekumpulan nilai
  • MIN () / MAX () - mendapatkan nilai min / maks dari kolom

Untuk mendapatkan tahun terbaru di tabel kami, kami harus menulis kueri SQL berikut:

PILIH MAX (dirilis) DARI album;

8. Subquery

Pada paragraf sebelumnya, kita telah mempelajari bagaimana melakukan perhitungan sederhana dengan data. Jika kita ingin menggunakan hasil dari perhitungan ini, kita tidak dapat melakukannya tanpa kueri bersarang. Katakanlah kita ingin mengeluarkan artis, album dan tahun rilis untuk album tertua di tabel.

Kami tahu cara mendapatkan kolom khusus ini:

PILIH artis, album, dirilis DARI album;

Kami juga tahu cara mendapatkan tahun paling awal:

PILIH MIN (dirilis) DARI album;

Yang Anda butuhkan sekarang adalah menggabungkan dua kueri menggunakan WHERE:

PILIH artis, album, dirilis FROM album WHERE dirilis = (PILIH MIN (dirilis) FROM album);

9. Penggabungan tabel

Dalam database yang lebih kompleks, ada beberapa tabel yang saling terkait. Misalnya, di bawah ini adalah dua tabel tentang video game ( video game) dan pengembang video game ( game_developer).


Di meja video game ada kolom pengembang ( pengembang_id), tetapi berisi bilangan bulat, bukan nama pengembang. Nomor ini adalah pengenal ( pengenal) dari pengembang yang sesuai dari tabel pengembang game ( game_developer), menghubungkan dua daftar secara logis, memungkinkan kami untuk menggunakan informasi yang disimpan di keduanya secara bersamaan.

Jika kita ingin membuat kueri yang mengembalikan semua yang perlu diketahui tentang game, kita dapat menggunakan INNER JOIN untuk menautkan kolom dari kedua tabel.

PILIH video_games.name, video_games.genre, game_developers.name, game_developers.country DARI video_games INNER GABUNG game_developers DI video_games.developer_id = game_developers.id;

Ini adalah tipe JOIN yang paling sederhana dan paling umum. Ada beberapa opsi lain, tetapi ini berlaku untuk kasus yang kurang umum.

10. Alias

Jika Anda melihat contoh sebelumnya, Anda akan melihat bahwa ada dua kolom yang disebut nama... Ini membingungkan, jadi mari kita atur alias untuk salah satu kolom berulang, misalnya nama dari meja game_developer akan dipanggil pengembang.

Kami juga dapat mempersingkat kueri dengan menentukan alias untuk nama tabel: video game ayo panggil permainan, game_developer - pengembang:

PILIH games.name, games.genre, devs.name SEBAGAI developer, devs.country DARI video_games SEBAGAI game INNER GABUNG game_developers SEBAGAI devs ON games.developer_id = devs.id;

11. Memperbarui data

Kita sering perlu mengubah data di beberapa baris. Dalam SQL, ini dilakukan dengan menggunakan pernyataan UPDATE. Pernyataan UPDATE terdiri dari:

  • Tabel yang berisi nilai pengganti;
  • Nama kolom dan nilai barunya;
  • WHERE memilih baris yang ingin kami perbarui. Jika ini tidak dilakukan, maka semua baris dalam tabel akan berubah.

Di bawah ini adalah tabel tv_series dengan serial dengan peringkat mereka. Namun, kesalahan kecil merayap ke dalam tabel: meskipun seri Game of Thrones dan digambarkan sebagai komedi, dia sebenarnya tidak. Mari kita perbaiki!

Tv_series table data UPDATE tv_series SET genre = "drama" WHERE id = 2;

12. Penghapusan data

Menghapus baris dalam tabel menggunakan SQL adalah proses yang sangat sederhana. Yang Anda butuhkan hanyalah memilih tabel dan baris yang akan dihapus. Mari kita hapus baris terakhir dalam tabel dari contoh sebelumnya. tv_series... Ini dilakukan dengan menggunakan pernyataan> DELETE

HAPUS DARI tv_series WHERE id = 4

Berhati-hatilah saat menulis pernyataan DELETE dan pastikan klausa WHERE ada, jika tidak semua baris dalam tabel akan dihapus!

13. Menghapus tabel

Jika kita ingin menghapus semua baris, tetapi membiarkan tabel itu sendiri, maka gunakan perintah TRUNCATE:

TRUNCATE TABLE table_name;

Jika kita benar-benar ingin menghapus data dan tabel itu sendiri, maka perintah DROP akan berguna:

DROP TABLE nama_tabel;

Berhati-hatilah dengan perintah ini. Mereka tidak dapat dibatalkan! / P>

Ini menyimpulkan tutorial SQL kami! Kami belum membahas banyak hal, tetapi apa yang sudah Anda ketahui seharusnya cukup untuk memberi Anda beberapa keterampilan praktis dalam karir web Anda.

Kami terus mengeksplorasi kemampuan SQL Server dari Microsoft dan selanjutnya kita memiliki komponen Pencarian Teks Lengkap, dalam versi Rusia adalah “ Pencarian teks lengkap", Dan sekarang kita akan mencari tahu untuk apa itu, dan bagaimana menerapkan pencarian teks lengkap ini di SQL server menggunakan komponen ini.

Dan kita akan mulai, tentu saja, dengan melihat dasar-dasar pencarian teks lengkap, yaitu. apa itu dan untuk apa.

Apa itu pencarian teks lengkap?

Pencarian teks lengkap Adalah pencarian kata atau frase dalam data teks. Biasanya, jenis pencarian ini digunakan untuk mencari teks dalam jumlah besar data, misalnya, tabel dengan satu juta baris atau lebih, karena jauh lebih cepat daripada pencarian biasa, yang dapat dilakukan dengan menggunakan konstruksi LIKE.

Pencarian teks lengkap menyiratkan pembuatan indeks khusus ( itu berbeda dari indeks biasa) data teks, yang merupakan jenis kamus kata-kata yang muncul dalam data ini.

Dengan pencarian teks lengkap, Anda dapat menerapkan semacam mesin pencari dokumen ( itu. senar), dengan kata atau frasa di database perusahaan Anda. Karena, selain bekerja cepat, ia juga memiliki kemampuan untuk membuat peringkat dokumen yang ditemukan, yaitu. atur peringkat setiap baris yang ditemukan, dengan kata lain, Anda dapat menemukan catatan yang paling relevan, mis. yang paling cocok untuk permintaan Anda.

Kemampuan pencarian teks lengkap di MS SQL Server

  • Dalam pencarian teks lengkap dari server SQL, Anda dapat mencari tidak hanya dengan kata atau frasa individual, tetapi juga dengan ekspresi awalan, misalnya, mengatur teks awal kata atau frasa;
  • Anda juga dapat mencari kata berdasarkan bentuk kata, misalnya berbagai bentuk kata kerja atau kata benda dalam bentuk tunggal dan jamak, yaitu. pada ekspresi turunan;
  • Anda dapat membuat kueri untuk menemukan kata atau frasa yang berdekatan dengan kata atau frasa lain, mis. ekspresi sadar lokasi;
  • Ada kesempatan untuk mencari bentuk sinonim dari kata tertentu (kamus), yaitu misalnya, jika tesaurus mendefinisikan bahwa “ Mobil"Dan" Mobil"Apakah sinonim, maka ketika mencari kata" Mobil"Set hasil juga akan menyertakan baris yang berisi kata" Mobil»;
  • Dalam permintaan, Anda dapat menentukan kata atau frasa dengan nilai tertimbang, misalnya, jika kueri berisi beberapa kata atau frasa, maka kata atau frasa tersebut dapat diberi nilai penting dari 0,0 hingga 1,0 ( 1.0 berarti itu kata atau frasa yang paling penting);
  • Agar tidak memperhitungkan beberapa kata dalam pencarian, Anda dapat menggunakan " hentikan daftar kata", yaitu tidak ada pencarian yang akan dilakukan pada kata-kata yang termasuk dalam daftar ini.

Bersiap untuk Menerapkan Pencarian Teks Lengkap di MS SQL Server

Sebelum Anda mulai membuat pencarian teks lengkap, Anda perlu mengetahui beberapa poin penting:

  • Untuk mengimplementasikan pencarian teks lengkap, komponen Pencarian Teks Lengkap ( Pencarian teks lengkap) harus dipasang;
  • Sebuah tabel hanya dapat memiliki satu indeks teks lengkap;
  • Untuk membuat indeks teks lengkap, tabel harus berisi satu indeks unik yang menyertakan satu kolom dan tidak mengizinkan nilai nol. Disarankan untuk menggunakan indeks berkerumun unik ( atau hanya kunci utama), kolom pertama yang harus memiliki tipe data integer;
  • Indeks teks lengkap dapat dibuat pada kolom dengan tipe data: char, varchar, nchar, nvarchar, teks, ntext, gambar, xml, varbinary, atau varbinary (maks);
  • Untuk membuat indeks teks lengkap, Anda harus terlebih dahulu membuat katalog teks lengkap. Mulai dari SQL Server 2008 katalog teks lengkap adalah konsep logis, yang menunjukkan sekelompok indeks teks lengkap, mis. adalah objek virtual dan bukan bagian dari filegroup ( ada cara untuk membuat indeks teks lengkap menggunakan "Wizard", di mana katalog dapat dibuat bersamaan dengan indeks, kami akan mempertimbangkan metode ini tepat di bawah).

Catatan! Saya akan menerapkan pencarian teks lengkap menggunakan contoh SQL Server 2008 R2. Juga diasumsikan bahwa komponen Pencarian Teks Lengkap sudah diinstal, jika tidak, maka instal dengan menambahkan komponen yang sesuai melalui "Pusat Instalasi SQL Server", mis. centang kotak yang sesuai.

Dalam contoh di bawah ini, saya akan menggunakan SQL Server Management Studio sebagai alat untuk membuat dan mengelola katalog dan indeks teks lengkap.

Data awal untuk membuat pencarian teks lengkap

Katakanlah kita memiliki database TestBase, dan memiliki tabel TestTable, di mana hanya ada dua bidang, yang pertama (id) adalah kunci utama, dan yang kedua (data teks) adalah data teks, yang akan kita lakukan secara penuh. pencarian teks...

CREATE TABLE TestTable (id int IDENTITY (1,1) NOT NULL, textdata varchar (500) NULL, CONSTRAINT PK_TestTable PRIMARY KEY CLUSTERED (id ASC))

Misalnya, itu akan berisi data berikut:


Membuat Katalog Teks Lengkap di SQL Server

Untuk membuat katalog teks lengkap, serta indeks, Anda dapat menggunakan antarmuka grafis SSMS atau pernyataan T-SQL, kami akan menganalisis kedua metode dengan Anda.

Membuat katalog teks lengkap di T-SQL

CREATE FULLTEXT CATALOG TestCatalog WITH ACCENT_SENSITIVITY = ON AS DEFAULT AUTHORIZATION dbo GO

  • CREATE FULLTEXT CATALOG - perintah untuk membuat katalog teks lengkap;
  • TestCatalog adalah nama katalog teks lengkap kami;
  • WITH ACCENT_SENSITIVITY (ON | OFF) - opsi menentukan apakah katalog teks lengkap akan mempertimbangkan diakritik untuk pengindeksan teks lengkap. Standarnya adalah AKTIF;
  • AS DEFAULT adalah opsi untuk menunjukkan bahwa direktori tersebut adalah direktori default. Jika Anda membuat indeks teks lengkap tanpa secara eksplisit menentukan direktori, direktori default akan digunakan;
  • AUTHORIZATION dbo - mengatur pemilik katalog teks lengkap, itu bisa menjadi pengguna atau peran basis data. DI DALAM kasus ini kami telah menentukan peran dbo.

Membuat katalog teks lengkap di antarmuka grafis Studio Manajemen

Katalog teks lengkap yang sama persis dapat dibuat di GUI Management Studio. Untuk melakukan ini, buka database, buka folder Penyimpanan -> Katalog teks lengkap, klik kanan pada item ini dan pilih " Buat katalog teks lengkap».


Jendela untuk membuat direktori akan terbuka, di mana kami menunjukkan nama direktori dan opsinya.


Memodifikasi dan Menghapus Katalog Teks Lengkap di SQL Server

Untuk mengubah opsi katalog, Anda dapat menggunakan pernyataan ALTER FULLTEXT CATALOG, misalnya, mari kita membuat katalog kita berhenti dengan memperhitungkan tanda diakritik, untuk ini kita menulis pernyataan SQL yang akan membangun kembali katalog kita dengan opsi baru.

ALTER FULLTEXT CATALOG TestCatalog REBUILD WITH ACCENT_SENSITIVITY = OFF GO

Untuk menghapus direktori, Anda dapat menggunakan pernyataan T-SQL, misalnya

DROP FULLTEXT CATALOG TestCatalog

Semua ini dapat dilakukan di GUI Management Studio ( untuk mengubah parameter direktori "Properti", untuk menghapus "Hapus")

Membuat Indeks Teks Lengkap di SQL Server

Setelah Anda membuat katalog teks lengkap, Anda dapat mulai membuat indeks teks lengkap di dalamnya. Dalam kasus kami, kami ingin membuat indeks teks lengkap di mana bidang data teks dari TestTable berpartisipasi.

Membuat Indeks Teks Lengkap T-SQL

Untuk membuat indeks teks lengkap, Anda dapat menulis pernyataan SQL berikut:

BUAT INDEKS FULLTEXT PADA TestTable (textdata) KEY INDEX PK_TestTable ON (TestCatalog) WITH (CHANGE_TRACKING AUTO) GO

  • CREATE FULLTEXT INDEX - perintah untuk membuat indeks teks lengkap;
  • TestTable (textdata) - tabel dan kolom yang termasuk dalam indeks;
  • KEY INDEX PK_TestTable - nama indeks unik dari TestTable;
  • AKTIF (TestCatalog) - kami menunjukkan bahwa indeks teks lengkap akan dibuat dalam katalog teks lengkap TestCatalog. Jika Anda tidak menentukan parameter ini, indeks akan dibuat dalam katalog teks lengkap default;
  • WITH (CHANGE_TRACKING AUTO) - inilah yang kami katakan bahwa semua perubahan yang akan dilakukan pada tabel dasar (TestTable) akan secara otomatis ditampilkan dalam indeks teks lengkap kami, mis. pengisian otomatis.

Membuat Indeks Teks Lengkap di GUI Management Studio

Indeks teks lengkap dapat dibuat menggunakan alat grafik, untuk ini kami membuka properti katalog teks lengkap dan pergi ke item “ Tabel atau tampilan", Pilih tabel, bidang, indeks unik, dan ubah metode pelacakan yang diinginkan. Dalam kasus kami, kami hanya memiliki satu tabel yang tersedia dan satu bidang.


Memodifikasi dan Menghapus Indeks Teks Lengkap

Jika perlu, Anda dapat mengubah pengaturan indeks teks lengkap. Mari kita ubah pelacakan perubahan dari otomatis ke manual sebagai contoh. Untuk mengubah antarmuka grafis, Anda dapat menggunakan jendela " Properti Katalog Teks Lengkap -> Tabel atau Tampilan"Itu yang kami gunakan untuk membuat indeks teks lengkap.

Atau Anda dapat menulis kode berikut:

ALTER FULLTEXT INDEX PADA TestTable SET CHANGE_TRACKING = MANUAL

Untuk menghapus indeks teks lengkap, cukup dengan menghapus tabel dari daftar objek yang terkait dengan katalog teks lengkap di jendela yang sama " Properti Katalog Teks Lengkap -> Tabel atau Tampilan»


Atau tulis kode T-SQL

JATUHKAN INDEKS TEKS LENGKAP PADA Tabel Tes

Menggunakan wizard untuk membuat katalog dan indeks teks lengkap

Seperti yang saya sebutkan sebelumnya, katalog dan indeks teks lengkap dapat dibuat menggunakan wizard, mis. langkah demi langkah, untuk ini kita klik kanan pada tabel yang ingin kita sertakan dalam pencarian teks lengkap, dan pilih “ Indeks Teks Lengkap -> Tentukan Indeks Teks Lengkap».

Catatan! Sebelum melakukan ini, saya menghapus direktori dan indeks yang kita buat pada contoh sebelumnya.


Ini akan meluncurkan Wizard Pengindeksan Teks Lengkap SQL Server.



Kemudian kolom yang akan dimasukkan dalam indeks teks lengkap.


Maka Anda harus memilih cara untuk melacak perubahan.


Kami menunjukkan nama direktori dan opsinya untuk membuatnya, karena diasumsikan bahwa kami tidak memiliki direktori, jika ada, maka kami dapat memilihnya.


Di sini kita dapat mengatur jadwal untuk mengisi katalog teks lengkap.


Untuk membuat katalog dan indeks, tetap klik " Siap».


Di jendela berikutnya, kita akan melihat hasil operasi untuk membuat katalog dan indeks teks lengkap. Dalam kasus saya, semuanya berjalan dengan baik.


Dengan demikian, kami menyelesaikan pembuatan katalog dan indeks teks lengkap secara bersamaan menggunakan wizard.

Contoh kueri teks lengkap

Saya harus segera mengatakan bahwa kami akan mempertimbangkan kueri teks lengkap secara lebih rinci dalam materi berikut, tetapi untuk saat ini, sebagai contoh dan konfirmasi bahwa pencarian teks lengkap kami berfungsi, mari tulis beberapa kueri teks lengkap sederhana.

Jika Anda ingat, TestTable kami berisi definisi teknologi, bahasa pemrograman, secara umum, definisi yang terkait dengan bidang TI. Katakanlah kita ingin mendapatkan semua catatan di mana ada penyebutan Microsoft, untuk ini kita menulis kueri teks lengkap dengan kata kunci BERISI, misalnya:

PILIH * FROM TestTable WHERE CONTAINS (textdata, "" Microsoft "")


Kami mendapatkan hasilnya, tetapi katakanlah kami juga perlu mengurutkannya berdasarkan relevansi, dengan kata lain, baris mana yang lebih cocok dengan kueri kami. Untuk melakukan ini, kita akan menggunakan fungsi CONTAINSTABLE, yang memberikan peringkat untuk setiap record yang ditemukan.

SELECT Table1.id AS ID, RowRank.Rank as, Table1.textdata sebagai FROM TestTable Table1 INNER JOIN CONTAINSTABLE (TestTable, textdata, "" Microsoft "") sebagai RowRank pada Table1.id = RowRank. ORDER OLEH RowRank.RANK DESC


Seperti yang Anda lihat, peringkat diatur dan baris diurutkan berdasarkan itu. Algoritme peringkat itu sendiri, serta informasi lebih rinci tentang pencarian teks lengkap, dapat ditemukan di SQL Server Books Online.

Tentang ini saya usulkan untuk mengakhiri, saya harap semuanya jelas, semoga berhasil!

Permintaan ditulis tanpa menghilangkan tanda kutip, karena MySQL, MS SQL dan PostGree mereka berbeda.

Kueri SQL: mendapatkan bidang yang ditentukan (wajib) dari tabel

PILIH id, country_title, count_people FROM table_name

Kami mendapatkan daftar catatan: SEMUA negara dan populasinya. Nama bidang wajib dipisahkan dengan koma.

PILIH * DARI nama_tabel

* menunjukkan semua bidang. Artinya, akan ada tayangan SEMUANYA bidang data.

Kueri SQL: keluaran catatan dari tabel tidak termasuk duplikat

PILIH BERBEDA country_title FROM table_name

Kami mendapatkan daftar catatan: negara tempat pengguna kami berada. Mungkin ada banyak pengguna dari satu negara. Dalam hal ini, ini adalah permintaan Anda.

Permintaan SQL: menampilkan catatan dari tabel sesuai dengan kondisi yang ditentukan

PILIH id, country_title, city_title FROM table_name WHERE count_people> 100000000

Kami mendapatkan daftar catatan: negara-negara di mana jumlah orang lebih dari 100.000.000.

Kueri SQL: menampilkan catatan dari tabel dengan pemesanan

PILIH id, city_title FROM table_name ORDER BY city_title

Kami mendapatkan daftar entri: kota dalam urutan abjad. Di awal A, di akhir I.

PILIH id, city_title FROM table_name ORDER BY city_title DESC

Kami mendapatkan daftar catatan: kota terbalik ( DESC) memesan. Di awal saya, di akhir A.

Permintaan SQL: menghitung jumlah catatan

PILIH JUMLAH (*) DARI nama_tabel

Kami mendapatkan jumlah (jumlah) catatan dalam tabel. Dalam hal ini, TIDAK ada daftar catatan.

Kueri SQL: keluaran rentang catatan yang diperlukan

PILIH * DARI table_name LIMIT 2, 3

Kami mendapatkan 2 (kedua) dan 3 (ketiga) catatan dari tabel. Permintaan ini berguna saat membuat navigasi di halaman WEB.

Kueri SQL dengan kondisi

Output catatan dari tabel sesuai dengan kondisi yang diberikan menggunakan operator logika.

Kueri SQL: DAN konstruksi

PILIH id, city_title FROM table_name WHERE country = "Rusia" DAN minyak = 1

Kami mendapatkan daftar catatan: kota-kota dari Rusia DAN memiliki akses ke minyak. Saat operator digunakan DAN, maka kedua kondisi harus cocok.

Kueri SQL: ATAU konstruksi

SELECT id, city_title FROM table_name WHERE country = "Rusia" OR country = "USA"

Kami mendapatkan daftar catatan: semua kota dari Rusia ATAU AMERIKA SERIKAT. Saat operator digunakan ATAU, maka setidaknya satu kondisi harus cocok.

Permintaan SQL: DAN BUKAN konstruksi

PILIH id, user_login FROM table_name WHERE country = "Rusia" DAN BUKAN count_comments<7

Kami mendapatkan daftar catatan: semua pengguna dari Rusia DAN siapa yang membuat TIDAK KURANG 7 komentar.

Kueri SQL: konstruksi IN (B)

SELECT id, user_login FROM table_name WHERE country IN ("Rusia", "Bulgaria", "Cina")

Kami mendapatkan daftar catatan: semua pengguna yang tinggal di ( DI DALAM) (Rusia, atau Bulgaria, atau Cina)

Permintaan SQL: TIDAK DALAM konstruksi

PILIH id, user_login FROM table_name WHERE country NOT IN ("Rusia", "Cina")

Kami mendapatkan daftar catatan: semua pengguna yang tidak tinggal di ( TIDAK MASUK) (Rusia atau Cina).

Kueri SQL: konstruksi IS NULL (nilai kosong atau TIDAK kosong)

PILIH id, user_login FROM table_name WHERE status IS NULL

Kami mendapatkan daftar catatan: semua pengguna yang statusnya tidak ditentukan. NULL adalah topik yang terpisah dan karena itu diperiksa secara terpisah.

PILIH id, user_login FROM table_name WHERE state IS NOT NULL

Kami mendapatkan daftar catatan: semua pengguna di mana status ditentukan (BUKAN NOL).

Kueri SQL: SEPERTI konstruksi

PILIH id, user_login FROM table_name WHERE nama keluarga SEPERTI "Ivan%"

Kami mendapatkan daftar catatan: pengguna yang nama belakangnya dimulai dengan kombinasi "Ivan". Tanda% berarti APAPUN jumlah karakter APAPUN. Untuk menemukan tanda%, Anda perlu menggunakan tanda "Ivan \%".

Kueri SQL: ANTARA konstruk

PILIH id, user_login FROM table_name MANA gaji ANTARA 25000 DAN 50000

Kami mendapatkan daftar catatan: pengguna yang menerima gaji dari 25.000 hingga 50.000 inklusif.

Ada BANYAK operator logika, jadi pelajari dokumentasi SQL server secara mendetail.

Kueri SQL kompleks

Kueri SQL: menggabungkan beberapa kueri

(SELECT id, user_login FROM table_name1) UNION (SELECT id, user_login FROM table_name2)

Kami mendapatkan daftar entri: pengguna yang terdaftar di sistem, serta pengguna yang terdaftar di forum secara terpisah. Beberapa kueri dapat digabungkan dengan operator UNION. UNION bertindak seperti SELECT DISTINCT, yaitu membuang nilai duplikat. Untuk benar-benar mendapatkan semua catatan, Anda perlu menggunakan operator UNION ALL.

Kueri SQL: menghitung nilai bidang MAX, MIN, SUM, AVG, COUNT

Output satu, nilai maksimum penghitung dalam tabel:

PILIH MAX (penghitung) DARI nama_tabel

Output satu, nilai minimum penghitung dalam tabel:

PILIH MIN (penghitung) DARI table_name

Menampilkan jumlah semua nilai penghitung dalam tabel:

PILIH SUM (penghitung) DARI table_name

Menampilkan nilai rata-rata penghitung dalam tabel:

PILIH AVG (penghitung) DARI nama_tabel

Menampilkan jumlah penghitung dalam tabel:

PILIH JUMLAH (penghitung) DARI table_name

Tampilan jumlah loket di bengkel No. 1, pada tabel:

SELECT COUNT (counter) FROM table_name WHERE office = "Toko #1"

Ini adalah perintah yang paling populer. Disarankan, jika memungkinkan, untuk menggunakan kueri SQL jenis ini untuk penghitungan, karena tidak ada lingkungan pemrograman yang dapat membandingkan kecepatan pemrosesan data selain SQL server itu sendiri saat memproses datanya sendiri.

Kueri SQL: mengelompokkan catatan

PILIH benua, SUM (country_area) DARI negara GROUP BY continent

Kami mendapatkan daftar catatan: dengan nama benua dan dengan jumlah wilayah semua negara mereka. Artinya, jika ada direktori negara di mana masing-masing negara mencatat wilayahnya, maka dengan menggunakan klausa GROUP BY, Anda dapat mengetahui ukuran setiap benua (berdasarkan pengelompokan berdasarkan benua).

Kueri SQL: menggunakan beberapa tabel melalui alias

PILIH o.order_no, o.amount_paid, c.company FROM orders AS o, customer AS with WHERE o.custno = c.custno AND c.city = "Tyumen"

Kami mendapatkan daftar catatan: pesanan dari pelanggan yang hanya tinggal di Tyumen.

Faktanya, dengan database yang dirancang dengan baik dari jenis ini, kueri adalah yang paling sering, jadi operator khusus diperkenalkan di MySQL, yang bekerja berkali-kali lebih cepat daripada kode yang ditulis di atas.

PILIH o.order_no, o.amount_paid, z.company FROM orders AS o LEFT JOIN customer AS z ON (z.custno = o.custno)

Subkueri bersarang

SELECT * FROM table_name WHERE salary = (SELECT MAX (gaji) FROM employee)

Kami mendapatkan satu catatan: informasi tentang pengguna dengan gaji maksimum.

Perhatian! Subquery bersarang adalah salah satu hambatan di server SQL. Bersama dengan fleksibilitas dan kekuatannya, mereka juga secara signifikan meningkatkan beban di server. Yang menyebabkan pelambatan bencana dalam pekerjaan pengguna lain. Kasus panggilan rekursif dengan kueri bersarang sangat umum. Oleh karena itu, saya sangat menyarankan untuk TIDAK menggunakan kueri bersarang, tetapi untuk membaginya menjadi yang lebih kecil. Atau gunakan kombinasi LEFT JOIN di atas. Selain jenis permintaan ini, permintaan merupakan sarang pelanggaran keamanan yang meningkat. Jika Anda memutuskan untuk menggunakan subkueri bersarang, maka Anda perlu mendesainnya dengan sangat hati-hati dan menjalankan awal pada salinan basis data (basis data uji).

Kueri SQL mengubah data

Kueri SQL: INSERT

instruksi MEMASUKKAN memungkinkan Anda untuk memasukkan catatan ke dalam tabel. Dengan kata sederhana, buat baris dengan data dalam tabel.

Opsi nomor 1. Instruksi yang sering digunakan:

INSERT INTO table_name (id, user_login) NILAI (1, "ivanov"), (2, "petrov")

Di meja " nama_tabel“2 (dua) user akan dimasukkan sekaligus.

Opsi nomor 2. Lebih nyaman menggunakan gaya:

INSERT table_name SET id = 1, user_login = "ivanov"; INSERT table_name SET id = 2, user_login = "petrov";

Ini memiliki kelebihan dan kekurangannya.

Kerugian utama:

  • Banyak kueri SQL kecil berjalan sedikit lebih lambat daripada satu kueri SQL besar, tetapi kueri lain akan diantrekan untuk layanan. Artinya, jika kueri SQL besar dijalankan selama 30 menit, maka selama ini kueri lainnya akan mengasapi bambu dan menunggu giliran.
  • Permintaan tersebut ternyata lebih masif dari versi sebelumnya.

Keuntungan utama:

  • Selama kueri SQL kecil, kueri SQL lainnya tidak diblokir.
  • Kemudahan membaca.
  • Fleksibilitas. Dalam opsi ini, Anda tidak dapat mengikuti struktur, tetapi hanya menambahkan data yang diperlukan.
  • Saat membentuk arsip dengan cara ini, Anda dapat dengan mudah menyalin satu baris dan menjalankannya melalui baris perintah (konsol), sehingga tidak memulihkan seluruh ARSIP.
  • Gaya penulisannya mirip dengan pernyataan UPDATE, yang membuatnya lebih mudah diingat.

Kueri SQL: PERBARUI

UPDATE table_name SET user_login = "ivanov", nama_pengguna = "Ivanov" WHERE id = 1

Di meja " nama_tabel"Dalam catatan dengan id = 1, nilai bidang user_login dan user_surname akan diubah ke nilai yang ditentukan.

Kueri SQL: HAPUS

HAPUS DARI table_name WHERE id = 3

Catatan dengan id nomor 3 akan dihapus di tabel table_name.

  1. Disarankan untuk menulis semua nama bidang dalam huruf kecil dan, jika perlu, pisahkan dengan spasi paksa "_" untuk kompatibilitas dengan bahasa pemrograman yang berbeda seperti Delphi, Perl, Python dan Ruby.
  2. Tulis perintah SQL dalam huruf CAPITAL agar mudah dibaca. Selalu ingat bahwa orang lain dapat membaca kode setelah Anda, dan kemungkinan besar Anda sendiri setelah N jumlah waktu.
  3. Beri nama bidang dari awal kata benda, lalu tindakan. Misalnya: status_kota, login_pengguna, nama_pengguna.
  4. Cobalah untuk menghindari kata-kata fallback dalam bahasa yang berbeda yang dapat menyebabkan masalah di SQL, PHP atau Perl, seperti (nama, jumlah, tautan). Misalnya: tautan dapat digunakan di MS SQL, tetapi dicadangkan di MySQL.

Materi ini adalah referensi singkat untuk pekerjaan sehari-hari dan tidak mengklaim sebagai sumber otoritatif super mega, yang merupakan sumber utama kueri SQL untuk database tertentu.