SQLShack (Magyar)

Ebben a cikkben meg fogja vizsgálni az SQL törlés oszlopának folyamatát egy meglévő táblából. Megértjük az oszlop eltávolításának hatását is, amelyben meghatározott korlátozások és objektumok találhatók.

Bevezetés

Relációs adatbázisban a Normalizációk sématervezési technikát használjuk, és felosztjuk a nagy táblákat. kisebb táblákba. Segít csökkenteni az adatok redundanciáját és függőségét. A következő képen több normalizálási űrlap van megadva.

A cikk nem foglalkozik a normalizálási technikákkal. Hivatkozhat a cikkre – Mi az adatbázis-normalizálás az SQL Server rendszerben?

Tegyük fel, hogy létezik több oszlopos táblája. Ebben a táblázatban vannak olyan oszlopok, amelyek most nem relevánsak. Nem szükségesek ezek az oszlopok. Vegyünk például egy terméktáblát, és ebben a táblázatban van egy oszlop. Külön visszahívási mechanizmust vezettünk be a termék visszajelzésének befogadására, és ez az oszlop most nem releváns.

Tisztázzuk, miért fontos eltávolítani a nem kívánt oszlopokat az SQL táblából. Az alábbiakban a táblázatom felépítése látható, és el kell távolítanunk a varchar (2000) adattípusú oszlopot.

Ez a táblázat 4 milliót tartalmaz sorokat, és a felhasználó végrehajtotta a parancsot, hogy kiválassza az összes rekordot erről a tábláról.

1

SELECT * FROM Products;

A tényleges végrehajtási terv rögzítése (nyomja meg a CTRL + M billentyűkombinációt) ennek a lekérdezésnek az ügyfélstatisztikákkal együtt (nyomja meg a Shift + Alt + S billentyűkombinációt).

Egy másik lekérdezési ablakban hajtsa végre a lekérdezést az oszlop nélkül, és rögzítse a hasonló statisztikákat.

1
2
3
4

SELECT
,
,
FROM ..

Hasonlítsuk össze mindkét lekérdezés tényleges végrehajtási tervét az SSMS-ben. Észreveheti, hogy az oszlop nélküli lekérdezés jobb teljesítményt nyújt. Alacsony a fordított memória, a CPU idő, a csökkent várakozási idő.

A lekérdezés-optimalizálónak és az SQL adatbázis-motornak további erőfeszítéseket kell tennie ehhez az oszlophoz, miközben nem hasznos adatokat lekérni belőle.

Hasonlóképpen hasonlítsa össze mindkét lekérdezés ügyfélstatisztikáját. Megjegyezhetõ, hogy a szervertõl kapott TDS-csomagok jelentõsen csökkentek. Az ügyfélnek elküldött bájtok, a szervertől kapott bájtok, az ügyfél feldolgozási ideje és az oszlopot nem tartalmazó lekérdezés teljes feldolgozási ideje. Ez segíthet a hálózati sávszélesség megtakarításában is.

Itt szándékomban áll, hogy végezzen adatbázis-tisztítást és távolítsa el a nem kívánt oszlopokat a lekérdezés teljesítményének javítása érdekében is.

Fedezzük fel, hogyan távolíthatunk el egy oszlopot egy meglévő SQL-táblázatból.

SQL DELETE oszlop az SSMS objektumkezelővel

Oszlopot eltávolíthatunk a Graphical User segítségével Interfész (GUI) módszer az SQL Serverben. Csatlakozzon egy példányhoz az SSMS-ben, bontsa ki az adatbázisokat. Az adott adatbázisban keresse meg az adott táblázatot, és bontsa ki az oszlopokat.

Megjeleníti az adott táblázat összes oszlopát. Kattintson a jobb gombbal az eltávolítani kívánt oszlopra, majd kattintson a Törlés gombra a következő képen látható módon.

Megnyit egy ablakot, és felsorolja az eltávolítandó oszlop nevét. Kattintson az OK gombra, és ezzel eltávolítja az oszlopot a táblából.

SQL DELETE oszlopok az SSMS táblázattervező használatával

Az SSMS-ben a tábla tervezőt használjuk a szükséges oszlopok, adattípusok és oszlopok tulajdonságainak, például az elsődleges kulcs, az identitás oszlopok meghatározásához. Használhatunk egy oszlop törlésére egy meglévő táblából is.

Kattintson a jobb gombbal az asztalra, és lépjen a Tervezés oldalra.

Megjeleníti egy adott táblázat összes oszlopát.

Kattintson jobb gombbal az oszlop bal oldalán, és megjelenik az Oszlop törlése opció. Kattintson rá egy oszlop törléséhez.

Vagy elmentheti a CTRL + S megnyomásával, vagy bezárhatja a táblázattervezőt, és kattintson az Igen gombra a következő ablakban.

SQL OSZLOPOK TÖRLÉSE a T-SQL táblázattervezővel

Az Alter table paranccsal oszlopokat is eltávolíthatunk. A szintaxis használata egyszerű. A következő parancs eltávolítja az oszlopot a táblából.

1
2
3
4

HASZNÁLAT
GO
ALTER TÁBLÁZAT. OSZLOP DROP
GO

  • Először adja meg az eltávolítandó oszlopot tartalmazó táblázat nevét
  • Másodszor adja meg a törölni kívánt oszlop nevét

