Решено: търсене на име на колона в sql db, когато не знам в коя таблица е

Последна актуализация: 09/13/2023
Автор: SQL SourceTrail

Работа с огромна база данни в SQL често може да представлява различни предизвикателства. Една от тези задачи би включвала търсене на конкретно име на колона в SQL база данни, когато не сте сигурни от коя таблица се състои. Чрез това ръководство ще разрешим тази дилема, предлагайки систематичен начин за изпълнение на тази задача. Това би означавало да навлезете в дълбините на SQL програмирането, системите за заявки и схемите, да разбиете кода, за да опростите стъпките вместо вас.

Проблемът

Понякога може да се окажете в ситуация където ви е дадено име на колона, но нямате информация към коя таблица принадлежи. В големи бази данни с многобройни таблици ръчната проверка на всяка таблица за необходимата колона може да отнеме много време и е податлива на грешки процес.

Решението: Запитване за спасяване

Добрата новина е, че SQL ви предоставя решението за този проблем, като използвате неговите системни изгледи. По-долу е дадена заявка, която ще помогне за извличане на необходимата информация:

SELECT t.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%YourColumnName%'
ORDER BY schema_name, table_name;

Стъпка по стъпка Обяснение на кода

Нека разгледаме по-отблизо в SQL синтаксиса и логиката, използвани за ефективен подход към този проблем:

  • ИЗБЕРЕТЕ t.name КАТО table_name,SCHEMA_NAME(schema_id) AS schema_name, c.name AS column_name: Тук избираме имената на таблиците, тяхната схема и имена на колони от системните изгледи.
  • ОТ sys.tables AS t: От това избираме системния изглед „sys.tables“. Той е псевдоним като 't' за опростяване, което по-късно помага при условието за свързване.
  • INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID: Тук изпълняваме операция INNER JOIN, за да комбинираме редове от sys.tables и sys.columns, когато условието за присъединяване (t.OBJECT_ID = c.OBJECT_ID) е изпълнено.
  • WHERE c.name LIKE '%YourColumnName%': Това филтрира имената на колоните въз основа на условието, посочено в клаузата WHERE. Заменете „YourColumnName“ с името на колоната, което търсите.
  • ПОРЪЧАЙТЕ ПО име_на_схема, име_на_таблица;: Накрая резултатите са подредени по 'schema_name' и 'table_name' за четимост.

Това е проста заявка, която извършва задълбочено търсене, спестявайки ви ръчния труд за проверка на всяка таблица.

Системните изгледи на SQL

Системните изгледи на SQL Server предоставя обширно хранилище на системна информация, което може да се използва за извършване на такива интензивни дейности. По-специално, в нашия случай, `sys.tables`, представляващи списък на всички съществуващи таблици и `sys.columns`, представляващи цялата информация за колони за всяка таблица, формират гръбнака на нашата заявка.

INNER JOIN Клауза

- ВЪВЕЖДАНЕ selection е едно от широко използваните SQL съединения, тъй като връща записите, които имат съвпадащи стойности в двете таблици, участващи в съединението. Тук го използвахме за съгласуване между съпоставянията на таблицата и колоните.

Търсенето на имена на колони в огромна SQL база данни никога не е било по-лесно. Наистина, гъвкавостта на SQL се крие в способността му да навигира и управлява големи количества данни с относителна лекота. Тази дискусия е свидетелство за тази способност, опростявайки задача, която иначе би била доста тромава.

Подобни публикации:

Оставете коментар