Базы данных. SQL. Создание таблиц. Оператор CREATE TABLE

Перед изучением данной темы рекомендуется ознакомиться с темой:

  • Microsoft SQL Server Management Studio 2018. Пример создания простейшего запроса

Содержание

  • 1. Оператор CREATE TABLE. Создание таблицы. Общая форма
  • 2. Примеры создания таблиц
    • 2.1. Пример создания простейшей таблицы учета товаров в магазине
    • 2.2. Пример создания таблицы учета телефонов абонентов
    • 2.3. Пример создания таблицы учета заработной платы и отчислений в организации
  • Связанные темы

Поиск на других ресурсах:

1. Оператор CREATE TABLE. Создание таблицы. Общая форма

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

Для создания таблицы в языке SQL используется оператор CREATE TABLE. В простейшем случае общая форма оператора CREATE TABLE следующая

CREATE TABLE Table_Name (
    Field_Name_1 Type_1,
    Field_Name_2 Type_2,
    ...
    Field_Name_N Type_N
)

здесь

  • Table_Name – имя таблицы базы данных. Если в базе данных есть таблица с таким именем, то возникнет ошибка;
  • Field_Name_1, Field_Name_2, Field_Name_N – имена полей (столбцов) таблицы базы данных. Имя каждого поля должно быть уникальным. В разных   таблицах имена полей могут совпадать;
  • Type_1, Type_2, Type_N – соответственно типы полей Field_Name_1, Field_Name_2, Field_Name_N такие как INTEGER, DECIMAL, DATE и другие.

На поля Field_Name_1, Field_Name_2, Field_Name_N могут накладываться ограничения. Каждое ограничение указывается после имени поля. В этом случае общая форма оператора CREATE TABLE выглядит примерно следующим образом:

CREATE TABLE Table_Name (
    Field_Name_1 Type_1 Attribute_1,
    Field_Name_2 Type_2 Attribute_2,
    . ..
    Field_Name_N Type_N Attribute_N
)

здесь

  • Attribute_1, Attribute_2, Attribute_N – ограничения, накладываемые на поля Field_Name_1, Field_Name_2, Field_Name_N. Ограничения задаются одним из возможных слов: NULL, NOT NULL, UNIQUE, CHECK, PRIMARY KEY, FOREIGN KEY и других.

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

  ⇑

2. Примеры создания таблиц
2.1. Пример создания простейшей таблицы учета товаров в магазине

Условие задачи.

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

 

Решение.

  1. Для обеспечения уникальности записей в таблице нужно создать дополнительное поле, которое будет являться счетчиком (автоинкрементом). Название поля – ID_Product. Это поле есть первичным ключом. Также это поле имеет ограничение NOT NULL (непустое поле).
  2. Следующим шагом решения есть назначение имен полям таблицы. В связи с тем, что не все системы управления базами данных (СУБД) поддерживают символы кириллицы, имена полей таблицы будут задаваться латинскими символами. В нашем случае формируются имена и типы данных, сформированные в следующей таблице:
Название поля в условии задачиНазвание поля на языке SQLТип поляОбъяснение
ID_ProductID_ProductINTEGERПервичный ключ, счетчик, NOT NULL
Название товара[Name]VARCHAR(100)Строковый тип переменной длины максимум до 100 символов
Стоимость закупкиPriceDECIMAL(15, 2)Точность равна 15 знакам, масштаб равен 2 знакам после запятой
Количество штук[Count]INTEGERЦелое число
Дата получения[Date]DATE
ПримечаниеNoteVARCHAR(200)
  1. Написание кода на языке SQL с учетом особенностей предыдущих шагов. Текст программы создания таблицы на языке SQL следующий

 

CREATE TABLE [Product] (
    [ID_Product] Integer Not Null Primary Key,
    [Name] VarChar(100) ,
    [Price] Decimal(15, 2),
    [Count] Integer,
    [Date] Date,
    [Note] VarChar(200)
)

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

CREATE TABLE Product (
    ID_Product Integer Not Null Primary Key,
    Name VarChar(100) ,
    Price Decimal(15, 2),
    Count Integer,
    Date Date,
    Note VarChar(200)
)

В приведенном выше коде для поля ID_Product задаются ограничения Not Null и Primary Key. В результате запуска программы на SQL будет создана следующая таблица

ID_ProductNamePriceCountDateNote

На рисунке 1 отображаются поля созданной таблицы в Microsoft SQL Server Management Studio.

Рисунок 1. Этапы создания таблицы Product в Microsoft SQL Server Management Studio 18: 1 – создание файла; 2 – набор SQL-запроса; 3 – запуск запроса на выполнение; 4 – результирующая таблица

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

CREATE TABLE Product (
    Name VarChar(100) ,
    Price Decimal(15, 2),
    Count Integer,
    Date Date,
    Note VarChar(200)
)

  ⇑

2.2. Пример создания таблицы учета телефонов абонентов

Условие задачи.

Используя средства языка SQL (T-SQL) создать таблицу учета телефонов абонентов.

NameAddressPhone Number 1Phone Number 2Phone Number 3
Ivanov I.
I.
New York123456067-1234567
Johnson J.Kiev789012033-7777778102
Petrenko P.P.Warshaw044-2521412

Обеспечить уникальность и корректное сохранение записей таблицы.

Решение.

Для обеспечения уникальности записей нужно создать дополнительное поле – счетчик. Это поле будет увеличивать свое значение на 1 при каждом добавлении новой записи. Если запись будет удаляться, текущее максимальное значение счетчика не будет уменьшаться. Таким образом, все числовые значения этого поля будут различаться между собой (будут уникальными). В нашем случае добавляется поле ID_Subscriber. Это поле не допускает нулевые значения (NULL).

Для полей Name и [Phone Number 1] целесообразно задать ограничение (атрибут) NOT NULL. Это означает, что в эти поля обязательно нужно ввести значение. Это логично, поскольку абонент в базе данных должен иметь как минимум имя и хотя бы один номер телефона.

После внесенных изменений поля таблицы будут иметь следующие свойства

Название поля
Тип данныхОбъяснение
ID_SubscriberINTEGERПервичный ключ, счетчик, NOT NULL
NameVARCHAR(50)Фамилия и имя абонента
AddressVARCHAR(100)Адрес
[Phone Number 1]VARCHAR(20)NOT NULL
[Phone Number 2]VARCHAR(20)
[Phone Number 3]VARCHAR(20)

Учитывая вышесказанное, команда CREATE TABLE на языке Transact-SQL (T-SQL) будет выглядеть следующим образом

Create Table Subscriber (
    ID_Subscriber Int Not Null Primary Key,
    [Name] VarChar(50) Not Null,
    [Address] VarChar(100),
    [Phone Number 1] VarChar(20) Not Null,
    [Phone Number 2] VarChar(20),
    [Phone Number 3] VarChar(20)
)

В запросе имена полей

[Phone Number 1]
[Phone Number 2]
[Phone Number 3]

обязательно должны быть в квадратных скобках [], поскольку имена состоят из нескольких слов (между словами есть символ пробела).

На рисунке 2 показаны этапы создания таблицы в системе Microsoft SQL Server Management Studio.

Рисунок 2. Окно Microsoft SQL Server Management Studio. Этапы формирования запроса: 1 — создание файла «SQL Query 2.sql»; 2 — набор SQL-запроса; 3 — выполнение; 4 — результирующая таблица

  ⇑

2.3. Пример создания таблицы учета заработной платы и отчислений в организации

Условие задачи

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

NamePositionAccrued salaryDate of employmentGender
Johnson J.Manager3200.0001.02.2128M
Petrova M.P.Clerk2857.3502.03.2125F
Williams J.Secretary3525.7701.08.2127F
Wilson K.Recruiter1200.6322.07.2125F

Таблицу реализовать так, чтобы обеспечивалась уникальность записей.

 

Решение.

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

После модификации поля таблицы будут иметь следующие свойства.

 

Название поля (атрибут)Тип данныхДополнительные объяснения
ID_AccountIntАвтоинкремент (счетчик), первичный ключ (Primary Key), ненулевое поле (Not Null), обеспечивает уникальность записей
[Name]VARCHAR(50)Фамилия и имя, не нулевое поле (Not Null)
PositionVARCHAR(100)Должность, не нулевое поле (Not Null)
SalaryDECIMALТип, предназначенный для сохранения денежных величин
[Employment Date]DATEДата, не нулевое поле (Not Null)
GenderCHAR(1)Стать, не нулевое поле (Not Null)

В модифицированной таблице поле Salary допускает нулевые (Null) значения. Таким случаем может быть, например, когда человек принят на работу, но заработная плата ему еще не начислена. В данной ситуации временно устанавливается Null-значение. Все остальные поля обязательны для заполнения.

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

/* Create the Account table */
Create Table Account (
    ID_Account Int Not Null Primary Key,
    [Name] VarChar(50) Not Null,
    [Position] VarChar(100) Not Null,
    Salary Decimal Null,
    [Employment Date] Date Not Null,
    Gender Char(1)
)

Результат выполнения SQL-запроса показан на рисунке 3

Рисунок 3. Результат выполнения запроса на языке Transact-SQL (T-SQL)

  ⇑


Связанные темы

  • Microsoft SQL Server Management Studio 18. Пример создания простейшего запроса
  • Модификация таблиц. Оператор ALTER TABLE. Примеры

  ⇑


 

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

ru

NTA

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

2155 просмотров

При написании больших запросов зачастую требуется записать в «физическую» таблицу результаты соединения нескольких таблиц. Конечно, сделать это можно (или даже нужно) традиционным способом с применением инструкции 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-запрос, результаты которого требуется записать в таблицу.

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

Создание запросов 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 — Data to Fish

База данных / 4 сентября 2021 г.

В этом руководстве вы увидите полные шаги по созданию таблицы в SQL Server. Пример также рассматривается в демонстрационных целях.

Действия по созданию таблицы в SQL Server

Шаг 1. Создание базы данных

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

 CREATE DATABASE test_database
 

Шаг 2: Создайте таблицу

Далее создайте таблицу в своей базе данных.

Например, давайте создадим таблицу с именем « products », которая содержит 2 столбца:

  • product_name
  • цена

В таблице должны храниться следующие данные:

product_name цена
Настольный компьютер 800
Ноутбук 1200
Планшет 200
Монитор 350
Принтер 150

Где тип данных для ‘ 9Столбец 0019 product_name ‘ будет иметь вид nvarchar(50) , а тип данных для столбца price будет int (для целых чисел).

Затем вы можете создать таблицу, используя следующий запрос CREATE TABLE в своей базе данных:

 CREATE TABLE products (
product_name nvarchar(50),
цена инт
)
 

Шаг 3: Вставьте значения в таблицу

Теперь добавим следующие значения в таблицу «products»:

имя_продукта цена
Настольный компьютер 800
Ноутбук 1200
Планшет 200
Монитор 350
Принтер 150

Вы можете вставить значения в таблицу с помощью запроса INSERT INTO:

 INSERT INTO products (product_name, price)

ЦЕННОСТИ

(«Настольный компьютер», 800),
(«Ноутбук», 1200),
(«Таблетка», 200),
(«Монитор», 350),
(«Принтер», 150)
 

Шаг 4.

Убедитесь, что значения были вставлены в таблицу

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

 SELECT * FROM products
 

Вы должны получить следующие результаты:

product_name цена
Настольный компьютер 800
Ноутбук 1200
Планшет 200
Монитор 350
Принтер 150

Создайте таблицу в SQL Server с первичным ключом и столбцом идентификаторов

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

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

Например, предположим, что вы хотите воссоздать таблицу « products » со следующими тремя столбцами:

  • product_id
  • имя_продукта
  • цена

Где столбец product_id будет выбран в качестве первичного ключа  , а также столбца идентификатора .

Вот как новые продукты 9Таблица 0020 должна выглядеть так:

product_id имя_продукта цена
1 Настольный компьютер 800
2 Ноутбук 1200
3 Планшет 200
4 Монитор 350
5 Принтер 150

Теперь давайте воссоздадим эту таблицу с помощью запросов.

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

 DROP TABLE products
 

Затем заново создайте таблицу с помощью запроса CREATE TABLE:

 CREATE TABLE products (
product_id int identity(1,1) первичный ключ,
product_name nvarchar(50),
цена инт
)
 

Затем вы можете добавить записи в таблицу, выполнив этот запрос INSERT INTO:

 INSERT INTO products (product_name, price)

ЦЕННОСТИ

(«Настольный компьютер», 800),
(«Ноутбук», 1200),
(«Таблетка», 200),
(«Монитор», 350),
('Printer',150) 

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