Запрос на создание таблицы sql: MS SQL Server и T-SQL

Упрощение создания таблиц для записи в них данных из SQL запросов — NTA на vc.ru

NTA

В одном из фильмов с Уиллом Смитом главный герой в процессе обзвона клиентов заметил, что если он не кладет трубку, а сразу набирает следующий номер, то на один звонок он тратит меньше времени и в день может совершить больше звонков. Таким образом, он сократил время на мелких рутинных делах. Подобное возможно и в других сферах деятельности. Например, если работа связана с выгрузкой или загрузкой данных на SQL Server.

2172
просмотров

При написании больших запросов зачастую требуется записать в «физическую» таблицу результаты соединения нескольких таблиц. Конечно, сделать это можно (или даже нужно) традиционным способом с применением инструкции create TABLE, но для этого необходимо заранее знать все типы данных в столбцах, прописывать их наименования, что занимает определённое время. Более того, в силу человеческого фактора не исключён риск совершения ошибок, которые приведут к лишним трудозатратам на пересоздание таблицы и потере времени при выполнении запроса.

Кто-то скажет: «А как же инструкция select INTO?». Да, эта инструкция позволяет сразу из запроса создать новую таблицу и записать туда результаты запроса выборки, но есть один большой очень критичный недостаток. На больших объёмах данных запросы, содержащие данную инструкцию занимают значительное количество ресурсов на сервере и блокируют работу других пользователей сервера. Обычно такие запросы отключаются администраторами серверов, а в некоторых случаях ещё и блокируются учётные записи пользователей, злоупотребляющих такими выгрузками.

В качестве решения вопроса можно применить следующий вариант. Учитывая, что инструкция select INTO копирует структуру результирующей таблицы, можно применить её к запросу, но не нагружая сервер, выбирать 0 строк (Select top 0 * into и т.д.). После этого, выполнить обычный запрос insert INTO во вновь созданную таблицу. Для того чтобы не делать это каждый раз (ведь главная цель – экономия времени), оформляем всё это в хранимую процедуру с использованием инструкции IF EXIST и данных из системных таблиц.

Таким образом, получаем следующий код:

create procedure [dbo].[sp_ctwsi] (@tablename nvarchar(max), @sql nvarchar(max))
as
begin
if not exists
(
select
s.name shm,
o.name tbl
from sys.objects o
inner join sys.schemas s on o.schema_id = s.schema_id
where type = ‘u’
and o.name = substring(@tablename, CHARINDEX(‘.’, @tablename)+1, len(@tablename) — CHARINDEX(‘.’, »)+1)
and s.name = substring(@tablename, 1, CHARINDEX(‘.’, @tablename)-1)
)
begin
exec (‘select top 0 * into ‘[email protected]+’ from (‘ + @sql +’) t’ )
end
else
begin
exec (‘insert into ‘[email protected]+’ select * from (‘ + @sql +’) t’ )
end
end

Как видно из кода, на входе в процедуру требуется передать два параметра – наименование таблицы со схемой через точку (например, «dbo. MyTable») и SQL-запрос, результаты которого требуется записать в таблицу.

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

Создать таблицу — онлайн MySQL генератор

Форма для генерации SQL-запроса для MySQL

Beta

Считаете ли вы этот инструмент полезным? То поделитесь этим с друзьями или коллегами. Это поможет нам сделать наши бесплатные веб-инструменты лучше.


Эта форма позволяет вам создать sql для создания таблицы:

Имя Таблицы

Движок

DefaultInnoDBMyISAM

ИмяТипДлинаРазрешить НольДругиеДействие
INTVARCHARTEXTDATETINYINTSMALLINTMEDIUMINTINTBIGINT-DECIMALFLOATDOUBLEREAL-BITBOOLEANSERIALDATEDATETIMETIMESTAMPTIMEYEARCHARVARCHAR-TINYTEXTTEXTMEDIUMTEXTLONGTEXT-BINARYVARBINARY-TINYBLOBMEDIUMBLOBBLOBLONGBLOB-ENUMSETGEOMETRYPOINTLINESTRINGPOLYGONMULTIPOINTMULTILINESTRINGMULTIPOLYGONGEOMETRYCOLLECTION

Auto Increment

Zerofill

UNSIGNED

Default:
NoneAs defined:NullEmpty string

Comment:

INTVARCHARTEXTDATETINYINTSMALLINTMEDIUMINTINTBIGINT-DECIMALFLOATDOUBLEREAL-BITBOOLEANSERIALDATEDATETIMETIMESTAMPTIMEYEARCHARVARCHAR-TINYTEXTTEXTMEDIUMTEXTLONGTEXT-BINARYVARBINARY-TINYBLOBMEDIUMBLOBBLOBLONGBLOB-ENUMSETGEOMETRYPOINTLINESTRINGPOLYGONMULTIPOINTMULTILINESTRINGMULTIPOLYGONGEOMETRYCOLLECTION

Auto Increment

Zerofill

UNSIGNED

Default:
NoneAs defined:NullEmpty string

Comment:

Индексы

ИмяПоляТип ИндексаИндексный МетодAction

NormalUniqueFull text

BTREEHASH

Ваш сгенерированный sql можно увидеть ниже.

Beta — Это означает, что некоторые функции могут работать неправильно, или запрос sql будет сгенерирован с синтаксической ошибкой. Вы выполняете запросы на свой страх и риск.

Результат генерации sql

скачатьполноэкранныйкопироватьочистить

Перенести в «Вставить код» для сохранения

О «Создание таблицы MySQL генератор»

Об этом инструменте

Генератор MySQL таблиц была создана, чтобы помочь с генерацией MySQL-запроса для Создания таблиц. Нет необходимости запоминать синтаксис и вводить необходимые данные, теперь вы можете легко сгенерировать запрос MySQL онлайн «.

Как это работает?

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

Предупреждения

Генератор может содержать ошибки. Вы выполняете запросы на свой страх и риск.

Создание запросов Make Table — визуальные инструменты для баз данных

Редактировать

Твиттер

LinkedIn

Фейсбук

Электронная почта

  • Статья
  • 2 минуты на чтение

Применяется к: SQL Server

Вы можете копировать строки в новую таблицу с помощью запроса Make Table, который полезен для создания подмножеств данных для работы или копирования содержимого таблицы из одной базы данных в другую. Запрос «Создать таблицу» похож на запрос «Вставить результаты», но создает новую таблицу, в которую копируются строки.

При создании запроса на создание таблицы вы указываете:

  • Имя новой таблицы базы данных (целевой таблицы).

  • Таблица или таблицы, из которых необходимо скопировать строки (исходная таблица). Вы можете копировать из одной таблицы или из объединенных таблиц.

  • Столбцы в исходной таблице, содержимое которых вы хотите скопировать.

  • Порядок сортировки, если вы хотите копировать строки в определенном порядке.

  • Условия поиска для определения копируемых строк.

  • Параметры группировки, если вы хотите скопировать только сводную информацию.

Например, следующий запрос создает новую таблицу с именем uk_customers и копирует в нее информацию из таблицы customers :

 SELECT *
INTO uk_customers
ОТ клиентов
ГДЕ страна = 'Великобритания'
 

Для успешного использования запроса на создание таблицы:

Для создания запроса на создание таблицы

  1. Добавьте исходную таблицу или таблицы на панель диаграммы.

  2. В меню Query Designer выберите Change Type , а затем щелкните Make Table .

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

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

  4. Укажите столбцы для копирования, добавив их в запрос. Дополнительные сведения см. в разделе Добавление столбцов в запросы. Столбцы будут скопированы, только если вы добавите их в запрос. Чтобы скопировать строки целиком, выберите * (Все столбцы) .

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

  5. Если вы хотите копировать строки в определенном порядке, укажите порядок сортировки. Дополнительные сведения см. в разделе Сортировка и группировка результатов запроса 9.0020 .

  6. Укажите строки для копирования, введя условия поиска. Дополнительные сведения см. в разделе Указание критериев поиска.

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

    Примечание

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

  7. Если вы хотите скопировать сводную информацию, укажите параметры «Группировать по». Дополнительные сведения см. в разделе Суммирование результатов запроса.

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

См. также

Разделы с практическими рекомендациями по разработке запросов и представлений
[Типы запросов (../../ssms/visual-db-tools/types-of-queries-visual-database-tools.md)

Обратная связь

Просмотреть все отзывы о странице

Создание таблиц SQL Server из Excel

  • Распечатать

  • Поделиться

  • Темный

    Свет


Создатель таблиц SQL Spreads — это новая функция в SQL Spreads 5. 0, позволяющая создавать таблицы SQL Server непосредственно из Excel и предварительно загружать в них существующие данные из электронной таблицы Excel.

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

Подготовьте свои данные в Excel

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

Если у вас нет таблицы Excel, создать ее очень просто:

  1. Щелкните ячейку в диапазоне данных

  2. Нажмите CTRL + T (удерживайте нажатой клавишу CTRL и нажмите T)

  3. Появится диалоговое окно «Создать таблицу»:

  1. Нажмите OK , и ваши данные теперь будут в таблице Excel.

Создать таблицу в SQL Server

  1. Нажмите кнопку «Создать таблицу SQL» на вкладке «Распространения SQL» в Excel:

  2. Если вы впервые используете SQL Spreads или Table Creator, вы увидите диалоговое окно для подключения к вашему SQL Server.

Заполните данные своего сервера и нажмите OK

Если вам нужна помощь с подключением к SQL Server, см. эту статью о том, как подключиться к SQL Server.

Если вы уже использовали Table Creator, по умолчанию будет использоваться последнее использовавшееся соединение с SQL Server.

  1. После подключения к SQL Server вы увидите диалоговое окно «Создать таблицу SQL Server»:

Укажите имя таблицы и базу данных SQL Server, в которой будет создана таблица. SQL Spreads всегда будет помнить последнюю использовавшуюся таблицу. Если вам нужно перейти на другой SQL Server, нажмите кнопку Кнопка Изменить рядом с именем сервера.

Точная настройка типов данных для использования в SQL Server

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

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

  • Varchar и NVarchar: можно установить максимальное количество символов или MAX для автоматической настройки размера на основе содержимого столбца.
  • Десятичное и числовое: длина должна быть введена как «(7,3)», где первое число — это общее количество цифр, а последнее число — это количество цифр после десятичного разделителя.

Вы можете установить конкретный столбец в качестве первичного ключа, установив флажок Первичный ключ .

Если ваши столбцы должны разрешать пустые значения, установите флажок Разрешить пустые значения для каждого требуемого столбца.

Настройки по умолчанию

Опция Вставка строк из Excel в новую таблицу SQL Server включена по умолчанию. Если этот параметр отключен, ни одна из строк ваших необработанных данных, которые вы использовали для первоначального создания таблицы, не будет вставлена ​​во вновь созданную таблицу в базе данных.

Параметр Добавить автоматически увеличивающийся столбец идентификации включен по умолчанию. Это автоматически добавит в вашу таблицу автоматически увеличивающийся столбец Identity, которому вы можете присвоить имя в соответствии с вашими требованиями.

По умолчанию имя схемы dbo будет использоваться для вновь созданной таблицы. Вы можете переименовать схему, чтобы она соответствовала соглашению об именовании таблиц SQL Server в вашей базе данных, используя поле Использовать имя схемы .

  1. Нажмите OK , чтобы создать таблицу.