Проблем:
Бихте искали да създадете нова таблица в база данни с данни, дефинирани чрез 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 за филтриране на записи за новата таблица.