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
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
- 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