Как пользоваться командой usermod в Linux?

usermod — это утилита командной строки, позволяющая изменять данные для входа пользователя.

В этой статье рассказывается, как использовать команду usermod для добавления пользователя в группу, изменения оболочки пользователя, имени входа, домашнего каталога и т.д.

Синтаксис команды usermod имеет следующий вид:

usermod [options] USER

Только root или пользователи с sudo доступом могут вызывать usermod и изменять учетную запись пользователя. В случае успеха команда не выводит никаких результатов.

Добавить пользователя в группу

Наиболее типичный вариант использования usermod — добавление пользователя в группу.

Чтобы добавить существующего пользователя во вторичную группу, используйте параметры -a -G после имени группы и имени пользователя:

usermod -a -G GROUP USER

Если вы хотите добавить пользователя сразу в несколько групп, укажите группы после -G параметра, разделенные, (запятыми), без пробелов.

Например, чтобы добавить пользователя linuxizeв gamesгруппу, вы должны выполнить следующую команду:

sudo usermod -a -G games linuxize

Всегда используйте опцию -a (добавить) при добавлении пользователя в новую группу. Если вы не укажете этот параметр, пользователь будет удален из групп, не перечисленных после -G параметра.

Если пользователя или группы не существует, команда предупредит вас.

Изменить основную группу пользователя

Чтобы изменить основную группу пользователя, вызовите команду usermod с помощью параметра -g, следующего за именем группы и именем пользователя:

sudo usermod -g GROUP USER

В следующем примере мы меняем основную группу пользователя linuxize на developers:

usermod -g developers linuxize

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

Изменение информации о пользователе

Чтобы изменить информацию GECOS (полное имя пользователя), запустите команду с параметром -c, за которым следует новый комментарий и имя пользователя:

usermod -c "GECOS Comment" USER

Вот пример, показывающий, как добавить дополнительную информацию пользователю linuxize:

usermod -c "Test User" linuxize

Эта информация хранится в файле /etc/passwd.

Изменение домашнего каталога пользователя

В большинстве систем Linux домашние каталоги пользователей названы по имени пользователя и создаются в каталоге /home.

Если по какой-то причине вы хотите изменить домашний каталог пользователя, вызовите usermodкоманду, указав опцию -d, указав абсолютный путь к новому домашнему каталогу и имя пользователя:

usermod -d HOME_DIR USER

По умолчанию команда не перемещает содержимое домашнего каталога пользователя в новый. Чтобы переместить содержимое, используйте опцию -m. Если новый каталог еще не существует, он создается:

usermod -d HOME_DIR -m USER

Вот пример, показывающий, как изменить домашний каталог пользователя www-data на /var/www:

usermod -d /var/www www-data

Изменение пользовательской оболочки по умолчанию

Оболочка по умолчанию — это оболочка, которая запускается после входа в систему. По умолчанию в большинстве систем Linux в качестве оболочки по умолчанию используется Bash Shell.

Чтобы изменить оболочку пользователя по умолчанию, запустите команду с параметром -s, следующим за абсолютным путем оболочки и именем пользователя:

usermod -s SHELL USER

В приведенном ниже примере мы меняем оболочку пользователя на Zsh:

sudo usermod -s /usr/bin/zsh linuxize

Вы можете узнать, какие оболочки доступны в вашей системе, просмотрев /etc/shells содержимое файла.

Изменение UID пользователя

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

Чтобы изменить UID пользователя, вызовите команду с -uпараметром, следующим за новым UID и именем пользователя:

usermod -u UID USER

В приведенном ниже примере показано, как изменить номер «UID» на «1050»:

sudo usermod -u 1050 linuxize

UID файлов, принадлежащих пользователю и находящихся в домашнем каталоге пользователя, и файл почтового ящика пользователя будет изменен автоматически. Право собственности на все остальные файлы необходимо изменить вручную.

Изменение имени пользователя

Хотя не очень часто, иногда вам может потребоваться изменить имя существующего пользователя. Параметр -l используется для изменения имени пользователя:

