Проблем:
Бихте искали да създадете нова таблица в база данни с данни, дефинирани чрез SQL заявка.
Пример:
Бихме искали да създадем таблицата gamer
въз основа на SQL заявка. В тази заявка избираме данни от друга таблица с име championship
представени по-долу.
id | геймър | резултат | championship_date |
---|---|---|---|
1 | Алиса | 14 | 10.08.2020 |
2 | Надзирател | 10 | 28.09.2020 |
3 | щастлив човек | 0 | 10.08.2020 |
4 | лукас | 6 | 10.08.2020 |
5 | оли | 12 | 10.08.2020 |
6 | биггеймър | 7 | 12.09.2020 |
В базата данни нека създадем нова таблица с име gamer
който ще съхранява данни във всички колони, дефинирани в таблицата championship
(id
, gamer
, score
и championship_date
).
Решение 1:
CREATE TABLE gamer AS SELECT * FROM championship;
Дискусия:
Ако искате да създадете нова таблица, първата стъпка е да използвате CREATE TABLE
клауза и името на новата таблица (в нашия пример:gamer
). След това използвайте AS
ключова дума и посочете SELECT
оператор, който избира данни за новата таблица. В нашия пример избрахме всички колони от таблицата championship
като използвате звездичката (*). Резултатът показва всички записи в таблицата championship
.
Въпреки това, ако искате да създадете таблица само с подмножество от записи, можете да посочите избраната заявка, както е в примера по-долу.
Решение 2:
CREATE TABLE gamer AS SELECT gamer, score, championship_date FROM championship WHERE championship_date <= 2020-08-10;
Ето набора от резултати:
геймър | резултат | championship_date |
---|---|---|
алиса | 14 | 10.08.2020 |
щастлив човек | 0 | 10.08.2020 |
lukas | 6 | 10.08.2020 |
оли | 12 | 10.08.2020 |
SELECT
заявката извлича само записите с championship_date
дата, равна или по-стара от 2020-08-10 (WHERE championship_date <= 2020-08-10
). Новата таблица съхранява по-малко колони, отколкото в предишния пример (SELECT gamer, score, championship_date
) без колоната id
.
Подобно решение на този проблем е да използвате SELECT INTO
клауза за създаване на нова таблица и копиране на данни от друга таблица. Разгледайте кода:
Решение 3:
SELECT gamer, score, championship_date INTO gamer FROM championship WHERE championship_date <= 2020-08-10;
Получената таблица е същата. Имайте предвид, че тази конструкция не присъства в стандарта SQL. В тази SQL команда първо пишем SELECT
, след това списъкът с колони, следваща ключовата дума INTO
, и накрая името на новата таблица, която искаме да създадем. След това можете да добавите WHERE
и други SQL клаузи като GROUP BY
или HAVING
за филтриране на записи за новата таблица.