Открыть сервис

Операторы манипуляции данными

Операторы манипуляции данными — это специальные символы, ключевые слова или грамматические конструкции в языках программирования и системах управления базами данных (СУБД), предназначенные для выполнения операций чтения, записи, изменения, удаления и преобразования информации, хранящейся в структурированном виде (таблицы, массивы, файлы). В контексте реляционных баз данных (SQL) операторы манипуляции данными образуют подмножество языка — DML (Data Manipulation Language), основными командами которого являются SELECT, INSERT, UPDATE и DELETE. В языках общего назначения (C, C++, Java, Python) к подобным операторам относятся арифметические, логические, битовые и строковые операции, а также конструкции циклов, присваивания и указатели.

Классификация операторов манипуляции данными

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

Арифметические операторы

Используются для выполнения математических вычислений над числовыми типами данных (целые и вещественные числа). Основные арифметические операторы:

  • Сложение (+) — возвращает сумму двух операндов.
  • Вычитание (-) — разность.
  • **Умножение (\*)** — произведение.
  • Деление (/) — частное. В языках с целочисленной арифметикой (C, Java) деление целых возвращает целый результат, дробная часть отбрасывается.
  • Целочисленное деление (div //) — возвращает только целую часть от деления (например, в Python, Pascal, SQL).
  • Остаток от деления (mod %) — возвращает остаток (модуль) от деления.

Примеры: 5 + 3 = 8, 13 // 4 = 3, 13 % 4 = 1.

Операторы сравнения (реляционные операторы)

Используются для сопоставления двух значений. Результатом всегда является логическое значение (истина или ложь). Основные операторы:

  • Равно (==) — проверяет тождественность операндов.
  • Не равно (!=, <>, ¬=) — проверка на неравенство.
  • Больше (>) и меньше (<).
  • Больше или равно (>=) и меньше или равно (<=).

В языках SQL и некоторых скриптовых языках (JavaScript, PHP) существует также оператор строгого равенства (===), который исключает автоматическое приведение типов.

Логические операторы

Служат для построения составных условий и проверки множества критериев. Основные логические операторы:

  • И (AND, &&, and) — возвращает истину, если оба операнда истинны.
  • ИЛИ (OR, ||, or) — возвращает истину, если хотя бы один из операндов истинен.
  • НЕ (NOT, !, not) — меняет логическое значение операнда на противоположное.

В SQL также используется оператор BETWEEN, который позволяет проверить вхождение значения в диапазон.

Битовые операторы

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

  • Побитовое И (&) — устанавливает бит в 1, если в обоих операндах он равен 1.
  • Побитовое ИЛИ (|) — устанавливает бит в 1, если хотя бы у одного операнда этот бит равен 1.
  • Исключающее ИЛИ (XOR, ^) — устанавливает бит в 1, если в операндах он разный.
  • Побитовое НЕ (~) — инвертирует все биты.
  • Сдвиг влево (<<) — умножает значение на 2 в степени числа битов сдвига.
  • Сдвиг вправо (>>) — делит целое значение на 2 в степени.

Пример: 23 (10111₂) & 18 (10010₂) = 16 (10000₂).

Операторы присваивания

Используются для занесения значения в переменную, ячейку памяти или поле записи. Простое присваивание обозначается символом =. Составные операторы присваивания (например, +=, -=, *=) выполняют арифметическую или битовую операцию с текущим значением переменной и новым операндом, а затем присваивают результат этой же переменной.

Пример: x += 5 эквивалентно x = x + 5.

Операторы ввода-вывода (I/O)

Специальные конструкции языков программирования (функции, методы), которые обеспечивают обмен данными между программой и внешними устройствами (клавиатура, дисплей, файл, сеть). К операторам ввода относятся scanf (C), input (Python), ReadLine (C#), read (Pascal). К операторам вывода — printf (C), print (Python, PHP), Console.WriteLine (C#).

Операторы манипуляции строками

Специализированные функции или перегруженные операторы для работы со строками:

  • Конкатенация (+)объединение двух строк в одну.
  • Подстрока — извлечение части строки по индексу или диапазону.
  • Поиск — нахождение вхождения одной строки в другой.
  • Замена — замена всех вхождений шаблона на новую строку.

Операторы манипуляции данными в языках SQL

Язык структурированных запросов (SQL) имеет отдельный класс операторов DML, предназначенных для работы с таблицами реляционной базы данных.

Команда SELECT

Используется для извлечения данных из таблиц. Вместе с ключевыми словами FROM, WHERE, GROUP BY, HAVING, ORDER BY она позволяет строить сложные запросы с фильтрацией, группировкой, сортировкой и вычислением сводных значений. Пример:

``sql SELECT category, AVG(price) AS avg_price FROM products WHERE quantity > 10 GROUP BY category HAVING AVG(price) > 100 ORDER BY avg_price DESC; ``

Команда INSERT

Добавляет новые строки в таблицу. Синтаксис:

``sql INSERT INTO users (name, age, email) VALUES ('Иван', 30, 'ivan@example.com'); ``

Команда UPDATE

Обновляет существующие записи в таблице. Требует обязательного условия, иначе изменение коснётся всех строк:

``sql UPDATE accounts SET balance = balance - 50 WHERE user_id = 7; ``

Команда DELETE

Удаляет одну или несколько строк из таблицы. Без условия удаляются все записи:

``sql DELETE FROM logs WHERE created < '2023-01-01'; ``

Дополнительные операторы

В некоторых диалектах SQL существуют операторы MERGE (синхронизация данных) и UPSERT (обновление или вставка).

Операторы манипуляции данными в языках общего назначения

Операторы для работы с коллекциями

В языках C++, Java, Python, C# определены операторы индексирования [] для доступа к элементам массивов, списков и словарей. С помощью них можно читать или изменять значения по указанному индексу или ключу.

Пример на Python:

``python arr = [10, 20, 30] arr[1] = 25 # Замена второго элемента print(arr[0]) # Чтение первого элемента → 10 ``

Операторы для работы с указателями (C и C++)

  • **Оператор разыменования (\*)** — обращение к значению, находящемуся по адресу, хранящемуся в указателе.
  • Оператор взятия адреса (&) — получение адреса переменной или функции.
  • Оператор доступа к члену (->) — разыменование указателя на структуру и обращение к её полю.

Пример:

``c int a = 5; int ptr = &a; ptr = 10; // a теперь равно 10 ``

Порядок выполнения (приоритет) операторов

Во всех языках определён порядок, в котором вычисляются выражения, содержащие несколько операторов. Этот порядок называется приоритетом и ассоциативностью. Как правило, операторы с более высоким приоритетом вычисляются раньше. Арифметические операции выполняются слева направо, если у них одинаковый приоритет, и имеют следующий порядок (по убыванию приоритета в большинстве ЯП):

  1. Постфиксные операторы (a++, a--).
  2. Префиксные операторы (++a, --a, !a, -a, ~a).
  3. Арифметические: умножение, деление, остаток от деления (*, /, %).
  4. Арифметические: сложение и вычитание (+, -).
  5. Сдвиги (<<, >>).
  6. Реляционные: <, <=, >, >=, ==, !=.
  7. Битовое И (&).
  8. Битовое ИЛИ (|).
  9. Логическое И (&&, AND).
  10. Логическое ИЛИ (||, OR).
  11. Условный (тернарный) оператор (? :).
  12. Присваивания (=, +=, -=, *=, /=, %=, <<=, >>=, &=, |=, ^=).

Для изменения порядка выполнения применяются скобки.

Типичные ошибки при использовании операторов

  • Путаница между оператором присваивания и сравнения. В языках C, C++, Java использование одного знака "=" вместо "==" в условии может привести к присваиванию и неверной логике. В Python оператор "=" не допускается в условии, что исключает эту ошибку.
  • Целочисленное деление. При делении двух целых чисел результат может быть неожиданно целым (например, 5 / 2 = 2 в C без явного преобразования).
  • Логические операторы с короткой оценкой. В большинстве языков операторы && и || вычисляются по короткой схеме: если результат уже определён первым операндом, второй не вычисляется. Это может привести к пропуску побочных эффектов.
  • Изменение данных без условия в UPDATE/DELETE. В SQL выполнение UPDATE users SET name = 'Admin'; изменит все строки таблицы, что часто является серьёзной ошибкой.

Значение операторов манипуляции данными

Операторы манипуляции данными составляют основу любого алгоритма, поскольку позволяют описывать действия с переменными, полями структур, записями в базах данных и файловыми потоками. Грамотное их использование ускоряет выполнение программ и делает код более компактным и выразительным. В современных СУБД оптимизаторы запросов анализируют операторы DML и выбирают наиболее эффективные планы выполнения, а в языках программирования компиляторы транслируют высокоуровневые операции в машинные команды, управляющие регистрами и памятью процессора. Таким образом, операторы манипуляции данными являются ключевым связующим звеном между программистской абстракцией и низкоуровневыми аппаратными действиями.

Источники

  • Керниган Б., Ритчи Д. «Язык программирования C». — 2-е изд. — Издательский дом «Вильямс», 2007.
  • Страуструп Б. «Программирование. Принципы и практика использования C++». — ИД «Вильямс», 2012.
  • К. Дж. Дейт. «Введение в системы баз данных». — 8-е изд. — М.: Издательский дом «Вильямс», 2008.
  • ISO/IEC 9075:2016 (SQL:2016) — Standard for database language SQL.
  • Python Software Foundation. «The Python Language Reference», Version 3.12. — 2024.
  • Таненбаум Э., Остин Т. «Архитектура компьютера». — 6-е изд. — М.: «Питер», 2013.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →