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.