Többet is eltávolíthatunk oszlopok egyetlen Alter tábla parancsban, de az összes oszlopnak egyetlen táblához kell tartoznia. Ez a parancs egyetlen paranccsal távolítja el és oszlopokat.

1
2
3
4

HASZNÁLAT
GO
ALTER ASZTAL . DROP OSZLOP,
GO

Az SQL DELETE oszlop CHECK korlátozásokat tartalmaz

CHECK kényszereket használunk az oszlop értéktartományának korlátozásához. Tegyük fel, hogy van egy oszlop, amelyen az ELLENŐRZÉS korlátozások vannak.

Szeretnénk eltávolítani az oszlopot, de ennek az oszlopnak van egy CHECK korlátozása. Próbáljuk meg eltávolítani.

1
2

ALTER TÁBLÁZAT. DROP COLUMN ProductPrice
GO

Hibaüzenetet kap, amely azt jelzi, hogy a CK_Price_Check objektumok az oszloptól függenek.

Nem tudjuk eltávolítani ezt az oszlopot, amíg nem rendelkezik objektum benne. Ennek az oszlopnak a eltávolításához először távolítsa el a függőséget, majd törölje az oszlopot.

Próbáljuk meg eltávolítani az ELLENŐRZÉS korlátozással rendelkező oszlopot a táblázattervező segítségével. Nyitott asztaltervező az asztalhoz.

Kattintson a jobb gombbal az oszlopra, és ellenőrizze, hogy vannak-e CHECK korlátozások ebben a táblázatban.

Ez a CHECK korlátozásokat mutatja a következő kép szerint.

Most kattintson a jobb gombbal az oszlopra, és törölje az oszlopot. Nem ad hibaüzenetet.

Zárja be a tervező ablakot, és arra kéri, hogy a módosítások mentéséhez kattintson az Igen gombra.

Érvényesítési figyelmeztető üzenetet ad, és üzenetet ad az ellenőrzési kényszerről.

Kattintson az Igen gombra, és nem módosítja a táblázatot. Nem tudja eltávolítani az oszlopot, mert az ELLENŐRZÉSI kényszer attól függ.

Nem tudjuk eltávolítani az oszlopot a tábla tervezőjével, ha az oszlop függ más objektumoktól.

SQL DELETE oszlop, amelynek SQL nézete van definiálva

Hozzunk létre egy SQL nézetet, hogy kiválasszuk az összes rekordot a táblából.

1
2
3

Nézet létrehozása vw_ProductSales
mint
SELECT * a ProductSales

Ez a nézet a táblázat összes oszlopától függ. Dobja el az oszlopot az Alter tábla paranccsal.

1
2

ALTER TÁBLÁZAT. DROP COLUMN ProductPrice
GO

Nem kapunk hibaüzenetet a lekérdezés végrehajtásáról. Próbáljuk meg elérni a rekordokat a nézetből.

1
2

SELECT *
FROM vw_ProductSales;

Hibaüzenetet kapunk, mert a táblázat nem tartalmaz az oszlop. Ez az oszlop az SQL nézet létrehozása után volt elérhető.

  • Megjegyzés: Az oszlop elejtése előtt ellenőriznünk kell az objektumfüggőségeket. Ez kiküszöböli azokat a problémákat, amelyekkel később találkozunk.

Következtetés

Ebben a cikkben megtudtuk az SQL oszlopának törlését egy meglévő táblából a különböző módszerek. Tudatában kell lennünk ezeknek a módszereknek. Az oszlopok eltávolítása előtt körültekintően kell eljárni a gyártási környezetben. Távolítsa el az összes függőséget, és megfelelően tervezze meg.

  • Szerző
  • Legutóbbi bejegyzések
MCSA tanúsítvánnyal és az indiai Gurgaonban lévő Microsoft Certified Trainer, 13 éves tapasztalattal, Rajendra különféle nagyvállalatoknál dolgozik, elsősorban a teljesítmény optimalizálására, a monitorozásra, a magas rendelkezésre állásra, valamint a katasztrófa utáni helyreállítási stratégiákra és megvalósításra. Több száz mérvadó cikk szerzője az SQL Server, Azure, MySQL, Linux, Power BI, Performance tuning, AWS / Amazon RDS, Git és kapcsolódó technológiákról, amelyeket eddig több mint 10 millió olvasó nézett meg.
Az egyik legnagyobb ingyenes online cikkgyűjtemény készítője egyetlen témában, 50 részes sorozatával az SQL Server Always On Availability Groups-on. Az SQL Server közösséghez való hozzájárulása alapján különféle díjakkal ismerték el, köztük a rangos “Az év legjobb szerzője” címet 2020-ban és 2021-ben folyamatosan az SQLShacknél.
Raj mindig érdekli az új kihívásokat, így ha tanácsadásra van szüksége segítséget nyújt az írásaival foglalkozó bármely témában, a [email protected] címen érhető el. / div>
Rajendra Gupta legújabb üzenetei (lásd az összeset)
  • Kisebb és nagyobb verzió frissítések az AWS számára RDS SQL Server – 2021. január 29. , 2021

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük