В реляционных базах данных основным элементом для хранения данных является таблица.
SQL таблица состоит из строк и столбцов, где каждая строка представляет собой запись, а каждый столбец — атрибут этой записи. Давайте разберемся подробнее
В этой статье мы рассмотрим основы создания, модификации и работы с таблицами в SQL, используя более сложные примеры и технические термины.
Создание таблицы (CREATE TABLE)
Для создания новой таблицы в базе данных используется команда CREATE TABLE
. В этой команде указываются имя таблицы и список столбцов с их типами данных, а также ограничения (constraints) на эти столбцы.
Пример создания таблицы:
CREATE TABLE employees (
employee_id INT PRIMARY KEY AUTO_INCREMENT,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
hire_date DATE DEFAULT CURRENT_DATE,
salary DECIMAL(10, 2) CHECK (salary > 0),
department_id INT,
CONSTRAINT fk_department
FOREIGN KEY (department_id) REFERENCES departments(department_id)
);
В этом примере создается таблица employees
с семью столбцами. Столбец employee_id
является первичным ключом (PRIMARY KEY) и автоматически увеличивается (AUTO_INCREMENT). Столбцы first_name
и last_name
не могут быть NULL (NOT NULL). Столбец email
имеет уникальное ограничение (UNIQUE). Столбец salary
имеет ограничение CHECK, чтобы значение было больше нуля. Столбец department_id
является внешним ключом (FOREIGN KEY), ссылающимся на department_id
в таблице departments
.
Вставка данных в таблицу (INSERT INTO)
Для добавления новых записей в таблицу используется команда INSERT INTO
. Можно вставить несколько записей за один запрос, что повышает производительность.
Пример вставки нескольких записей:
INSERT INTO employees (first_name, last_name, email, hire_date, salary, department_id)
VALUES
('John', 'Doe', Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript. ', '2023-01-15', 75000, 5),
('Jane', 'Smith', Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript. ', '2023-02-20', 80000, 3),
('Emily', 'Davis', Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript. ', '2023-03-10', 72000, 4);
Этот запрос добавляет три новых записи в таблицу employees
.
Обновление данных в таблице (UPDATE)
Для изменения существующих данных в таблице используется команда UPDATE
. Обновление может быть условным, включающим подзапросы (subqueries) и использование коррелированных подзапросов (correlated subqueries).
Пример обновления с подзапросом:
UPDATE employees
SET salary = salary * 1.1
WHERE department_id = (SELECT department_id FROM departments WHERE department_name = 'Sales');
Этот запрос увеличивает зарплату сотрудников на 10%, если они работают в отделе "Sales".
Удаление данных из таблицы (DELETE)
Для удаления записей из таблицы используется команда DELETE
. Удаление может быть условным, включающим сложные условия и подзапросы.
Пример удаления с подзапросом:
DELETE FROM employees
WHERE department_id IN (SELECT department_id FROM departments WHERE department_name = 'HR' AND location = 'New York');
Этот запрос удаляет всех сотрудников, которые работают в отделе "HR" и расположены в Нью-Йорке.
Изменение структуры таблицы (ALTER TABLE)
Для изменения структуры таблицы, добавления или удаления столбцов, изменения типа данных столбцов используется команда ALTER TABLE
. Можно также добавить или удалить ограничения.
Пример добавления нового столбца:
ALTER TABLE employees
ADD phone_number VARCHAR(15) DEFAULT 'Not Provided';
Этот запрос добавляет новый столбец phone_number
в таблицу employees
с значением по умолчанию 'Not Provided'.
Пример добавления ограничения:
ALTER TABLE employees
ADD CONSTRAINT chk_salary CHECK (salary >= 50000);
Этот запрос добавляет ограничение CHECK, чтобы зарплата была не меньше 50000.
Удаление таблицы (DROP TABLE)
Для удаления таблицы из базы данных используется команда DROP TABLE
. Можно также использовать команду CASCADE
для удаления связанных объектов.
Пример удаления таблицы:
DROP TABLE employees CASCADE;
Этот запрос полностью удаляет таблицу employees
и все связанные с ней объекты.
Индексы (INDEXES)
Индексы используются для повышения производительности поиска данных в таблице. Создание индекса может значительно ускорить выполнение запросов SELECT. Индексы могут быть уникальными (UNIQUE), кластерными (CLUSTERED) и некластерными (NON-CLUSTERED).
Пример создания уникального индекса:
CREATE UNIQUE INDEX idx_email
ON employees (email);
Этот запрос создает уникальный индекс idx_email
на столбце email
таблицы employees
.
Внешние ключи (FOREIGN KEY)
Внешние ключи используются для обеспечения ссылочной целостности между таблицами. Внешний ключ указывает, что значения в одном столбце должны соответствовать значениям в столбце другой таблицы. Это помогает предотвратить нарушение данных.
Пример создания таблицы с внешним ключом:
CREATE TABLE departments (
department_id INT PRIMARY KEY,
department_name VARCHAR(100) NOT NULL,
location VARCHAR(100)
);
CREATE TABLE employees (
employee_id INT PRIMARY KEY AUTO_INCREMENT,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
hire_date DATE DEFAULT CURRENT_DATE,
salary DECIMAL(10, 2) CHECK (salary > 0),
department_id INT,
CONSTRAINT fk_department
FOREIGN KEY (department_id) REFERENCES departments(department_id)
ON DELETE SET NULL
ON UPDATE CASCADE
);
В этом примере создаются две таблицы: departments
и employees
, где department_id
в таблице employees
является внешним ключом, ссылающимся на department_id
в таблице departments
. При удалении строки из departments
соответствующий department_id
в employees
будет установлен в NULL, а при обновлении значения department_id
в departments
оно будет автоматически обновлено в employees
.
Заключение
Таблицы являются основным элементом для хранения данных в реляционных базах данных. Понимание того, как создавать, изменять и управлять таблицами, является ключевым навыком для работы с SQL.
Создание таблиц, управление данными, создание индексов и внешних ключей — все это важные аспекты работы с реляционными базами данных, обеспечивающие целостность и производительность данных.
Владение этими техниками позволяет эффективно работать с данными, обеспечивая высокую производительность и надежность приложений.
Реклама Yandex |
|
Внимание! Данная статья не является официальной документацией.Использование информации необходимо выполнять с осторожностью, используя для этого тестовую среду.
Если у вас есть вопросы о построении современных систем резервного копирования, репликации, синхронизации данных и защиты от программ вымогателей обратитесь в нашу компанию для получения консультации о современных технологиях резервного копирования и восстановления данных. Наша компания имеет более чем 20-летний опыт в этой области. |
Десять лучших практик резервного копирования в Казахстане
- Перенос гипервизора Proxmox на новый физический сервер
- Использование OpenShift для контейнеров Docker — глубокое погружение
- Использование Wazuh для мониторинга безопасности Proxmox
- Установка, настройка и использование Fail2Ban на zVirt
- Установка, настройка и использование Graylog Community Edition в Proxmox
- Установка, настройка и использование Elasticsearch в Proxmox
- Установка, настройка и использование Kibana в Proxmox
- Установка, настройка и использование Logstash в Proxmox
- Использование ИИ для анализа логов Proxmox
- Установка, настройка и использование Ceph в OpenStack