usermod -l NEW_USER USER

В приведенном ниже примере мы переименование пользователя linuxizeк lisaна «1050»:

sudo usermod -l linuxize lisa

При изменении имени пользователя вы также можете изменить домашний каталог пользователя, чтобы отразить новое имя пользователя.

Установка даты истечения срока действия пользователя

Дата истечения срока — это дата, когда учетная запись пользователя будет отключена. Чтобы установить дату истечения срока действия пользователя, используйте опцию -e:

sudo usermod -e DATE USER

Срок годности должен быть установлен в формате YYYY-MM-DD.

Например, чтобы отключить пользователя linuxize на 2022-02-21, вы бы выполнить следующую команду:

sudo usermod -e "2022-02-21" linuxize

Чтобы отключить истечение срока действия учетной записи, установите пустую дату истечения срока действия:

sudo usermod -e "" linuxize

Используйте chage команду -l, чтобы просмотреть дату истечения срока действия пользователя:

sudo chage -l linuxize

Last password change : Jul 24, 2018

Password expires : never

Password inactive : never

Account expires : never

Minimum number of days between password change : 0

Maximum number of days between password change : 99999

Number of days of warning before password expires : 7

Срок годности хранится в /etc/shadow файле.

Блокировка и разблокировка учетной записи пользователя

Опция -L позволяет заблокировать учетную запись пользователя:

usermod -L USER

Команды вставят восклицательный знак (!) перед зашифрованным паролем. Если поле пароля в /etc/shadow файле содержит восклицательный знак, пользователь не сможет войти в систему, используя аутентификацию по паролю. Другие методы входа в систему, такие как аутентификация на основе ключей или переключение на пользователя, по-прежнему разрешены. Если вы хотите заблокировать учетную запись и отключить все методы входа в систему, вам также необходимо установить дату истечения срока действия равной 1.

В следующих примерах показано, как заблокировать пользователя linuxize:

sudo usermod -L linuxize

sudo usermod -L -e 1 linuxize

Чтобы разблокировать пользователя, запустите usermodс -Uопцией:

usermod -U USER

Заключение

Мы показали вам, как использовать команду usermod для установки информации об учетной записи пользователя.

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.



2021-01-25T10:07:27
Вопросы читателей

Контрольный список повышения безопасности Windows Server. Часть 2

4. Установка обновления

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

Существуют разные виды обновлений: исправления, как правило, устраняют одну уязвимость; накопительные пакеты — это группа пакетов, которые устраняют несколько, возможно, связанных уязвимостей, а пакеты обновления — это обновления для широкого спектра уязвимостей, состоящих из десятков или сотен отдельных исправлений. Обязательно загляните на многочисленные форумы пользователей Microsoft после выпуска обновления, чтобы узнать, какие впечатления от него испытывают другие люди. Имейте в виду, что версия ОС также является разновидностью обновления, и использование устаревших серверных версий значительно отстает от кривой безопасности.

Если ваш производственный график позволяет это, вам следует настроить автоматические обновления на своем сервере. К сожалению, многим ИТ-отделам не хватает рабочей силы для проверки и тестирования каждого патча, и это может привести к застою, когда дело доходит до установки обновлений. Однако гораздо опаснее оставлять производственную систему без исправлений, чем автоматически обновлять ее, по крайней мере, для критических исправлений. По возможности, обновления следует размещать поэтапно, чтобы тестовые среды получали их на неделю или около того раньше, что дает командам возможность наблюдать за их поведением. Необязательные обновления можно выполнить вручную, поскольку они обычно устраняют незначительные проблемы.

Другие обновления программного обеспечения MS также через Центр обновления Windows, поэтому не забудьте включить обновления для других продуктов, если вы используете Exchange, SQL или другую технологию сервера MS. Каждое приложение необходимо регулярно обновлять и тестировать.

 

5. Конфигурация NTP

