Разберём команды SQL, которые помогут вам создать базу данных, создать в ней таблицу. Во-вторых научимся работать с этой таблицей.
Создание базы данных
Чтобы создать базу данных используется команда CREATE DATABASE <имя базы данных>. Например:
# CREATE DATABASE it_outsourcing;
Все остальные примеры будем выполнять в ней, поэтому сразу переключимся на эту базу:
# \c it_outsourcing
Создание таблицы
Основной элемент из которого состоит реляционная база данных — это таблицы. Для создания таблицы используется команда CREATE TABLE <имя таблицы> (<имя колонки> <тип колонки>, <имя колонки> <тип колонки>, …). Например создадим таблицу users для хранения списка пользователей, которых мы обслуживаем. В эту таблицу будем заносить ФИО пользователя, название его компании, его номер телефона и электронную почту:
# CREATE TABLE users (fio text, company text, phone varchar(11), email text );
Типы данных, которые можно применять, рассмотрю позже.
Наполнение таблицы строками
Строки вставляются в таблицу с помощью команды SQL INSERT INTO <имя таблицы> (перечисляем поля)
VALUES (перечисляем значения). При этом можно вставлять по одной строке или по несколько. Вставим три строки в нашу таблицу users:
# INSERT INTO users (fio, company, phone, email) VALUES ('Иванов Иван Алексеевич', 'ООО "Ромашка"', '89057362761', 'ivanov@mail.ru'), ('Донченко Иван Андреевич', 'ООО "Ромашка"', '89038276494', 'dota@yandex.ru'), ('Девин Алексей Владимирович', 'ООО "Начало"', '89069384782', 'test@yandex.ru');
Как видно из примера выше, мы вначале определяем порядок колонок (fio, company, phone, email), а затем в этом порядке вставляем значения.
При вставке строковых значений, строка всегда берётся в одинарные кавычки.
Просмотр таблицы
Посмотреть на созданную таблицу можно с помощью команды SELECT * FROM <название таблицы>. Например:
# SELECT * FROM users; fio | company | phone | email ----------------------------+---------------+-------------+---------------- Иванов Иван Алексеевич | ООО "Ромашка" | 89057362761 | ivanov@mail.ru Донченко Иван Андреевич | ООО "Ромашка" | 89038276494 | dota@yandex.ru Девин Алексей Владимирович | ООО "Начало" | 89069384782 | test@yandex.ru (3 rows)
Можно вывести определённые колонки указав их вместо звездочки:
# SELECT fio, phone FROM users; fio | phone ----------------------------+------------- Иванов Иван Алексеевич | 89057362761 Донченко Иван Андреевич | 89038276494 Девин Алексей Владимирович | 89069384782 (3 rows)
Можно вывести определённые строки с помощью WHERE <условие>:
# SELECT * FROM users WHERE company = 'ООО "Ромашка"'; fio | company | phone | email -------------------------+---------------+-------------+---------------- Иванов Иван Алексеевич | ООО "Ромашка" | 89057362761 | ivanov@mail.ru Донченко Иван Андреевич | ООО "Ромашка" | 89038276494 | dota@yandex.ru (2 rows)
В качестве условия можем указать, что значение в определённой колонке должно:
- чему-то равняется;
- быть больше или меньше определённого значения;
- содержать что-то;
- и другое.
Можем комбинировать эти методы, например:
# SELECT fio, phone FROM users WHERE company = 'ООО "Ромашка"'; fio | phone -------------------------+------------- Иванов Иван Алексеевич | 89057362761 Донченко Иван Андреевич | 89038276494 (2 rows)
А ещё можем отсортировать таблицу по какой-нибудь строке:
# SELECT fio, phone FROM users ORDER BY fio; fio | phone ----------------------------+------------- Девин Алексей Владимирович | 89069384782 Донченко Иван Андреевич | 89038276494 Иванов Иван Алексеевич | 89057362761
Условий может быть несколько, например ФИО должно содержать Иван, а телефон должен заканчиваться на 94:
# SELECT * FROM users WHERE fio ~ 'Иван' AND phone ~ '.*94$'; fio | company | phone | email -------------------------+---------------+-------------+---------------- Донченко Иван Андреевич | ООО "Ромашка" | 89038276494 | dota@yandex.ru
Знак «~» — означает что значение должно содержать, а не равняться.
Также в примере выше я показал, что в условии можно использовать регулярные выражения.
Комбинировать условия можно с помощью AND и OR.
Изменение строк
Строки в SQL таблице можно обновить, или другими словами изменить. Изменяют строки с помощью команды UPDATE <имя таблицы> SET <колонка = значение> WHERE <условие>. Например изменим номер телефона Иванову Ивану Алексеевичу:
# UPDATE users SET phone = '89057362744' WHERE fio = 'Иванов Иван Алексеевич'; UPDATE 1 it_outsourcing=# SELECT fio, phone FROM users WHERE fio = 'Иванов Иван Алексеевич'; fio | phone ------------------------+------------- Иванов Иван Алексеевич | 89057362744 (1 row)
Если не указать условие, то обновятся все строки:
# UPDATE users SET phone = '89057362744'; UPDATE 3 it_outsourcing=# select fio, phone FROM users; fio | phone ----------------------------+------------- Донченко Иван Андреевич | 89057362744 Девин Алексей Владимирович | 89057362744 Иванов Иван Алексеевич | 89057362744 (3 rows)
Удаление строк
Для удаления строк используют команду DELETE FROM <имя таблицы> WHERE <условие>. Например:
# DELETE FROM users WHERE fio = 'Донченко Иван Андреевич'; DELETE 1 # select fio, phone FROM users; fio | phone ----------------------------+------------- Девин Алексей Владимирович | 89057362744 Иванов Иван Алексеевич | 89057362744 (2 rows)
Если не указать блок WHERE, то удалятся все строки! Но очищать таблицу лучше другой командой.
Очистка таблицы
Очистка таблицы осуществляется с помощью команды TRUNCATE <имя таблицы>. Например:
# TRUNCATE users; # SELECT * FROM users; fio | company | phone | email -----+---------+-------+------- (0 rows)
Удаление таблицы
Для удаления используем команду DROP TABLE <имя таблицы>. Например:
# DROP TABLE users;
Удаление базы данных
А чтобы удалить базу данных выполняем DROP DATABASE <имя базы данных>. Но предварительно нужно отключиться от удаляемой базы:
# \c postgres # DROP DATABASE it_outsourcing;
Повторим изученные команды
- CREATE DATABASE <имя базы данных>;
- CREATE TABLE <имя таблицы> (<имя колонки> <тип колонки>, <имя колонки> <тип колонки>, …);
- SELECT <колонки> FROM <имя таблицы> WHERE <условие> ORDER BY <колонка для сортировки>;
- UPDATE <имя таблицы> SET <колонка = значение> WHERE <условие>
- DELETE FROM <имя таблицы> WHERE <условие>;
- TRUNCATE <имя таблицы>;
- DROP TABLE <имя таблицы>;
- DROP DATABASE <имя базы данных>.
Отличная статья! Всё просто и понятно.
Но вот не рассказали, как, открыв для просмотра таблицу, после этого просмотра снова вернуться в консоль?
Спасибо! Скорее всего нужно нажать клавишу «q». Когда писал статью, наверное это на автомате делал и не придал значение 🙂