Chociaż SQL Server jest niezwykle potężny jako relacyjna baza danych, może czasami być nieco zniechęcający, jeśli chodzi o wyszukiwanie podstawowych informacji o samym systemie bazy danych.
Aby trochę złagodzić te bóle głowy, krótko omówimy, jak znaleźć wszystkie tabele w bazie danych, które zawierają nazwę konkretnej kolumny .
Widoki katalogu SQL Server
Jedną z podstawowych koncepcji dotyczących SQL Server jest koncepcja catalog views , które w rzeczywistości są tabelami bazy danych (catalogs w tym przypadku), które wyświetlają ogólnosystemowe informacje o silniku bazy danych SQL Server.
Odpytywanie informacji o systemie
Wszystkie catalog views są dostępne przez SELECT Instrukcja SQL FROM konkretny katalog w sys. przestrzeń nazw.
Na przykład poniższej instrukcji można użyć do wyświetlenia informacji o wszystkich tabelach bazy danych w systemie za pośrednictwem sys.tables katalog:
SELECT
*
FROM
sys.tables
Oświadczenie LIKE i symbol wieloznaczny
Zanim przejdziemy do wyodrębniania wszystkich tabel o określonej nazwie, powinniśmy krótko zbadać, co LIKE tak samo jak symbol wieloznaczny (% ) i jak są używane razem.
LIKE jest używany w zapytaniu do określenia czy określony wzorzec znaków (zazwyczaj wartości określonej column ) dopasuj sformatowany ciąg znaków.
LIKE jest często używany w połączeniu z % znak, który reprezentuje symbol wieloznaczny podczas próby dopasowania wzorca. Kiedy % symbol wieloznaczny jest obecny w ciągu wzorca, oznacza to, że dowolny znaki mogą znajdować się w tej lokalizacji ciągu wzorca i nadal być uważane za dopasowanie.
Na przykład, jeśli chcemy znaleźć wszystkie książki, w których title rozpoczyna się z „The”, ale później może zawierać dowolne znaki, użyjemy takiego stwierdzenia:
SELECT
title,
primary_author,
published_date
FROM
books
WHERE
title LIKE 'The%'
Uważni czytelnicy mogą zdać sobie sprawę, że powyższy wzorzec nie tylko pasuje do tytułów, które mają na początku „The”, ale także do wszelkich tytułów ze słowami zaczynającymi się po prostu na trzy litery „The”. Od % symbole wieloznaczne pasują do dowolnych znaków, jeśli chcemy sprawdzić tylko tytuły ze słowem „The”, bardziej odpowiednie jest dodanie spacji:
SELECT
title,
primary_author,
published_date
FROM
books
WHERE
title LIKE 'The %'
Wybieranie tabel zawierających nazwę kolumny
Dzięki naszej podstawowej wiedzy o obu catalog views i LIKE oświadczenie, jesteśmy teraz przygotowani do wyszukiwania wszystkich tabel w naszym systemie, które zawierają konkretną nazwę kolumny:
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'
Musimy połączyć informacje z dwóch katalogi, sys.tables i sys.columns , więc używamy JOIN oświadczenie. Oba są powiązane przez object_id pole, więc JOIN na tym polu.
Stamtąd wystarczy wybrać ColumnName i TableName naszych wyników i na koniec oczywiście tylko wyszukiwanie rekordów, w których sys.columns.name jest równy naszej ColumnName ciąg.
Jednak to zapytanie znajdzie tylko dokładne dopasowania nazwy kolumny. Jeśli chcemy znaleźć częściowe dopasowania, możemy użyć LIKE i % zamiast tego znaki wieloznaczne:
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%'
Mamy to! Proste zapytanie do wyszukania wszystkich tabel i powiązanych kolumn z określoną (lub podobną) nazwą kolumny w nich.