Что такое код drop table


Содержание

Инструкция DROP IF EXISTS в языке T-SQL

В этой заметке я расскажу Вам про инструкцию DROP языка T-SQL, а именно о новом параметре этой инструкции — IF EXISTS, который появился только в 2020 версии Microsoft SQL Server.

Инструкция DROP в T-SQL

DROP – это инструкция языка T-SQL, с помощью которой удаляются объекты в Microsoft SQL Server. Если Вас интересует язык T-SQL, то рекомендую почитать мою книгу «Путь программиста T-SQL», я ее разработал специально для начинающих, в ней я подробно рассказываю про все основные конструкции и операторы языка T-SQL.

DROP IF EXISTS

У инструкции DROP в Microsoft SQL Server 2020 появился дополнительный параметр IF EXISTS, который позволяет предварительно проверить существование объекта, перед его непосредственным удалением.

DROP с этим параметром значительно упрощает написание кода, так как в случае если Вам необходимо пересоздать таблицу, или просто удалить таблицу, предварительно не нужно писать различные дополнительные условные конструкции IF, чтобы проверить, существует ли эта таблица или нет. Инструкция DROP IF EXISTS сделает эту проверку сама.

Кстати, в других популярных СУБД, например, даже в бесплатной PostgresSQL, уже давно существует такая возможность, но компания Microsoft в свою СУБД добавила ее совсем недавно.

Инструкцию DROP IF EXISTS поддерживают следующие виды объектов Microsoft SQL Server (т.е. при их удалении можно использовать параметр IF EXISTS):

  • TABLE – таблица;
  • VIEW – представление;
  • PROCEDURE – хранимая процедура;
  • FUNCTION – функция;
  • SEQUENCE – последовательность;
  • TRIGGER – триггер;
  • INDEX – индекс;
  • DATABASE – база данных;
  • SCHEMA – схема;
  • ROLE — роль базы данных;
  • RULE – правила;
  • TYPE – псевдоним типа данных или определяемый пользователем тип данных;
  • AGGREGATE – определяемые пользователем агрегатные функции;
  • ASSEMBLY – сборка CLR;
  • USER – пользователь базы данных;
  • DEFAULT — объект «Значение по умолчанию»;
  • SECURITY POLICY — политика безопасности;
  • SYNONYM – синоним.

Пример DROP IF EXISTS – удаление таблицы или представления

Раньше, если перед удалением таблицы (или представления) необходимо было проверить, существует ли эта таблица, мы перед инструкцией по удалению таблицы (DROP) писали условную конструкцию IF в сочетании с функцией OBJECT_ID, код выглядел примерно следующим образом

Теперь условную конструкцию можно опустить, добавив вместо нее параметр IF EXISTS.

Пример DROP IF EXISTS – удаление функции

Для того чтобы проверить существует ли функция перед удалением, можно перед инструкцией удаления писать следующую условную конструкцию (часто можно встретить именно такой подход).

Система управления базами данных SQLite. Изучаем язык запросов SQL и реляционные базы данных на примере библиотекой SQLite3. Курс для начинающих.

Часть 6.3: Команда DROP в SQLite3. DDL оператор DROP в SQLite

Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. Мы с тобой уже познакомились с операторами DDL в SQLite3 и рассмотрели особенности двух DDL команд: оператор CREATE в SQLite3 и команда ALTER в SQLite3. Давай теперь рассмотрим последнюю команду из группы DDL: команда DROP. Команда DROP или оператор DROP в SQLite3 позволяет удалять сущности, хочу обратить твое внимание на слово сущности, так как команда DROP в SQLite удаляет не только таблицы, но и триггеры, VIEW, индексы. Давай разбираться с оператором DROP.

Команда DROP в SQLite3. DDL оператор DROP в SQLite

Общая информация о команде DROP в SQLite3

Команда DROP в SQLite3 позволяет нам удалять объекты базы данных. При помощи команды DROP в SQLite3 мы можем удалить: таблицу, индекс, триггер, представление. Как и в случае с командой ALTER, команду DROP мы рассмотрим только в этой части и больше не будем уделять ей какого-то особого внимания.

Команда DROP TABLE в SQLite3. Оператор DROP TABLE в SQLite3.

Команда DROP TABLE в SQLite3 позволяет удалять таблицы из нашей базы данных. Синтаксис оператора DROP TABLE в SQLite3 прост до безобразия.

Синтаксис команды DROP TABLE в SQLite3. Синтаксис оператора DROP TABLE в SQLite3

Приведем пример удаления таблицы (команды DROP TABLEв SQLite3).

Думаю, вы уже догадались, что конструкция IF EXIST заставляет сперва проверить SQLite3, а существует ли данная таблица вообще, прежде чем попытаться применить команду DROP TABLE. Мы также можем явно указать базу данных, из которой хотим удалить таблицу, для этого ставим точку перед именем таблицы и указываем имя базы данных.

Команда DROP INDEX в SQLite3. Оператор DROP INDEX в SQLite

Команда DROP INDEX в SQLite3 позволяет удалять индексы из базы данных. Синтаксис оператора DROP INDEX в SQLite3 очень простой.

Синтаксис команды DROPINDEX в SQLite3. Синтаксис оператора DROP INDEX в SQLite3

Приведем пример удаления индекса из базы данных (команда DROP INDEX) в SQLite3

Мы еще не изучали индексы, поэтому кому-то может показать странным необязательное указание базы данных при удалении индекса. Все дело в том, что имена индексов должны быть уникальны в рамках одной базы данных, как и имена таблиц, триггеров, представлений (это утверждение справедливо для любой СУБД). Конструкция IF EXISTS также необязательна.

Команда DROP TRIGGER в SQLite3. Оператор DROP TRIGGER в SQLite3

Посмотрим, как можно удалить триггер в SQLite3, команда DROP TRIGGER в SQLite3 позволяет нам его удалить. Синтаксис оператора DROP TRIGGER очень прост.


Команда DROP TRIGGER в SQLite. Оператор DROP TRIGGER в SQLite

Удаление триггера начинается с ключевого слова DROP TRIGGER, далее идет необязательная проверка на существование триггера в базе данных IF EXISTS, затем можно указать имя базы данных (можно и не указывать) и через точку указать имя триггера, который необходимо удалить из базы данных, предложение завершается точкой с запятой.

Команда DROP VIEW в SQLite3. Оператор DROP VIEW в SQLite3

Удалить представление в SQLite3 очень просто, для этого в SQLite есть команда DROP VIEW. Синтаксис оператора DROP VIEW в SQLite3 представлен ниже.

Команда DROP VIEW в SQLite3. Оператор DROP VIEW в SQLite

Удаление представления начинается с ключевого слова DROP VIEW, далее идет необязательная проверка на существование представления в базе данных IFEXISTS, затем можно указать имя базы данных (можно и не указывать) и через точку указать имя представления, которое необходимо удалить из базы данных, предложение завершается точкой с запятой.

Илон Маск рекомендует:  Приём аргументов

Мы полностью рассмотрели синтаксис и особенности оператора DROP в SQLite, а так же мы закончили рассмотрение SQL команд группы DDL.

Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

Базы данных

DROP TABLE ОПЕРАТОР

Это учебное Oracle/PLSQL пособие объясняет, как использовать оператор Oracle/PLSQL DROP TABLE с синтаксисом и примерами.

Описание

Oracle/PLSQL DROP TABLE позволяет очистить или удалить таблицу из базы данных Oracle.

Синтаксис

Синтаксис оператора DROP TABLE в Oracle:

Параметры или аргументы

schema_name
наименование схемы, которой принадлежит таблица.
table_name
наименование таблицы, которая будет удалена из базы данных Oracle.
CASCADE CONSTRAINTS
Необязательный. Если этот параметр задан, все ограничения ссылочной целостности будут также удалены.
PURGE
Необязательный. Если указано, таблица и ее зависимые объекты будут удалены из корзины, и вы не сможете восстановить таблицу. Если PURGE не указан, таблица и ее зависимые объекты помещаются в мусорную корзину и могут быть восстановлены позже, если это необходимо.

Примечание

Если есть ограничения ссылочной целостности на table_name и вы не указали параметр CASCADE CONSTRAINTS , оператор DROP TABLE возвращает ошибку, и Oracle не будет удалять таблицу.

Пример

Рассмотрим пример, который показывает, как удалить таблицу в Oracle с помощью оператора DROP TABLE.

SQL DROP TABLE Инструкция

Инструкция DROP таблицы SQL

Инструкция DROP TABLE используется для удаления существующей таблицы в базе данных.

Синтаксис

Примечание : Будьте внимательны перед тем, как бросить стол. Удаление таблицы приведет к потере полной информации, хранящейся в таблице!

Пример таблицы перетаскивания SQL

Следующая инструкция SQL удаляет существующую таблицу «Shippers»:

Пример

Таблица усечения SQL

Инструкция усечения таблицы используется для удаления данных внутри таблицы, но не для самой таблицы.

Что быстрее DROP TABLE или TRUNCATE TABLE

Допустим, при извлечении процедуры создается временная таблица #, заполняется какими-то данными.

Если процедура запускается вновь, то происходит DROP этой переменной таблицы и она снова создается и наполняется данными.


Структура таблицы не меняется.

Будет ли профит если из временной таблицы создать нормальную таблицу и вместо DROP делать TRUNCATE?

2 ответа 2

По идее truncate должен быть несколько быстрее, чем drop (и тем более, чем пара drop + create ), т.к. truncate лишь изменяет сведения о пространстве, выделенном для хранения данных таблицы, переводя его из состояния занятого в свободное. Тогда как drop делает то же самое, но вдобавок ещё и удаляет сведения об объекте (записи в системных таблицах о том, что существует такая-то таблица с таким-то набором столбцов).

Однако, как справедливо отметили в комментариях, на практике затраты что на одно, что на другое могут быть пренебрежимо малы по сравнению с другими операциями в процедуре.

Вдобавок, я бы поостерегся того, чтобы

из временной таблицы создать нормальную таблицу

даже если есть уверенность, что не будет конфликтов из-за параллельного доступа, т.к. временные таблицы «живут» в системной базе данных tempdb, а в ней применяются дополнительные меры для повышения производительности (ссылка, см. раздел Увеличение производительности базы данных tempdb).

Синтаксис оператора DROP TABLE

Оператор DROP TABLE удаляет одну или несколько таблиц. Все табличные данные и определения удаляются, так что будьте внимательны при работе с этой командой!

В версии MySQL 3.22 и более поздних можно использовать ключевые слова IF EXISTS , чтобы предупредить ошибку, если указанные таблицы не существуют.

В 4.1 будет получено замечание ( NOTE ) для всех несуществующих таблиц при использовании IF EXISTS . SHOW WARNINGS | ERRORS.

Опции RESTRICT и CASCADE позволяют упростить перенос программы. В данный момент они не задействованы.

Примечание: DROP TABLE автоматически принимает текущую активную транзакцию (за исключением случаев, когда вы используетее 4.1 и указано ключевое слово TEMPORARY ).

Опция TEMPORARY игнорируется в 4.0. В 4.1 эта опция работает следующим образом:

Только уничтожает временные таблицы.

Не закрывает открытую транзакцию.

Права доступа не проверяются.

Использование слова TEMPORARY — это хороший способ удостовериться что вы случайно не уничтожите настоящую таблицу.

Ограничения (сonstraints) PostgreSQL: exclude, частичный unique, отложенные ограничения и др

Целостность данных легко нарушить. Бывает так, что в поле price попадает значение 0 из-за ошибки в коде приложения (периодически всплывают новости, как в том или ином инет-магазине продавали товары по 0 долларов). Или бывает, что удалили юзера из таблицы, но какие-то данные о нем остались в других таблицах, и эти данные вылезли в каком-то интерфейсе.

PostgreSQL, как и любая другая СУБД, умеет делать некоторые проверки при вставке/изменении данных, и этим обязательно нужно уметь пользоваться. Давайте посмотрим, что мы можем проверять:

1. Кастомный подтип через ключевое слово DOMAIN

В PostgreSQL вы можете создать свой тип, основанный на каком-нибудь int или text с дополнительной проверкой каких-то вещей:

Мы создаем тип us_postal_code, в котором регулярками проверяем различные варианты его написания. Теперь никто не сможет туда по ошибке написать “улица Бармалеева”, там будет только индекс:

Кроме того, это улучшает читабельность кода, так как тип сам поясняет, что в нем лежит, в отличие от безликих integer или text.

2. Check (особенно актуально для проверки jsonb и hstore)

Выше мы использовали us_postal_code использовали оператор CHECK. Точно такой же можно написать и в конструкции CREATE TABLE.

Или в таблице с товарами можно поставить check (price > 0), тогда вы не будете продавать ноуты по 0 рублей. Или можно написать хранимку и использовать check(superCheckFunction(price)), а в этой хранимке кучу логики проверять.

Кстати, тип varchar(100) — это тоже самое, что и тип text с дополнительным check по длине.
Надо понимать, что check происходит при каждом insert или update, поэтому, если в вашу таблицу идет 100500 записей в секунду, то check возможно делать не стоит.

Бывает важно обвешать чеками универсальные типы данных, такие как jsonb или hstore, потому что туда можно напихать что угодно. Можно проверять существование каких-то ключей в json или что их значение соответствует тому, что там должно быть.

3. Проверка на уникальность, как простая, так и частичная.

Простая проверка, что email у разных пользователей должен быть разный:

Однако иногда нужно проверять уникальность не по всей таблице, а только, например, у пользователей с определенным статусом.


Вместо простого UNIQUE вы можете добавить такой уникальный индекс:

Тогда уникальность email будет проверяться только у неудаленных юзеров. В where можно вставлять любые условия.

Надо еще отметить, что можно делать уникальные индексы по двум и более полям сразу, т.е. проверять уникальную комбинацию.

4. EXCLUDE

С помощью оператора EXCLUDE можно сделать еще один вид уникальности. Дело в том, что в посгресе множество типов данных, как встроенных, так и добавляемых через расширения. Например, есть тип данных ip4r, с его помощью можно хранить диапазон ip-адресов в одном поле.

И, допустим, надо в таблице хранить непересекающиеся диапазоны. Вообще, проверить, пересекаются ли два диапазона можно с помощью оператора &&, например SELECT ‘127.0.0.0/24’ && ‘127.0.0.1/32’ вернет true.

В итоге делаем просто:

И тогда при вставке/апдейте postgres будет смотреть каждую строку, не пересекается ли она со вставляемой (т.е. не возвращает ли использование оператора && истину). Благодаря gist индексу эта проверка очень быстрая.

5. NOT NULL

Тут всё понятно, колонка не может принимать значение NULL. Зачастую (но необязательно) идет в связке с DEFAULT.

При добавлении новой колонки с not null в существующую таблицу надо быть осторожным. Дело в том, что обычную колонку, где допустимо null, PostgreSQL добавляет мгновенно, даже если таблица очень большая, к примеру, десятки миллионов строк. Потому что ему не надо физически менять данные, лежащие на диске, null в postgres не занимают места. Однако если вы добавите колонку name text not null default ‘Вася’, то посгрес по факту полезет делать update каждой строки, и это может занять много времени, что может быть недопустимо в некоторых ситуациях.

Поэтому часто в огромные таблицы такие колонки добавляются в два этапа, т.е. сначала пачками заполняют данные новой колонки, и только потом ставят ей not null.

6. Primary key, т.е. первичный ключ

Раз это первичный ключ, то оно должен быть уникальным и не может быть пустым. В общем, в PostgreSQL PRIMARY KEY работает как комбинация UNIQUE и NOT NULL.

Илон Маск рекомендует:  Что такое браузер. Какие есть браузеры и как его выбрать.

В других базах данных PRIMARY KEY делает еще и другие вещи, к примеру, если не ошибаюсь, в MySQL (Innodb), данные еще и автоматически кластеризуются вокруг PK для ускорения доступа по этому полю. (В посгресе, кстати, тоже так можно сделать, но вручную, командой CLUSTER. Но обычно в этом нет необходимости)

7. FOREIGN KEY

Например, у вас есть таблица

и таблица со статусами

Вы можете указать базе, что колонка status_id соответствует Id из таблице status_dictionary. Например, так:

Теперь вы сможете в status_id записать только null или Id из таблицы status_dictionaries, и больше ничего.

Также можно это делать по двум полям:

При вставке опять же есть некоторый оверхед, потому что при каждой вставке СУБД вынуждена лочить довольно много вещей. Поэтому при (очень) интенсивной вставке возможно не стоит злоупотреблять использовнием Foreign key

8. DEFERRABLE

Если для производительности надо отложить проверку констрейнтов, констрейнты можно пометить ключевым словом DEFERRABLE.

Они бывают разных видов, например если вы сделаете UNIQUE(email) DEFERRABLE INITIALLY DEFERRED, то внутри транзакции можно написать

И тогда все проверки будут Отложены и по факту произойдут только перед словом commit
Это сработает для UNIQUE, PRIMARY KEY и REFERENCES, но не сработает для NOT NULL и CHECK.

DROP TABLE

Используйте оператор DROP TABLE для удаления таблицы и ее данных из базы данных.

Это полное удаление, оно не может быть отменено после подтверждения транзакции.

Следующий оператор удаляет таблицу PERSONNEL:

DROP TABLE PERSONNEL;

Похожие главы из других книг

6.5.3. Действие DROP

6.5.3. Действие DROP Данное действие просто «сбрасывает» пакет и iptables «забывает» о его существовании. «Сброшенные» пакеты прекращают свое движение полностью, т.е. они не передаются в другие таблицы, как это происходит в случае с действием ACCEPT. Следует помнить, что данное


Table

Drop Shadow (Отбрасывать тень)

Drop Shadow (Отбрасывать тень) Drop Shadow (Отбрасывать тень) – эффект, позволяющий имитировать тень, отбрасываемую элементом, находящимся на текущем слое. Выберите данный эффект в списке эффектов, после чего появляется окно настройки тени (рис. 8.2), где мы можем задать такие

5.2.3. Синтаксис DROP PROCEDURE и DROP FUNCTION

5.2.3. Синтаксис DROP PROCEDURE и DROP FUNCTION DROP [IF EXISTS] sp_nameЭта инструкция используется, чтобы удалить сохраненную процедуру или функцию. То есть определенная подпрограмма будет удалена с сервера. Начиная с MySQL 5.0.3, Вы должны иметь привилегию ALTER ROUTINE для подпрограммы. Такая

6.2. Синтаксис DROP TRIGGER

6.2. Синтаксис DROP TRIGGER DROP TRIGGER [ schema_name .] trigger_nameЭто уничтожает триггер. Имя базы данных опционально. Если оно не задано, триггер удаляется из заданной по умолчанию базы данных, Вызов DROP TRIGGER был добавлен в MySQL 5.0.2. Использование требует привилегии SUPER.Обратите внимание: До MySQL

7.3. Синтаксис DROP VIEW

7.3. Синтаксис DROP VIEW DROP VIEW [IF EXISTS]view_name [, view_name] …[RESTRICT | CASCADE]DROP VIEW удаляет один или большее количество view. Вы должны иметь привилегию DROP для каждого view. Если любой из view, именованных в списке параметров не существует, MySQL возвращает индикацию ошибки с именем, которые не

8.2.3. Синтаксис DROP EVENT

Создание таблиц:

Создание таблиц: Как можно догадаться из названия, элемент применяется для создания новой таблицы. Сама таблица состоит из необязательного заголовка, необязательного подстрочного примечания и одного или более тел таблицы (table body). Таблица из ячеек,

Создание тел таблицы:

Создание тел таблицы: Тело таблицы (table body) содержит фактическое содержимое таблицы; тела создаются при помощи элемента . Этот элемент содержит элементы , которые, в свою очередь содержат элементы , содержащие данные таблицы.С

Создание строк таблицы:

Создание строк таблицы: Аналогично таблицам HTML, для создания строк таблицы применяется элемент , и каждая строка может содержать ячейки таблицы. Как и браузеры HTML, процессор XSL-FO определяет размеры таблицы по количеству строк.С элементом

Отображение тени («Drop Shadow»)

Отображение тени («Drop Shadow») С помощью этого эффекта мы можем добавить к выделенному фрагменту тень. Правда, она будет статичной, не анимированной.Чтобы применить этот эффект к выделенному фрагменту изображения, нужно выбрать пункт Drop Shadow подменю Effects подменю Timeline Effects меню

Оператор CREATE TABLE

RECREATE TABLE

RECREATE TABLE Иногда бывает нужно удалить таблицу и снова создать ее «с нуля». Для таких случаев Firebird имеет оператор RECREATE TABLE, который делает следующее:* удаляет существующую таблицу и все принадлежащие ей объекты;* подтверждает изменения;* создает новую таблицу в соответствии с

Команда CREATE TABLE

Команда CREATE TABLE CREATE TABLE

( < | ] [ . ]>. ); [ ] . );Элементы, используемые в команде CREATE TABLE ЭЛЕМЕНТ ОПРЕДЕЛЕНИЕ
Имя таблицы создаваемой этой командой. Имя столбца таблицы. Тип

Глава 9. Технология «drag-and-drop»

Глава 9. Технология «drag-and-drop» Технология «drag-and-drop» («перетащить и отпустить») является современным и интуитивным способом передачи информации внутри одного приложения или между разными приложениями. Она часто является дополнением к операциям с буфером обмена по

Обеспечение поддержки технологии «drag-and-drop»

Обеспечение поддержки технологии «drag-and-drop» Технология «drag-and-drop» состоит из двух действий: перетаскивание «захваченных» объектов и их «освобождение». Виджеты в Qt могут использоваться в качестве переносимых объектов, в качестве места отпускания этих объектов или в обоих

