Итак, вы узнали, как извлекать и агрегировать существующие данные из базы данных. Но в какой-то момент вам, вероятно, потребуется отредактировать данные в базе данных или добавить новые таблицы. Например, вам может понадобиться изменить значение, переименовать столбец или даже удалить таблицу. Команды такого рода называются операторами «DDL» или «языка определения данных».
В этом модуле вы узнаете, как:
- Создание и удаление таблиц с помощью SQL
- Заполнить таблицы новыми данными
- Обновить существующие данные в таблицах
- Добавлять и удалять строки и столбцы
Убедитесь, что вы завершили модули 1–3, прежде чем приступать к модулю 4.
Создание таблицы
Мы рассмотрели, как создать таблицу из файла и как создать новую таблицу с помощью веб-интерфейса bit.io в модуле 1. В этом разделе мы обсудим, как создать и заполнить таблицу с помощью SQL.
Санта выбрал свои подарки для пингвинов и хочет хранить их на новом столе. Вы можете создать новую пустую таблицу командой CREATE TABLE. Создание таблицы в Postgres состоит из трех основных частей: имя таблицы, имена столбцов и типы столбцов. Базовый шаблон:
CREATE TABLE table_name (column_1 columnINSERT INTO
type, column_2 columnDROP TABLE table_name;
type, …)
Итак, чтобы создать пустую таблицу для Санты, чтобы записывать подарки пингвинов по островам и видам, используйте:
CREATE TABLE penguin_gifts ( island TEXT, species TEXT, gift TEXT );
Новая таблица появится в списке таблиц, но в ней еще нет строк.
Заполнение таблицы
Вы можете заполнить таблицы в postgres оператором INSERT INTO. Далее таблица будет заполнена подарками для пингвинов каждого острова. Все пингвины Торгерсена получают шарфы; все пингвины Dream получают маленькие варежки; и все пингвины Биско получают большие свитера.
INSERT INTO penguin_gifts (island, species, gift) VALUES ('Torgersen', 'Gentoo', 'Scarf'), ('Torgersen', 'Chinstrap', 'Scarf'), ('Torgersen', 'Adelie', 'Scarf'), ('Dream', 'Gentoo', 'Small Mittens'), ('Dream', 'Chinstrap', 'Small Mittens'), ('Dream', 'Adelie', 'Small Mittens'), ('Biscoe', 'Gentoo', 'Large Sweater'), ('Biscoe', 'Chinstrap', 'Large Sweater'), ('Biscoe', 'Adelie', 'Large Sweater');
И теперь в нашей таблице есть данные!
Обратите внимание на структуру оператора INSERT INTO
. Он включает в себя имя таблицы, имена столбцов и вставляемые значения:
INSERT INTO table_name (column_names) VALUES (row_1), (row_2), … ;
Удаление таблиц
Вы можете удалить таблицу с помощью DROP TABLE table_name;
. Попробуйте!
Упражнение:
- Создайте таблицу с названием «рост» со столбцами «имя», «возраст» и «рост» с помощью команды
CREATE TABLE
. Типы столбцов должны бытьtext
,float
иfloat
соответственно. - Напишите оператор
INSERT
, чтобы добавить в таблицу следующие данные:
name | age | height -------------------- John | 25.1 | 183.2 Jane | 27.4 | 171.0
Теперь удалите таблицу с помощью команды DROP TABLE
.
Редактирование таблиц
Обновить существующие значения таблицы
Посмотрев на совокупные данные, которые вы собрали в модуле 3, Санта решил, что он не может с чистой совестью просто распределить подарки по островам. Пингвины Адели есть на всех трех островах — что самые маленькие из пингвинов Палмера должны делать с большими свитерами? И шарфы на Торгерсене не будут так красиво смотреться с их короткими клювами! Санта решил, что эти пингвины должны получить то, что все пингвины действительно хотят на Рождество: iPad. Нам нужно соответствующим образом обновить таблицу penguin_gifts. Делаем это командой UPDATE
:
UPDATE table_name SET column = new_value WHERE condition;
Чтобы назначить iPad пингвинам Адели, нам нужно:
UPDATE penguin_gifts SET gift = 'iPad' WHERE species = 'Adelie';
Обновленная таблица выглядит так:
Упражнение. Санта допустил ошибку. У него не хватает iPad на всех пингвинов Адели. Он решил, что с их короткими ластами они, вероятно, будут достаточно маленькими варежками. Обновите таблицу penguin_gifts
, чтобы пингвины Адели на острове Биско получили маленькие варежки. Подсказка: предложение WHERE
для UPDATE
s работает так же, как и для SELECT
s. Вы можете указать несколько условий с помощью ключевого слова AND
.
Удалить строки
Чтобы удалить строку, используйте команду DELETE
следующим образом:
DELETE FROM table_name WHERE condition;
Внимание! Обязательно включите предложение WHERE, иначе вы можете случайно удалить все данные из таблицы.
Деду Морозу все еще трудно понять, что подарить пингвинам Адели, поэтому давайте пока полностью отбросим эти строки и начнем сначала.
DELETE FROM penguin_gifts WHERE species='Adelie'
Что дает нам:
Упражнение. Повторно добавьте строки для пингвинов Адели для каждого острова. Торгерсен Адели получает iPad; Адели мечты получают маленькие варежки; и Биско Адели получают шляпы.
Подсказка: добавление одной строки выглядит следующим образом
INSERT INTO penguin_gifts (island, species, gift) VALUES ('Torgersen', 'Adelie', 'iPad')
Конечный результат должен выглядеть следующим образом:
Добавление столбцов
Вы можете использовать команды ALTER TABLE
и ADD COLUMN
для добавления новых столбцов. Как и при создании таблицы, при добавлении нового столбца необходимо указать тип столбца. Давайте добавим новый столбец в penguin_gifts
для price
, чтобы помочь Санте с бухгалтерией. Мы можем сделать это следующим образом:
ALTER TABLE penguin_gifts ADD COLUMN price float;
И добавьте значения с помощью подхода UPDATE
, изученного выше.
UPDATE penguin_gifts SET price = 14.99 WHERE gift = 'Small Mittens';
Который дает:
Упражнение. Введите цены на оставшиеся товары. Цены:
- Шарф: 50,00
- iPad: 449,00
- Шляпа: 23,45
- Большой свитер: 114,99
После этого ваша таблица должна выглядеть так:
Переименовать столбцы и таблицы
Давайте изменим имя столбца price
на retail_price
, используя операторы ALTER TABLE
и RENAME
:
ALTER TABLE penguin_gifts RENAME price TO retail_price;
И переименуйте таблицу penguin_gifts
в gifts
с помощью:
ALTER TABLE penguin_gifts RENAME TO gifts;
Напомним, что вы также можете переименовывать таблицы с помощью веб-интерфейса. После внесения этих изменений ваша база данных должна выглядеть так:
Санта получает специальные предложения на подарки, и на самом деле ему не нужна колонка retail_price
. Давайте завершим этот раздел, опустив его.
ALTER TABLE gifts DROP COLUMN retail_price;
Ресурсы
Теперь переходим к Модулю 5: Присоединения.