Разница во времени всего в 5 минут полностью нарушит вход в Windows и различные другие функции, которые полагаются на безопасность Kerberos. Серверы, являющиеся членами домена, будут автоматически синхронизировать свое время с контроллером домена при присоединении к домену, но на автономных серверах необходимо настроить NTP для синхронизации с внешним источником, чтобы часы оставались точными. Контроллеры домена также должны синхронизировать свое время с сервером времени, чтобы весь домен оставался в рабочем диапазоне фактического времени.

 

6. Конфигурация межсетевого экрана

Например, если вы создаете веб-сервер, вам нужно, чтобы для этого сервера из Интернета были открыты только веб-порты (80 и 443). Если анонимные интернет-клиенты могут общаться с сервером на других портах, это создает огромную и ненужную угрозу безопасности. Если у сервера есть другие функции, такие как удаленный рабочий стол (RDP) для управления, они должны быть доступны только через VPN-соединение, чтобы неавторизованные люди не могли использовать порт по своему желанию из сети.

Брандмауэр Windows — это приличный встроенный программный брандмауэр, который позволяет конфигурировать трафик на основе портов изнутри ОС. На автономном сервере или любом сервере без аппаратного брандмауэра перед ним брандмауэр Windows по крайней мере обеспечивает некоторую защиту от сетевых атак, ограничивая поверхность атаки разрешенными портами. Тем не менее, аппаратный брандмауэр всегда является лучшим выбором, поскольку он разгружает трафик на другое устройство и предлагает больше возможностей для обработки этого трафика, позволяя серверу выполнять свои основные обязанности. Какой бы метод вы ни использовали, ключевым моментом является ограничение трафика только необходимыми маршрутами.

 

7. Конфигурация удаленного доступа

Как упоминалось выше, если вы используете RDP, убедитесь, что он доступен только через VPN, если это вообще возможно. Если оставить его открытым для Интернета, это не гарантирует, что вас взломают, но это дает потенциальным хакерам еще одно вторжение на ваш сервер.

Убедитесь, что RDP доступен только авторизованным пользователям. По умолчанию все администраторы могут использовать RDP, если он включен на сервере. Дополнительные люди могут присоединиться к группе пользователей удаленного рабочего стола для доступа, не становясь администраторами.

Помимо RDP, следует тщательно заблокировать различные другие механизмы удаленного доступа, такие как Powershell и SSH, если они используются, и сделать их доступными только в среде VPN. Telnet вообще не следует использовать, поскольку он передает информацию в виде обычного текста и во многих отношениях крайне небезопасен. То же самое и с FTP. По возможности используйте SFTP или SSH (из VPN) и вообще избегайте незашифрованных коммуникаций.

 

8. Конфигурация службы

Сервер Windows имеет набор служб по умолчанию, которые запускаются автоматически и работают в фоновом режиме. Многие из них необходимы для работы ОС, но некоторые из них не требуются и должны быть отключены, если не используются. Следуя той же логике, что и брандмауэр, мы хотим минимизировать поверхность атаки сервера, отключив все, кроме основных функций. В старых версиях MS server больше ненужных сервисов, чем в новых, поэтому внимательно проверяйте все серверы 2008 или 2003 (!).

Важные службы должны быть настроены на автоматический запуск, чтобы сервер мог восстановиться без вмешательства человека после сбоя. Для более сложных приложений воспользуйтесь функцией автоматического (отложенного запуска), чтобы дать другим службам возможность начать работу до запуска интенсивных служб приложений. Вы также можете настроить зависимости служб, в которых служба будет ждать успешного запуска другой службы или набора служб перед запуском. Зависимости также позволяют вам останавливать и запускать сразу всю цепочку, что может быть полезно, когда важно время.

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

 

9. Дальнейшее упрочнение

Корпорация Майкрософт предоставляет анализаторы передового опыта на основе ролей и версии сервера, которые могут помочь вам еще больше укрепить ваши системы путем сканирования и предоставления рекомендаций.

