Меню

СОЗДАНИЕ ТАБЛИЦ С ПОМОЩЬЮ ЗАПРОСА



Инструкция SELECT INTO в T-SQL или как создать таблицу на основе SQL запроса?

Если у Вас возникала необходимость сохранить результирующий набор данных, который вернул SQL запрос, то данная статья будет Вам интересна, так как в ней мы рассмотрим инструкцию SELECT INTO, с помощью которой в Microsoft SQL Server можно создать новую таблицу и заполнить ее результатом SQL запроса.

Начнем мы, конечно же, с описания самой инструкции SELECT INTO, а затем перейдем к примерам.

  1. Инструкция SELECT INTO в Transact-SQL
  2. Важные моменты про инструкцию SELECT INTO
  3. Примеры использования SELECT INTO
  4. Исходные данные
  5. Пример 1 – Создание таблицы с помощью инструкции SELECT INTO с объединением данных
  6. Пример 2 – Создание временной таблицы с помощью инструкции SELECT INTO с группировкой данных

Инструкция SELECT INTO в Transact-SQL

SELECT INTO – инструкция в языке в T-SQL, которая создает новую таблицу и вставляет в нее результирующие строки из SQL запроса. Структура таблицы, т.е. количество и имена столбцов, а также типы данных и свойства допустимости значений NULL, будут на основе столбцов (выражений), указанных в списке выбора из источника в инструкции SELECT. Обычно инструкция SELECT INTO используется для объединения в одной таблице данных из нескольких таблиц, представлений, включая какие-то расчетные данные.

Для того чтобы использовать инструкцию SELECT INTO требуется разрешение CREATE TABLE в базе данных, в которой будет создана новая таблица.

Инструкция SELECT INTO имеет два аргумента:

  • new_table — имя новой таблицы;
  • filegroup – файловая группа. Если аргумент не указан, то используется файловая группа по умолчанию. Данная возможность доступна начиная с Microsoft SQL Server 2017.

Заметка! Начинающим рекомендую посмотреть мой видеокурс по T-SQL.

Важные моменты про инструкцию SELECT INTO

  • Инструкцию можно использовать для создания таблицы на текущем сервере, на удаленном сервере создание таблицы не поддерживается;
  • Заполнить данными новую таблицу можно как с текущей базы данных и текущего сервера, так и с другой базы данных или с удаленного сервера. Например, указывать полное имя базы данных в виде база_данных.схема.имя_таблицы или в случае с удаленным сервером, связанный_сервер.база_данных.схема.имя_таблицы;
  • Столбец идентификаторов в новой таблице не наследует свойство IDENTITY, если: инструкция содержит объединение (JOIN, UNION), предложение GROUP BY, агрегатную функцию, также, если столбец идентификаторов является частью выражения, получен из удаленного источника данных или встречается более чем один раз в списке выбора. Во всех подобных случаях столбец идентификаторов не наследует свойство IDENTITY и создается как NOT NULL;
  • С помощью инструкции SELECT INTO нельзя создать секционированную таблицу, даже если исходная таблица является секционированной;
  • В качестве новой таблицы можно указать обычную таблицу, а также временную таблицу, однако нельзя указать табличную переменную или возвращающий табличное значение параметр;
  • Вычисляемый столбец, если такой есть в списке выбора инструкции SELECT INTO, в новой таблице он становится обычным, т.е. не вычисляемым;
  • SELECT INTO нельзя использовать вместе с предложением COMPUTE;
  • С помощью SELECT INTO в новую таблицу не переносятся индексы, ограничения и триггеры, их нужно создавать дополнительно, после выполнения инструкции, если они нужны;
  • Предложение ORDER BY не гарантирует, что строки в новой таблице будут вставлены в указанном порядке.
  • В новую таблицу не переносится атрибут FILESTREAM. Объекты BLOB FILESTREAM в новой таблице будут как объекты BLOB типа varbinary(max) и имеют ограничение в 2 ГБ;
  • Объем данных, записываемый в журнал транзакций во время выполнения операций SELECT INTO, зависит от модели восстановления. В базах данных, в которых используется модель восстановления с неполным протоколированием, и простая модель, массовые операции, к которым относится SELECT INTO, минимально протоколируются. За счет этого инструкция SELECT INTO может оказаться более эффективней, чем отдельные инструкции по созданию таблицы и инструкции INSERT по заполнение ее данными.

Примеры использования SELECT INTO

Все примеры я буду выполнять в СУБД Microsoft SQL Server 2016 Express.

Исходные данные

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

Скриншот 1

Пример 1 – Создание таблицы с помощью инструкции SELECT INTO с объединением данных

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

Скриншот 2

В итоге мы создали таблицу с названием TestTable3 и заполнили ее объединёнными данными.

Пример 2 – Создание временной таблицы с помощью инструкции SELECT INTO с группировкой данных

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

Скриншот 3

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

Вот мы с Вами и рассмотрели инструкцию SELECT INTO в языке T-SQL, всем тем, кто только начинает свое знакомство с языком SQL, рекомендую прочитать книгу «SQL код» – это самоучитель по языку SQL, которую написал я, и в которой я подробно, и в то же время простым языком, рассказываю о языке SQL, а у меня на этом все, пока!

Заметка! Для профессионального изучения языка T-SQL рекомендую посмотреть мои видеокурсы по T-SQL.

Источник

СОЗДАНИЕ ТАБЛИЦ С ПОМОЩЬЮ ЗАПРОСА

date image2015-05-10
views image4134

facebook icon vkontakte icon twitter icon odnoklasniki icon

Лабораторная работа 7

Читайте также:  Схема анализа образовательных программ дополнительного образования детей

СОЗДАНИЕ ЗАПРОСОВ НА ИЗМЕНЕНИЕ

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

Теоретические сведения

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

Существует четыре вида запросов на изменение:

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

· запрос на удаление — удаляет записи из одной или нескольких таблиц на основании критериев, заданных в запросе;

· запрос на добавление — добавляет записи целиком или только указанные поля в одну или несколько таблиц;

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

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

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

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

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

1. На панели сообщений нажмите кнопку Параметры. Откроется окно Параметры безопасности Microsoft Office.

2. Установите переключатель в положение Включить это содержимое.

3. Нажмите кнопку ОК.

4. Перезапустите запрос.

СОЗДАНИЕ ТАБЛИЦ С ПОМОЩЬЮ ЗАПРОСА

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

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

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

Процесс создания запроса на создание таблицы состоит из следующих основных этапов.

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

· В режиме конструктора запроса создайте запрос на выборку, а затем изменяйте этот запрос, пока он не будет возвращать нужные записи. Можно выбирать данные из нескольких таблиц.

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

Создание запроса на выборку:

1. Откройте базу данных.

2. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов.

3. В окне Добавление таблицы дважды щелкните кнопкой мыши на названиях таблиц, из которых нужно получить данные. Нажмите кнопку Закрыть.

4. В каждой таблице дважды щелкните кнопкой мыши на полях, которые необходимо добавить в выборку.

5. Добавьте условие отбора в строку Условия отбора бланка запроса.

6. Перейдите на вкладку Конструктор и выберите команду Выполнить.

Чтобы преобразовать запрос, выполните следующие действия.

1. Щелкните правой кнопкой мыши на заголовке вкладки запроса. Выберите команду Конструктор.

2. На вкладке Конструктор в группе Тип запроса выберите команду Создание таблицы. Откроется окно Создание таблицы (рис. 7.1).

Рисунок 7.1 — Окно Создание таблицы

3. В раскрывающемся списке имя таблицы выберите название новой таблицы.

4. Выполните одно из следующих действий.

· Поместите новую таблицу в текущую базу данных.

Выберите параметр в текущей базе данных, если он еще не выбран, и нажмите кнопку ОК.

· Поместите новую таблицу в другую базу данных.

Выберите параметр в другой базе данных.

В поле Имя файла введите расположение и имя файла другой базы данных или нажмите кнопку Обзор и в новом диалоговом окне Создание таблицы укажите расположение другой базы данных и нажмите кнопку ОК.

4. Нажмите кнопку Выполнить. Откроется окно подтверждения операции.

5. Нажмите кнопку Да для подтверждения операции.

Источник

СОЗДАНИЕ ТАБЛИЦ С ПОМОЩЬЮ ЗАПРОСА

date image2015-05-10
views image4134

facebook icon vkontakte icon twitter icon odnoklasniki icon

Лабораторная работа 7

СОЗДАНИЕ ЗАПРОСОВ НА ИЗМЕНЕНИЕ

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

Теоретические сведения

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

Существует четыре вида запросов на изменение:

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

· запрос на удаление — удаляет записи из одной или нескольких таблиц на основании критериев, заданных в запросе;

· запрос на добавление — добавляет записи целиком или только указанные поля в одну или несколько таблиц;

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

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

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

Читайте также:  Калькулятор перевода кВА в кВт в обе стороны

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

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

1. На панели сообщений нажмите кнопку Параметры. Откроется окно Параметры безопасности Microsoft Office.

2. Установите переключатель в положение Включить это содержимое.

3. Нажмите кнопку ОК.

4. Перезапустите запрос.

СОЗДАНИЕ ТАБЛИЦ С ПОМОЩЬЮ ЗАПРОСА

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

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

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

Процесс создания запроса на создание таблицы состоит из следующих основных этапов.

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

· В режиме конструктора запроса создайте запрос на выборку, а затем изменяйте этот запрос, пока он не будет возвращать нужные записи. Можно выбирать данные из нескольких таблиц.

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

Создание запроса на выборку:

1. Откройте базу данных.

2. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов.

3. В окне Добавление таблицы дважды щелкните кнопкой мыши на названиях таблиц, из которых нужно получить данные. Нажмите кнопку Закрыть.