Изменение кода DROP TABLE на APPEND/INSERT

Этот код в настоящее время использует DROP TABLE для передачи данных из Access на SQL Server, то есть когда он предназначен для использования одним человеком. Теперь он будет использоваться несколькими людьми, поэтому мне нужно изменить код на APPEND. Я пытаюсь выяснить, как заставить его проверять таблицу назначения, чтобы увидеть, существует ли запись, если она ее пропустит, если она не будет записывать данные сотрудников в таблицу. Таблица SQL предварительно создана и имеет столбец ROW ID и столбцы TIME STAMP, которые нет в таблице доступа, чтобы отслеживать вводимые записи.

Код в настоящее время выглядит так:

Просто установите простую стандартную связанную таблицу на SQL-сервер в Access.

Поскольку столбец существующей записи является первичным ключом (или просто индексом set = unique), тогда вам нужно только ОДИН ЛИНИЯ кода для добавления ваших данных.

Это будет работать:

Любая строка, которая уже существует, будет проигнорирована из-за нарушения ключа (или индекса). Таким образом, только новые несуществующие записи будут добавлены к вышеуказанной одной строке кода.


Изменить. Что касается таблицы назначения, которая является связанной с SQL таблицей? Ваше приложение при запуске не заботится, есть ли у вас несколько связанных таблиц. Ваше приложение не использует и не заботится о таких связанных таблицах, если вы их не используете.

Предполагая, что у вас есть таблица локальных данных. Связанная таблица ТОЛЬКО вступает в игру, когда вы собираетесь делать экспорт. Как уже отмечалось, вы не можете экспортировать, если вы не подключены к SQL-серверу. «Код» или тестирование, если вы подключены, не рассматриваются в этом вопросе, но даже если это было частью вопроса в обоих случаях, вам все равно придется проверять соединение, и еще раз, когда вы, наконец, определите, что у вас есть соединение и вы решите экспортировать, то снова будет работать связанная таблица в соответствии с вышеизложенным.

Поэтому нет причин, по которым я могу думать о том, почему связанная таблица, которая ТОЛЬКО используется во время добавления в таблицу SQL, будет проблемой или проблемой.

Как уже было сказано, здесь должна быть достаточно одной строки кода VBA.

Вопрос 10 . Язык запросов SQL . Операторы языка определения данных DDL: CREATE TABLE; DROP TABLE; ALTER TABLE; CREATE INDEX; DROP INDEX. Привести примеры.

Добавил: DMT
Дата создания: 30 декабря 2007, 18:09
Дата обновления: 30 декабря 2007, 20:43
Просмотров: 38957 последний сегодня, 13:10
Комментариев:

Вопрос 10 . Язык запросов SQL . Операторы языка определения данных DDL: CREATE TABLE; DROP TABLE; ALTER TABLE; CREATE INDEX; DROP INDEX. Привести примеры.

Операторы языка SQL можно условно разделить на два подъязыка : язык определения данных ( Data Definition Language – DDL ) и язык манипулирования данными ( Data Manipulation Language – DML ).

Операторы языка DDL

изменение структуры таблицы

Инструкция CREATE TABLE .

Назначение: создание новой таблицы.