Хотя контроль учетных записей пользователей (UAC) может раздражать, он служит важной цели абстрагирования исполняемых файлов от контекста безопасности вошедшего в систему пользователя. Это означает, что даже если вы вошли в систему как администратор, UAC предотвратит запуск приложений от вашего имени без вашего согласия. Это предотвращает запуск вредоносных программ в фоновом режиме и предотвращает запуск программ установки или другого кода вредоносными веб-сайтами. По возможности оставляйте UAC включенным.

Советы в этом руководстве помогают защитить операционную систему Windows, но каждое приложение, которое вы запускаете, также должно быть усилено. Общие серверные приложения Microsoft, такие как MSSQL и Exchange, имеют особые механизмы безопасности, которые могут помочь защитить их от атак, таких как программы-  вымогатели,  такие как  WannaCry. Обязательно исследуйте и настраивайте каждое приложение для максимальной устойчивости. Если вы создаете веб-сервер, вы также можете следовать нашему руководству по усилению защиты, чтобы улучшить его безопасность в Интернете.

 

Начало: Контрольный список повышения безопасности Windows Server. Часть 1

Продолжение: Контрольный список повышения безопасности Windows Server. Часть 3



2021-01-25T08:45:38
OS Windows

Можно ли запустить выполнение команд bash в фоновом режиме?

Нет ничего более раздражающего, чем запустить команду в своем терминале и заставить ее работать в течение минут, а иногда и часов, и не иметь возможности снова использовать свой терминал. Конечно, вы можете использовать вкладки, но это неуклюжее решение, и оно не всегда оптимально, потому что вы можете хотеть видеть обновления во время работы. Здесь мы покажем вам несколько различных способов запуска команд bash в фоновом режиме в Linux.

Завершите команду с помощью &

Если вы хотите поместить команду в фоновый режим, используйте & (амперсанд) в конце простой способ сделать это. Таким образом, вы можете выполнить команду в фоновом режиме и продолжать использовать свой терминал во время его работы. Однако у этого есть уловка. Использование &не отключает команду от вас; он просто отодвигает его на задний план. Это означает, что пока вы пытаетесь использовать терминал, все, что команда хочет отправить STDOUT или STDERR все еще будет напечатано, что может отвлекать.

COMMAND &

Когда сеанс терминала закрывается, команда завершается. Вы также можете убить команду jobs, выполнив команду, найдя номер выполняющейся команды и завершив ее с помощью killкоманды. Этот синтаксис выглядит следующим образом:

kill %1

Использование & хорошо, если вам нужно немного оттолкнуть что-то, но не ожидайте, что это будет продолжаться вечно.

& После команды, затем отклонить ее

Выполнение команды с помощью просто & отодвигает ее на задний план и поддерживает ее выполнение, пока открыто окно терминала. Однако, если вы хотите, чтобы эта команда работала постоянно, даже после завершения сеанса терминала, вы можете использовать эту команду disown.

Чтобы использовать этот метод, начните с добавления &.

COMMAND &

Как упоминалось выше, использование &этой команды переводит эту команду в фоновый режим, но не отключает ее от пользователя. Вы можете проверить это, набрав jobs в терминале. Он покажет, как команда работает в фоновом режиме, как мы видели раньше.

Просто введите disown в оболочку, и она сделает именно это. (И вы можете еще раз проверить это с помощью команды jobs.)

Теперь вы можете закрыть свой терминал и продолжить свой день. Он по-прежнему будет связывать вещи с STDOUT или STDERR, но как только вы выйдете и снова откроете свой терминал, вы ничего там не увидите. Вы можете снова найти команду с помощью команд top или ps и убить ее с помощью команды kill.

& После команды с /dev/null

Добавление & после команды переместит команду в фоновый режим, но в результате фоновая команда продолжит выводить сообщения в терминал по мере того, как вы его используете. Если вы хотите предотвратить это, подумайте о перенаправлении команды на /dev/null.

COMMAND &>/dev/null &

