Работа с базами данных требует от разработчика и системного администратора определенных знаний. Особенно это касается реляционных БД. Такие базы управляются при помощи специальных команд – запросов, написанных на SQL.
Далее предстоит поближе познакомиться с основными понятиями БД, а также с СУБД и SQL. Рассмотрим основные запросы для оперирования базами данных, поближе познакомимся с привилегиями. Особое внимание будет уделено операции the grant on. Представленная далее информация предназначается не только для опытных специалистов, но и для новичков, которые только начинают разбираться в основах работы БД.
База данных – что это
Перед полноценным погружением в основы выполнения операций в базах данных необходимо изучить несколько ключевых понятий. Они помогут быстрее вникнуть в суть поставленных перед разработчиком задач.
Первое, на что необходимо обратить внимание – базы данных (the databases). Так называют некоторый набор информации, который структурирован определенным образом. Это данные, представленные в упорядоченной форме. Чаще всего предстают перед администраторами и разработчиками в виде электронных таблиц и связями между ними.
Разновидности
The databases могут быть разными. В зависимости от типа БД будет меняться процесс оперирования информацией. Существует следующая классификация:
- Иерархические. Наиболее простой вариант. В такой структуре записи будут отходить от «родителя» как ветви. Здесь применяется тот же принцип, что и в случае с папками на компьютере. Каждая запись имеет физическую связь только с одной предыдущей. В иерархических DB не поддерживается отношение «многие ко многим».
- Сетевые. Образовывают общий граф. Каждая запись может иметь более одного «родителя».
- Объектно-ориентированные. В них представляется the information о реальных вещах в виде объектов с уникальными идентификаторами (они называются индексами). Состояние элемента удается описывать посредством атрибутов, его поведение – через так называемые методы. Допускается сбор компонентов с одинаковыми атрибутами и свойствами в единые классы.
- Реляционные. Это – наиболее распространенный вариант, с которым работают как новички, так и уже опытные разработчики/системные администраторы. Реляционные БД – это хранилища информации, реализованные в виде таблиц. Через них устанавливаются связи между компонентами. Таблицы обладают полем для внешнего ключа со ссылками на другие таблицы. Реляционные БД гибкие и хорошо организованные, благодаря чему они пользуются спросом для большинства типов данных.
- Нереляционные. The DB такого типа называются еще NoSQL. Связано это с тем, что они будут управляться специальными запросами, которые отличаются от SQL.
Это – основная классификация БД. Далее предстоит работать с реляционными таблицами и оперировать ими.
The SQL (the Structured Query Language) – это язык структурированных запросов. Он является декларативным. Применяется для модификации, управления, создания и удаления информации в реляционных БД.
The SQL – язык, на котором нельзя написать полноценное приложение. Он служит для управления информацией в БД и таблицах, выстраивании связей и «взаимоотношений». Это информационно-логическое средство.
Изначальное применение the SQL сводилось к:
- созданию новых таблиц в БД;
- изменению имеющихся записей;
- удалению информации;
- добавлению новых сведений в таблицы;
- выборке записей из одной или нескольких таблиц в зависимости от имеющегося условия;
- изменению табличных структур.
Текущий query language стал более сложным – в нем появились совершенно новые конструкции, привилегии и другие функции. С его помощью можно описывать и управлять новыми хранимыми объектами (триггерами, представлениями, индексами, хранимыми процедурами и так далее). Сейчас соответствующий язык больше напоминает «классический» язык разработки, но применяется он только относительно баз информации реляционного характера.
Понятие СУБД
Изучая the grant on и другие команды для различных операций с таблицами, стоит обязательно обратить внимание на понятие СУБД. В зависимости от системы управления базами данных будет меняться концепция реализации той или иной.
СУБД – это совокупность программных и лингвистических средств общего/специального назначения, которые обеспечивают управление созданием и дальнейшим использованием the databases.
СУБД – комплекс программ, который дает возможность создать базу информации, а затем управлять имеющимися записями:
- обновлять;
- выбирать;
- удалять;
- вставлять.
Существуют различные варианты СУБД – они могут поддерживать разнообразные операции и процедуры, инструменты и функциональность. Далее работа будет в the grant on и другими командами SQL будет базироваться на двух достаточно распространенных программах – the MySQL и the PostgreSQL.
PostgreSQL
PostgreSQL – свободная объектно-реляционная СУБД. Она поддерживается для основной массы UNIX-подобных систем, включая AIX, BSD, IRIX и другие. Соответствующее программное обеспечение работает на Windows, Linux и MacOS.
Проект имеет открытый исходный код и распространяется совершенно бесплатно. За счет the PostgreSQL удается создавать, хранить, а также работать с БД при помощи SQL-запросов. Программное обеспечение выделяется поддержкой разнообразных форматов информации, а также соответствием ACID. The PostgreSQL дает возможность разработчику и системному администратору работать с большим объемом данных, ведь размер the DB в виде одной таблицы может достигать 32 ГБ. Скорость обработки информации будет напрямую зависеть от имеющейся на задействованном оборудовании оперативной памяти.
Характеристика MySQL
При изучении the grant on и других запросов SQL, пользователи могут сталкиваться с различными СУБД. Еще один популярный вариант средств управления – это the MySQL. Это свободная реляционная СУБД, права на которую принадлежат компании Oracle. От предыдущего пакета приложений соответствующий вариант отличается ориентированностью. PostgreSQL – объектно-реляционное ПО, MySQL – только реляционное.
Распространяется the MySQL свободно – программисты часто создают дополнительные функции и инструменты «под заказ». Соответствующая СУБД позволяет работать с SQL queries и является наилучшим решением как для малых, так и для средних проектов. Входит в состав некоторых серверов. Служит основополагающим компонентом в клиент-серверных моделях. Дистрибутив рассматриваемого ПО включает в свой состав специальную внутреннюю библиотеку, за счет которой удается сформировать внутренний сервер и встраивать СУБД в автономные приложения.
С особо крупными базами информации MySQL не работает – такая возможность есть, но она отражается на быстродействии. Для небольших и средних объемов данных рекомендуется выбирать именно это программное обеспечение.
Команды SQL
Далее предстоит познакомиться с grad select и другими особенностями для полноценной работы с SQL-запросами. Перед детальным рассмотрением привилегий каждый администратор и разработчик должен освоить основные функции и операции с БД.
Условно каждый оператор может относиться к одному из 4-х видов:
- DDL – команды, необходимые для создания объектов в таблицах и описания структур;
- DML – операторы, используемые для корректировки информации;
- DLC – специальные команды, предоставляющие доступ к записям (сюда относятся привилегии);
- TCL – операторы, отвечающие за манипулирование транзакциями.
Далее предстоит рассмотреть каждый предложенный «блок», заострив внимание на привилегиях. Соответствующее направление имеет особую значимость в плане обеспечения информационной безопасности.
Категория DDL
DDL – это команды, которые служат базовыми для работы с любой БД. Сюда можно отнести такие записи как:
- Create. Оператор, отвечающий за непосредственное создание объектов. За счет create пользователи могут создавать the table и базы информации. Форма записи: create table «название_таблицы» или create database «имя_БД» соответственно.
- Alter. Оператор, который необходим для корректирования уже созданных БД-объектов. Пример использования (the example) – это правка названия имеющейся таблицы:
Это – начальные команды, на базе которых будет строиться дальнейшая работа, включая the grant on. Перед детальным изучением особенностей привилегий потребуется рассмотреть основные DML-операции. Без них управлять таблицами никак не получится.
Оператор Select
Select – это основной оператор SQL. С его помощью производится выборка информации из имеющейся таблицы. Форма представления команды:
Соответствующая команда поддерживает множество операторов. Указанные в синтаксической форме выше не являются обязательными. Каждый оператор Select предусматривает отличительные черты и области применения:
- Distinct и All. Используются системой для фильтрации выводимых записей. Distinct помогает выводить уникальные строки, исключая повторения. Вторая «команда» отобразит все имеющиеся строчки из таблицы. Именно такой вариант используется системой по умолчанию.
- From. Используется для указания списка таблиц, из которых система будет извлекать информацию.
- Where. The operator, который добавляет некоторые правила и принципы извлечения информации из БД. Пример – задействование в процессе выборки сравнения или логических операторов.
- Group by. Используется для группировки столбцов.
- Having – напоминает работу where. Связан с group by. Дает возможность классифицировать (группировать) материалы, но только агрегатного типа.
- Order by. Дает возможность задать вывод записей по возрастанию (ASC) или по убыванию (DESC). По умолчанию используется принцип «от меньшего к большему».
- Limit. Оператор, задействованный для ограничений на количество выводимых записей из первоначальной таблицы.
Select on to MySQL связан с grant. Это не единственная ключевая команда, которая относится к привилегиям SQL.
Update и Delete
Update используется для обновления записей в заданной таблице. Активируется после всех предусмотренных имеющимся запросом операций. Синтаксис будет таким:
Для удаления некоторых записей используется Delete:
Никаких дополнительных параметров, опций и значений соответствующие операции не имеют.
Insert
Изучая привилегии и grant select, разработчики должны хорошо разбираться в ключевых операциях над БД. Без них the grant в полной мере осознать и освоить не получится.
Вместе с Select-запросом одинаково часто используется команда Insert. Она встречается в grant достаточно часто. За счет insert пользователи смогут добавлять записи в таблицу. Синтаксическая форма записи:
Соответствующий оператор может использоваться с select и другими процедурами. The insert отвечает за добавление строк в таблицы, заполняя их перед этим теми или иными значениями. Записи могут быть вставлены перечислением посредством ключевого слова values (как указано выше, во втором примере) или через оператор select.
Управление транзакциями
Перед рассмотрением the grant select и других особенностей настройки привилегий, рекомендуется в первую очередь запомнить ключевые операции и процедуры над БД. Следующая категория операторов – управляющие транзакциями (the TCL).
Соответствующий «блок» ориентирован на контроль транзакций, реализованных через the databases и a table. Стоит обратить внимание на то, что работать с такими операциями рекомендуется через MySQL Workbench при выключенной опции автоматической фиксации изменений.
В TCL относятся следующие операции:
- commit – позволяет объявить транзакцию;
- rollback – дает возможность откатить объявленную ранее транзакцию;
- savepoint – используется для разделения всех транзакций на блоки с возможностью возврата к одному из них.
Новички практически не пользуются соответствующим типом операций, поэтому на них не стоит заострять внимание.
Привилегии и grant
Grant select – запись, которая напрямую связана с привилегиями. Соответствующий раздел особо важен для системных администраторов и специалистов по обеспечению безопасности. Команды, связанные с привилегированностью пользователей в SQL-таблицах относятся к типу the DLC.
Привилегии могут быть объектными и системными. Первые встречаются в PostgreSQL и MySQL. Grant имеет прямое отношение к соответствующему направлению.
Привилегия – это спектр действий, доступный для выполнения тем или иным пользователям. Пример – вход в систему. Соответствующая операция является минимальной привилегией. Это своеобразные «права», в которых grant on будет иметь особое значение.
Привилегии способны меняться с течением времени: обновляться, добавляться, отменяться. SQL поддерживает несколько привилегированных типов, которые соответствуют тем или иным видам операций.
Объектные
Объектный тип «доступа» – это возможность пользователя выполнять строго определенную команду. Они связаны как с клиентами, так и с таблицами. Даются конкретным пользователям для отдельных табличных информационных записей или для целой базы.
Тот, кто создал таблицу – ее непосредственный владелец. Это значит, что соответствующее лицо имеет все права (включая grant on) на a table. Владелец способен назначать различные права для других подключающихся в БД лиц.
SelectВыполнение запросовInsertРазрешение на вставку (добавление) строк в tablesUpdateОтвечает за изменение уже имеющихся значений в строках. Ограничения – множество табличных столбцов.DeleteРазрешение на удаление строкAlterИзменение структуры только таблицы или последовательностиExecuteВыполнение хранимой процедуры или функцииIndexСоздание индекса для ранее сформированной DB tableReferencesРазрешение на определение внешнего ключа, используемого одним или несколькими столбцами в таблице в виде родительского ключа. Соответствующие «полномочия» могут быть ограничены через указание столбцов.
Выше – таблица, которая объясняет не grant on, но тесно связана с этой операцией. Она поможет разобраться в том, какие существуют объектные права для реализации.
Системные права
Второй тип «прав», связанный с grant – это системный вариант. Они не определяются в терминах для отдельных объектов. Носят название the system privileges или авторского права на БД (the database authorities). Системные права поддерживают возможность на создание новых элементов (объектов) БД.
DBA – DataBase AdministratorПозволяет клиенту выполнять действия администратора БД. Пользователь сможет распоряжаться ей, как собственноручно сформированной.ConnectПоддерживает право входа в систему и создания представлений и синонимов (альтернативных табличных имен).ResourceПредоставляет полномочия, позволяющие формировать индексы и таблицы.
При праве DBA клиент сможет реализовывать grant to select on из любой table и представления, создавать объекты для других пользователей и предоставлять им разнообразные права. Сюда же включены такие операции как импорт и экспорт. DBA тесно связаны с системным администрированием. При использовании соответствующего полномочия над DBA-клиентом все равно будет находиться администратор, обладающий высшим авторским правом.
Выдача прав
Grant and select on to – запрос, с которым должен быть знаком каждый специалист по настройке полномочий и прав пользователей. Одним из наиболее значимых операторов управления информацией в БД служит grant. Им легко пользоваться, но делать это необходимо осторожно.
Grant служит для предоставления клиентам прав для оперирования табличной информацией и the databases. Это команда ««выдачи полномочий». Она может быть представлена самостоятельно (как grant on) или с дополнительными операторами. Примеры – с insert или select.
Синтаксическая запись grant элементарна. Она имеет следующий вид:
GRANT privileges ON object TO user;
Здесь:
- the privileges – любой из значений, указывающих на тип прав;
- object – имя объекта в the database, к которому предоставляется разрешение через grant;
- user – пользовательское имя (тот, кому предоставляются полномочия).
Первое значение в представленной записи может принимать различные параметры. К ним относят следующие полномочия:
Таблица, представленная выше, поможет быстрее понять, что делает grant select и другие формы использования соответствующего оператора. Именно поэтому сначала разработчик должен вникнуть в основные операции над БД, а затем приступать к погружению в grant.
Наглядный пример
Чтобы лучше понимать, как работает grant on select to, необходимо рассмотреть несколько наглядных примеров. Первый вариант – это предоставление прав на select, insert, delete и update в contacts. Привилегии должны быть присвоены пользователю adam. Для этого используется следующая форма записи grant on:
Второй вариант – применение ключевого слова all. С его помощью администратор укажет, что хочется предоставить все разрешения, исключая grant option:
Grant Select можно предоставить всем пользователям для contacts. Для этой цели используется символ «*» (звездочка, без кавычек):
Соответствующая форма записи актуальна и для других операторов/действий с записями в БД. Можно воспользоваться grant the select with grant option или без grant option. Администратор имеет право выдать «полномочия» на строго ограниченный спектр операций. Все это помогает обеспечивать контроль над безопасностью хранилища информации.
Отмена полномочий
Основы применения the grant to select on table_1 понятны. Теперь стоит изучить еще один важный оператор для работы с пользовательскими правами. Это – Revoke. Соответствующий оператор является противоположностью grant on. Он помогает отметить некоторые или все ранее присвоенные привилегии. Используется со всеми управляющими операторами.
Синтаксическая форма записи Revoke:
Таблица, указанная выше, демонстрирует, какие значения способен принимать параметр the privileges.
Примеры для изучения
Использование to grant a select on понятно. Revoke работает намного проще. Это отмена совершенной операции или присвоенных полномочий. Вот пример, в котором отменяются права update и delete для adam в contacts:
При помощи all пользователь сможет отметить все разрешения, исключая grant option:
Есть еще один момент, о котором должен помнить каждый администратор при использовании БД и настройке прав. Это исполнение функций и процедур.
Право на процедуры и функции
Основы использования grant on изучены. Чтобы предоставить права на реализацию конкретных процедур и функций, необходимо пользоваться Execute в качестве дополнения к the grant:
Здесь:
- execute – возможность выполнения заданной функции или процедуры;
- procedure/function – процедура/функция, которую разрешено выполнять;
- object – название объекта БД, для которого предоставляются права;
- user – имя пользователя.
По аналогии с grant on для отмены прав на процедуры и функции используется revoke execute. Здесь и тут можно увидеть больше примеров по изученному направлению. Быстрее освоить его с нуля помогут дистанционные компьютерные курсы.
<!DOCTYPE html>
<html dir="ltr" lang="ru-RU">
<head>
<meta charset="UTF-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="profile" href="http://gmpg.org/xfn/11" />
<title>Привилегии в SQL OTUS</title>
<!-- All in One SEO 4.5.2.1 - aioseo.com -->
<meta name="description" content="Работа с базами данных требует от разработчика и системного администратора определенных знаний. Особенно это касается реляционных БД. Такие базы управляются при помощи специальных команд – запросов, написанных на SQL. Далее предстоит поближе познакомиться с основными понятиями БД, а также с СУБД и SQL. Рассмотрим основные запросы для оперирования базами данных, поближе познакомимся с привилегиями. Особое" />
<meta name="robots" content="max-image-preview:large" />
<link rel="canonical" href="https://otus.ru/journal/privilegii-v-sql/" />
<meta name="generator" content="All in One SEO (AIOSEO) 4.5.2.1" />
<script type="application/ld+json" class="aioseo-schema">
{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/otus.ru\/journal\/privilegii-v-sql\/#article","name":"\u041f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438 \u0432 SQL OTUS","headline":"\u041f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438 \u0432 SQL","author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/06\/oj-1080x72055-1.jpg","width":2245,"height":1587},"datePublished":"2023-06-05T20:54:13+00:00","dateModified":"2024-01-18T18:34:52+00:00","inLanguage":"ru-RU","mainEntityOfPage":{"@id":"https:\/\/otus.ru\/journal\/privilegii-v-sql\/#webpage"},"isPartOf":{"@id":"https:\/\/otus.ru\/journal\/privilegii-v-sql\/#webpage"},"articleSection":"\u041f\u043e\u043b\u0435\u0437\u043d\u043e\u0435, SQL, \u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445"},{"@type":"BreadcrumbList","@id":"https:\/\/otus.ru\/journal\/privilegii-v-sql\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/#listItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/otus.ru\/journal\/","nextItem":"https:\/\/otus.ru\/journal\/privilegii-v-sql\/#listItem"},{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/privilegii-v-sql\/#listItem","position":2,"name":"\u041f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438 \u0432 SQL","previousItem":"https:\/\/otus.ru\/journal\/#listItem"}]},{"@type":"Organization","@id":"https:\/\/otus.ru\/journal\/#organization","name":"\u041e\u0442\u0443\u0441 \u043e\u043d\u043b\u0430\u0439\u043d-\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","url":"https:\/\/otus.ru\/journal\/","sameAs":["https:\/\/www.youtube.com\/channel\/UCetgtvy93o3i3CvyGXKFU3g"],"contactPoint":{"@type":"ContactPoint","telephone":"+74999389202","contactType":"Customer Support"}},{"@type":"Person","@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author","url":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/","name":"A. Pavlenko","image":{"@type":"ImageObject","@id":"https:\/\/otus.ru\/journal\/privilegii-v-sql\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/d4c499a104d7c2522fa41f89e6819499?s=96&d=mm&r=g","width":96,"height":96,"caption":"A. Pavlenko"}},{"@type":"WebPage","@id":"https:\/\/otus.ru\/journal\/privilegii-v-sql\/#webpage","url":"https:\/\/otus.ru\/journal\/privilegii-v-sql\/","name":"\u041f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438 \u0432 SQL OTUS","description":"\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0437\u043d\u0430\u043d\u0438\u0439. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0411\u0414. \u0422\u0430\u043a\u0438\u0435 \u0431\u0430\u0437\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u2013 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 SQL. \u0414\u0430\u043b\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0431\u043b\u0438\u0436\u0435 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u043f\u043e\u043d\u044f\u0442\u0438\u044f\u043c\u0438 \u0411\u0414, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441 \u0421\u0423\u0411\u0414 \u0438 SQL. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u0431\u043b\u0438\u0436\u0435 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043c\u0441\u044f \u0441 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u044f\u043c\u0438. \u041e\u0441\u043e\u0431\u043e\u0435","inLanguage":"ru-RU","isPartOf":{"@id":"https:\/\/otus.ru\/journal\/#website"},"breadcrumb":{"@id":"https:\/\/otus.ru\/journal\/privilegii-v-sql\/#breadcrumblist"},"author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"creator":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/06\/oj-1080x72055-1.jpg","@id":"https:\/\/otus.ru\/journal\/privilegii-v-sql\/#mainImage","width":2245,"height":1587},"primaryImageOfPage":{"@id":"https:\/\/otus.ru\/journal\/privilegii-v-sql\/#mainImage"},"datePublished":"2023-06-05T20:54:13+00:00","dateModified":"2024-01-18T18:34:52+00:00"},{"@type":"WebSite","@id":"https:\/\/otus.ru\/journal\/#website","url":"https:\/\/otus.ru\/journal\/","name":"OTUS JOURNAL","description":"Blog about IT","inLanguage":"ru-RU","publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"}}]}
</script>
<!-- All in One SEO -->
<link rel='dns-prefetch' href='//otus.ru' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel='stylesheet' id='wp-block-library-css' href='https://otus.ru/journal/wp-includes/css/dist/block-library/style.min.css?ver=6.4.7' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css' type='text/css'>
body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
.wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
.wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}
</style>
<link rel='stylesheet' id='wbcr-comments-plus-url-span-css' href='https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/css/url-span.css?ver=2.2.0' type='text/css' media='all' />
<link rel='stylesheet' id='wpel-style-css' href='https://otus.ru/journal/wp-content/plugins/wp-external-links/public/css/wpel.css?ver=2.59' type='text/css' media='all' />
<link rel='stylesheet' id='ez-toc-css' href='https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/css/screen.min.css?ver=2.0.61' type='text/css' media='all' />
<style id='ez-toc-inline-css' type='text/css'>
div#ez-toc-container .ez-toc-title {font-size: 120%;}div#ez-toc-container .ez-toc-title {font-weight: 500;}div#ez-toc-container ul li {font-size: 95%;}div#ez-toc-container nav ul ul li {font-size: 90%;}
.ez-toc-container-direction {direction: ltr;}.ez-toc-counter ul{counter-reset: item ;}.ez-toc-counter nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }.ez-toc-widget-direction {direction: ltr;}.ez-toc-widget-container ul{counter-reset: item ;}.ez-toc-widget-container nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }
</style>
<link rel='stylesheet' id='contentberg-fonts-css' href='https://fonts.googleapis.com/css?family=Roboto%3A400%2C500%2C700%7CPT+Serif%3A400%2C400i%2C600%7CIBM+Plex+Serif%3A500' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-core-css' href='https://otus.ru/journal/wp-content/themes/contentberg/style.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-lightbox-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/lightbox.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='font-awesome-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/fontawesome/css/font-awesome.min.css?ver=1.8.3' type='text/css' media='all' />
<script type="text/javascript" id="breeze-prefetch-js-extra">
/* <![CDATA[ */
var breeze_prefetch = {"local_url":"https:\/\/otus.ru\/journal","ignore_remote_prefetch":"1","ignore_list":["\/wp-admin\/"]};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js" id="breeze-prefetch-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.min.js" id="jquery-core-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery-migrate.min.js" id="jquery-migrate-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/lazysizes.js" id="lazysizes-js"></script>
<link rel="https://api.w.org/" href="https://otus.ru/journal/wp-json/" /><link rel="alternate" type="application/json" href="https://otus.ru/journal/wp-json/wp/v2/posts/6570" /><link rel='shortlink' href='https://otus.ru/journal/?p=6570' />
<link rel="alternate" type="application/json+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fprivilegii-v-sql%2F" />
<link rel="alternate" type="text/xml+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fprivilegii-v-sql%2F&format=xml" />
<script>var Sphere_Plugin = {"ajaxurl":"https:\/\/otus.ru\/journal\/wp-admin\/admin-ajax.php"};</script><link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-32x32.png" sizes="32x32" />
<link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-180x180.png" />
<meta name="msapplication-TileImage" content="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-270x270.png" />
<style type="text/css" id="wp-custom-css">
#menu-item-10406 .wpel-icon {
display: none;
}
#menu-item-10407 .wpel-icon {
display: none;
}
.otus-login-site a .wpel-icon {
display: none;
}
.menu-menju-navykov-container a .wpel-icon {
display: none;
}
.otus-login-site a
{
background: #ffd709;
border-radius: 12px;
color: #0f0f10;
font-size: 14px;
font-weight: 700;
line-height: 20px;
display: block;
text-align: center;
padding: 8px 25px;
}
.main-footer.dark {
background: linear-gradient(90deg, #a64fc5, #4f54e6);
border-color: transparent;
}
.main-footer.bold .copyright {
color: #fff;
}
.main-footer.bold .to-top i {
color: #fff;
}
.main-footer.bold .back-to-top {
color: #fff;
}
.nav__scroll {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.scrollable-menu .menu {
display: flex;
}
.nav__scroll
{
background: linear-gradient(90deg, #a64fc5, #4f54e6);
}
.scrollable-menu .menu .menu-item {
flex: 0 0 auto;
padding: 15px 15px;
}
.scrollable-menu .menu .menu-item a {
color: #fff;
}
.nav__scroll::-webkit-scrollbar{background-color:#fff;height:5px;}
.nav__scroll::-webkit-scrollbar-thumb{background-color:#dcdcdc;}
.nav__scroll::-webkit-scrollbar-track{-webkit-border-radius:0;border-radius:0;background-color:#fff;}/
body {
min-width: 320px;
}
.banner-click img {
margin: 0 auto;
display: block;
}
.banner-click {
cursor: pointer;
}
.banner-footer-area {
margin-bottom: 20px;
}
.banner-left-area {
margin-top: 40px;
} </style>
<!--Start VDZ Yandex Metrika Plugin-->
<!-- Yandex.Metrika counter --><script type="text/javascript" >(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");ym(34531570, "init", {clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, trackHash:true, ecommerce:"dataLayer"});</script>
<noscript><div><img src="https://mc.yandex.ru/watch/34531570" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter --><!--START ADD EVENTS FROM CF7--><script type='text/javascript'>document.addEventListener( 'wpcf7submit', function( event ) {
//event.detail.contactFormId;
if(ym){
//console.log(event.detail);
ym(34531570, 'reachGoal', 'VDZ_SEND_CONTACT_FORM_7');
ym(34531570, 'params', {
page_url: window.location.href,
status: event.detail.status,
locale: event.detail.contactFormLocale,
form_id: event.detail.contactFormId,
});
}
}, false );
</script><!--END ADD EVENTS FROM CF7-->
<!--End VDZ Yandex Metrika Plugin-->
</head>
<body class="post-template-default single single-post postid-6570 single-format-standard right-sidebar lazy-normal has-lb">
<div class="main-wrap">
<header id="main-head" class="main-head head-nav-below has-search-modal simple simple-boxed">
<div class="inner inner-head" data-sticky-bar="0">
<div class="wrap cf wrap-head">
<div class="left-contain">
<span class="mobile-nav"><i class="fa fa-bars"></i></span>
<div class="title">
<a href="https://otus.ru/journal/" title="OTUS JOURNAL" rel="home" data-wpel-link="internal">
<span class="text-logo"><img src="/journal/wp-content/themes/contentberg/img/logo_site.svg" alt="OTUS JOURNAL"></span>
</a>
</div>
</div>
<div class="navigation-wrap inline">
<nav class="navigation inline simple light" data-sticky-bar="0">
<div class="menu-rubriki-container"><ul id="menu-rubriki" class="menu"><li id="menu-item-109" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-1 menu-item-109"><a href="https://otus.ru/journal/category/pro-it/" data-wpel-link="internal"><span>Про IT</span></a></li>
<li id="menu-item-113" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-cat-4 menu-item-113"><a href="https://otus.ru/journal/category/polza/" data-wpel-link="internal"><span>Полезное</span></a></li>
<li id="menu-item-114" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-3 menu-item-114"><a href="https://otus.ru/journal/category/lifestyle/" data-wpel-link="internal"><span>Лайфстайл</span></a></li>
<li id="menu-item-10406" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10406"><a href="https://otus.ru/catalog/courses" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Обучение</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10407" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10407"><a href="https://otus.ru/about" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Информация</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </nav>
</div>
<div class="actions">
<div class="otus-login-site">
<a href="https://otus.ru/login/" target="_blank" data-wpel-link="external" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Войти<span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
<a href="#" title="Search" class="search-link"><i class="fa fa-search"></i></a>
</div>
</div>
</div>
</header> <!-- .main-head -->
<div class="nav nav_disable nav_colored nav_transparent course-categories__nav nav__scroll ">
<div class="container wrap">
<div class="links inline simple light scrollable-menu">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov" class="menu"><li id="menu-item-10413" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10414" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10415" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10416" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10417" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10418" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10419" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10420" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10421" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
</div>
</div>
<div class="main wrap">
<div class="ts-row cf">
<div class="col-8 main-content cf">
<article id="post-6570" class="the-post post-6570 post type-post status-publish format-standard has-post-thumbnail category-polza tag-sql tag-bazy-dannyh">
<header class="post-header the-post-header cf">
<div class="post-meta the-post-meta">
<span class="post-cat">
<a href="https://otus.ru/journal/category/polza/" class="category" data-wpel-link="internal">Полезное</a>
</span>
<h1 class="post-title">
Привилегии в SQL
</h1>
<a href="https://otus.ru/journal/privilegii-v-sql/" class="date-link" data-wpel-link="internal"><time class="post-date">5 июня, 2023</time></a>
</div>
<div class="featured">
<a href="https://otus.ru/journal/wp-content/uploads/2023/06/oj-1080x72055-1.jpg" class="image-link" data-wpel-link="internal"><img width="770" height="515" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20770%20515%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-contentberg-main size-contentberg-main lazyload wp-post-image" alt="Привилегии в SQL" title="Привилегии в SQL" decoding="async" fetchpriority="high" data-srcset="https://otus.ru/journal/wp-content/uploads/2023/06/oj-1080x72055-1-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2023/06/oj-1080x72055-1-270x180.jpg 270w" data-src="https://otus.ru/journal/wp-content/uploads/2023/06/oj-1080x72055-1-770x515.jpg" data-sizes="(max-width: 770px) 100vw, 770px" /> </a>
</div>
</header><!-- .post-header -->
<div class="post-content description cf entry-content content-normal">
<div id="ez-toc-container" class="ez-toc-v2_0_61 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title " >Содержание</p>
<span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="Toggle Table of Content"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="http://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="#%D0%91%D0%B0%D0%B7%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%E2%80%93_%D1%87%D1%82%D0%BE_%D1%8D%D1%82%D0%BE" title="База данных – что это">База данных – что это</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-2" href="#%D0%A0%D0%B0%D0%B7%D0%BD%D0%BE%D0%B2%D0%B8%D0%B4%D0%BD%D0%BE%D1%81%D1%82%D0%B8" title="Разновидности">Разновидности</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-3" href="#SQL_%E2%80%93_%D0%BA%D1%80%D0%B0%D1%82%D0%BA%D0%BE%D0%B5_%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5" title="SQL – краткое описание">SQL – краткое описание</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-4" href="#%D0%9F%D0%BE%D0%BD%D1%8F%D1%82%D0%B8%D0%B5_%D0%A1%D0%A3%D0%91%D0%94" title="Понятие СУБД">Понятие СУБД</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-5" href="#PostgreSQL" title="PostgreSQL">PostgreSQL</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-6" href="#%D0%A5%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0_MySQL" title="Характеристика MySQL">Характеристика MySQL</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-7" href="#%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D1%8B_SQL" title="Команды SQL">Команды SQL</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-8" href="#%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F_DDL" title="Категория DDL">Категория DDL</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-9" href="#%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_Select" title="Оператор Select">Оператор Select</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-10" href="#Update_%D0%B8_Delete" title="Update и Delete">Update и Delete</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-11" href="#Insert" title="Insert">Insert</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-12" href="#%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%82%D1%80%D0%B0%D0%BD%D0%B7%D0%B0%D0%BA%D1%86%D0%B8%D1%8F%D0%BC%D0%B8" title="Управление транзакциями">Управление транзакциями</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-13" href="#%D0%9F%D1%80%D0%B8%D0%B2%D0%B8%D0%BB%D0%B5%D0%B3%D0%B8%D0%B8_%D0%B8_grant" title="Привилегии и grant">Привилегии и grant</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-14" href="#%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D1%8B%D0%B5" title="Объектные">Объектные</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-15" href="#%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%B0%D0%B2%D0%B0" title="Системные права">Системные права</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-16" href="#%D0%92%D1%8B%D0%B4%D0%B0%D1%87%D0%B0_%D0%BF%D1%80%D0%B0%D0%B2" title="Выдача прав">Выдача прав</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-17" href="#%D0%9D%D0%B0%D0%B3%D0%BB%D1%8F%D0%B4%D0%BD%D1%8B%D0%B9_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80" title="Наглядный пример">Наглядный пример</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-18" href="#%D0%9E%D1%82%D0%BC%D0%B5%D0%BD%D0%B0_%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D0%BC%D0%BE%D1%87%D0%B8%D0%B9" title="Отмена полномочий">Отмена полномочий</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-19" href="#%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%B8%D0%B7%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D1%8F" title="Примеры для изучения">Примеры для изучения</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-20" href="#%D0%9F%D1%80%D0%B0%D0%B2%D0%BE_%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D0%B4%D1%83%D1%80%D1%8B_%D0%B8_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8" title="Право на процедуры и функции">Право на процедуры и функции</a></li></ul></li></ul></nav></div>
<p>Работа с базами данных требует от разработчика и системного администратора определенных знаний. Особенно это касается реляционных БД. Такие базы управляются при помощи специальных команд – запросов, написанных на SQL.</p>
<p>Далее предстоит поближе познакомиться с основными понятиями БД, а также с СУБД и SQL. Рассмотрим основные запросы для оперирования базами данных, поближе познакомимся с привилегиями. Особое внимание будет уделено операции the grant on. Представленная далее информация предназначается не только для опытных специалистов, но и для новичков, которые только начинают разбираться в основах работы БД.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%91%D0%B0%D0%B7%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%E2%80%93_%D1%87%D1%82%D0%BE_%D1%8D%D1%82%D0%BE"></span>База данных – что это<span class="ez-toc-section-end"></span></h2>
<p>Перед полноценным погружением в основы выполнения операций в базах данных необходимо изучить несколько ключевых понятий. Они помогут быстрее вникнуть в суть поставленных перед разработчиком задач.</p>
<p>Первое, на что необходимо обратить внимание – базы данных (the databases). Так называют некоторый набор информации, который структурирован определенным образом. Это данные, представленные в упорядоченной форме. Чаще всего предстают перед администраторами и разработчиками в виде электронных таблиц и связями между ними.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A0%D0%B0%D0%B7%D0%BD%D0%BE%D0%B2%D0%B8%D0%B4%D0%BD%D0%BE%D1%81%D1%82%D0%B8"></span>Разновидности<span class="ez-toc-section-end"></span></h3>
<p>The databases могут быть разными. В зависимости от типа БД будет меняться процесс оперирования информацией. Существует следующая классификация:</p>
<ol>
<li>Иерархические. Наиболее простой вариант. В такой структуре записи будут отходить от «родителя» как ветви. Здесь применяется тот же принцип, что и в случае с папками на компьютере. Каждая запись имеет физическую связь только с одной предыдущей. В иерархических DB не поддерживается отношение «многие ко многим».</li>
<li>Сетевые. Образовывают общий граф. Каждая запись может иметь более одного «родителя».</li>
<li>Объектно-ориентированные. В них представляется the information о реальных вещах в виде объектов с уникальными идентификаторами (они называются индексами). Состояние элемента удается описывать посредством атрибутов, его поведение – через так называемые методы. Допускается сбор компонентов с одинаковыми атрибутами и свойствами в единые классы.</li>
<li>Реляционные. Это – наиболее распространенный вариант, с которым работают как новички, так и уже опытные разработчики/системные администраторы. Реляционные БД – это хранилища информации, реализованные в виде таблиц. Через них устанавливаются связи между компонентами. Таблицы обладают полем для внешнего ключа со ссылками на другие таблицы. Реляционные БД гибкие и хорошо организованные, благодаря чему они пользуются спросом для большинства типов данных.</li>
<li>Нереляционные. The DB такого типа называются еще NoSQL. Связано это с тем, что они будут управляться специальными запросами, которые отличаются от SQL.</li>
</ol>
<p>Это – основная классификация БД. Далее предстоит работать с реляционными таблицами и оперировать ими.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="SQL_%E2%80%93_%D0%BA%D1%80%D0%B0%D1%82%D0%BA%D0%BE%D0%B5_%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5"></span>SQL – краткое описание<span class="ez-toc-section-end"></span></h2>
<p>The SQL (the Structured Query Language) – это язык структурированных запросов. Он является декларативным. Применяется для модификации, управления, создания и удаления информации в реляционных БД.</p>
<p>The SQL – язык, на котором нельзя написать полноценное приложение. Он служит для управления информацией в БД и таблицах, выстраивании связей и «взаимоотношений». Это информационно-логическое средство.</p>
<p>Изначальное применение the SQL сводилось к:</p>
<ul>
<li>созданию новых таблиц в БД;</li>
<li>изменению имеющихся записей;</li>
<li>удалению информации;</li>
<li>добавлению новых сведений в таблицы;</li>
<li>выборке записей из одной или нескольких таблиц в зависимости от имеющегося условия;</li>
<li>изменению табличных структур.</li>
</ul>
<p>Текущий query language стал более сложным – в нем появились совершенно новые конструкции, привилегии и другие функции. С его помощью можно описывать и управлять новыми хранимыми объектами (триггерами, представлениями, индексами, хранимыми процедурами и так далее). Сейчас соответствующий язык больше напоминает «классический» язык разработки, но применяется он только относительно баз информации реляционного характера.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D0%BE%D0%BD%D1%8F%D1%82%D0%B8%D0%B5_%D0%A1%D0%A3%D0%91%D0%94"></span>Понятие СУБД<span class="ez-toc-section-end"></span></h2>
<p>Изучая the grant on и другие команды для различных операций с таблицами, стоит обязательно обратить внимание на понятие СУБД. В зависимости от системы управления базами данных будет меняться концепция реализации той или иной.</p>
<p>СУБД – это совокупность программных и лингвистических средств общего/специального назначения, которые обеспечивают управление созданием и дальнейшим использованием the databases.</p>
<p>СУБД – комплекс программ, который дает возможность создать базу информации, а затем управлять имеющимися записями:</p>
<ul>
<li>обновлять;</li>
<li>выбирать;</li>
<li>удалять;</li>
<li>вставлять.</li>
</ul>
<p>Существуют различные варианты СУБД – они могут поддерживать разнообразные операции и процедуры, инструменты и функциональность. Далее работа будет в the grant on и другими командами SQL будет базироваться на двух достаточно распространенных программах – the MySQL и the PostgreSQL.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="PostgreSQL"></span>PostgreSQL<span class="ez-toc-section-end"></span></h3>
<p>PostgreSQL – свободная объектно-реляционная СУБД. Она поддерживается для основной массы UNIX-подобных систем, включая AIX, BSD, IRIX и другие. Соответствующее программное обеспечение работает на Windows, Linux и MacOS.</p>
<p>Проект имеет открытый исходный код и распространяется совершенно бесплатно. За счет the PostgreSQL удается создавать, хранить, а также работать с БД при помощи SQL-запросов. Программное обеспечение выделяется поддержкой разнообразных форматов информации, а также соответствием ACID. The PostgreSQL дает возможность разработчику и системному администратору работать с большим объемом данных, ведь размер the DB в виде одной таблицы может достигать 32 ГБ. Скорость обработки информации будет напрямую зависеть от имеющейся на задействованном оборудовании оперативной памяти.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A5%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0_MySQL"></span>Характеристика MySQL<span class="ez-toc-section-end"></span></h3>
<p>При изучении the grant on и других запросов SQL, пользователи могут сталкиваться с различными СУБД. Еще один популярный вариант средств управления – это the MySQL. Это свободная реляционная СУБД, права на которую принадлежат компании Oracle. От предыдущего пакета приложений соответствующий вариант отличается ориентированностью. PostgreSQL – объектно-реляционное ПО, MySQL – только реляционное.</p>
<p>Распространяется the MySQL свободно – программисты часто создают дополнительные функции и инструменты «под заказ». Соответствующая СУБД позволяет работать с SQL queries и является наилучшим решением как для малых, так и для средних проектов. Входит в состав некоторых серверов. Служит основополагающим компонентом в клиент-серверных моделях. Дистрибутив рассматриваемого ПО включает в свой состав специальную внутреннюю библиотеку, за счет которой удается сформировать внутренний сервер и встраивать СУБД в автономные приложения.</p>
<p>С особо крупными базами информации MySQL не работает – такая возможность есть, но она отражается на быстродействии. Для небольших и средних объемов данных рекомендуется выбирать именно это программное обеспечение.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D1%8B_SQL"></span>Команды SQL<span class="ez-toc-section-end"></span></h2>
<p>Далее предстоит познакомиться с grad select и другими особенностями для полноценной работы с SQL-запросами. Перед детальным рассмотрением привилегий каждый администратор и разработчик должен освоить основные функции и операции с БД.</p>
<p>Условно каждый оператор может относиться к одному из 4-х видов:</p>
<ul>
<li>DDL – команды, необходимые для создания объектов в таблицах и описания структур;</li>
<li>DML – операторы, используемые для корректировки информации;</li>
<li>DLC – специальные команды, предоставляющие доступ к записям (сюда относятся привилегии);</li>
<li>TCL – операторы, отвечающие за манипулирование транзакциями.</li>
</ul>
<p>Далее предстоит рассмотреть каждый предложенный «блок», заострив внимание на привилегиях. Соответствующее направление имеет особую значимость в плане обеспечения информационной безопасности.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F_DDL"></span>Категория DDL<span class="ez-toc-section-end"></span></h3>
<p>DDL – это команды, которые служат базовыми для работы с любой БД. Сюда можно отнести такие записи как:</p>
<ol>
<li>Create. Оператор, отвечающий за непосредственное создание объектов. За счет create пользователи могут создавать the table и базы информации. Форма записи: create table «название_таблицы» или create database «имя_БД» соответственно.</li>
<li>Alter. Оператор, который необходим для корректирования уже созданных БД-объектов. Пример использования (the example) – это правка названия имеющейся таблицы: </li>
</ol>
<figure class="wp-block-image size-full"><img decoding="async" width="915" height="497" src="https://otus.ru/journal/wp-content/uploads/2023/06/Screenshot_1-2.png" alt="Привилегии в SQL" class="wp-image-6599" srcset="https://otus.ru/journal/wp-content/uploads/2023/06/Screenshot_1-2.png 915w, https://otus.ru/journal/wp-content/uploads/2023/06/Screenshot_1-2-300x163.png 300w, https://otus.ru/journal/wp-content/uploads/2023/06/Screenshot_1-2-150x81.png 150w, https://otus.ru/journal/wp-content/uploads/2023/06/Screenshot_1-2-768x417.png 768w" sizes="(max-width: 915px) 100vw, 915px" /></figure>
<p>Это – начальные команды, на базе которых будет строиться дальнейшая работа, включая the grant on. Перед детальным изучением особенностей привилегий потребуется рассмотреть основные DML-операции. Без них управлять таблицами никак не получится.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_Select"></span>Оператор Select<span class="ez-toc-section-end"></span></h3>
<p>Select – это основной оператор SQL. С его помощью производится выборка информации из имеющейся таблицы. Форма представления команды:</p>
<figure class="wp-block-image size-full"><img decoding="async" width="328" height="140" src="https://otus.ru/journal/wp-content/uploads/2023/06/image-68.png" alt="Привилегии в SQL" class="wp-image-6575" srcset="https://otus.ru/journal/wp-content/uploads/2023/06/image-68.png 328w, https://otus.ru/journal/wp-content/uploads/2023/06/image-68-300x128.png 300w, https://otus.ru/journal/wp-content/uploads/2023/06/image-68-150x64.png 150w" sizes="(max-width: 328px) 100vw, 328px" /></figure>
<p>Соответствующая команда поддерживает множество операторов. Указанные в синтаксической форме выше не являются обязательными. Каждый оператор Select предусматривает отличительные черты и области применения:</p>
<ol>
<li>Distinct и All. Используются системой для фильтрации выводимых записей. Distinct помогает выводить уникальные строки, исключая повторения. Вторая «команда» отобразит все имеющиеся строчки из таблицы. Именно такой вариант используется системой по умолчанию.</li>
<li>From. Используется для указания списка таблиц, из которых система будет извлекать информацию.</li>
<li>Where. The operator, который добавляет некоторые правила и принципы извлечения информации из БД. Пример – задействование в процессе выборки сравнения или логических операторов.</li>
<li>Group by. Используется для группировки столбцов.</li>
<li>Having – напоминает работу where. Связан с group by. Дает возможность классифицировать (группировать) материалы, но только агрегатного типа.</li>
<li>Order by. Дает возможность задать вывод записей по возрастанию (ASC) или по убыванию (DESC). По умолчанию используется принцип «от меньшего к большему».</li>
<li>Limit. Оператор, задействованный для ограничений на количество выводимых записей из первоначальной таблицы.</li>
</ol>
<p>Select on to MySQL связан с grant. Это не единственная ключевая команда, которая относится к привилегиям SQL.</p>
<p></p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Update_%D0%B8_Delete"></span>Update и Delete<span class="ez-toc-section-end"></span></h3>
<p>Update используется для обновления записей в заданной таблице. Активируется после всех предусмотренных имеющимся запросом операций. Синтаксис будет таким:</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="424" height="58" src="https://otus.ru/journal/wp-content/uploads/2023/06/image-66.png" alt="Привилегии в SQL" class="wp-image-6573" srcset="https://otus.ru/journal/wp-content/uploads/2023/06/image-66.png 424w, https://otus.ru/journal/wp-content/uploads/2023/06/image-66-300x41.png 300w, https://otus.ru/journal/wp-content/uploads/2023/06/image-66-150x21.png 150w" sizes="(max-width: 424px) 100vw, 424px" /></figure>
<p>Для удаления некоторых записей используется Delete:</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="202" height="62" src="https://otus.ru/journal/wp-content/uploads/2023/06/image-65.png" alt="Привилегии в SQL" class="wp-image-6572" srcset="https://otus.ru/journal/wp-content/uploads/2023/06/image-65.png 202w, https://otus.ru/journal/wp-content/uploads/2023/06/image-65-150x46.png 150w" sizes="(max-width: 202px) 100vw, 202px" /></figure>
<p>Никаких дополнительных параметров, опций и значений соответствующие операции не имеют.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Insert"></span>Insert<span class="ez-toc-section-end"></span></h3>
<p>Изучая привилегии и grant select, разработчики должны хорошо разбираться в ключевых операциях над БД. Без них the grant в полной мере осознать и освоить не получится.</p>
<p>Вместе с Select-запросом одинаково часто используется команда Insert. Она встречается в grant достаточно часто. За счет insert пользователи смогут добавлять записи в таблицу. Синтаксическая форма записи:</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="426" height="48" src="https://otus.ru/journal/wp-content/uploads/2023/06/image-64.png" alt="Привилегии в SQL" class="wp-image-6571" srcset="https://otus.ru/journal/wp-content/uploads/2023/06/image-64.png 426w, https://otus.ru/journal/wp-content/uploads/2023/06/image-64-300x34.png 300w, https://otus.ru/journal/wp-content/uploads/2023/06/image-64-150x17.png 150w" sizes="(max-width: 426px) 100vw, 426px" /></figure>
<p>Соответствующий оператор может использоваться с select и другими процедурами. The insert отвечает за добавление строк в таблицы, заполняя их перед этим теми или иными значениями. Записи могут быть вставлены перечислением посредством ключевого слова values (как указано выше, во втором примере) или через оператор select.</p>
<p></p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%82%D1%80%D0%B0%D0%BD%D0%B7%D0%B0%D0%BA%D1%86%D0%B8%D1%8F%D0%BC%D0%B8"></span>Управление транзакциями<span class="ez-toc-section-end"></span></h3>
<p>Перед рассмотрением the grant select и других особенностей настройки привилегий, рекомендуется в первую очередь запомнить ключевые операции и процедуры над БД. Следующая категория операторов – управляющие транзакциями (the TCL).</p>
<p>Соответствующий «блок» ориентирован на контроль транзакций, реализованных через the databases и a table. Стоит обратить внимание на то, что работать с такими операциями рекомендуется через MySQL Workbench при выключенной опции автоматической фиксации изменений.</p>
<p>В TCL относятся следующие операции:</p>
<ul>
<li>commit – позволяет объявить транзакцию;</li>
<li>rollback – дает возможность откатить объявленную ранее транзакцию;</li>
<li>savepoint – используется для разделения всех транзакций на блоки с возможностью возврата к одному из них.</li>
</ul>
<p>Новички практически не пользуются соответствующим типом операций, поэтому на них не стоит заострять внимание.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%B8%D0%B2%D0%B8%D0%BB%D0%B5%D0%B3%D0%B8%D0%B8_%D0%B8_grant"></span>Привилегии и grant<span class="ez-toc-section-end"></span></h2>
<p>Grant select – запись, которая напрямую связана с привилегиями. Соответствующий раздел особо важен для системных администраторов и специалистов по обеспечению безопасности. Команды, связанные с привилегированностью пользователей в SQL-таблицах относятся к типу the DLC.</p>
<p>Привилегии могут быть объектными и системными. Первые встречаются в PostgreSQL и MySQL. Grant имеет прямое отношение к соответствующему направлению.</p>
<p>Привилегия – это спектр действий, доступный для выполнения тем или иным пользователям. Пример – вход в систему. Соответствующая операция является минимальной привилегией. Это своеобразные «права», в которых grant on будет иметь особое значение.</p>
<p>Привилегии способны меняться с течением времени: обновляться, добавляться, отменяться. SQL поддерживает несколько привилегированных типов, которые соответствуют тем или иным видам операций.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D1%8B%D0%B5"></span>Объектные<span class="ez-toc-section-end"></span></h3>
<p>Объектный тип «доступа» – это возможность пользователя выполнять строго определенную команду. Они связаны как с клиентами, так и с таблицами. Даются конкретным пользователям для отдельных табличных информационных записей или для целой базы.</p>
<p>Тот, кто создал таблицу – ее непосредственный владелец. Это значит, что соответствующее лицо имеет все права (включая grant on) на a table. Владелец способен назначать различные права для других подключающихся в БД лиц.</p>
<figure class="wp-block-table"><table><tbody><tr><td>Select</td><td>Выполнение запросов</td></tr><tr><td>Insert</td><td>Разрешение на вставку (добавление) строк в tables</td></tr><tr><td>Update</td><td>Отвечает за изменение уже имеющихся значений в строках. Ограничения – множество табличных столбцов.</td></tr><tr><td>Delete</td><td>Разрешение на удаление строк</td></tr><tr><td>Alter</td><td>Изменение структуры только таблицы или последовательности</td></tr><tr><td>Execute</td><td>Выполнение хранимой процедуры или функции</td></tr><tr><td>Index</td><td>Создание индекса для ранее сформированной DB table</td></tr><tr><td>References</td><td>Разрешение на определение внешнего ключа, используемого одним или несколькими столбцами в таблице в виде родительского ключа. Соответствующие «полномочия» могут быть ограничены через указание столбцов.</td></tr></tbody></table></figure>
<p>Выше – таблица, которая объясняет не grant on, но тесно связана с этой операцией. Она поможет разобраться в том, какие существуют объектные права для реализации.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%B0%D0%B2%D0%B0"></span>Системные права<span class="ez-toc-section-end"></span></h3>
<p>Второй тип «прав», связанный с grant – это системный вариант. Они не определяются в терминах для отдельных объектов. Носят название the system privileges или авторского права на БД (the database authorities). Системные права поддерживают возможность на создание новых элементов (объектов) БД.</p>
<figure class="wp-block-table"><table><tbody><tr><td>DBA – DataBase Administrator</td><td>Позволяет клиенту выполнять действия администратора БД. Пользователь сможет распоряжаться ей, как собственноручно сформированной.</td></tr><tr><td>Connect</td><td>Поддерживает право входа в систему и создания представлений и синонимов (альтернативных табличных имен).</td></tr><tr><td>Resource</td><td>Предоставляет полномочия, позволяющие формировать индексы и таблицы.</td></tr></tbody></table></figure>
<p>При праве DBA клиент сможет реализовывать grant to select on из любой table и представления, создавать объекты для других пользователей и предоставлять им разнообразные права. Сюда же включены такие операции как импорт и экспорт. DBA тесно связаны с системным администрированием. При использовании соответствующего полномочия над DBA-клиентом все равно будет находиться администратор, обладающий высшим авторским правом.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%92%D1%8B%D0%B4%D0%B0%D1%87%D0%B0_%D0%BF%D1%80%D0%B0%D0%B2"></span>Выдача прав<span class="ez-toc-section-end"></span></h3>
<p>Grant and select on to – запрос, с которым должен быть знаком каждый специалист по настройке полномочий и прав пользователей. Одним из наиболее значимых операторов управления информацией в БД служит grant. Им легко пользоваться, но делать это необходимо осторожно.</p>
<p>Grant служит для предоставления клиентам прав для оперирования табличной информацией и the databases. Это команда ««выдачи полномочий». Она может быть представлена самостоятельно (как grant on) или с дополнительными операторами. Примеры – с insert или select.</p>
<p>Синтаксическая запись grant элементарна. Она имеет следующий вид: </p>
<p>GRANT privileges ON object TO user;</p>
<p>Здесь:</p>
<ul>
<li>the privileges – любой из значений, указывающих на тип прав;</li>
<li>object – имя объекта в the database, к которому предоставляется разрешение через grant;</li>
<li>user – пользовательское имя (тот, кому предоставляются полномочия).</li>
</ul>
<p>Первое значение в представленной записи может принимать различные параметры. К ним относят следующие полномочия:</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="711" height="433" src="https://otus.ru/journal/wp-content/uploads/2023/06/image-69.png" alt="Привилегии в SQL" class="wp-image-6576" srcset="https://otus.ru/journal/wp-content/uploads/2023/06/image-69.png 711w, https://otus.ru/journal/wp-content/uploads/2023/06/image-69-300x183.png 300w, https://otus.ru/journal/wp-content/uploads/2023/06/image-69-150x91.png 150w" sizes="(max-width: 711px) 100vw, 711px" /></figure>
<p>Таблица, представленная выше, поможет быстрее понять, что делает grant select и другие формы использования соответствующего оператора. Именно поэтому сначала разработчик должен вникнуть в основные операции над БД, а затем приступать к погружению в grant.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%B0%D0%B3%D0%BB%D1%8F%D0%B4%D0%BD%D1%8B%D0%B9_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80"></span><em>Наглядный пример</em><span class="ez-toc-section-end"></span></h4>
<p>Чтобы лучше понимать, как работает grant on select to, необходимо рассмотреть несколько наглядных примеров. Первый вариант – это предоставление прав на select, insert, delete и update в contacts. Привилегии должны быть присвоены пользователю adam. Для этого используется следующая форма записи grant on:</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="579" height="16" src="https://otus.ru/journal/wp-content/uploads/2023/06/image-67.png" alt="Привилегии в SQL" class="wp-image-6574" srcset="https://otus.ru/journal/wp-content/uploads/2023/06/image-67.png 579w, https://otus.ru/journal/wp-content/uploads/2023/06/image-67-300x8.png 300w, https://otus.ru/journal/wp-content/uploads/2023/06/image-67-150x4.png 150w, https://otus.ru/journal/wp-content/uploads/2023/06/image-67-554x16.png 554w" sizes="(max-width: 579px) 100vw, 579px" /></figure>
<p>Второй вариант – применение ключевого слова all. С его помощью администратор укажет, что хочется предоставить все разрешения, исключая grant option:</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="337" height="16" src="https://otus.ru/journal/wp-content/uploads/2023/06/image-70.png" alt="Привилегии в SQL" class="wp-image-6577" srcset="https://otus.ru/journal/wp-content/uploads/2023/06/image-70.png 337w, https://otus.ru/journal/wp-content/uploads/2023/06/image-70-300x14.png 300w, https://otus.ru/journal/wp-content/uploads/2023/06/image-70-150x7.png 150w, https://otus.ru/journal/wp-content/uploads/2023/06/image-70-306x16.png 306w" sizes="(max-width: 337px) 100vw, 337px" /></figure>
<p>Grant Select можно предоставить всем пользователям для contacts. Для этой цели используется символ «*» (звездочка, без кавычек):</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="332" height="18" src="https://otus.ru/journal/wp-content/uploads/2023/06/image-71.png" alt="Привилегии в SQL" class="wp-image-6578" srcset="https://otus.ru/journal/wp-content/uploads/2023/06/image-71.png 332w, https://otus.ru/journal/wp-content/uploads/2023/06/image-71-300x16.png 300w, https://otus.ru/journal/wp-content/uploads/2023/06/image-71-150x8.png 150w, https://otus.ru/journal/wp-content/uploads/2023/06/image-71-306x18.png 306w" sizes="(max-width: 332px) 100vw, 332px" /></figure>
<p>Соответствующая форма записи актуальна и для других операторов/действий с записями в БД. Можно воспользоваться grant the select with grant option или без grant option. Администратор имеет право выдать «полномочия» на строго ограниченный спектр операций. Все это помогает обеспечивать контроль над безопасностью хранилища информации.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D1%82%D0%BC%D0%B5%D0%BD%D0%B0_%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D0%BC%D0%BE%D1%87%D0%B8%D0%B9"></span>Отмена полномочий<span class="ez-toc-section-end"></span></h3>
<p>Основы применения the grant to select on table_1 понятны. Теперь стоит изучить еще один важный оператор для работы с пользовательскими правами. Это – Revoke. Соответствующий оператор является противоположностью grant on. Он помогает отметить некоторые или все ранее присвоенные привилегии. Используется со всеми управляющими операторами.</p>
<p>Синтаксическая форма записи Revoke:</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="355" height="34" src="https://otus.ru/journal/wp-content/uploads/2023/06/image-72.png" alt="Привилегии в SQL" class="wp-image-6579" srcset="https://otus.ru/journal/wp-content/uploads/2023/06/image-72.png 355w, https://otus.ru/journal/wp-content/uploads/2023/06/image-72-300x29.png 300w, https://otus.ru/journal/wp-content/uploads/2023/06/image-72-150x14.png 150w" sizes="(max-width: 355px) 100vw, 355px" /></figure>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="708" height="429" src="https://otus.ru/journal/wp-content/uploads/2023/06/image-73.png" alt="Привилегии в SQL" class="wp-image-6580" srcset="https://otus.ru/journal/wp-content/uploads/2023/06/image-73.png 708w, https://otus.ru/journal/wp-content/uploads/2023/06/image-73-300x182.png 300w, https://otus.ru/journal/wp-content/uploads/2023/06/image-73-150x91.png 150w" sizes="(max-width: 708px) 100vw, 708px" /></figure>
<p>Таблица, указанная выше, демонстрирует, какие значения способен принимать параметр the privileges.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%B8%D0%B7%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D1%8F"></span><em>Примеры для изучения</em><span class="ez-toc-section-end"></span></h4>
<p>Использование to grant a select on понятно. Revoke работает намного проще. Это отмена совершенной операции или присвоенных полномочий. Вот пример, в котором отменяются права update и delete для adam в contacts:</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="421" height="21" src="https://otus.ru/journal/wp-content/uploads/2023/06/image-75.png" alt="Привилегии в SQL" class="wp-image-6582" srcset="https://otus.ru/journal/wp-content/uploads/2023/06/image-75.png 421w, https://otus.ru/journal/wp-content/uploads/2023/06/image-75-300x15.png 300w, https://otus.ru/journal/wp-content/uploads/2023/06/image-75-150x7.png 150w" sizes="(max-width: 421px) 100vw, 421px" /></figure>
<p>При помощи all пользователь сможет отметить все разрешения, исключая grant option:</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="352" height="19" src="https://otus.ru/journal/wp-content/uploads/2023/06/image-76.png" alt="Привилегии в SQL" class="wp-image-6583" srcset="https://otus.ru/journal/wp-content/uploads/2023/06/image-76.png 352w, https://otus.ru/journal/wp-content/uploads/2023/06/image-76-300x16.png 300w, https://otus.ru/journal/wp-content/uploads/2023/06/image-76-150x8.png 150w" sizes="(max-width: 352px) 100vw, 352px" /></figure>
<p>Есть еще один момент, о котором должен помнить каждый администратор при использовании БД и настройке прав. Это исполнение функций и процедур.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%B0%D0%B2%D0%BE_%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D0%B4%D1%83%D1%80%D1%8B_%D0%B8_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8"></span>Право на процедуры и функции<span class="ez-toc-section-end"></span></h3>
<p>Основы использования grant on изучены. Чтобы предоставить права на реализацию конкретных процедур и функций, необходимо пользоваться Execute в качестве дополнения к the grant:</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="524" height="33" src="https://otus.ru/journal/wp-content/uploads/2023/06/image-74.png" alt="Привилегии в SQL" class="wp-image-6581" srcset="https://otus.ru/journal/wp-content/uploads/2023/06/image-74.png 524w, https://otus.ru/journal/wp-content/uploads/2023/06/image-74-300x19.png 300w, https://otus.ru/journal/wp-content/uploads/2023/06/image-74-150x9.png 150w" sizes="(max-width: 524px) 100vw, 524px" /></figure>
<p>Здесь:</p>
<ul>
<li>execute – возможность выполнения заданной функции или процедуры;</li>
<li>procedure/function – процедура/функция, которую разрешено выполнять;</li>
<li>object – название объекта БД, для которого предоставляются права;</li>
<li>user – имя пользователя.</li>
</ul>
<p>По аналогии с grant on для отмены прав на процедуры и функции используется revoke execute. <a href="https://oracleplsql.ru/grant-revoke-privileges-mysql.html" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Здесь<span class="wpel-icon wpel-image wpel-icon-6"></span></a> и <a href="https://www.youtube.com/watch?v=i3G-g-EAvxI" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">тут<span class="wpel-icon wpel-image wpel-icon-6"></span></a> можно увидеть больше примеров по изученному направлению. Быстрее освоить его с нуля помогут <a href="https://otus.ru/lessons/subd/?utm_source=oj&utm_medium=affilate&utm_campaign=subd" title="" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">дистанционные компьютерные курсы<span class="wpel-icon wpel-image wpel-icon-6"></span></a>.</p>
</div><!-- .post-content -->
<div class="the-post-foot cf">
<div class="tag-share cf">
<div class="post-tags"><a href="https://otus.ru/journal/tag/sql/" rel="tag" data-wpel-link="internal">SQL</a><a href="https://otus.ru/journal/tag/bazy-dannyh/" rel="tag" data-wpel-link="internal">Базы данных</a></div>
<div class="post-share">
<div class="post-share-icons cf">
<span class="counters">
</span>
<a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fotus.ru%2Fjournal%2Fprivilegii-v-sql%2F" class="link facebook wpel-icon-right" target="_blank" title="Share on Facebook" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-facebook"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fprivilegii-v-sql%2F&text=%D0%9F%D1%80%D0%B8%D0%B2%D0%B8%D0%BB%D0%B5%D0%B3%D0%B8%D0%B8%20%D0%B2%20SQL" class="link twitter wpel-icon-right" target="_blank" title="Share on Twitter" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-twitter"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fotus.ru%2Fjournal%2Fprivilegii-v-sql%2F" class="link linkedin wpel-icon-right" target="_blank" title="LinkedIn" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-linkedin"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fprivilegii-v-sql%2F&media=https%3A%2F%2Fotus.ru%2Fjournal%2Fwp-content%2Fuploads%2F2023%2F06%2Foj-1080x72055-1.jpg&description=%D0%9F%D1%80%D0%B8%D0%B2%D0%B8%D0%BB%D0%B5%D0%B3%D0%B8%D0%B8%20%D0%B2%20SQL" class="link pinterest wpel-icon-right" target="_blank" title="Pinterest" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-pinterest-p"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
</div>
</div>
</div>
<div class="post-nav">
<div class="post previous cf">
<a href="https://otus.ru/journal/float-tip-i-komponent-css/" title="Prev Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-left"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/float-tip-i-komponent-css/" class="image-link" rel="previous" data-wpel-link="internal">
<img width="150" height="106" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20106%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Float: тип и компонент CSS" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2023/06/oj-1080x72054-1-150x106.jpg 150w, https://otus.ru/journal/wp-content/uploads/2023/06/oj-1080x72054-1-300x212.jpg 300w, https://otus.ru/journal/wp-content/uploads/2023/06/oj-1080x72054-1-1024x724.jpg 1024w, https://otus.ru/journal/wp-content/uploads/2023/06/oj-1080x72054-1-768x543.jpg 768w, https://otus.ru/journal/wp-content/uploads/2023/06/oj-1080x72054-1-1536x1086.jpg 1536w" data-src="https://otus.ru/journal/wp-content/uploads/2023/06/oj-1080x72054-1-150x106.jpg" data-sizes="(max-width: 150px) 100vw, 150px" title="Float: тип и компонент CSS" /> </a>
<div class="post-meta">
<span class="label">Prev Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/float-tip-i-komponent-css/" data-wpel-link="internal">Float: тип и компонент CSS</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/float-tip-i-komponent-css/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2023-06-05T20:43:05+00:00">5 июня, 2023</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">5 Mins Read</span>
</div>
</div> </div>
</span>
</div>
<div class="post next cf">
<a href="https://otus.ru/journal/regulyarnye-vyrazheniya/" title="Next Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-right"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/regulyarnye-vyrazheniya/" class="image-link" rel="next" data-wpel-link="internal">
<img width="150" height="106" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20106%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Регулярные выражения" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2023/06/oj-1080x72056-1-150x106.jpg 150w, https://otus.ru/journal/wp-content/uploads/2023/06/oj-1080x72056-1-300x212.jpg 300w, https://otus.ru/journal/wp-content/uploads/2023/06/oj-1080x72056-1-1024x724.jpg 1024w, https://otus.ru/journal/wp-content/uploads/2023/06/oj-1080x72056-1-768x543.jpg 768w, https://otus.ru/journal/wp-content/uploads/2023/06/oj-1080x72056-1-1536x1086.jpg 1536w" data-src="https://otus.ru/journal/wp-content/uploads/2023/06/oj-1080x72056-1-150x106.jpg" data-sizes="(max-width: 150px) 100vw, 150px" title="Регулярные выражения" /> </a>
<div class="post-meta">
<span class="label">Next Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/regulyarnye-vyrazheniya/" data-wpel-link="internal">Регулярные выражения</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/regulyarnye-vyrazheniya/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2023-06-05T21:00:25+00:00">5 июня, 2023</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">9 Mins Read</span>
</div>
</div> </div>
</span>
</div>
</div>
<section class="related-posts grid-3">
<h4 class="section-head"><span class="title">Читать ещё</span></h4>
<div class="ts-row posts cf">
<article class="post col-4">
<a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" title="Уровень готовности CTO к 2026" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Уровень готовности CTO к 2026" title="Уровень готовности CTO к 2026" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" class="post-link" data-wpel-link="internal">Уровень готовности CTO к 2026</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-16T19:50:59+00:00">16 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" title="Новые уроки ноября: только топ-темы по программированию" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Новые уроки ноября: только топ-темы по программированию" title="Новые уроки ноября: только топ-темы по программированию" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" class="post-link" data-wpel-link="internal">Новые уроки ноября: только топ-темы по программированию</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-09T23:24:11+00:00">9 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/schjot-idjot-na-chasy/" title="Счёт идёт на часы" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Счёт идёт на часы" title="Счёт идёт на часы" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-370x245.png 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/schjot-idjot-na-chasy/" class="post-link" data-wpel-link="internal">Счёт идёт на часы</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-10-30T15:04:59+00:00">30 октября, 2025</time>
</div>
</div>
</article >
</div>
</section>
</article> <!-- .the-post -->
</div>
<aside class="col-4 sidebar">
<div class="inner">
<ul>
<li id="search-2" class="widget widget_search"><h5 class="widget-title"><span>Поиск по блогу</span></h5>
<form method="get" class="search-form" action="https://otus.ru/journal/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Введите запрос и нажмите Enter" value="" name="s" title="Search for:" />
</label>
<button type="submit" class="search-submit"><i class="fa fa-search"></i></button>
</form>
</li>
<li id="tag_cloud-5" class="widget widget_tag_cloud"><h5 class="widget-title"><span>Метки</span></h5><div class="tagcloud"><a href="https://otus.ru/journal/tag/android-2/" class="tag-cloud-link tag-link-74 tag-link-position-1" style="font-size: 12.472222222222pt;" aria-label="Android (34 элемента)" data-wpel-link="internal">Android</a>
<a href="https://otus.ru/journal/tag/c-3/" class="tag-cloud-link tag-link-91 tag-link-position-2" style="font-size: 10.916666666667pt;" aria-label="C (23 элемента)" data-wpel-link="internal">C</a>
<a href="https://otus.ru/journal/tag/c-2/" class="tag-cloud-link tag-link-81 tag-link-position-3" style="font-size: 12.666666666667pt;" aria-label="C# (35 элементов)" data-wpel-link="internal">C#</a>
<a href="https://otus.ru/journal/tag/c/" class="tag-cloud-link tag-link-20 tag-link-position-4" style="font-size: 12.472222222222pt;" aria-label="c++ (34 элемента)" data-wpel-link="internal">c++</a>
<a href="https://otus.ru/journal/tag/computer-science/" class="tag-cloud-link tag-link-209 tag-link-position-5" style="font-size: 15.972222222222pt;" aria-label="computer science (78 элементов)" data-wpel-link="internal">computer science</a>
<a href="https://otus.ru/journal/tag/css/" class="tag-cloud-link tag-link-288 tag-link-position-6" style="font-size: 8.6805555555556pt;" aria-label="CSS (13 элементов)" data-wpel-link="internal">CSS</a>
<a href="https://otus.ru/journal/tag/data-science/" class="tag-cloud-link tag-link-151 tag-link-position-7" style="font-size: 8pt;" aria-label="Data Science (11 элементов)" data-wpel-link="internal">Data Science</a>
<a href="https://otus.ru/journal/tag/devops/" class="tag-cloud-link tag-link-98 tag-link-position-8" style="font-size: 10.138888888889pt;" aria-label="devops (19 элементов)" data-wpel-link="internal">devops</a>
<a href="https://otus.ru/journal/tag/docker/" class="tag-cloud-link tag-link-143 tag-link-position-9" style="font-size: 8.2916666666667pt;" aria-label="Docker (12 элементов)" data-wpel-link="internal">Docker</a>
<a href="https://otus.ru/journal/tag/gamedev/" class="tag-cloud-link tag-link-25 tag-link-position-10" style="font-size: 11.694444444444pt;" aria-label="gamedev (28 элементов)" data-wpel-link="internal">gamedev</a>
<a href="https://otus.ru/journal/tag/hr/" class="tag-cloud-link tag-link-103 tag-link-position-11" style="font-size: 8pt;" aria-label="hr (11 элементов)" data-wpel-link="internal">hr</a>
<a href="https://otus.ru/journal/tag/html/" class="tag-cloud-link tag-link-217 tag-link-position-12" style="font-size: 11.208333333333pt;" aria-label="HTML (25 элементов)" data-wpel-link="internal">HTML</a>
<a href="https://otus.ru/journal/tag/ios/" class="tag-cloud-link tag-link-101 tag-link-position-13" style="font-size: 8.9722222222222pt;" aria-label="iOS (14 элементов)" data-wpel-link="internal">iOS</a>
<a href="https://otus.ru/journal/tag/it/" class="tag-cloud-link tag-link-50 tag-link-position-14" style="font-size: 10.527777777778pt;" aria-label="IT (21 элемент)" data-wpel-link="internal">IT</a>
<a href="https://otus.ru/journal/tag/java/" class="tag-cloud-link tag-link-75 tag-link-position-15" style="font-size: 15.680555555556pt;" aria-label="Java (73 элемента)" data-wpel-link="internal">Java</a>
<a href="https://otus.ru/journal/tag/javascript/" class="tag-cloud-link tag-link-83 tag-link-position-16" style="font-size: 14.319444444444pt;" aria-label="JavaScript (53 элемента)" data-wpel-link="internal">JavaScript</a>
<a href="https://otus.ru/journal/tag/linux/" class="tag-cloud-link tag-link-141 tag-link-position-17" style="font-size: 11.888888888889pt;" aria-label="Linux (29 элементов)" data-wpel-link="internal">Linux</a>
<a href="https://otus.ru/journal/tag/machine-learning/" class="tag-cloud-link tag-link-167 tag-link-position-18" style="font-size: 8.6805555555556pt;" aria-label="Machine Learning (13 элементов)" data-wpel-link="internal">Machine Learning</a>
<a href="https://otus.ru/journal/tag/otus-book/" class="tag-cloud-link tag-link-261 tag-link-position-19" style="font-size: 9.9444444444444pt;" aria-label="otus book (18 элементов)" data-wpel-link="internal">otus book</a>
<a href="https://otus.ru/journal/tag/php/" class="tag-cloud-link tag-link-45 tag-link-position-20" style="font-size: 10.527777777778pt;" aria-label="PHP (21 элемент)" data-wpel-link="internal">PHP</a>
<a href="https://otus.ru/journal/tag/python/" class="tag-cloud-link tag-link-27 tag-link-position-21" style="font-size: 16.944444444444pt;" aria-label="Python (99 элементов)" data-wpel-link="internal">Python</a>
<a href="https://otus.ru/journal/tag/qa/" class="tag-cloud-link tag-link-155 tag-link-position-22" style="font-size: 11.402777777778pt;" aria-label="qa (26 элементов)" data-wpel-link="internal">qa</a>
<a href="https://otus.ru/journal/tag/sql/" class="tag-cloud-link tag-link-38 tag-link-position-23" style="font-size: 12.861111111111pt;" aria-label="SQL (37 элементов)" data-wpel-link="internal">SQL</a>
<a href="https://otus.ru/journal/tag/team-lead/" class="tag-cloud-link tag-link-364 tag-link-position-24" style="font-size: 9.9444444444444pt;" aria-label="team lead (18 элементов)" data-wpel-link="internal">team lead</a>
<a href="https://otus.ru/journal/tag/unity/" class="tag-cloud-link tag-link-24 tag-link-position-25" style="font-size: 8pt;" aria-label="unity (11 элементов)" data-wpel-link="internal">unity</a>
<a href="https://otus.ru/journal/tag/algoritmy/" class="tag-cloud-link tag-link-30 tag-link-position-26" style="font-size: 9.9444444444444pt;" aria-label="Алгоритмы (18 элементов)" data-wpel-link="internal">Алгоритмы</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh/" class="tag-cloud-link tag-link-40 tag-link-position-27" style="font-size: 10.138888888889pt;" aria-label="Базы данных (19 элементов)" data-wpel-link="internal">Базы данных</a>
<a href="https://otus.ru/journal/tag/matematika/" class="tag-cloud-link tag-link-44 tag-link-position-28" style="font-size: 10.916666666667pt;" aria-label="Математика (23 элемента)" data-wpel-link="internal">Математика</a>
<a href="https://otus.ru/journal/tag/arhitektura-po/" class="tag-cloud-link tag-link-10 tag-link-position-29" style="font-size: 9.4583333333333pt;" aria-label="архитектура ПО (16 элементов)" data-wpel-link="internal">архитектура ПО</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh-2/" class="tag-cloud-link tag-link-251 tag-link-position-30" style="font-size: 10.138888888889pt;" aria-label="базы данных (19 элементов)" data-wpel-link="internal">базы данных</a>
<a href="https://otus.ru/journal/tag/vebinar/" class="tag-cloud-link tag-link-201 tag-link-position-31" style="font-size: 13.930555555556pt;" aria-label="вебинар (48 элементов)" data-wpel-link="internal">вебинар</a>
<a href="https://otus.ru/journal/tag/dajdzhest/" class="tag-cloud-link tag-link-308 tag-link-position-32" style="font-size: 10.722222222222pt;" aria-label="дайджест (22 элемента)" data-wpel-link="internal">дайджест</a>
<a href="https://otus.ru/journal/tag/zapis-vebinara/" class="tag-cloud-link tag-link-226 tag-link-position-33" style="font-size: 14.902777777778pt;" aria-label="запись вебинара (61 элемент)" data-wpel-link="internal">запись вебинара</a>
<a href="https://otus.ru/journal/tag/zapis-uroka/" class="tag-cloud-link tag-link-272 tag-link-position-34" style="font-size: 16.069444444444pt;" aria-label="запись урока (80 элементов)" data-wpel-link="internal">запись урока</a>
<a href="https://otus.ru/journal/tag/informacionnaya-bezopasnost/" class="tag-cloud-link tag-link-232 tag-link-position-35" style="font-size: 10.138888888889pt;" aria-label="информационная безопасность (19 элементов)" data-wpel-link="internal">информационная безопасность</a>
<a href="https://otus.ru/journal/tag/karera-v-it/" class="tag-cloud-link tag-link-292 tag-link-position-36" style="font-size: 9.9444444444444pt;" aria-label="карьера в IT (18 элементов)" data-wpel-link="internal">карьера в IT</a>
<a href="https://otus.ru/journal/tag/podborka/" class="tag-cloud-link tag-link-7 tag-link-position-37" style="font-size: 12.666666666667pt;" aria-label="подборка (35 элементов)" data-wpel-link="internal">подборка</a>
<a href="https://otus.ru/journal/tag/podborka-statej/" class="tag-cloud-link tag-link-219 tag-link-position-38" style="font-size: 15.777777777778pt;" aria-label="подборка статей (75 элементов)" data-wpel-link="internal">подборка статей</a>
<a href="https://otus.ru/journal/tag/programmirovanie/" class="tag-cloud-link tag-link-65 tag-link-position-39" style="font-size: 22pt;" aria-label="программирование (332 элемента)" data-wpel-link="internal">программирование</a>
<a href="https://otus.ru/journal/tag/proekt/" class="tag-cloud-link tag-link-321 tag-link-position-40" style="font-size: 11.888888888889pt;" aria-label="проект (29 элементов)" data-wpel-link="internal">проект</a>
<a href="https://otus.ru/journal/tag/proektnaya-rabota/" class="tag-cloud-link tag-link-310 tag-link-position-41" style="font-size: 11.597222222222pt;" aria-label="проектная работа (27 элементов)" data-wpel-link="internal">проектная работа</a>
<a href="https://otus.ru/journal/tag/seti/" class="tag-cloud-link tag-link-181 tag-link-position-42" style="font-size: 12.958333333333pt;" aria-label="сети (38 элементов)" data-wpel-link="internal">сети</a>
<a href="https://otus.ru/journal/tag/testirovanie/" class="tag-cloud-link tag-link-69 tag-link-position-43" style="font-size: 13.930555555556pt;" aria-label="тестирование (48 элементов)" data-wpel-link="internal">тестирование</a>
<a href="https://otus.ru/journal/tag/upravlenie-komandoj/" class="tag-cloud-link tag-link-63 tag-link-position-44" style="font-size: 11.694444444444pt;" aria-label="управление командой (28 элементов)" data-wpel-link="internal">управление командой</a>
<a href="https://otus.ru/journal/tag/habr-2/" class="tag-cloud-link tag-link-203 tag-link-position-45" style="font-size: 13.930555555556pt;" aria-label="хабр (48 элементов)" data-wpel-link="internal">хабр</a></div>
</li>
</ul>
</div>
</aside>
</div> <!-- .ts-row -->
</div> <!-- .main -->
<footer class="main-footer dark bold">
<section class="lower-footer cf">
<div class="wrap">
<div class="links">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov-1" class="menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
<p class="copyright"> © 2015-2026 OTUS </p>
<div class="to-top">
<a href="#" class="back-to-top"><i class="fa fa-angle-up"></i> Top</a>
</div>
</div>
</section>
</footer>
</div> <!-- .main-wrap -->
<div class="mobile-menu-container off-canvas" id="mobile-menu">
<a href="#" class="close"><i class="fa fa-times"></i></a>
<div class="logo">
</div>
<ul class="mobile-menu"></ul>
</div>
<div class="search-modal-wrap">
<div class="search-modal-box" role="dialog" aria-modal="true">
<form method="get" class="search-form" action="https://otus.ru/journal/">
<input type="search" class="search-field" name="s" placeholder="Search..." value="" required />
<button type="submit" class="search-submit visuallyhidden">Submit</button>
<p class="message">
Type above and press <em>Enter</em> to search. Press <em>Esc</em> to cancel. </p>
</form>
</div>
</div>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/js/url-span.js" id="wbcr-comments-plus-url-span-js"></script>
<script type="text/javascript" id="ez-toc-scroll-scriptjs-js-extra">
/* <![CDATA[ */
var eztoc_smooth_local = {"scroll_offset":"30"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js" id="ez-toc-scroll-scriptjs-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js" id="ez-toc-js-cookie-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js" id="ez-toc-jquery-sticky-kit-js"></script>
<script type="text/javascript" id="ez-toc-js-js-extra">
/* <![CDATA[ */
var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","scroll_offset":"30","fallbackIcon":"<span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span>"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js" id="ez-toc-js-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/custom-script.js" id="custom-script-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/magnific-popup.js" id="magnific-popup-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.fitvids.js" id="jquery-fitvids-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/imagesloaded.min.js" id="imagesloaded-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/object-fit-images.js" id="object-fit-images-js"></script>
<script type="text/javascript" id="contentberg-theme-js-extra">
/* <![CDATA[ */
var Bunyad = {"custom_ajax_url":"\/journal\/privilegii-v-sql\/"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theme.js" id="contentberg-theme-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theia-sticky-sidebar.js" id="theia-sticky-sidebar-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.slick.js" id="jquery-slick-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jarallax.js" id="jarallax-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/masonry.min.js" id="masonry-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.masonry.min.js" id="jquery-masonry-js"></script>
</body>
</html>
<!-- Cache served by breeze CACHE - Last modified: Tue, 10 Mar 2026 16:26:04 GMT -->