PostgreSQL - Синтаксис
Здравствуйте, будущие маги баз данных! Сегодня мы окунемся в神奇 мир синтаксиса PostgreSQL. Не волнуйтесь, если вы новички в программировании – я буду вашим дружественным проводником в этом приключении. Так что возьмите свои виртуальные палочки (клавиатуры), и начнем!
SQL-запрос
Прежде чем мы перейдем к конкретике PostgreSQL, давайте поговорим о SQL-запросах в общем. SQL, или Structured Query Language, resembles a spell book for databases. Это язык, который мы используем для общения с нашей базой данных и управления ею.
Основная структура
SQL-запрос обычно follows this structure:
COMMAND action_to_perform
[ON object]
[WHERE conditions];
Давайте разберем это:
-
COMMAND
: Это то, что вы хотите сделать (например, SELECT, INSERT, UPDATE и т.д.) -
action_to_perform
: Это specifies what you're doing with the command -
ON object
: Это可选的 и specifies which database object you're working with -
WHERE conditions
: Это также可选ное и позволяет вам устанавливать конкретные условия
Пример
Вот простой пример:
SELECT first_name, last_name
FROM employees
WHERE department = 'IT';
В этом заклинании... я mean, запросе:
-
SELECT
是我们的命令 -
first_name, last_name
это то, что мы хотим получить -
FROM employees
告诉我们, из какой таблицы мы получаем данные -
WHERE department = 'IT'
是我们的条件, фильтрующий сотрудников ИТ-отдела
SQL-команды PostgreSQL
Теперь, когда мы рассмотрели основы, давайте посмотрим на некоторые конкретные команды PostgreSQL. Представьте их как разные заклинания в вашем SQL-справочнике!
Язык определения данных (DDL) Команды
Эти команды используются для определения и изменения структуры ваших базовых объектов данных.
Команда | Описание | Пример |
---|---|---|
CREATE | Создает новый базовый объект | CREATE TABLE students (id INT, name VARCHAR(50)); |
ALTER | Модифицирует существующий базовый объект | ALTER TABLE students ADD COLUMN age INT; |
DROP | Удаляет базовый объект | DROP TABLE students; |
TRUNCATE | Удаляет все данные из таблицы | TRUNCATE TABLE students; |
Давайте рассмотрим более детальный пример CREATE:
CREATE TABLE wizards (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
house VARCHAR(50),
wand_type VARCHAR(50),
enrollment_date DATE
);
Это создает таблицу 'wizards' с колонками для id, имени, дома, типа палочки и даты зачисления. Тип SERIAL
для id означает, что он будет автоматически увеличиваться для каждого нового входа.
Язык манипулирования данными (DML) Команды
Эти заклинания... эр, команды мы используем для работы с данными внутри наших таблиц.
Команда | Описание | Пример |
---|---|---|
SELECT | Получает данные из одной или нескольких таблиц | SELECT * FROM wizards; |
INSERT | Добавляет новые данные в таблицу | INSERT INTO wizards (name, house) VALUES ('Harry Potter', 'Gryffindor'); |
UPDATE | Модифицирует существующие данные в таблице | UPDATE wizards SET house = 'Slytherin' WHERE name = 'Draco Malfoy'; |
DELETE | Удаляет данные из таблицы | DELETE FROM wizards WHERE name = 'Voldemort'; |
Давайте рассмотрим более сложный SELECT запрос:
SELECT w.name, w.house, s.subject
FROM wizards w
JOIN subjects s ON w.id = s.wizard_id
WHERE w.house = 'Ravenclaw'
ORDER BY w.name;
Этот запрос:
- Выбирает имя и дом магов, а также их предметы
- Объединяет таблицу wizards с таблицей subjects
- Фильтрует только для студентов Ravenclaw
- Сортирует результаты по имени мага
Язык управления данными (DCL) Команды
Эти команды resemble security spells of our database, controlling access and permissions.
Команда | Описание | Пример |
---|---|---|
GRANT | Даёт конкретные привилегии пользователю | GRANT SELECT ON wizards TO student_user; |
REVOKE | Удаляет конкретные привилегии у пользователя | REVOKE INSERT ON wizards FROM student_user; |
Команды управления транзакциями
Эти команды помогают нам управлять транзакциями - группами SQL-запросов, которые должны выполняться вместе.
Команда | Описание | Пример |
---|---|---|
BEGIN | Начинает транзакцию | BEGIN; |
COMMIT | Сохраняет изменения транзакции | COMMIT; |
ROLLBACK | Отменяет изменения транзакции | ROLLBACK; |
Вот как вы можете использовать их на практике:
BEGIN;
UPDATE account SET balance = balance - 100 WHERE id = 1;
UPDATE account SET balance = balance + 100 WHERE id = 2;
COMMIT;
Эта транзакция перечисляет 100 единиц из счета 1 на счет 2. Если какая-либо часть этого fails, мы можем использовать ROLLBACK для отмены всех изменений.
Утилиты Команды
PostgreSQL также имеет некоторые удобные утилиты команды:
Команда | Описание | Пример |
---|---|---|
EXPLAIN | Показывает план выполнения запроса | EXPLAIN SELECT * FROM wizards; |
VACUUM | Удаляет мусор и optionally analyzes a database | VACUUM wizards; |
Команда EXPLAIN особенно полезна для оптимизации ваших запросов. Это resembles having a crystal ball that shows you how PostgreSQL plans to execute your query!
EXPLAIN SELECT * FROM wizards WHERE house = 'Hufflepuff';
Это покажет вам план запроса, помогая вам понять, как PostgreSQL обрабатывает ваш запрос и где вы можете оптимизировать.
И вот оно,年轻的 SQL ученики! Мы рассмотрели базовую синтаксис и команды PostgreSQL. Помните, как любое хорошее заклинание, овладение SQL требует практики. Не бойтесь экспериментировать и пробовать различные команды. Before you know it, вы будете вызывать сложные запросы с легкостью!
В следующий раз мы погрузимся глубже в мистическое искусство проектирования баз данных и avanzado запросы. Пока что, пусть ваши запросы будут быстрыми, а результаты обильными!
Credits: Image by storyset