SQLShack (Čeština)

V tomto článku jsme prozkoumá proces sloupce Odstranit SQL z existující tabulky. Pochopíme také dopad odstranění sloupce s definovanými omezeními a objekty na něm.

Úvod

V relační databázi používáme techniku návrhu schématu Normalizace a rozdělíme velké tabulky do menších stolů. Pomáhá snižovat redundanci a závislost dat. Na následujícím obrázku je uvedeno několik normalizačních forem.

V tomto článku se nezabýváme normalizačními technikami. Můžete si přečíst článek – Co je normalizace databáze na serveru SQL Server?

Předpokládejme, že máte existující tabulku s více sloupci. V této tabulce jsou konkrétní sloupce, které nyní nejsou relevantní. Tyto sloupce nevyžadujete. Zvažte například tabulku produktů a v této tabulce máte sloupec. Implementovali jsme samostatný mechanismus pro zachycení zpětné vazby k produktu a tento sloupec nyní není relevantní.

Pochopme, proč je nezbytné odstranit nežádoucí sloupce z tabulky SQL. Níže je moje struktura tabulky a musíme odstranit sloupec s datovým typem varchar (2000).

Tato tabulka obsahuje 4 miliony řádky a uživatel provedl příkaz k výběru všech záznamů z této tabulky.

1

SELECT * FROM Products;

Zachyťte skutečný plán provádění (stiskněte CTRL + M) tohoto dotazu spolu se statistikami klientů (stiskněte Shift + Alt + S).

V jiném okně dotazu proveďte dotaz bez sloupce a zachyťte podobné statistiky.

1
2
3
4

SELECT
,
,
OD …

Porovnejme skutečný plán provádění obou dotazů v SSMS. Můžete si všimnout, že dotaz bez sloupce poskytuje lepší výkon. Vidíte nízké hodnoty zkompilované paměti, čas CPU, snížené počty čekání.

Optimalizátor dotazů a databázový stroj SQL vyžadují, aby se na tento sloupec vynaložilo další úsilí, zatímco není užitečné z něj načítat data.

Podobně porovnejte statistiky klientů obou dotazů. Můžete si všimnout významného snížení paketů TDS přijatých ze serveru. Bajty odeslané klientovi, bajty přijaté ze serveru, doba zpracování klienta a celková doba zpracování dotazu, který neobsahuje sloupec. Může vám také pomoci ušetřit šířku pásma sítě.

Zde mám v úmyslu provést vyčištění databáze a odstranit nežádoucí sloupce, aby se zlepšil také výkon dotazu.

Pojďme prozkoumat, jak odebrat sloupec z existující tabulky SQL.

Sloupec SQL DELETE pomocí průzkumníka objektů SSMS

Sloupec můžeme odstranit pomocí Grafického uživatele Metoda rozhraní (GUI) na serveru SQL Server. Připojte se k instanci v SSMS, rozbalte databáze. V konkrétní databázi vyhledejte konkrétní tabulku a rozbalte sloupce.

Zobrazuje všechny sloupce konkrétní tabulky. Klikněte pravým tlačítkem na sloupec, který chceme odebrat, a klikněte na Odstranit, jak je znázorněno na následujícím obrázku.

Otevře se okno a uvádí název sloupce, který chcete odebrat. Klikněte na Ok a sloupec se odebere z tabulky.

Sloupce SQL DELETE pomocí návrháře tabulek SSMS

V SSMS používáme návrháře tabulek k definování požadovaných sloupců, datových typů a vlastností sloupců, jako je primární klíč, sloupce identity. Můžeme jej použít také k odstranění sloupce z existující tabulky.

Klikněte pravým tlačítkem na tabulku a přejděte na Návrh.

Zobrazuje všechny sloupce konkrétní tabulky.

Klikněte pravým tlačítkem na levou stranu sloupce a dostanete možnost Odstranit sloupec. Kliknutím na něj odstraníte sloupec.

Můžete jej uložit buď stisknutím kombinace kláves CTRL + S nebo zavřít návrháře tabulky a v následujícím okně klikněte na Ano.

SQL ODSTRANIT sloupce pomocí návrháře tabulek T-SQL

K odstranění sloupce můžeme použít také příkaz Změnit tabulku. Syntaxe se snadno používá. Následující příkaz odebere sloupec z tabulky.

1
2
3
4

POUŽITÍ
GO
ALTER TABLE. DROP COLUMN
GO

  • Nejprve zadejte název tabulky, která obsahuje sloupec, který chcete odebrat
  • Zadruhé, zadejte název sloupce, který chceme odstranit

Můžeme také odebrat více sloupce v jediném příkazu Alter table, ale všechny sloupce by měly patřit do jedné tabulky. Tento příkaz odstraní a sloupce v jednom příkazu.

