DROP TABLE (Transact-SQL)
Удаляет одно или больше определений таблиц и все данные, индексы, триггеры, ограничения и разрешения для этих таблиц. Любое представление или хранимая процедура, ссылающаяся на удаленную таблицу, должна быть явно удалена с помощью инструкции DROP VIEW или DROP PROCEDURE. Отчет о зависимостях в таблице можно получить из представления sys.dm_sql_referencing_entities.
Синтаксис
-- Syntax for SQL Server, Azure SQL Database, Warehouse in Microsoft Fabric DROP TABLE [ IF EXISTS ] < database_name.schema_name.table_name | schema_name.table_name | table_name >[ . n ] [ ; ]
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric DROP TABLE < database_name.schema_name.table_name | schema_name.table_name | table_name >[;]
Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.
Аргументы
database_name
Имя базы данных, в которой создана таблица.
База данных SQL Azure поддерживает формат трехкомпонентного имени имя_базы_данных.[имя_схемы].имя_объекта, если имя_базы_данных — это текущая база данных или tempdb, а имя_объекта начинается с символа #. База данных SQL Azure не поддерживает четырехкомпонентные имена.
IF EXISTS
Применимо к: SQL Server (с SQL Server 2016 (13.x); до текущей версии).
Условное удаление таблицы только в том случае, если она уже существует.
schema_name
Имя схемы, которой принадлежит таблица.
table_name
Имя таблицы, предназначенной для удаления.
Комментарии
Инструкцию DROP TABLE нельзя использовать для удаления таблицы, на которую ссылается ограничение FOREIGN KEY. Сначала следует удалить ссылающееся ограничение FOREIGN KEY или ссылающуюся таблицу. Если и ссылающаяся таблица, и таблица, содержащая первичный ключ, удаляются с помощью одной инструкции DROP TABLE, ссылающаяся таблица должна быть первой в списке.
Несколько таблиц можно удалить из любой базы данных. Если удаляемая таблица ссылается на первичный ключ другой таблицы, которая также удаляется, ссылающаяся таблица с внешним ключом должна стоять в списке перед таблицей, содержащей указанный первичный ключ.
При удалении таблицы относящиеся к ней правила и значения по умолчанию теряют привязку, а любые связанные с таблицей ограничения или триггеры автоматически удаляются. Если таблица будет создана заново, нужно будет заново привязать все правила и значения по умолчанию, заново создать триггеры и добавить необходимые ограничения.
При удалении всех строк в таблице с помощью инструкции DELETE tablename или TRUNCATE TABLE таблица продолжает существовать, пока она не будет удалена.
Большие таблицы и индексы, использующие более 128 экстентов, удаляются в два этапа: логически и физически. На логическом этапе существующие единицы распределения, используемые в таблице, отмечаются для освобождения и остаются заблокированными до фиксации транзакции. В физической фазе страницы IAM, помеченные для освобождения, физически удаляются пакетами.
При удалении таблицы, которая содержит столбец VARBINARY(MAX) с атрибутом FILESTREAM, не будут удалены никакие данные, которые хранятся в файловой системе.
При удалении таблицы реестра ее зависимые объекты (таблица журнала и представление реестра) также удаляются. Таблицу журнала или представление реестра нельзя удалить напрямую. При удалении таблиц реестра и их зависимых объектов система применяет семантику обратимого удаления — в действительности они не удаляются, а помечаются как удаленные в представлениях системного каталога и переименовываются. Дополнительные сведения см. в разделе Рекомендации и ограничения для реестра.
Инструкции DROP TABLE и CREATE TABLE нельзя выполнять для одной таблицы в одном пакете. В противном случае может произойти непредвиденная ошибка.
Разрешения
Необходимо разрешение ALTER на схему, к которой принадлежит эта таблица, разрешение CONTROL для этой таблицы или членство в предопределенной роли базы данных db_ddladmin .
Если инструкция предусматривает удаление таблицы реестра, требуется разрешение ALTER LEDGER .
Примеры
A. Удаление таблицы из текущей базы данных
Следующий пример удаляет таблицу ProductVendor1 , ее данные и индексы из текущей базы данных.
DROP TABLE ProductVendor1 ;
Б. Удаление таблицы из другой базы данных
Следующий пример удаляет таблицу SalesPerson2 из базы данных AdventureWorks2022 . Пример может быть выполнен из любой базы данных на экземпляре сервера.
DROP TABLE AdventureWorks2022.dbo.SalesPerson2 ;
В. Удаление временной таблицы
Следующий пример создает временную таблицу, проверяет ее наличие, удаляет ее и снова проверяет ее наличие. В этом примере не используется синтаксис IF EXISTS, доступный с версии SQL Server 2016 (13.x);.
CREATE TABLE #temptable (col1 INT); GO INSERT INTO #temptable VALUES (10); GO SELECT * FROM #temptable; GO IF OBJECT_ID(N'tempdb..#temptable', N'U') IS NOT NULL DROP TABLE #temptable; GO --Test the drop. SELECT * FROM #temptable;
Г. Удаление таблицы с помощью IF EXISTS
Применимо к: SQL Server (с SQL Server 2016 (13.x); до текущей версии).
В следующем примере создается таблица с именем T1. Затем вторая инструкция удаляет таблицу. Третья инструкция не выполняет никаких действий, так как таблица уже удалена, однако это не вызывает ошибку.
CREATE TABLE T1 (Col1 INT); GO DROP TABLE IF EXISTS T1; GO DROP TABLE IF EXISTS T1;
SQL-Урок 14. Создание таблиц (CREATE TABLE)
Язык SQL используется не только для обработки информации, но и предназначен для выполнения всех операций с базами данных и таблицами, включая создание таблиц и работу с ними.
Существует два способа создания таблиц, используя:
Следует отметить, что, когда вы используете интерактивный инструментарий СУБД, на самом деле вся работа выполняется операторами SQL, то есть интерфейс сам создает эти команды незаметно для пользователя (это подобно записи макроса в Excel, когда макрорекодер записывает ваши действия и превращает их в команды VBA).
1. Создание таблиц
Для создания таблиц программным способом используют оператор CREATETABLE. Для этого нужно указать следующие данные:
Давайте создадим новую таблицу и назовем ее Customers:
CREATE TABLE Customers ( ID CHAR(10) NOT NULL Primary key, Custom_name CHAR(25) NOT NULL, Custom_address CHAR(25) NULL, Custom_city CHAR(25) NULL, Custom_Country CHAR(25) NULL, ArcDate CHAR(25) NOT NULL, DEFAULT NOWO)
Да, мы сначала указываем название новой таблицы, затем в скобках перечисляем столбцы, которые будем создавать, причем их названия не могут повторяться в пределах одной таблицы. После названий столбцов указывается тип данных для каждого поля (CHAR(10)), затем указываем может поле содержать пустые значения (NULL или NOT NULL), а также нужно указать поле, которое будет первичным ключом (Primary keytbl.
Язык SQL также позволяет определять для каждого поля значение по умолчанию, то есть если пользователь не укажет значение для определенного поля — оно будет автоматически проставлено СУБД. Значение по умолчанию определяется ключевым словом DEFAULT при определении столбцов оператором CREATE TABLE.
2. Обновление таблиц
Для того чтобы изменить таблицу в SQL используется оператор ALTER TABLE. При использовании данного оператора следует ввести следующую информацию:
Например, давайте добавим новую колонку в таблицу Sellers, в которой будем указывать телефон реализатора:
ALTER TABLE Sellers ADD Phone CHAR (20)

Помимо добавления столбцов мы также можем их удалять. Давайте теперь удалим поле Phone. Для этого пропишем следующий запрос:
ALTER TABLE Sellers DROP COLUMN Phone

3. Удаление таблиц
Удаление таблиц осуществляется с помощью оператора DROP TABLE. Чтобы удалить таблицу Sellers_new, мы можем прописать следующий запрос:
DROP TABLE Sellers_new
Во многих СУБД применяются правила, предотвращающие удаление таблиц, которые уже связаны с другими таблицами. Если эти правила действуют и вы удаляете такую таблицу, то СУБД блокирует операцию удаления до тех пор пока не будет удалена связь. Такие меры предотвращают случайное удаление нужных таблиц.
- Изменение регистра букв в тексте
- Сумма прописью на украинском языке
- Поиск латиницы в кириллице и наоборот
- Транслитерация с украинского на английский
Создание, изменение и удаление таблиц FileTables
Описывает способы создания новых таблиц FileTable и изменения или удаления существующих таблиц FileTable.
Создание таблицы FileTable
Таблица FileTable является специализированной пользовательской таблицей с заранее заданной и фиксированной схемой. Эта схема содержит данные FILESTREAM, сведения о файлах и каталогах и атрибуты файлов. Сведения о данном образце схемы см. в разделе FileTable Schema.
Вы можете создать новую таблицы FileTable с помощью Transact-SQL или SQL Server Management Studio. Поскольку таблица FileTable имеет фиксированную схему, нет необходимости указывать список столбцов. Простой синтаксис для создания таблицы FileTable позволяет указать следующее:
- Имя каталога. В иерархии папок FileTable этот каталог уровня таблицы становится дочерним для каталога базы данных, указанного на уровне базы данных, и родительским для файлов или каталогов, хранящихся в таблице.
- Имя параметров сортировки, используемое для имен файлов в столбце Name таблицы FileTable.
- Можно также указать имена, предназначенные для использования в трех первичных ключах и ограничениях уникальности, создаваемых автоматически.
Практическое руководство. Создание таблицы FileTable
Создание таблицы FileTable с помощью Transact-SQL
Создайте таблицу FileTable, вызвав инструкцию CREATE TABLE (Transact-SQL) с параметром AS FileTable . Поскольку таблица FileTable имеет фиксированную схему, нет необходимости указывать список столбцов. Можно указать следующие параметры для новой FileTable:
- FILETABLE_DIRECTORY. Указывает каталог, выполняющий функции корневого каталога для всех файлов и каталогов, хранящихся в FileTable. Это имя должно быть уникальным среди всех имен каталогов FileTable в базе данных. Проверка уникальности выполняется без учета регистра, независимо от текущих параметров сортировки.
- Это значение имеет тип данных nvarchar(255) и использует фиксированные параметры сортировки Latin1_General_CI_AS_KS_WS.
- Указываемое имя каталога должно соответствовать требованиям файловой системы для допустимых имен каталогов.
- Это имя должно быть уникальным среди всех имен каталогов FileTable в базе данных. Проверка уникальности выполняется без учета регистра, независимо от текущих параметров сортировки.
- Если при создании таблицы FileTable не указано имя каталога, то в качестве имени каталога используется имя самой таблицы FileTable.
- FILETABLE_COLLATE_FILENAME. Указывает имя параметров сортировки, применяемых к столбцу Name в таблице FileTable.
- Указанные параметры сортировки должны быть нечувствительны к регистру , чтобы соответствовать семантике имен файлов Windows.
- Если для параметра FILETABLE_COLLATE_FILENAMEне указано значение или было задано значение database_default, столбец унаследует параметры сортировки текущей базы данных. Если в текущей базе данных используются параметры сортировки с учетом регистра, то операция CREATE TABLE завершится ошибкой.
- FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME
- FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME
- FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME
Примеры
В следующем примере рассмотрено создание новой таблицы FileTable с указанием значений, определяемых пользователем, для FILETABLE_DIRECTORY и FILETABLE_COLLATE_FILENAME.
CREATE TABLE DocumentStore AS FileTable WITH ( FileTable_Directory = 'DocumentTable', FileTable_Collate_Filename = database_default ); GOВ следующем примере также создается новый FileTable. Определяемые пользователем значения не заданы, поэтому значение FILETABLE_DIRECTORY становится именем таблицы FileTable, значение FILETABLE_COLLATE_FILENAME становится равным database_default, а первичный ключ и ограничения уникальности принимают значения, сформированные системой.
CREATE TABLE DocumentStore AS FileTable; GOСоздание таблицы FileTable в среде SQL Server Management Studio
В обозревателе объектов разверните объекты в выбранной базе данных, затем щелкните правой кнопкой мыши папку Таблицы и выберите Создать FileTable.Этот параметр открывает новое окно скрипта, в котором содержится шаблон скрипта Transact-SQL, который можно настроить и выполнить с целью создания таблицы FileTable. Для простой настройки скрипта используйте параметр Указать значения для параметров шаблона в меню Запрос .
Требования и ограничения для создания FileTable
- Существующую таблицу невозможно изменить, преобразовав ее в таблицу FileTable.
- Родительский каталог, предварительно указанный на уровне базы данных, должен иметь значение, отличное от NULL. Сведения об указании каталогов на уровне базы данных см. в разделе Включение необходимых компонентов для таблицы FileTable.
- Поскольку таблица FileTable содержит столбец FILESTREAM, требуется действующая файловая группа FILESTREAM. При необходимости можно указать действующую файловую группу FILESTREAM в команде CREATE TABLE для создания таблицы FileTable. Если файловая группа не указана, то таблица FileTable использует файловую группу FILESTREAM по умолчанию для базы данных. Если база данных не содержит файловую группу FILESTREAM, то возникнет ошибка.
- Невозможно создать ограничение таблицы в составе инструкции CREATE TABLE…AS FILETABLE. Однако можно добавить ограничение позже с помощью инструкции ALTER TABLE .
- Невозможно создать FileTable в базе данных tempdb или любой другой системной базе данных.
- Невозможно создать таблицу FileTable как временную таблицу.
изменение таблицы FileTable
Поскольку FileTable имеет предопределенную и фиксированную схему, добавлять и изменять столбцы в ней нельзя. Тем не менее в таблицу FileTable можно добавлять пользовательские индексы, триггеры, ограничения и другие параметры.
Сведения об использовании инструкции ALTER TABLE для включения или отключения пространства имен FileTable, включая системные ограничения, см. в разделе Управление объектами FileTable.
Практическое руководство. Изменение каталога для таблицы FileTable
Изменение каталога для таблицы FileTable с помощью Transact-SQL
Вызовите инструкцию ALTER TABLE и задайте новое допустимое значение параметра FILETABLE_DIRECTORY SET.Пример
ALTER TABLE filetable_name SET ( FILETABLE_DIRECTORY = N'directory_name' ); GOИзменение каталога для таблицы FileTable с помощью среды SQL Server Management Studio
Щелкните правой кнопкой мыши таблицу FileTable в обозревателе объектов и выберите пункт Свойства , чтобы открыть диалоговое окно Свойства таблицы . На странице FileTable введите новое значение для свойства Имя каталога FileTable.Требования и ограничения для изменения FileTable
- Изменить значение FILETABLE_COLLATE_FILENAMEневозможно.
- Нельзя изменить, удалить или отключить системные столбцы в таблице FileTable.
- Нельзя добавлять новые пользовательские столбцы, вычисляемые или материализованные вычисляемые столбцы в таблицу FileTable.
удаление таблицы FileTable
Таблицу FileTable можно удалить с помощью обычного синтаксиса инструкции DROP TABLE (Transact-SQL).
При удалении таблицы FileTable также удаляются следующие объекты:
- Все столбцы и объекты, связанные с таблицей, например индексы, ограничения и триггеры также удаляются.
- Каталог таблицы FileTable и вложенные каталоги удаляются из файла FILESTREAM и иерархии каталогов базы данных.
Команда DROP TABLE завершается ошибкой, если в пространстве имен файлов FileTable имеются открытые дескрипторы файлов. Сведения о закрытии открытых дескрипторов см. в разделе Управление объектами FileTable.
другие объекты базы данных, создаваемые при создании таблицы FileTable
При создании новой таблицы FileTable также создаются некоторые системные индексы и ограничения. Эти объекты нельзя изменять или удалять, они исчезают только после удаления самой таблицы FileTable. Чтобы просмотреть список этих объектов, выполните запрос к представлению каталога sys.filetable_system_defined_objects (Transact-SQL).
--View all objects for all filetables, unsorted SELECT * FROM sys.filetable_system_defined_objects; GO --View sorted list with friendly names SELECT OBJECT_NAME(parent_object_id) AS 'FileTable', OBJECT_NAME(object_id) AS 'System-defined Object' FROM sys.filetable_system_defined_objects ORDER BY FileTable, 'System-defined Object'; GOИндексы, которые создаются при создании новой таблицы FileTable
При создании новой таблицы FileTable также создаются следующие системные индексы.Ограничения, которые создаются при создании новой таблицы FileTable
При создании новой таблицы FileTable также создаются следующие системные ограничения.Допустимые имена файлов.
Допустимые атрибуты файлов.
Родительский объект должен быть каталогом.
Соглашение об именах для системных ограничений
Системные ограничения, описанные выше, именуются в параметре _>]_ , где: - <> constraint_type — это CK (ограничение проверки), DF (ограничение по умолчанию), FK (внешний ключ), PK (первичный ключ) или UQ (уникальное ограничение).
- — это система, созданная системой строка для создания уникального имени. Эта строка может содержать имя таблицы FileTable и уникальный идентификатор.
Как пересоздать таблицу в sql
Перед созданием таблицы необходимо выбрать базу данных, в которую таблица будет записана. Это делается с помощью оператора USE :
MySQLUSE имя_базы_данных;Для создания таблицы используется оператор CREATE TABLE . Его базовый синтаксис имеет следующий вид:
MySQLCREATE TABLE [IF NOT EXIST] имя_таблицы ( столбец_1 тип_данных, [столбец_2 тип_данных,] ... [столбец_n тип_данных,] );Например, создадим таблицу пользователей.
MySQLCREATE TABLE Users ( id INT, name VARCHAR(255), age INT );INT , VARCHAR(255) - типы данных: числовой и строковый соответственно. Более подробно о них можно будет узнать в следующих статьях.
Вышеприведённое определение столбцов в таблице является упрощённым. Помимо названия столбца и его типа в определение иногда необходимо добавлять следующие необязательные параметры:
- PRIMARY KEY Указывает колонку или множество колонок как первичный ключ.
- AUTO_INCREMENT Указывает, что значение данной колонки будет автоматически увеличиваться при добавление новых записей в таблицу. Каждая таблица имеет максимум одну AUTO_INCREMENT колонку. Стоит отметить, что данный параметр можно применять только к целочисленным типам и к типам с плавающей запятой.
- UNIQUE Указывает, что значения в данной колонке для всех записей должны быть отличными друг от друга.
- NOT NULL Указывает, что значения в данной колонке должны быть отличными от NULL .
- DEFAULT Указывает значение по умолчанию. Данный параметр не применяется к типам BLOB , TEXT , GEOMETRY и JSON .
Для нашей таблицы пользователей можно указать следующие параметры:
MySQLCREATE TABLE Users ( id INT PRIMARY KEY, name VARCHAR(255) NOT NULL, age INT NOT NULL DEFAULT 18 );Так, в данном примере:
- id - поле числового типа, являющееся первичным ключом;
- name - поле строкового типа с максимальной длиной в 255 символов, являющееся обязательным к заполнению;
- age - поле числового типа со значением по умолчанию равным 18.
Для того, чтобы посмотреть описание созданной таблицы можно воспользоваться оператором DESCRIBE .
MySQLDESCRIBE Users;Field Type Null Key Default Extra id int(11) NO PRI name varchar(255) NO age int(11) NO 18 Помимо описания столбцов, при создании таблицы можно дополнительно указать следующие параметры:
-
Первичный ключ. Если вы не определили первичный ключ с помощью параметров столбца, то это можно сделать с помощью дополнительных параметров таблицы, добавив запись PRIMARY KEY (, ) после перечисления столбцов:
MySQLCREATE TABLE Users ( id INT, name VARCHAR(255) NOT NULL, age INT NOT NULL DEFAULT 18, PRIMARY KEY (id) );MySQLCREATE TABLE Companies ( id INT, name VARCHAR(255) NOT NULL, PRIMARY KEY (id) );Дальше нужно добавить в таблицу Users поле company – место работы нашего пользователя, которое будет ссылаться на запись в таблице Companies . Полный запрос для создания таблицы будет выглядеть так:
MySQLCREATE TABLE Users ( id INT, name VARCHAR(255) NOT NULL, age INT NOT NULL DEFAULT 18, company INT, PRIMARY KEY (id) );Для того, чтобы при добавлении новых записей в таблицу Users гарантировать, что в колонке company находится идентификатор, существующий в таблице Companies , используется внешний ключ. Он имеет следующий синтаксис:
MySQLFOREIGN KEY (столбец_1>, столбец_n>) REFERENCES внешняя_таблица> (столбец_во_внешней_таблице_1>, столбец_во_внешней_таблице_n>) [ON DELETE действие] [ON UPDATE действие]Полный запрос для создания таблицы с внешним ключом будет таким:
MySQLCREATE TABLE Users ( id INT, name VARCHAR(255) NOT NULL, age INT NOT NULL DEFAULT 18, company INT, PRIMARY KEY (id), FOREIGN KEY (company) REFERENCES Companies (id) );При наличии внешних ключей можно определить поведение текущей записи, при изменении или удалении записи, на которую она ссылается.
MySQLCREATE TABLE Users ( id INT, name VARCHAR(255) NOT NULL, age INT NOT NULL DEFAULT 18, company INT, PRIMARY KEY (id), FOREIGN KEY (company) REFERENCES Companies (id) ON DELETE RESTRICT ON UPDATE CASCADE );ON DELETE RESTRICT означает, что если попробовать удалить компанию, у которой в таблице Users есть данные, база данных не даст этого сделать:
MySQLCannot delete or update a parent row: a foreign key constraint failsУдаление таблицы производится при помощи оператора DROP TABLE .
Предыдущая запись