Это не мешает команде закрыться при закрытии терминала. Однако, как упоминалось выше, можно использовать, disown чтобы отключить запущенную команду от пользователя. Вы также можете убить его любым из методов, упомянутых выше, если вы больше не хотите, чтобы он запускался.

Nohup, с & и /dev/null

В отличие от предыдущих команд, использование nohup позволяет запускать команду в фоновом режиме и продолжать ее выполнение. Как? nohup обходит сигнал HUP (сигнал зависания), что позволяет запускать команды в фоновом режиме, даже когда терминал выключен. Объедините эту команду с перенаправлением на «/dev/null» (чтобы nohup не создавал файл nohup.out), и все перейдет в фон с помощью одной команды.

nohup COMMAND &>/dev/null &

Большинство терминальных программ в Linux сегодня имеют встроенные функции, позволяющие им работать в фоновом режиме без особых усилий. Наряду с этим современные системы инициализации (например, systemd) могут позволять пользователям запускать такие программы, как службы, при загрузке или в любое время.

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

К счастью, такие команды, как nohup или disown, все еще существуют и могут закрыть пробел в перемещении подобных программ на задний план. Они не идеальны или необычны, но они выполняют свою работу, когда это необходимо.



2021-01-22T13:46:49
Вопросы читателей

Что такое переменные Bash и как их использовать?

Bash позволяет отображать целые строки текста в отдельные переменные, упрощая его использование и написание скриптов. Как они работают и как их использовать? Давайте выясним.

Что такое переменная?

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

Переменные в реальном времени

Bash позволяет использовать переменные. Вы можете создавать переменные на лету и повторно использовать их во время текущего сеанса Bash. Они могут помочь вам использовать Bash по-разному, и они исчезнут после завершения текущего сеанса.

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

sitea = https://www.maketecheasier.com

После этого, если вы хотите посетить наш сайт с помощью Firefox, вы можете просто ввести:

firefox $sitea

Намного проще — и читабельнее. Переменная $sitea будет оставаться отображаться на сайте, пока вы не изменили его содержимое вручную или сеанс Bash закончился. И, конечно же, вы можете создать несколько переменных, таких , как siteb, sitec, и sited.

При настройке новых переменных вы можете использовать любые имена по своему усмотрению и хранить в них любые буквенно-цифровые строки. Однако имейте в виду, что они по умолчанию чувствительны к регистру. Таким образом, $sitea не будет таким же, как $SiteA. Также обратите внимание, что вы должны использовать кавычки при сохранении строк со специальными символами внутри них (включая пробелы).

Переменные в скриптах

Переменные в Bash более полезны при написании сценариев, поскольку они позволяют вам написать один сценарий, который затем может выполнять итерацию по различным строкам или воздействовать на настраиваемые фрагменты данных. Допустим, вы пишете сценарий, который каждый может использовать на своем компьютере, но каждый раз будет отображать персонализированное приветствие. Без переменных вам пришлось бы писать разные версии скрипта для каждого пользователя. С переменными вы сохраняете тот же сценарий и меняете только имя пользователя.

Такой сценарий будет выглядеть примерно так:

#!/bin/bash 

username=Odysseas

echo $username

Приведенный выше пример может показаться излишним; однако по мере увеличения сложности кода переменные становятся незаменимыми. Скрипт может состоять из сотен или тысяч строк и содержать имя пользователя в разных местах. Чтобы лучше понять это, рассмотрим следующий несколько иной сценарий:

#!/bin/bash

username=Linus 

echo Привет, $username. Это простой сценарий, который я написал, который будет повторять ваше имя, то есть $username, часто как реальный пример того, как использовать переменные Bash. Я надеюсь, что это будет сделать это легче понять, как использовать переменные, чтобы улучшить свой рабочий процесс Баша, $username. В этом случае переменное имя пользователя сопоставляется с вашим именем. Всякий раз, когда Bash сталкивается с ним, он заменяет его на $username.

Вышеупомянутый скрипт будет использовать имя, определенное как переменная username, для завершения текста. Если вы используете настоящее имя пользователя, вам придется ввести его четыре раза. Затем проделайте то же самое для следующего пользователя и еще четыре раза для следующего. Снова и снова. Назначив его переменной, вам нужно изменить его только один раз для каждого пользователя, и каждое упоминание имени пользователя в тексте будет обновлено.

Постоянные переменные и псевдонимы Bash

Мы видели, как вы можете временно устанавливать переменные и как, для чего-то более постоянного, вы можете включать их в свои собственные скрипты. Но разве нельзя постоянно устанавливать переменные в Bash? Ответ — большое «да!» и вам нужно отредактировать только один файл: «~/.bashrc».

Откройте файл «~/.bashrc» в вашем любимом текстовом редакторе. Поскольку я предпочитаю нано, я сделал это с помощью:

nano ~/.bashrc

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

myname="Odysseas Kourafalos"

Сохраните файл и выйдите из редактора. Настройки будут применены не сразу. Введите в свой терминал следующее, чтобы оно вступило в силу:

source ~/.bashrc

Теперь вы можете использовать вновь установленную переменную в сеансе Bash:

echo $myname

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

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

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

В заключение, даже если вы навсегда установили переменную в .bashrc, вы можете временно переназначить ей другое значение, как мы видели ранее. Переменная будет представлять новое содержимое до завершения текущего сеанса Bash (после выхода из системы или перезапуска) или до тех пор, пока вы не повторно загрузите файл. bashrc.



2021-01-22T13:28:37
Вопросы читателей

MySQL Pivot: поворот строк в столбцы

Таблица базы данных может хранить различные типы данных, и иногда нам нужно преобразовать данные на уровне строк в данные на уровне столбцов. Эту проблему можно решить с помощью функции PIVOT(). Эта функция используется для поворота строк таблицы в значения столбцов. Но эта функция поддерживается очень немногими серверами баз данных, такими как Oracle или SQL Server. Если вы хотите выполнить ту же задачу в таблице базы данных MySQL, вам необходимо написать запрос SELECT, используя оператор CASE для поворота строк в столбцы. В статье показано, как выполнять задачу функции PIVOT() в связанных таблицах базы данных MySQL.

 

Предпосылка:

Вам необходимо создать базу данных и несколько связанных таблиц, в которых строки одной таблицы будут преобразованы в столбцы, такие как функция PIVOT(). Выполните следующие операторы SQL, чтобы создать базу данных с именем unidb и создать три таблицы с именами ‘students’, ‘courses’ и ‘result’. студенты и таблицы результатов будут связаны отношением «один ко многим», а таблицы курсов и результатов будут связаны здесь отношением «один ко многим». Запрос CREATE таблицы результатов содержит два ограничения внешнего ключа для полей, std_id и course_id.

CREATE DATABASE unidb;

USE unidb;



CREATE TABLE students (

id INT PRIMARY KEY,

name varchar(50) NOT NULL,

department VARCHAR(15) NOT NULL);



CREATE TABLE courses (

course_id VARCHAR(20) PRIMARY KEY,

name varchar(50) NOT NULL,

credit SMALLINT NOT NULL);



CREATE TABLE result(

std_id INT NOT NULL,

course_id VARCHAR(20) NOT NULL,

mark_type VARCHAR(20) NOT NULL,

marks SMALLINT NOT NULL,

FOREIGN KEY (std_id) REFERENCES students(id),

FOREIGN KEY (course_id) REFERENCES courses(course_id),

PRIMARY KEY (std_id, course_id, mark_type));

 

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

INSERT INTO students VALUES

( '1937463', 'AndreyEx', 'CSE'),

( '1937464', 'Destroyer', 'CSE'),

( '1937465', 'Alex', 'CSE'),





INSERT INTO courses VALUES

( 'CSE-401', 'Объектно-ориентированное программирование', 3),

( 'CSE-403', 'Структура данных', 2),

( 'CSE-407', 'Программирование Unix', 2);



INSERT INTO result VALUES

( '1937463', 'CSE-401','Внутренний экзамен' ,15),