1
2
3
4

POUŽITÍ
GO
ALTER STŮL . DROP COLUMN,
GO

Sloupec SQL DELETE obsahuje omezení CHECK

Omezením rozsahu hodnot ve sloupci používáme omezení CHECK. Předpokládejme, že máte sloupec s omezeními CHECK.

Chceme odstranit sloupec, ale tento sloupec má omezení CHECK. Zkusme to odstranit.

1
2

ALTER TABLE. DROP COLUMN ProductPrice
GO

Zobrazí se chybová zpráva, že objekty CK_Price_Check jsou závislé na sloupci.

Tento sloupec nemůžeme odebrat, dokud nemá závislý předmět v něm. Chcete-li tento sloupec odebrat, nejprve odeberte závislost a poté sloupec smažte.

Zkusíme pomocí návrháře tabulky odstranit sloupec s omezením CHECK. Otevřete návrháře tabulky pro tabulku.

Klikněte pravým tlačítkem na sloupec a ověřte, zda v této tabulce existují omezení CHECK.

ukazuje omezení CHECK podle následujícího obrázku.

Nyní klikněte pravým tlačítkem na sloupec a sloupec smažte. Nedává žádnou chybovou zprávu.

Zavřete okno návrháře a požádá vás o uložení změn kliknutím na Ano.

Poskytne vám varovnou zprávu o ověření a zprávu o kontrolním omezení.

Klikněte na Ano a tabulka se nepodaří upravit. Sloupec nelze odebrat, protože na něm závisí omezení CHECK.

Pokud sloupec nelze použít, nemůžeme jej odstranit pomocí návrháře tabulky. má závislosti na jiných objektech.

Sloupec SQL DELETE s definovaným zobrazením SQL

Vytvořme zobrazení SQL, abychom vybrali všechny záznamy z tabulky.

1
2
3

Vytvořit Zobrazit vw_ProductSales
jako
SELECT * z ProductSales

Toto zobrazení závisí na všech sloupcích tabulky. Zrušte sloupec pomocí příkazu Změnit tabulku.

1
2

ZMĚNIT TABULKU. DROP COLUMN ProductPrice
GO

Při provádění dotazu se nám nezobrazí žádná chybová zpráva. Zkusme přistupovat k záznamům z pohledu.

1
2

SELECT *
Z vw_ProductSales;

Zobrazí se chybová zpráva, protože tabulka neobsahuje sloupec. Tento sloupec byl k dispozici, jakmile jsme vytvořili zobrazení SQL.

  • Poznámka: měli bychom zkontrolovat závislosti objektu před zrušením sloupce. Odstraní problémy, kterým budeme čelit později.

Závěr

V tomto článku jsme se dozvěděli o SQL Odstranění sloupce z existující tabulky pomocí různé metody. Měli bychom si být vědomi všech těchto metod. Před odebráním sloupců byste měli být v produkčním prostředí opatrní. Měli byste odstranit všechny závislosti a naplánovat to správně.

  • autor
  • poslední příspěvky
Jako certifikovaný MCSA a Microsoft Certified Trainer v Gurgaonu v Indii, se 13 lety zkušeností, pracuje Rajendra pro řadu velkých společností zaměřených na optimalizaci výkonu, monitorování, vysokou dostupnost a strategie a implementaci zotavení po katastrofě. Je autorem stovek autoritativních článků o SQL Serveru, Azure, MySQL, Linuxu, Power BI, ladění výkonu, AWS / Amazon RDS, Git a souvisejících technologiích, které si dosud prohlédlo více než 10 milionů čtenářů.
Je tvůrcem jedné z největších bezplatných online sbírek článků na jedno téma se svou 50dílnou sérií věnovanou skupinám dostupnosti na serveru SQL Server. Na základě svého přínosu pro komunitu SQL Server byl oceněn různými oceněními, včetně prestižního ocenění „Nejlepší autor roku“ průběžně v letech 2020 a 2021 na serveru SQLShack.
Raj vždy zajímá nové výzvy, takže pokud potřebujete poradit pomoc s jakýmkoli tématem obsaženým v jeho spisech, lze ho kontaktovat na adrese [email protected]
Zobrazit všechny příspěvky od Rajendra Gupta

Poslední příspěvky od Rajendry Gupty (zobrazit všechny)
  • Provádění drobných a hlavních upgradů verzí pro AWS RDS SQL Server – 29. ledna 2021
  • Nasazení instancí AWS RDS PostgreSQL – 27. ledna 2021
  • Migrace místních databází SQL na AWS RDS SQL Server pomocí AWS DMS – 25. ledna , 2021

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *