SQLShack (Polski)
W tym artykule zbada proces SQL Delete kolumna z istniejącej tabeli. Zrozumiemy również wpływ usunięcia kolumny ze zdefiniowanymi ograniczeniami i obiektami.
Wprowadzenie
W relacyjnej bazie danych używamy techniki projektowania schematu Normalizacje i dzielimy duże tabele na mniejsze stoły. Pomaga zmniejszyć nadmiarowość i zależność danych. Mamy wiele form normalizacji określonych na poniższym obrazku.
W tym artykule nie omawiamy technik normalizacji. Możesz zapoznać się z artykułem – Co to jest normalizacja bazy danych w SQL Server?
Załóżmy, że masz istniejącą tabelę z wieloma kolumnami. W tej tabeli są określone kolumny, które nie są teraz istotne. Nie potrzebujesz tych kolumn. Weźmy na przykład pod uwagę tabelę produktów, aw tej tabeli masz kolumnę. Wdrożyliśmy oddzielny mechanizm do zbierania opinii o produktach i ta kolumna nie jest teraz istotna.
Rozumiemmy, dlaczego konieczne jest usuwanie niechcianych kolumn z tabeli SQL. Poniżej znajduje się struktura mojej tabeli i musimy usunąć kolumnę o typie danych varchar (2000).
Ta tabela zawiera 4 miliony wiersze, a użytkownik wykonał polecenie, aby wybrać wszystkie rekordy z tej tabeli.
1
|
SELECT * FROM Products;
|
Przechwyć rzeczywisty plan wykonania (naciśnij CTRL + M) tego zapytania wraz ze statystykami klienta (naciśnij Shift + Alt + S).
W innym oknie zapytania wykonaj zapytanie bez kolumny i zbierz podobne statystyki.
1
2
3
4
|
WYBIERZ
,
,
Z ..
|
Porównajmy rzeczywisty plan wykonania obu zapytań w SSMS. Możesz zauważyć, że zapytanie bez kolumny zapewnia lepszą wydajność. Widzisz niskie wartości skompilowanej pamięci, czasu procesora, zmniejszoną liczbę oczekujących.
Optymalizator zapytań i silnik bazy danych SQL wymagają dodatkowego wysiłku dla tej kolumny, podczas gdy pobieranie z niej danych nie jest przydatne.
Podobnie porównaj statystyki klienta dla obu zapytań. Można zauważyć znaczną redukcję pakietów TDS odebranych z serwera. Bajty wysłane do klienta, Bajty odebrane z serwera, czas przetwarzania klienta i całkowity czas przetwarzania zapytania, które nie zawiera kolumny. Może również pomóc w oszczędzaniu przepustowości sieci.
W tym miejscu zamierzam wyczyścić bazę danych i usunąć niechciane kolumny, aby również poprawić wydajność zapytań.
Przyjrzyjmy się, jak usunąć kolumnę z istniejącej tabeli SQL.
SQL DELETE kolumna za pomocą eksploratora obiektów SSMS
Możemy usunąć kolumnę za pomocą Graphical User Interface (GUI) w programie SQL Server. Połącz się z wystąpieniem w SSMS, rozwiń bazy danych. W konkretnej bazie danych znajdź konkretną tabelę i rozwiń kolumny.
Pokazuje wszystkie kolumny z określonej tabeli. Kliknij prawym przyciskiem myszy kolumnę, którą chcesz usunąć, i kliknij Usuń, jak pokazano na poniższym obrazku.
Otwiera się i wyświetla nazwę kolumny do usunięcia. Kliknij OK, aby usunąć kolumnę z tabeli.
SQL DELETE kolumny za pomocą projektanta tabel SSMS
Używamy projektanta tabel w SSMS do definiowania wymaganych kolumn, typów danych i właściwości kolumn, takich jak klucz podstawowy, kolumny tożsamości. Możemy go również użyć do usunięcia kolumny z istniejącej tabeli.
Kliknij prawym przyciskiem myszy tabelę i przejdź do Projekt.
Pokazuje całą kolumnę określonej tabeli.
Kliknij prawym przyciskiem myszy lewą stronę kolumny, a otrzymasz opcję Usuń kolumnę. Kliknij ją, aby usunąć kolumnę.
Możesz ją zapisać, naciskając CTRL + S lub zamknąć projektanta tabeli i kliknij Tak w następnym oknie.
SQL USUŃ kolumny za pomocą projektanta tabel T-SQL
Możemy również użyć polecenia Zmień tabelę, aby usunąć kolumnę. Składnia jest prosta w użyciu. Następujące polecenie usuwa kolumnę z tabeli.
1
2
3
4
|
UŻYJ
Idź
ALTER TABLE. DROP COLUMN
GO
|
- Najpierw określ nazwę tabeli, która zawiera kolumnę do usunięcia
- Po drugie, określ nazwę kolumny, którą chcemy usunąć
Możemy również usunąć wiele kolumny w jednym poleceniu Zmień tabelę, ale wszystkie kolumny powinny należeć do jednej tabeli. To polecenie usuwa kolumny i kolumny w jednym poleceniu.
1
2
3
4
|
UŻYJ
Idź
ALTER STÓŁ . DROP COLUMN,
GO
|
Kolumna SQL DELETE zawiera ograniczenia CHECK
Do ograniczenia zakresu wartości w kolumnie używamy ograniczeń CHECK. Załóżmy, że masz kolumnę z ograniczeniami CHECK.
Chcemy usunąć kolumnę, ale ta kolumna ma na sobie ograniczenie CHECK. Spróbujmy go usunąć.
1
2
|
ALTER TABLE. DROP COLUMN ProductPrice
GO
|
Otrzymujesz komunikat o błędzie, że obiekty CK_Price_Check są zależne od kolumny.
Nie możemy usunąć tej kolumny, dopóki nie ma zależnej obiekt w nim. Aby usunąć tę kolumnę, najpierw usuń zależność, a następnie usuń kolumnę.
Spróbujmy usunąć kolumnę z ograniczeniem CHECK za pomocą projektanta tabel. Otwórz projektant tabeli dla stołu.
Kliknij prawym przyciskiem myszy kolumnę i sprawdź, czy w tej tabeli istnieją ograniczenia CHECK.
To pokazuje ograniczenia CHECK jak na poniższym obrazku.
Teraz kliknij prawym przyciskiem myszy kolumnę i usuń ją. Nie wyświetla żadnego komunikatu o błędzie.
Zamknij okno projektanta i prosi o kliknięcie Tak, aby zapisać zmiany.
Wyświetla ostrzeżenie o sprawdzaniu poprawności i informuje o ograniczeniu sprawdzania.
Kliknij Tak i nie uda się zmodyfikować tabeli. Nie można usunąć kolumny, ponieważ zależne jest od niej ograniczenie CHECK.
Nie możemy usunąć kolumny za pomocą projektanta tabel, jeśli kolumna ma zależności od innych obiektów.
Kolumna SQL DELETE ze zdefiniowanym Widokiem SQL
Utwórzmy Widok SQL, aby wybrać wszystkie rekordy z tabeli.
1
2
3
|
Utwórz widok vw_ProductSales
as
SELECT * from ProductSales
|
Ten widok zależy od wszystkich kolumn tabeli. Upuść kolumnę za pomocą polecenia Zmień tabelę.
1
2
|
ALTER TABLE. DROP COLUMN ProductPrice
GO
|
Nie otrzymujemy żadnego komunikatu o błędzie podczas wykonywania zapytania. Spróbujmy uzyskać dostęp do rekordów z widoku.
1
2
|
SELECT *
FROM vw_ProductSales;
|
Otrzymujemy komunikat o błędzie, ponieważ tabela nie zawiera kolumna. Ta kolumna była dostępna, gdy utworzyliśmy widok SQL.
-
Uwaga: powinniśmy sprawdzić zależności obiektów przed upuszczeniem kolumny. Pozwoli to wyeliminować problemy, które napotkamy później.
Podsumowanie
W tym artykule dowiedzieliśmy się o SQL Usuń kolumnę z istniejącej tabeli za pomocą różne metody. Powinniśmy być świadomi wszystkich tych metod. Przed usunięciem kolumn należy zachować ostrożność w środowisku produkcyjnym. Należy usunąć wszystkie zależności i odpowiednio to zaplanować.
- Autor
- Najnowsze posty
Jest twórcą jednej z największych bezpłatnych kolekcji artykułów online na jeden temat, w tym 50-częściowej serii na temat grup dostępności SQL Server Always On. Dzięki swojemu wkładowi w społeczność SQL Server, został wyróżniony różnymi nagrodami, w tym prestiżową nagrodą „Najlepszy autor roku” nieprzerwanie w 2020 i 2021 roku w SQLShack.
Raj jest zawsze zainteresowany nowymi wyzwaniami, więc jeśli potrzebujesz konsultacji pomoc na każdy temat poruszony w jego pismach, można się z nim skontaktować pod adresem [email protected]
Wyświetl wszystkie posty Rajendry Gupty
- Wykonywanie drobnych i głównych aktualizacji wersji AWS RDS SQL Server – 29 stycznia 2021
- Wdrażanie wystąpień AWS RDS PostgreSQL – 27 stycznia 2021
- Migracja lokalnych baz danych SQL do AWS RDS SQL Server przy użyciu AWS DMS – 25 stycznia , 2021