4. В каждой таблице дважды щелкните кнопкой мыши на полях, которые необходимо добавить в выборку.

5. Добавьте условие отбора в строку Условия отбора бланка запроса.

6. Перейдите на вкладку Конструктор и выберите команду Выполнить.

Чтобы преобразовать запрос, выполните следующие действия.

1. Щелкните правой кнопкой мыши на заголовке вкладки запроса. Выберите команду Конструктор.

2. На вкладке Конструктор в группе Тип запроса выберите команду Создание таблицы. Откроется окно Создание таблицы (рис. 7.1).

Рисунок 7.1 — Окно Создание таблицы

3. В раскрывающемся списке имя таблицы выберите название новой таблицы.

4. Выполните одно из следующих действий.

· Поместите новую таблицу в текущую базу данных.

Выберите параметр в текущей базе данных, если он еще не выбран, и нажмите кнопку ОК.

· Поместите новую таблицу в другую базу данных.

Выберите параметр в другой базе данных.

В поле Имя файла введите расположение и имя файла другой базы данных или нажмите кнопку Обзор и в новом диалоговом окне Создание таблицы укажите расположение другой базы данных и нажмите кнопку ОК.

4. Нажмите кнопку Выполнить. Откроется окно подтверждения операции.

5. Нажмите кнопку Да для подтверждения операции.

Источник

SQL — Урок 3. Создание таблиц и наполнение их информацией

Итак, мы познакомились с типами данных, теперь будем усовершенствовать таблицы для нашего форума. Сначала разберем их. И начнем с таблицы users (пользователи). В ней у нас 4 столбца:

id_user — целочисленные значения, значит будет тип int, ограничим его 10 символами — int (10).
name — строковое значение varchar, ограничим его 20 символами — varchar(20).
email — строковое значение varchar, ограничим его 50 символами — varchar(50).
password — строковое значение varchar, ограничим его 15 символами — varchar(15).

Все значения полей обязательны для заполнения, значит надо добавить тип NOT NULL.

id_user int (10) NOT NULL
name varchar(20) NOT NULL
email varchar(50) NOT NULL
password varchar(15) NOT NULL

Первый столбец, как вы помните из концептуальной модели нашей БД, является первичным ключом (т.е. его значения уникальны, и они однозначно идентифицируют запись). Следить за уникальностью самостоятельно можно, но не рационально. Для этого в SQL есть специальный атрибут — AUTO_INCREMENT, который при обращении к таблице на добавление данных высчитывает максимальное значение этого столбца, полученное значение увеличивает на 1 и заносит его в столбец. Таким образом, в этом столбце автоматически генерируется уникальный номер, а следовательно тип NOT NULL излишен. Итак, присвоим атрибут столбцу с первичным ключом:

id_user int (10) AUTO_INCREMENT
name varchar(20) NOT NULL
email varchar(50) NOT NULL
password varchar(15) NOT NULL

Теперь надо указать, что поле id_user является первичным ключом. Для этого в SQL используется ключевое слово PRIMARY KEY (), в скобочках указывается имя ключевого поля. Внесем изменения:

id_user int (10) AUTO_INCREMENT
name varchar(20) NOT NULL
email varchar(50) NOT NULL
password varchar(15) NOT NULL
PRIMARY KEY (id_user)

Итак, таблица готова, и ее окончательный вариант выглядит так:

create table users (
id_user int (10) AUTO_INCREMENT,
name varchar(20) NOT NULL,
email varchar(50) NOT NULL,
password varchar(15) NOT NULL,
PRIMARY KEY (id_user)
);

Теперь разберемся со второй таблицей — topics (темы). Рассуждая аналогично, имеем следующие поля:

id_topic int (10) AUTO_INCREMENT
topic_name varchar(100) NOT NULL
id_author int (10) NOT NULL
PRIMARY KEY (id_topic)

Но в модели нашей БД поле id_author является внешним ключом, т.е. оно может иметь только те значения, которые есть в поле id_user таблицы users. Для того, чтобы указать это в SQL есть ключевое слово FOREIGN KEY (), которое имеет следующий синтаксис:

Читайте также:  Условия подведения итогов Результаты в многоборьях оцениваются в очках в соответствии со 100 очковой Таблицей

FOREIGN KEY (имя_столбца_которое_является_внешним_ключом) REFERENCES имя_таблицы_родителя (имя_столбца_родителя);

Укажем, что id_author — внешний ключ:

id_topic int (10) AUTO_INCREMENT
topic_name varchar(100) NOT NULL
id_author int (10) NOT NULL
PRIMARY KEY (id_topic)
FOREIGN KEY (id_author) REFERENCES users (id_user)

Таблица готова, и ее окончательный вариант выглядит так:

create table topics (
id_topic int (10) AUTO_INCREMENT,
topic_name varchar(100) NOT NULL,
id_author int (10) NOT NULL,
PRIMARY KEY (id_topic),
FOREIGN KEY (id_author) REFERENCES users (id_user)
);