( '1937463', 'CSE-401','Промежуточный экзамен' ,20),

( '1937463', 'CSE-401','Итоговый экзамен', 35),

Здесь таблица результатов содержит несколько одинаковых значений для столбцов std_id , mark_type и course_id в каждой строке. Как преобразовать эти строки в столбцы этой таблицы для отображения данных в более организованном формате, показано в следующей части этой статьи.

 

Поверните строки в столбцы, используя оператор CASE:

Выполните следующую простую инструкцию с оператором SELECT, чтобы отобразить все записи таблицы результатов.

SELECT * FROM result;

 

На выходе показаны оценки четырех студентов за три типа экзаменов по трем курсам. Таким образом, значения std_id , course_id и mark_type повторяются несколько раз для разных студентов, курсов и типов экзаменов.

Вывод будет более читабельным, если запрос SELECT можно будет написать более эффективно с помощью оператора CASE. Следующий оператор SELECT с оператором CASE преобразует повторяющиеся значения строк в имена столбцов и отобразит содержимое таблиц в более понятном для пользователя формате.

SELECT result.std_id, result.course_id,

MAX(CASE WHEN result.mark_type = "Внутренний экзамен" THEN result.marks END) "Внутренний экзамен",

MAX(CASE WHEN result.mark_type = "Промежуточный экзамен" THEN result.marks END) "Промежуточный экзамен",

MAX(CASE WHEN result.mark_type = "Итоговый экзамен" THEN result.marks END) "Итоговый экзамен"

FROM result

GROUP BY result.std_id, result.course_id

ORDER BY result.std_id, result.course_id ASC;

 

Поверните строки в столбцы, используя CASE и SUM():

Если вы хотите подсчитать общее количество каждого курса каждого студента из таблицы, вы должны использовать агрегатную функцию SUM() group by std_id и course_id с оператором CASE. Следующий запрос создается путем изменения предыдущего запроса с помощью функции SUM() и предложения GROUP BY.

SELECT result.std_id,result.course_id,

MAX(CASE WHEN result.mark_type = "Внутренний экзамен" THEN result.marks END) "Внутренний экзамен",

MAX(CASE WHEN result.mark_type = "Промежуточный экзамен" THEN result.marks END) "Промежуточный экзамен",

MAX(CASE WHEN result.mark_type = "Итоговый экзамен" THEN result.marks END) "Итоговый экзамен",

SUM( result.marks) as Total

FROM result

GROUP BY result.std_id, result.course_id

ORDER BY result.std_id, result.course_id ASC;

В выходных данных отображается новый столбец «Total», в котором отображается сумма оценок по всем типам экзаменов каждого курса, полученных каждым конкретным студентом.

 

Поверните строки в столбцы в нескольких таблицах:

К таблице результатов применяются два предыдущих запроса.. Эта таблица связана с двумя другими таблицами. Это студенты и курсы. Если вы хотите отображать имя студента вместо идентификатора студента и имени курса вместо идентификатора курса, вам нужно написать запрос SELECT, используя три связанных таблицы, студентов , курсы и результат. Следующий запрос SELECT создается путем добавления трех имен таблиц после предложения FORM и задания соответствующих условий в предложении WHERE для извлечения данных из трех таблиц и создания более подходящего вывода, чем предыдущие запросы SELECT.

SELECT students.name as `Student Name` , courses.name as `Course Name`,

MAX(CASE WHEN result.mark_type = "Внутренний экзамен" THEN result.marks END) "Вн",

MAX(CASE WHEN result.mark_type = "Промежуточный экзамен" THEN result.marks END) "Пр",

MAX(CASE WHEN result.mark_type = "Итоговый экзамен" THEN result.marks END) "Финал",

SUM( result.marks) as Total

FROM students, courses, result

WHERE result.std_id = students.id and result.course_id= courses.course_id

GROUP BY result.std_id, result.course_id

ORDER BY result.std_id, result.course_id ASC;

 

Заключение:

В этой статье показано, как реализовать функциональность функции Pivot() без поддержки функции Pivot() в MySQL с использованием некоторых фиктивных данных. Мы надеемся, что читатели смогут преобразовать любые данные на уровне строк в данные на уровне столбцов с помощью запроса SELECT после прочтения этой статьи.



2021-01-22T09:48:45
MariaDB

Какую версию Windows выбрать для ноутбука?

Операционные системы от Microsoft, как правило, не всегда одинаково подходят для одного и того же устройства, так как отличаются минимальными системными характеристиками. Например, взять тот же Windows 10. Несмотря на то, что у него минимальные требования практически такие же, как и в Windows 7, на слабых компьютерах он будет сильно тормозить, особенно на ноутбуках и нетбуках. Здесь уже все зависит еще от «начинки» операционной системы. В той же «семерке» в разы меньше лишних компонентов и приложений, чем в «десятке», поэтому она больше подходит для ноутбуков. В общем, если вы решили установить операционную систему для ноутбука, но не знаете, какую именно выбрать, рекомендуем вам прочитать наш материал.

Для Windows 10, купить который можно на сайте https://entershop.net/windows-1, минимальным требованием является 1 Гб оперативной памяти, а лучше 2 Гб, если речь идет о 64-х разрядной версии. И если вам нужна лицензия версия операционной системы, то рекомендуем вам приобрести ее здесь. Этот сайт на протяжении долгого времени осуществляет продажу лицензионных кодов активации для различных версий Windows, Microsoft Office и антивирусов, поэтому вы сможете серьезно сэкономить на покупке и при этом гарантированно получить качественную продукцию. Если же говорить о «десятке» для ноутбуков, то для бюджетных моделей не советуем ее устанавливать, потому что возможны серьезные лаги, особенно если речь идет о расширенных редакциях. Максимум, что вы можете установить – это Windows 10 Home, однако в дальнейшем по-хорошему еще нужно будет оптимизировать эту операционную систему, выключив все ненужные опции и службы.

Для слабых ноутбуков самый оптимальный вариант – это Windows 7 Home или Professional, которых вполне хватит, чтобы ваш компьютер работал стабильно без сбоев и при этом можно было выполнять любые виды работ, начиная от обычного серфинга в интернете, заканчивая такими серьезными продуктами, как Adobe Photoshop или Premiere Pro. Вообще седьмая версия отлично подходит под большинство устройств, в том числе и ноутбуки. Но, если у вас старый девайс, в нем рекомендуем установить SSD-накопитель, так как с таким жестким диском в целом операционная система будет загружаться примерно в 4 раза быстрее, да и большая часть операций на вашем компьютере повысится в плане скорости (запуск приложений, перенос данных, чтение данных с носителя).

Есть средний сегмент ноутбуков, которые подходят не только для офиса, но и для не особо требовательных игр в виде Counter Strike, Fortnite, GTA 5 на низких параметрах, World of Tanks и прочих проектов. В этом случае можно поставить и Windows 10, но, опять же, лучше использовать домашнюю версию, чтобы не устанавливались лишние модули. И все равно вам придется часть функционала в последующем отключать, чтобы получить максимум возможностей от этой системы, но при этом снизить нагрузку на компьютер. Мы настоятельно рекомендуем вам именно домашнюю версию, и никакую больше. В той же Professional уже в разы больше модулей будет установлено по умолчанию, хотя, если вы разбираетесь в тонкостях работы Windows, то быстро поймете, какие службы необходимо отключить.

Для мощных же компьютеров, пусть и ноутбуков, можно устанавливать любую версию, но Windows 10, конечно же, идеальна для таких устройств. Вполне хватит и профессиональной версии, если ваш ноутбук не используется на производстве или в какой-то компании, где требуются особые опции в операционной системе. В любом случае, читайте гайды в интернете и отключайте лишние службы. К сожалению, в «десятке» их много, и, какой бы мощный ПК у вас ни был, они серьезно будут его нагружать.



2021-01-22T08:33:28
Microsoft