Meskipun sangat kuat sebagai database relasional, SQL Server terkadang bisa menjadi sesuatu yang menakutkan ketika harus mencari informasi mendasar tentang sistem database itu sendiri.
Untuk meringankan sakit kepala ini di beberapa bagian kecil, kami akan secara singkat mengeksplorasi cara menemukan semua tabel dalam database yang berisi nama kolom tertentu .
Tampilan Katalog SQL Server
Salah satu konsep dasar yang harus dipahami tentang SQL Server adalah catalog views
, yang secara efektif merupakan tabel database (catalogs
dalam hal ini) yang menampilkan informasi di seluruh sistem tentang SQL Server Database Engine.
Meminta Informasi Sistem
Semua catalog views
diakses melalui SELECT
Pernyataan SQL FROM
katalog tertentu dalam sys.
ruang nama.
Misalnya, pernyataan berikut dapat digunakan untuk melihat informasi tentang semua tabel database dalam sistem melalui sys.tables
katalog:
SELECT
*
FROM
sys.tables
Pernyataan SUKAI dan Karakter Wildcard
Sebelum kita masuk ke cara mengekstrak semua tabel dengan nama tertentu, kita harus menjelajahi secara singkat apa yang LIKE
pernyataan tidak, serta wildcard (%
) simbol, dan bagaimana mereka digunakan bersama.
LIKE
digunakan dalam kueri untuk menentukan apakah pola karakter tertentu (biasanya nilai dari column
tertentu ) cocok dengan string karakter yang diformat.
LIKE
sering juga digunakan bersama dengan %
karakter, yang mewakili wildcard saat mencoba mencocokkan pola. Ketika %
karakter wildcard hadir dalam string pola, ini menunjukkan bahwa apa saja karakter dapat hadir di lokasi string pola tersebut dan masih dianggap cocok.
Misalnya, jika kita ingin mencari semua buku dengan title
dimulai dengan "The" tetapi dapat berisi karakter apa pun setelahnya, kami akan menggunakan pernyataan seperti ini:
SELECT
title,
primary_author,
published_date
FROM
books
WHERE
title LIKE 'The%'
Pembaca yang jeli mungkin menyadari bahwa pola di atas tidak hanya cocok dengan judul yang memiliki "The" di awal, tetapi juga semua judul dengan kata-kata yang dimulai dengan tiga huruf "The" juga. Sejak %
wildcard cocok dengan karakter apa pun, jika kita hanya ingin memeriksa judul dengan kata “The”, menambahkan spasi lebih tepat:
SELECT
title,
primary_author,
published_date
FROM
books
WHERE
title LIKE 'The %'
Memilih Tabel yang Mengandung Nama Kolom
Dengan pengetahuan dasar kami tentang kedua catalog views
dan LIKE
pernyataan, kami sekarang dilengkapi untuk mencari semua tabel di sistem kami yang berisi nama kolom tertentu:
SELECT
sys.columns.name AS ColumnName,
tables.name AS TableName
FROM
sys.columns
JOIN sys.tables ON
sys.columns.object_id = tables.object_id
WHERE
sys.columns.name = 'ColumnName'
Kita perlu menggabungkan informasi dari dua katalog, sys.tables
dan sys.columns
, jadi kami menggunakan JOIN
penyataan. Keduanya diasosiasikan dengan object_id
bidang, jadi kami JOIN
di bidang itu.
Dari sana, tinggal pilih ColumnName
dan TableName
dari hasil kami, dan akhirnya, tentu saja, hanya mencari catatan di mana sys.columns.name
sama dengan ColumnName
kami string.
Namun, kueri ini hanya akan menemukan kecocokan persis dari nama kolom. Jika kita ingin menemukan kecocokan sebagian, kita dapat menggunakan LIKE
dan %
karakter wildcard sebagai gantinya:
SELECT
sys.columns.name AS ColumnName,
tables.name AS TableName
FROM
sys.columns
JOIN sys.tables ON
sys.columns.object_id = tables.object_id
WHERE
sys.columns.name LIKE '%ColumnName%'
Di sana kita memilikinya! Kueri sederhana untuk mencari semua tabel dan kolom terkait dengan nama kolom tertentu (atau serupa) di dalamnya.