Осталась последняя таблица — posts (сообщения). Здесь все аналогично, только два внешних ключа:

create table posts (
id_post int (10) AUTO_INCREMENT,
message text NOT NULL,
id_author int (10) NOT NULL,
id_topic int (10) NOT NULL,
PRIMARY KEY (id_post),
FOREIGN KEY (id_author) REFERENCES users (id_user),
FOREIGN KEY (id_topic) REFERENCES topics (id_topic)
);

Обратите внимание, внешних ключей у таблицы может быть несколько, а первичный ключ в MySQL может быть только один. В первом уроке мы удалили нашу БД forum, пришло время создать ее вновь.

Запускаем сервер MySQL (Пуск — Программы — MySQL — MySQL Server 5.1 — MySQL Command Line Client), вводим пароль, создаем БД forum (create database forum;), выбираем ее для использования (use forum;) и создаем три наших таблицы:

Обратите внимание, одну команду можно писать в несколько строк, используя клавишу Enter (MySQL автоматически подставляет символ новой строки ->), и только после разделителя (точки с запятой) нажатие клавиши Enter приводит к выполнению запроса.

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

Итак, таблицы созданы, чтобы убедиться в этом вспомним о команде show tables:

И, наконец, посмотрим структуру нашей последней таблицы posts:

Теперь становятся понятны значения всех полей структуры, кроме поля DEFAULT. Это поле значений по умолчанию. Мы могли бы для какого-нибудь столбца (или для всех) указать значение по умолчанию. Например, если бы у нас было поле с названием «Женаты\Замужем» и типом ENUM (‘да’, ‘нет’), то было бы разумно сделать одно из значений значением по умолчанию. Синтаксис был бы следующий:

married enum (‘да’, ‘нет’) NOT NULL default(‘да’)

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

Но вернемся к нашим таблицам. Теперь нам необходимо внести данные в наши таблицы. На сайтах, вы обычно вводите информацию в какие-нибудь html-формы, затем сценарий на каком-либо языке (php, java. ) извлекает эти данные из формы и заносит их в БД. Делает он это посредством SQL-запроса на внесение данных в базу. Писать сценарии на php мы пока не умеем, а вот отправлять SQL-запросы на внесение данных сейчас научимся.

Для этого используется оператор INSERT. Синтаксис можно использовать двух видов. Первый вариант используется для внесения данных во все поля таблицы:

Давайте попробуем внести в нашу таблицу users следующие значения:

INSERT INTO users VALUES (‘1′,’sergey’, ‘sergey@mail.ru’, ‘1111’);

Второй вариант используется для внесения данных в некоторые поля таблицы:

В нашей таблице users все поля обязательны для заполнения, но наше первое поле имеет ключевое слово — AUTO_INCREMENT (т.е. оно заполняется автоматически), поэтому мы можем пропустить этот столбец:

INSERT INTO users (name, email, password) VALUES (‘valera’, ‘valera@mail.ru’, ‘2222’);

Если бы у нас были поля с типом NULL, т.е. необязательные для заполнения, мы бы тоже могли их проигнорировать. А вот если попытаться оставить пустым поле со значением NOT NULL, то сервер выдаст сообщение об ошибке и не выполнит запрос. Кроме того, при внесении данных сервер проверяет связи между таблицами. Поэтому вам не удастся внести в поле, являющееся внешним ключом, значение, отсутствующее в связанной таблице. В этом вы убедитесь, внося данные в оставшиеся две таблицы.

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

Теперь внесем данные во вторую таблицу — topics (темы). Все тоже самое, но надо помнить, что значения в поле id_author должны присутствовать в таблице users (пользователи):

Теперь давайте попробуем внести еще одну тему, но с id_author, которого в таблице users нет (т.к. мы внесли в таблицу users только 5 пользователей, то не существует):

Сервер выдает ошибку и говорит, что не может внести такую строку, т.к. в поле, являющемся внешним ключом, стоит значение, отсутствующее в связанной таблице users.

Теперь внесем несколько строк в таблицу posts (сообщения), помня, что в ней у нас 2 внешних ключа, т.е. id_author и id_topic, которые мы будем вносить должны присутствовать в связанных с ними таблицах:

Итак, у нас есть 3 таблицы, в которых есть данные. Встает вопрос — как посмотреть, какие данные хранятся в таблицах. Этим мы и займемся на следующем уроке.

Видеоуроки php + mysql

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

Источник

Создание таблиц с помощью запроса



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

Вы можете создавать и изменять таблицы, ограничения, индексы и связи в Access, написав запросы определения данных SQL представлении. В этой статье объясняется, как использовать запросы определения данных для создания таблиц, ограничений, индексов и связей. Эта статья также поможет вам решить, когда использовать запрос на определение данных.

В этой статье

Обзор

В отличие от других запросов Access, запрос определения данных не извлекает данные. Вместо этого запрос определения данных использует язык определения данных для создания, изменения или удаления объектов базы данных.

Примечание: Язык определения данных (DDL) является частью язык SQL (SQL).

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

Предупреждение: Использование запросов определения данных для изменения объектов базы данных может быть рискованным, поскольку действия не сопровождаются диалогами подтверждения. Если вы допустили ошибку, вы можете потерять данные или непреднамеренно изменить оформление таблицы. Будьте осторожны при использовании запроса определения данных для изменения объектов в базе данных. Если вы не несете ответственности за обслуживание используемой базы данных, перед запуском запроса на определение данных обратитесь к ее администратору.

Важно: Перед выполнением запроса на определение данных сделайте резервную копию всех таблиц.

Ключевые слова DDL

Создайте индекс или таблицу, которые еще не существуют.

Измените существующую таблицу или столбец.

Удалите существующую таблицу, столбец или ограничение.

Добавьте столбец или ограничение в таблицу.

Использование с add, ALTER или DROP

Использование с add, ALTER или DROP

Использование с помощью create

Использование с alter, CREATE или DROP

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

Для создания таблицы используется команда CREATE TABLE. Команда CREATE TABLE имеет следующий синтаксис:

Для команды CREATE TABLE требуются только команды CREATE TABLE и имя таблицы, но обычно требуется определить некоторые поля или другие аспекты таблицы. Рассмотрим этот простой пример.

Предположим, вам нужно создать таблицу для хранения названия, года и цены используемых автомобилей, которые вы хотите приобрести. Вы хотите разрешить в имени до 30 знаков и 4 знака для года. Чтобы создать таблицу с помощью запроса определения данных, сделайте следующее:

Примечание: Для выполнения запроса определения данных может потребоваться сначала включить содержимое базы данных:

Нажмите на панели сообщений кнопку Включить содержимое.

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

На вкладке «Создание» в группе «Макрос &» нажмите кнопку «Конструктор запросов».

На вкладке «Конструктор» в группе «Тип запроса» нажмите кнопку «Определение данных».

Сетка конструктора скрыта, SQL в представлении отображается вкладка объекта.

Введите следующую SQL:

CREATE TABLE Cars (Name TEXT(30), Year TEXT(4), Price CURRENCY)

На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Изменение таблицы

Для изменения таблицы используется команда ALTER TABLE. Для добавления, изменения или удаления столбцов или ограничений можно использовать команду ALTER TABLE. Команда ALTER TABLE имеет следующий синтаксис:

ALTER TABLE table_name predicate

где предика может быть любым из следующих:

ADD COLUMN field type[(size)] [NOT NULL] [CONSTRAINT constraint]

ADD CONSTRAINT multifield_constraint

ALTER COLUMN field type[(size)]

DROP COLUMN field

DROP CONSTRAINT constraint

Предположим, что вы хотите добавить 10-знаковое текстовое поле для хранения сведений о состоянии каждого автомобиля. Здесь доступны перечисленные ниже возможности

На вкладке «Создание» в группе «Макрос &» нажмите кнопку «Конструктор запросов».

На вкладке «Конструктор» в группе «Тип запроса» нажмите кнопку «Определение данных».

Сетка конструктора скрыта, SQL в представлении отображается вкладка объекта.

Введите следующую SQL:

ALTER TABLE Cars ADD COLUMN Condition TEXT(10)

На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Создание индекса

Чтобы создать индекс в существующей таблице, используйте команду CREATE INDEX. Команда CREATE INDEX имеет следующий синтаксис:

Требуются только команды CREATE INDEX, имя индекса, аргумент ON, имя таблицы с полями, которые требуется индексировать, и список полей, которые нужно включить в индекс.

Аргумент DESC вызывает упорядочение индекса по убытию (это может быть полезно при частом запуске запросов, которые искать верхние значения для индекса поля или сортировки индекса в порядке убыния). По умолчанию индекс создается в порядке возрастания.

Аргумент WITH PRIMARY устанавливает индексные поля или поля в первичный ключ таблицы.

Аргумент WITH DISALLOW NULL требует, чтобы индекс требовал в введенное значение для индексного поля, то есть не допускается использовать значения NULL.

Предположим, что у вас есть таблица «Автомобили» с полями, в которым хранятся имя, год, цена и условия использования автомобилей, которые вы хотите приобрести. Предположим также, что таблица стала большой и вы часто включаете в запросы поле «Год». Чтобы запросы быстро возвращали результаты, можно создать индекс для поля Year, вы используя следующую процедуру:

На вкладке «Создание» в группе «Макрос &» нажмите кнопку «Конструктор запросов».

На вкладке «Конструктор» в группе «Тип запроса» нажмите кнопку «Определение данных».

Сетка конструктора скрыта, SQL в представлении отображается вкладка объекта.

Введите следующую SQL:

CREATE INDEX YearIndex ON Cars (Year)

На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Создание ограничения или связи

Ограничение — это логическое условие, которое должно соответствовать полю или сочетанию полей при вставке значений. Например, ограничение UNIQUE не позволяет полю с ограниченными ограничениями принять значение, которое будет дублироваться существующее значение в поле.

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

Читайте также:  Условия подведения итогов Результаты в многоборьях оцениваются в очках в соответствии со 100 очковой Таблицей

Чтобы создать ограничение, используйте предложение CONSTRAINT в команде CREATE TABLE или ALTER TABLE. Существует два типа предложений CONSTRAINT: одно — для создания ограничения на одно поле, а другое — для ограничения нескольких полей.

Ограничения по одному полю

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

Предположим, что у вас есть таблица «Автомобили» с полями, в которым хранятся имя, год, цена и условия использования автомобилей, которые вы хотите приобрести. Кроме того, предположим, что вы часто забудете ввести значение для условия автомобиля и всегда хотите записать эти сведения. Вы можете создать ограничение для поля «Условие», чтобы не оставить его пустым, вы можете сделать следующее:

На вкладке «Создание» в группе «Макрос &» нажмите кнопку «Конструктор запросов».

На вкладке «Конструктор» в группе «Тип запроса» нажмите кнопку «Определение данных».

Сетка конструктора скрыта, SQL в представлении отображается вкладка объекта.

Введите следующую SQL:

ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL

На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Предположим, что через некоторое время в поле «Условие» есть много похожих значений, которые должны быть одинаковыми. Например, у одних автомобилей плохое значение, а у других — плохое.

Примечание: Если вы хотите следовать остальным процедурам, добавьте поддельные данные в таблицу «Автомобили», созданную на предыдущих шагах.

После очистки значений, чтобы они были согласованы, можно создать таблицу с именем CarCondition с одним полем с именем Condition, которое содержит все значения, которые вы хотите использовать для условия автомобиля:

На вкладке «Создание» в группе «Макрос &» нажмите кнопку «Конструктор запросов».

На вкладке «Конструктор» в группе «Тип запроса» нажмите кнопку «Определение данных».

Сетка конструктора скрыта, SQL в представлении отображается вкладка объекта.

Введите следующую SQL:

CREATE TABLE CarCondition (Condition TEXT(10))

На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Создайте первичный ключ для таблицы с помощью выписки ALTER TABLE:

ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PRIMARY KEY

Чтобы вставить значения из поля «Условие» таблицы «Автомобили» в новую таблицу CarCondition, введите следующую SQL на вкладке объекта SQL просмотра:

INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;

Примечание: На SQL этого шага есть запрос на добавление. В отличие от запроса на определение данных, запрос на приложение заканчивается за заданной осью 1.

На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Создание связи с помощью ограничения

Чтобы требовать, чтобы любое новое значение, вставленное в поле «Условие» таблицы «Автомобили», совпадала со значением поля Condition в таблице CarCondition, вы можете создать связь между carCondition и Cars в поле «Условие», используя следующую процедуру:

На вкладке «Создание» в группе «Макрос &» нажмите кнопку «Конструктор запросов».

На вкладке «Конструктор» в группе «Тип запроса» нажмите кнопку «Определение данных».

Сетка конструктора скрыта, SQL в представлении отображается вкладка объекта.

Введите следующую SQL:

ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT FKeyCondition REFERENCES CarCondition (Condition)

На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Ограничения на несколько полей

Предложение CONSTRAINT с несколькими полями может использоваться только за пределами предложения определения поля и имеет следующий синтаксис:

Рассмотрим еще один пример, в который используется таблица «Автомобили». Предположим, что две записи в таблице «Автомобили» не имеют одного и того же набора значений для значений «Имя», «Год», «Условие» и «Цена». Чтобы создать ограничение UNIQUE, применяемое к этим полям, с помощью следующей процедуры:

На вкладке «Создание» в группе «Макрос &» нажмите кнопку «Конструктор запросов».

На вкладке «Конструктор» в группе «Тип запроса» нажмите кнопку «Определение данных».

Сетка конструктора скрыта, SQL в представлении отображается вкладка объекта.

Введите следующую SQL:

ALTER TABLE Cars ADD CONSTRAINT NoDupes UNIQUE (имя, год, условие, цена)

На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Источник

Иллюстрированный самоучитель по Microsoft Access 2002

Создание таблиц с помощью запроса

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

  1. Создать запрос на выборку.
  2. Преобразовать запрос на выборку в запрос на изменение, задав параметры размещения новой таблицы.
  3. Выполнить запрос на изменение, тем самым поместив отобранные записи в новую таблицу.

Созданию различных запросов на выборку мы уделили достаточно внимания в гл. 4. Оставшиеся два этапа описаны ниже на примере запроса на выборку «Холодные клиенты», созданного в базе данных «Борей» при описании внешнего соединения в гл. 4.

  1. Откройте запрос «Холодные клиенты» в режиме Конструктора, выделив его имя в списке запросов в окне базы данных и нажав кнопку Конструктор (Design).
  2. Добавьте в бланке запроса критерий выборки: Is Null в столбце «КодЗаказа».
  3. Сбросьте флажок Вывод на экран (Output) для этого поля.

Замечание
Это нужно сделать, чтобы поле не попало в новую таблицу. Поле «КодЗаказа» в таблице «Заказы» определено как Счетчик и не может иметь значение Null. Это свойство наследуется новой таблицей, поэтому если флажок не сбросить, то при выполнении запроса будет выдаваться сообщение об ошибке
.

Преобразование запроса на выборку в запрос на изменение

Чтобы создать таблицу из результатов запроса, использовавшегося для отбора записей в связанных таблицах, его нужно преобразовать из запроса на выборку в запрос на изменение. Для этого:

    Выберите команду меню Запрос › Создание таблицы (Query › Make Table) (Меню Запрос доступно только в режиме Конструктора запроса.) или щелкните по стрелке на кнопке Тип запроса (Query Type) на панели инструментов и выберите из списка тип Создание таблицы (Make-Table Query). Диалоговое окно Создание таблицы (Make Table) показано на рис. 8.1.

Читайте также:  Таблица рентабельности предприятия как заполнить

Рис. 8.1, а) Диалоговое окно Создание таблицы

Источник

Иллюстрированный самоучитель по Microsoft Access 2002

Создание таблиц с помощью запроса

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

  1. Создать запрос на выборку.
  2. Преобразовать запрос на выборку в запрос на изменение, задав параметры размещения новой таблицы.
  3. Выполнить запрос на изменение, тем самым поместив отобранные записи в новую таблицу.

Созданию различных запросов на выборку мы уделили достаточно внимания в гл. 4. Оставшиеся два этапа описаны ниже на примере запроса на выборку «Холодные клиенты», созданного в базе данных «Борей» при описании внешнего соединения в гл. 4.

  1. Откройте запрос «Холодные клиенты» в режиме Конструктора, выделив его имя в списке запросов в окне базы данных и нажав кнопку Конструктор (Design).
  2. Добавьте в бланке запроса критерий выборки: Is Null в столбце «КодЗаказа».
  3. Сбросьте флажок Вывод на экран (Output) для этого поля.

Замечание
Это нужно сделать, чтобы поле не попало в новую таблицу. Поле «КодЗаказа» в таблице «Заказы» определено как Счетчик и не может иметь значение Null. Это свойство наследуется новой таблицей, поэтому если флажок не сбросить, то при выполнении запроса будет выдаваться сообщение об ошибке
.

Преобразование запроса на выборку в запрос на изменение

Чтобы создать таблицу из результатов запроса, использовавшегося для отбора записей в связанных таблицах, его нужно преобразовать из запроса на выборку в запрос на изменение. Для этого:

    Выберите команду меню Запрос › Создание таблицы (Query › Make Table) (Меню Запрос доступно только в режиме Конструктора запроса.) или щелкните по стрелке на кнопке Тип запроса (Query Type) на панели инструментов и выберите из списка тип Создание таблицы (Make-Table Query). Диалоговое окно Создание таблицы (Make Table) показано на рис. 8.1.

Рис. 8.1, а) Диалоговое окно Создание таблицы

Источник

Создание таблиц с помощью запроса

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

  1. Создать запрос на выборку.
  2. Преобразовать запрос на выборку в запрос на изменение, задав параметры размещения новой таблицы.
  3. Выполнить запрос на изменение, тем самым поместив отобранные записи в новую таблицу.

Созданию различных запросов на выборку мы уделили достаточно внимания в гл. 4. Оставшиеся два этапа описаны ниже на примере запроса на выборку «Холодные клиенты», созданного в базе данных «Борей» при описании внешнего соединения в гл. 4.

  1. Откройте запрос «Холодные клиенты» в режиме Конструктора, выделив его имя в списке запросов в окне базы данных и нажав кнопку Конструктор (Design).
  2. Добавьте в бланке запроса критерий выборки: Is Null в столбце «КодЗаказа».
  3. Сбросьте флажок Вывод на экран (Output) для этого поля.

Это нужно сделать, чтобы поле не попало в новую таблицу. Поле «КодЗаказа» в таблице «Заказы» определено как Счетчик и не может иметь значение Null. Это свойство наследуется новой таблицей, поэтому если флажок не сбросить, то при выполнении запроса будет выдаваться сообщение об ошибке.

Источник

Как создавать запросы в Access: пошаговая инструкция и рекомендации

Приложение СУБД MS Access – это полноценный помощник для создания и ведения баз данных, заключенных в таблицы и массивы. Если база имеет слишком большой объем, быстро найти необходимые значения довольно сложно.

Именно поэтому в Access существует такая функция, как запросы. Рассмотрим, что это такое, как работает, какие имеет особенности.

Создание запросов в Microsoft Access

Чтобы разобраться, как создавать запросы в Access, нужно знать основные положения работы с СУБД.

Существует два способа выполнить данную процедуру:

  • Конструктор запросов.
  • Мастер запросов.

Первый способ дает возможность создать любой из всех доступных запросов в ручном режиме, но с небольшой оговоркой, заключающейся в том, что пользователь имеет опыт работы с приложением Access. Также он должен разбираться хотя бы в основных его задачах. Что касается второго способа, то его нужно рассмотреть более подробно.

Легкий путь для новичков

Знающий человек за несколько кликов мышью выбирает те компоненты, которые потребуются пользователю для выполнения запроса, а затем быстро формирует реестр, в соответствии с собранными ключевыми значениями. Если это первое знакомство с СУБД, и пользователь не представляет, как создавать запросы в Access, то выбирается программа Мастер.

В данном режиме можно ознакомиться и разобраться со следующими типами запросов:

  • Простой.
  • Перекрестный.
  • Записи без подчиненных.
  • Повторяющиеся записи.

Данный выбор осуществляется уже на первом этапе работы с Мастером. А в дальнейшем, следуя четким указаниям, даже начинающий пользователь легко создаст запрос. Познакомимся с его разновидностями.

Простой запрос

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

Читайте также:  Иркутская область Географические характеристики

Перекрестный запрос

Этот тип выборки более сложный. Чтобы разобраться, как создать перекрестный запрос в Access с помощью «Мастера» в данном режиме, нужно кликнуть по этой функции в первом окне.

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

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

На фото показано, что перекрестный запрос создан, и что по заданным параметрам совершены необходимые действия.

Повторяющиеся записи

Как понятно из названия, основное предназначение данного запроса – выборка всех одинаковых строк в таблице по указанным параметрам. Выглядит это так:

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

Чтобы выбрать повторяющиеся записи, нужно раскрыть список запросов и создать там новую папку. Далее в окошке «Новый запрос» выбрать строку «Поиск повторяющихся записей». Далее нужно следовать указаниям Мастера.

Записи без подчиненных

Это последний тип запросов, доступный в режиме «Мастер – Записи без подчиненных».

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

Данный тип актуален только в случаях, когда баз данных несколько.

Все эти четыре типа запросов являются базовой точкой для работы со сложными элементами, но позволяют легко разобраться, как создать запрос в базе данных Access.

Функции запросов в MS Access

Разберемся, зачем нужно выполнять описанные выше действия. Задача всех простых и сложных запросов в СУБД Access заключается в следующем:

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

Запрос на выборку

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

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

Повторим, как создать запрос на выборку в Access. Сначала нужно создать простой запрос с выбором нужных полей. Уже здесь можно редактировать данные, чтобы привести их в желаемый вид. К слову, внесенные изменения перенесутся и в исходные таблицы, так что этот момент нужно учитывать.

В открывшемся окне конструктора заполняется окно «Добавление таблиц». Здесь нужно добавить те таблицы или запросы, из которых нужно вытаскивать исходные значения.

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

Чтобы завершить операцию, нужно нажать на кнопку «Выполнить».

Запрос с параметрами

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

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

Таким образом, на вопрос о том, как создать запрос с параметром в Access, ответ простой — внести исходные параметры для выборки. Чтобы работать с Конструктором необходимо пользоваться Мастером запросов. Там создается первичные данные для фильтрации, которые служат основой дальнейшей работы.

Расширенный перекрестный запрос

Продолжаем усложнять ситуацию. Еще труднее для понимания является информация о том, как создавать запросы в Access, если присутствует несколько таблиц с данными. Перекрестный запрос уже рассматривался выше, как один из вариантов работы с Мастером. Однако, и в режиме «Конструктора» можно создавать подобный запрос.

Для этого необходимо нажать «Конструктор запросов» — «Перекрестный».

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

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

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

Конечно, присутствуют и «подводные камни», которые могут помешать в работе. Например, при создании запроса на сортировку базы данных по значению столбцов система выдает ошибку. То есть доступна только сортировка по стандартным пунктам – «возрастание и убывание».

Краткие рекомендации

Подводя итоги, нужно сказать, что решить, как создавать запросы в Access – с помощью Мастера или Конструктора, должен сам пользователь. Хотя, для большинства людей, которые используют СУБД MS Access, больше подойдет первый вариант. Ведь Мастер сам сделает всю работу, оставив для пользователя только несколько кликов мышью, при выборе условий запроса.

Чтобы использовать расширенные настройки, явно необходим опыт работы с базами данных на уровне профессионала. Если в работе задействованы большие базы, лучше всего обратиться к специалистам, дабы избежать нарушения работы СУБД и возможных потерь данных.

Есть один момент, который доступен лишь программистам. Так как основным языком СУБД является SQL, то нужный запрос можно написать в виде программного кода. Чтобы работать в данном режиме, достаточно нажать на строку уже созданного запроса, и в открывшемся контекстном меню выбрать «Режим SQL».

Источник