CREATE [ TEMPORARY ] TABLE таблица ( поле _1 тип [( размер )] [ NOT NULL ]

[индекс_1] [, поле_2 тип [(размер)] [ NOT NULL ] [индекс_2] [, . ]]

Аргументы инструкции CREATE TABLE :

таблица — имя создаваемой таблицы;

поле_1, поле_2 — имена одного или нескольких полей, создаваемых в новой таблице. Таблица должна содержать хотя бы одно поле;

тип — тип данных поля в новой таблице;

размер — размер поля в знаках (только для текстовых и двоичных полей);

индекс_1, индекс_2 — предложение CONSTRAINT , предназначенное для создания простого индекса;

составной_индекс — предложение CONSTRAINT , предназначенное для создания составного индекса.

• Если для поля добавлено ограничение NOT NULL , то при добавлении новых записей это поле должно содержать допустимые данные.

• Предложение CONSTRAINT устанавливает различные ограничения на поле и может быть использовано для определения ключа. Кроме того, для создания ключа или дополнительного индекса для существующей таблицы можно использовать инструкцию CREATE INDEX.

• Создаваемая временная ( TEMPORARY ) таблица будет доступна только в том сеансе, котором эта таблица была создана. По завершении данного сеанса она автоматически удаляется.

TABLE Разделы ( Код _ раздела INTEGER NOT NULL, Название TEXT(30) NOT NULL);

создаст таблицу с двумя полями: целочисленным и текстовым.

Назначение: создание или удаление индексов в инструкциях CREATE TABLE и ALTER TABLE .

Существуют два типа предложений CONSTRAINT : одно для создания простого индекса (по одному полю), а второе для создания составного индекса (по нескольким полям).

Синтаксис предложения CONSTRAINT для создания простого индекса:

REFERENCES внешняя_таблица [(внешнее_поле_1, внешнее_поле_2)]

[ ON UPDATE CASCADE | SET NULL ]

[ ON DELETE CASCADE | SET NULL ]>

Синтаксис предложения CONSTRAINT для создания составного индекса:

UNIQUE (уникальное_1[, уникальное_2 [, . ]]) |


NOT NULL (непустое_1[, непустое_2 [, . ]]) |

FOREIGN KEY [ NO INDEX ] ( ссылка _1[, ссылка _2 [, . ]])

REFERENCES внешняя_таблица [(внешнее_поле_1 [, внешнее_поле_2 [, . ]])]

[ ON UPDATE CASCADE | SET NULL ]

[ ON DELETE CASCADE | SET NULL ]>

Аргументы предложения CONSTRAINT :

имя — имя создаваемого индекса;

ключевое_1, ключевое_2 — имена одного или нескольких полей, которые следует обозначить как ключевые;

уникальное_1, уникальное_2 — имена одного или нескольких полей, которые следует включить в уникальный индекс;

непустое_1, непустое_2 — имена одного или нескольких полей, в которых запрещаются значения Null ;

ссылка_1, ссылка_2 — имена одного или нескольких полей, включенных во внешний ключ, которые содержат ссылки на поля в другой таблице;

внешняя_таблица — имя внешней таблицы, которая содержит поля, указанные с помощью аргумента внешнее_поле;

внешнее_поле_1, внешнее_поле_2 — имена одного или нескольких полей внешней таблицы, указанные с помощью ссылки_1 и ссылки_2. Если адресуемое поле является ключом внешней таблицы, данное предложение можно опустить.

Предложение CONSTRAINT позволяет создавать для поля индекс одного из описанных ниже типов:

• Для создания уникального индекса используется зарезервированное слово UNIQUE . Это означает, что в таблице не может быть двух записей, имеющих одно и то же значение в этом поле. Уникальный индекс создается для любого поля или любой группы полей. Если в таблице определен составной уникальный индекс, то комбинация значений включенных в него полей должна быть уникальной для каждой записи таблицы, хотя отдельные поля и могут иметь совпадающие значения.

• Для создания ключа таблицы, состоящего из одного или нескольких полей, используется зарезервированные слова PRIMARY KEY . Все значения ключа таблицы должны быть уникальными и отличаться от значения Null . Кроме того, в таблице может быть только один ключ.

Примечание. Зарезервированные слова PRIMARY KEY нельзя использовать при создании индекса в таблице, в которой уже определен ключ; в противном случае возникнет ошибка.

• Для создания внешнего ключа используются зарезервированные слова FOREIGN KEY . Если ключ внешней таблицы состоит из нескольких полей, необходимо использовать предложение CONSTRAINT , предназначенное для создания составного индекса. При этом следует перечислить все поля, содержащие ссылки на поля во внешней таблице, а также указать имя внешней таблицы и имена полей внешней таблицы, на которые ссылаются поля, перечисленные выше, причем в том же порядке. Если адресуемые поля являются ключами внешней таблицы, указывать эти поля не следует. Ограничения для внешних ключей определяют конкретные действия, выполняемые в случае изменения значения соответствующего ключа:

CREATE TABLE Книги (Код_книги TEXT (7) NOT NULL CONSTRAINT ключ2 PRIMARY KEY , Раздел TEXT (5) NOT NULL , Автор TEXT (40) NOT NULL , Название TEXT (50) NOT NULL );

создаст таблицу с четырьмя текстовыми полями, определив первое из них как ключевое.

CREATE TABLE Выдача_возврат (Код_книги TEXT (7) NOT NULL , Код_читателя TEXT (5) NOT NULL , Дата_выдачи DATETIME NOT NULL , Дата_возврата DATETIME , CONSTRAINT Ключ4 PRIMARY KEY (Код_книги, Дата_выдачи));

создаст таблицу с четырьмя полями и ключевым полем, включающим два из них.

Инструкция ALTER TABLE .

Назначение: изменение структуры таблицы, созданной с помощью инструкции CREATE TABLE .

[ CONSTRAINT индекс ] | ALTER COLUMN тип поля [( размер )] |

CONSTRAINT составной _ индекс > |

Аргументы инструкции ALTER TABLE :

таблица — имя изменяемой таблицы;

поле — имя поля, добавляемого в таблицу или заменяемого в таблице или удаляемого из нее;

тип — тип данных поля;

размер — размер поля в знаках (только для текстовых и двоичных полей);

индекс — индекс для поля;

составной_индекс — описание составного индекса, добавляемого к таблице;

имя_индекса — имя составного индекса, который следует удалить.


С помощью инструкции ALTER TABLE существующую таблицу можно изменить несколькими способами:

• Добавить новое поле в таблицу с помощью зарезервированных слов ADD COLUMN . В этом случае необходимо указать имя поля, его тип и (для текстовых и двоичных полей) необязательный размер. Например, инструкция

ALTER TABLE Книги ADD COLUMN Год INTEGER NOT NULL;

добавит в таблицу Книги целочисленное поле Год .

• Изменить тип существующего поля с помощью зарезервированных слов ALTER COLUMN . В этом случае необходимо указать имя поля, его тип и (для текстовых и двоичных полей) необязательный размер. Например, инструкция ALTER TABLE Разделы ALTER COLUMN Код_раздела TEXT (5);

позволит в таблице Разделы изменить тип поля Код (первоначально определенный как INTEGER ), переопределив это поле как текстовое.

• Добавить составной индекс с помощью зарезервированных слов ADD CONSTRAINT .

• Удалить поле с помощью зарезервированных слов DROP COLUMN . В этом случае необходимо указать только имя поля. Например, инструкция

ALTER TABLE Книги DROP COLUMN Год ;

удалит из таблицы Книги поле Год .

• Удалить составной индекс с помощью зарезервированных слов DROP CONSTRAINT . В этом случае необходимо указать только имя составного индекса, следующее за зарезервированным словом CONSTRAINT .

Инструкция CREATE INDEX .

Назначение: создание нового индекса для существующей таблицы.

CREATE [ UNIQUE ] INDEX индекс

ON таблица (поле [ ASC | DESC ][, поле [ ASC | DESC ], . ])

индекс — имя создаваемого индекса;

таблица — имя существующей таблицы, для которой создается индекс;

поле — имена одного или нескольких полей, включаемых в индекс. Для создания простого индекса (состоящего из одного поля) имя поля в круглых скобках вводится сразу после имени таблицы. Для создания составного индекса (состоящего из нескольких полей) перечисляются имена всех этих полей. Для расположения элементов индекса в убывающем порядке используется зарезервированное слово DESC ; в противном случае будет принят порядок по возрастанию.

• Зарезервированное слово UNIQUE используется для запрета совпадения значений индексированных полей в разных записях.

• Необязательное предложение WITH позволяет задать условия на значения. Например:

• С помощью параметра DISALLOW NULL запретить значения Null в индексированных полях новых записей.

• С помощью параметра IGNORE NULL запретить включение в индекс записей, имеющих значения Null в индексированных полях.

• С помощью зарезервированного слова PRIMARY назначить индексированные поля ключом. Такой индекс по умолчанию является уникальным, следовательно, зарезервированное слово UNIQUE можно опустить. Зарезервированное слово PRIMARY нельзя использовать при создании нового индекса в таблице, в которой уже определен ключ; в противном случае возникнет ошибка.

CREATE INDEX Ключ1 ON Разделы(Код_раздела) WITH PRIMARY ;

определит в таблице Разделы поле Код_раздела как ключевое.

CREATE INDEX Индекс ON Книги(Автор);

создаст в таблице Книги индекс по полю Автор .

Назначение: удаление таблицы, процедуры, представления из базы данных или удаление индекса из таблицы.

таблица — имя таблицы, которую следует удалить или из которой следует удалить индекс;

процедура — имя удаляемой процедуры;

представление — имя удаляемого представления;

индекс — имя индекса, удаляемого из таблицы.

DROP INDEX Индекс ON Книги;

удалит из таблицы Книги индекс по полю Автор .

Илон Маск рекомендует:  Урок 4. Условия существования электрического тока
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL