Database
 sql >> база данни >  >> RDS >> Database

Как да създадете една таблица от друга таблица в SQL

Проблем:

Искате да създадете нова таблица с данни, копирани от друга таблица.

Пример:

Нашата база данни има таблица с име product с данни в следните колони:id (първичен ключ), name , category и price .

id име категория цена
105 роза цвете 5,70
108 бюро мебели 120,00
115 лале цвете 6,50
123 слънчоглед цвете 7,50
145 китара музика 300,00
155 орхидея цвете 9,50
158 флейта музика 156,00

В базата данни нека създадем нова таблица с име florist който ще съхранява следните колони:id , name и price . Тези колони идват от таблицата product но само от категорията цвете .

Важно е да отбележим, че създаваме нова таблица. Масата florist не съществува в тази база данни.

Структурата CREATE TABLE AS SELECT

За да създадете нова таблица от друга таблица, можете да използвате CREATE TABLE AS SELECT . Тази конструкция е стандартен SQL. Вижте SQL кода по-долу:

Решение 1:

CREATE TABLE florist 
AS SELECT
  *
FROM product
WHERE category = ’flower’;

Ето резултата от заявката:

id име категория цена
105 роза цвете 5,70
115 лале цвете 6,50
123 слънчоглед цвете 7,50
155 орхидея цвете 9,50

Използване на CREATE TABLE , можете да създадете нова таблица, като копирате данни от друга таблица. В този случай първо използваме CREATE TABLE клауза с името за нова таблица (в нашия пример:florist ), след това пишем AS и SELECT заявка с имената на колоните (в нашия пример:* ), и след това пишем FROM последвано от името на таблицата, от която се събират данните (в нашия пример:product ). След това можете да използвате всяка SQL клауза:WHERE , GROUP BY , HAVING и др.

Новата маса florist ще съдържа дефиницията на колоните от product таблица (id , name , category и price ). Броят на редовете е ограничен чрез използване на клауза WHERE, филтриране на записите за извличане на данни само от категорията цвете .

Структурата SELECT INTO

Друго решение е да използвате SELECT INTO . Този синтаксис е нестандартен SQL, но се поддържа от много популярни бази данни.

Решение 2:

SELECT  
  id,
  name,
  price
INTO florist
FROM product
WHERE category=’flower’;

Ето резултата:

id име цена
105 роза 5,70
115 лале 6,50
123 слънчоглед 7,50
155 орхидея 9,50

Дискусия:

Ако искате да създадете нова таблица въз основа на структурата и данните от друга таблица, можете да използвате SELECT INTO клауза. Първо напишете SELECT клауза, последвана от списък с колони (в нашия пример:id , name и price ) от съществуващата таблица (в нашия пример:product ).

Обърнете внимание, че в таблицата product . Избрахме само колоните, които ни интересуват.

След това използвайте ключовата дума INTO с името на новата таблица, която искате да създадете (в нашия пример:florist ). След това напишете ключовата дума FROM с името на съществуващата таблица (в нашия пример:product ).

Ако искате да изберете филтрирани редове от таблицата, използвайте WHERE клауза. След WHERE , напишете условията за филтриране на данните (в нашия пример:WHERE category=’flower’ ).

В този пример създаваме нова таблица florist която има по-малко колони от таблицата product (разликата е категорията на колоната). Тази нова таблица също има по-малко редове – само редовете с категорията цвете .

Разбира се, ако искате да създадете таблица, използвайки всички колони в другата таблица, можете да използвате * вместо изброяване на колоните след SELECT . Вижте примера по-долу:

Решение 2:

SELECT  
  *
INTO florist
FROM product
WHERE category=’flower’;

Ето резултата:

id име категория цена
105 роза цвете 5,70
115 лале цвете 6,50
123 слънчоглед цвете 7,50
155 орхидея цвете 9,50

Използване на SELECT INTO е лесен начин за създаване на нова таблица въз основа на съществуваща таблица в базата данни.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да групирате по година в SQL

  2. Незабавна инициализация на файл:Въздействие по време на настройката

  3. TCL команди в SQL

  4. Система за автоматично изпращане на имейл за изпращане на обобщен отчет на базата данни

  5. Свързване на PowerShell към Salesforce.com