Rešeno: traži ime kolone u sql db-u kada ne znam u kojoj se tabeli nalazi

Posljednje ažuriranje: 09/13/2023

Rad sa ogromnom bazom podataka u SQL-u često može predstavljati različite izazove. Jedan od takvih zadataka bi uključivao traženje određenog imena stupca u SQL bazi podataka kada niste sigurni od koje se tablice sastoji. Kroz ovaj vodič riješili bismo ovu dilemu, nudeći sistematski način izvršenja ovog zadatka. To bi značilo udubljivanje u dubine SQL programiranja, sistema upita i šema, razbijanje koda kako bi vam se pojednostavili koraci.

Problem

Ponekad se možete naći u situaciji gdje vam je dato ime kolone, ali nemate informaciju kojoj tablici pripada. U velikim bazama podataka sa brojnim tabelama, ručna provjera svake tablice za traženu kolonu može biti dugotrajan proces sklon greškama.

Rješenje: Upit za spašavanje

Dobra vijest je da vam SQL nudi rješenje za ovaj problem korištenjem njegovih sistemskih pogleda. Ispod je upit koji bi pomogao u pronalaženju potrebnih informacija:

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;

Korak po korak, objašnjenje koda

Pogledajmo izbliza na SQL sintaksi i logici koja se koristi za efikasan pristup ovom problemu:

  • SELECT t.name AS table_name,SCHEMA_NAME(schema_id) AS schema_name, c.name AS column_name: Ovdje biramo imena tabela, njihove šeme i imena kolona iz sistemskih pogleda.
  • IZ sys.tablica AS t: Iz ovoga biramo sistemski prikaz 'sys.tables'. Naziva se kao 't' radi pojednostavljenja, što kasnije pomaže u uslovu spajanja.
  • INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID: Ovdje izvodimo INNER JOIN operaciju da kombinujemo redove iz sys.tables i sys.columns kad god se ispuni uslov spajanja (t.OBJECT_ID = c.OBJECT_ID).
  • GDJE c.name LIKE '%YourColumnName%': Ovo filtrira nazive stupaca na osnovu uvjeta navedenog u klauzuli WHERE. Zamijenite 'YourColumnName' imenom kolone koju tražite.
  • ORDER BY schema_name, table_name;: Konačno, rezultati su poredani prema 'schema_name' i 'table_name' radi čitljivosti.

To je jednostavan upit koji vrši temeljnu pretragu, štedeći vas ručnog rada provjere svake tablice.

SQL sistemski pogledi

Sistemski prikazi SQL Servera pružaju opsežno spremište sistemskih informacija koje se mogu koristiti za obavljanje tako intenzivnih aktivnosti. Konkretno, u našem slučaju, `sys.tables`, koji predstavlja listu svih postojećih tabela i `sys.columns` koji predstavlja sve informacije o stupcima za bilo koju tabelu, čine okosnicu našeg upita.

Klauzula INTER JOIN

The UNUTAR PRIDRUŽITE SE selekcija je jedan od široko korištenih SQL spojeva, jer vraća zapise koji imaju podudarne vrijednosti u obje tablice uključene u spajanje. Ovdje smo ga koristili za komunikaciju između mapiranja tablice i kolona.

Traženje imena kolona u ogromnoj SQL bazi podataka nikada nije bilo lakše. Zaista, svestranost SQL-a leži u njegovoj sposobnosti da se kreće i upravlja velikim količinama podataka s relativnom lakoćom. Ova rasprava je dokaz te sposobnosti, pojednostavljujući zadatak koji bi inače bio prilično glomazan.

Slični postovi: