PostgreSQL - Синтаксис

Здравствуйте, будущие маги баз данных! Сегодня мы окунемся в神奇 мир синтаксиса PostgreSQL. Не волнуйтесь, если вы новички в программировании – я буду вашим дружественным проводником в этом приключении. Так что возьмите свои виртуальные палочки (клавиатуры), и начнем!

PostgreSQL - Syntax

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];

Давайте разберем это:

  1. COMMAND: Это то, что вы хотите сделать (например, SELECT, INSERT, UPDATE и т.д.)
  2. action_to_perform: Это specifies what you're doing with the command
  3. ON object: Это可选的 и specifies which database object you're working with
  4. 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;

Этот запрос:

  1. Выбирает имя и дом магов, а также их предметы
  2. Объединяет таблицу wizards с таблицей subjects
  3. Фильтрует только для студентов Ravenclaw
  4. Сортирует результаты по имени мага

Язык управления данными (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