Шпаргалка по SQL

Основные команды SQL, чтобы вспомнить базу.

Создание базы данных и таблиц

CREATE DATABASE database_name;
CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    ...
);

Вставка данных

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

Обновление данных

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

Удаление данных

DELETE FROM table_name
WHERE condition;

Запросы данных

Выбор данных

SELECT column1, column2, ...
FROM table_name
WHERE condition;

Сортировка данных

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC];

Группировка данных

SELECT column1, COUNT(*)
FROM table_name
GROUP BY column1;

Соединения (Joins)

Внутреннее соединение (INNER JOIN)

SELECT columns
FROM table1
INNER JOIN table2
ON table1.common_column = table2.common_column;

Левое соединение (LEFT JOIN)

SELECT columns
FROM table1
LEFT JOIN table2
ON table1.common_column = table2.common_column;

Правое соединение (RIGHT JOIN)

SELECT columns
FROM table1
RIGHT JOIN table2
ON table1.common_column = table2.common_column;

Типы данных

Числовые типы

  • INT — целое число
  • FLOAT — число с плавающей точкой
  • DECIMAL — число с фиксированной точкой

Текстовые типы

  • CHAR — строка фиксированной длины
  • VARCHAR — строка переменной длины
  • TEXT — длинный текст

Типы даты и времени

  • DATE — дата (YYYY-MM-DD)
  • DATETIME — дата и время (YYYY-MM-DD HH:MM:SS)
  • TIMESTAMP — временная метка

Основные типы связей

В реляционных базах данных связи между таблицами играют ключевую роль в организации и управлении данными. Вот основные типы связей:

1. Один-к-одному (One-to-One)

Каждая запись в одной таблице соответствует одной записи в другой таблице.

  • Пример: Таблица Пользователи и таблица Профили, где каждый пользователь имеет один профиль.
CREATE TABLE Users (
    user_id INT PRIMARY KEY,
    username VARCHAR(50)
);

CREATE TABLE Profiles (
    profile_id INT PRIMARY KEY,
    user_id INT,
    bio TEXT,
    FOREIGN KEY (user_id) REFERENCES Users(user_id)
);


2. Один-ко-многим (One-to-Many)

Одна запись в одной таблице может соответствовать нескольким записям в другой таблице.

  • Пример: Таблица Категории и таблица Продукты, где каждая категория может содержать несколько продуктов.
CREATE TABLE Categories (
    category_id INT PRIMARY KEY,
    category_name VARCHAR(50)
);

CREATE TABLE Products (
    product_id INT PRIMARY KEY,
    product_name VARCHAR(50),
    category_id INT,
    FOREIGN KEY (category_id) REFERENCES Categories(category_id)
);


3. Многие-ко-многим (Many-to-Many)

Каждая запись в одной таблице может соответствовать нескольким записям в другой таблице и наоборот. Для реализации такой связи обычно используется промежуточная таблица.

  • Пример: Таблица Студенты и таблица Курсы, где каждый студент может записаться на несколько курсов, а каждый курс может включать нескольких студентов.
CREATE TABLE Students (
    student_id INT PRIMARY KEY,
    student_name VARCHAR(50)
);

CREATE TABLE Courses (
    course_id INT PRIMARY KEY,
    course_name VARCHAR(50)
);

CREATE TABLE Enrollments (
    student_id INT,
    course_id INT,
    PRIMARY KEY (student_id, course_id),
    FOREIGN KEY (student_id) REFERENCES Students(student_id),
    FOREIGN KEY (course_id) REFERENCES Courses(course_id)
);


4. Самоссылающиеся связи (Self-Referencing)

Таблица может ссылаться сама на себя, что полезно для представления иерархий.

  • Пример: Таблица Сотрудники, где каждый сотрудник может иметь менеджера, который также является сотрудником.
CREATE TABLE Employees (
    employee_id INT PRIMARY KEY,
    employee_name VARCHAR(50),
    manager_id INT,
    FOREIGN KEY (manager_id) REFERENCES Employees(employee_id)
);


Ключи и индексы

Первичный ключ (Primary Key)

Первичный ключ — это уникальный идентификатор каждой записи в таблице. Он гарантирует, что каждая строка в таблице уникальна и может быть однозначно идентифицирована. Основные функции первичного ключа:

  1. Уникальность: Обеспечивает уникальность каждой записи в таблице.
  2. Идентификация: Позволяет однозначно идентифицировать каждую запись.
  3. Целостность данных: Предотвращает дублирование записей.
  4. Связи: Используется для создания связей между таблицами через внешние ключи.

Пример создания первичного ключа:

CREATE TABLE Users (
    user_id INT PRIMARY KEY,
    username VARCHAR(50)
);

Внешний ключ (Foreign Key)

Внешний ключ — это поле или набор полей в одной таблице, которое ссылается на первичный ключ другой таблицы. Основные функции внешнего ключа:

  1. Связи между таблицами: Обеспечивает связь между таблицами, поддерживая целостность данных.
  2. Целостность ссылок: Гарантирует, что значения внешнего ключа соответствуют значениям первичного ключа в связанной таблице.
  3. Каскадные операции: Позволяет выполнять каскадные обновления и удаления.

Пример создания внешнего ключа:

CREATE TABLE Orders (
    order_id INT PRIMARY KEY,
    user_id INT,
    order_date DATE,
    FOREIGN KEY (user_id) REFERENCES Users(user_id)
);

Уникальный ключ (Unique Key)

Уникальный ключ — это ограничение, которое обеспечивает уникальность значений в одном или нескольких столбцах таблицы. В отличие от первичного ключа, уникальный ключ может принимать значение NULL.

Пример создания уникального ключа:

CREATE TABLE Products (
    product_id INT PRIMARY KEY,
    product_name VARCHAR(50) UNIQUE
);

Индексы (Indexes)

Индексы — это структуры данных, которые улучшают скорость выполнения запросов к базе данных. Индексы создаются на одном или нескольких столбцах таблицы и позволяют быстро находить записи.

Пример создания индекса:

CREATE INDEX idx_product_name
ON Products (product_name);

Эти ключи и индексы помогают поддерживать целостность данных, оптимизировать запросы и обеспечивать эффективное управление базой данных.