Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Базы данных и SQL

Назначение языка SQL

SQL (Structured Query Language - язык структурированных запросов) - набор инструкций для управления реляционными базами данных (т.е. такими, в которых информация хранится в виде таблиц). SQL состоит из инструкций, приближенных к командам на обычном английском языке (предложения в повелительном наклонении), например:

SELECT FIRSTNAME, LASTNAME FROM USERS WHERE AGE > 30;

Это означает "выбрать имя и фамилию из каждой записи таблицы 'Пользователи', где возраст больше 30 лет".

Инструкции SQL можно разделить на три группы:

  1. изменяющие базу данных (создание таблиц, запросов, других объектов, а также их изменение, удаление с помощью ключевых слов create, alter, drop);
  2. изменяющие данные в таблицах (insert, update, delete);
  3. запросы по фильтру (select... where...);
  4. агрегирующие (группирующие) запросы для подсчета сумм, средних значений и т.д. (select... group by...).

Язык SQL поддерживается большинством современных популярных реляционных СУБД (систем управления базами данных), в том числе:

  • Microsoft Access;
  • MSSQL;
  • MySQL;
  • PostgreSQL;
  • SQLite.
Замечание 1

В различных программных продуктах синтаксис SQL может различаться. Инструкции для разных СУБД могут быть несовместимыми.

Создание объектов баз данных с помощью SQL

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

CREATE BOOKS (ID INT PRIMARY KEY, TITLE TEXT NOT NULL, AUTHOR TEXT);
Замечание 2

SQL-инструкции в большинстве реализаций заканчиваются точкой с запятой.

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

«Базы данных и SQL» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

В созданной таблице имеются колонки (поля) для хранения целочисленного идентификатора ID (первичный ключ), названия книги TITLE (произвольный непустой текст) и AUTHOR (текстовое поле, которое может быть пустым, т.к. не у каждой книги есть определенный автор). Первичный ключ - уникальный идентификатор (как правило, число), по которому легко найти запись. Ключи служат для связывания таблиц друг с другом. Если таблицы связаны по ключу, то в колонке зависимой таблицы должны упоминаться только занчения, заданные в ключевой колонке таблицы, от которой она зависит.

Если мы решим изменить структуру таблицы - следует задействовать инструкцию со словом ALTER:

ALTER TABLE BOOKS
ADD COLUMN 
ISSUEYEAR INT;

Этой инструкцией мы добавляем поле ISSUEYEAR целочисленного типа, в котором будет храниться год выпуска книги.

Если таблица нам больше не нужна, мы можем удалить ее из базы данных со вcем содержимым:

DROP TABLE BOOKS;

СУБД, как правило, следят за тем, чтобы при удалении таблицы не пострадали те, с которыми она связана: в таком случае операция будет прервана и появится сообщение об ошибке.

Изменение данных в таблице и выборки из таблиц

Заполнять таблицу данными можно с помощью инструкций INSERT:

INSERT INTO BOOKS VALUES (1,'Толстой Л.Н', 'Князь Серебряный', 1977);

В данной записи содержится фактическая ошибка: эту книгу написал не Л.Н. Толстой, а А.К. Толстой, поэтому воспользуемся инструкцией UPDATE для исправления:

UPDATE BOOKS SET AUTHOR = 'Толстой А.К.' WHERE ID=1;

При необходимости можно удалить неактуальную запись (например, если данная книга выбыла из библиотечного фонда):

DELETE FROM BOOKS WHERE ID=1;

Чтобы выбрать из таблицы строки по какому-либо критерию, следует задействовать инструкцию SELECT и фильтр (WHERE). Например, найдем все строки, где упоминается автор по фамилии Толстой Л.Н:

SELECT * FROM BOOKS WHERE AUTHOR = 'Толстой Л.Н';

Знак звездочки означает, что показать нужно все поля. Если интересует какие-то конкретные, можно сформировать запрос по-другому:

SELECT AUTHOR, TITLE FROM BOOKS WHERE AUTHOR = 'Толстой Л.Н.';

Чтобы найти строки, где упоминаются и другие авторы по фамилии Толстой (не только Л.Н.), используют оператор LIKE:

SELECT * FROM BOOKS WHERE AUTHOR LIKE '%Толстой%' SORT BY AUTHOR;

Знаки процента (%) здесь означают, что вместо них может быть любая комбинация букв и цифр, т.е. будут найдены записи с авторами "Толстой Л.Н", "Толстой А.К.", "Толстой А.Н.", просто "Толстой". Благодаря оператору SORT BY записи будут еще и отсортированы по именам авторов.

Замечание 3

Наиболее часто используемые запросы могут быть сохранены как отчеты (VIEW), например:

CREATE VIEW TOLSTOY AS SELECT * FROM BOOKS WHERE AUTHOR LIKE '%Толстой%';

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

SELECT COUNS(*) FROM BOOKS WHERE AUTHOR LIKE '%Толстой%' GROUP BY AUTHOR;

Данный запрос покажет, сколько из книг из принадлежащих библиотеке написал каждый из писателей Толстых, поскольку в конце дополнительно указан оператор GROUP BY.

Дата написания статьи: 24.01.2019
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot