В интернете появились схемы обхода требований мэрии Москвы по доступу в заведения по QR-кодам

Схема включает в себя использование фишинговых сайтов, имитирующих сайт "Госуслуги" с привязкой к ним генераторов QR кодов

Мэрия считает такую деятельность преступлением. Юристы же утверждают, что наказание может последовать только за подделку официальных документов, к которым QR-коды не относятся. В ресторанах не всегда смогут распознать поддельные домены, да и скорее всего, ни кто этого делать не будет.  Рекомендуется использовать специальный софт для сравнения доменов, как и рекомендуется носить одноразовые маски для защиты органов дыхания, а не для отчетности.

Требования к "железу" Windows 11

Перед выходом Windows 11 компания Microsoft заявляла, что новая операционная система не будет слишком требовательна к "железу", однако системные требования на сайте постоянно обновлялись. 

На сегодняшний момент минимальные системные требования, указанные на сайте:

Процессор-не менее двух ядер с тактовой частотой не менее 1 гигагерца (ГГц) на совместимом 64-битном процессоре или Системе на кристалле (SoC).

Оперативной памяти не менее 4ГБ.

Устройство хранения на 64 ГБ или больше(судя по всему должен быть диск SSD)

Графический адаптер, совместимый с DirectX 12 / WDDM 2.x

Системная прошивка:UEFI, с поддержкой безопасной загрузки

TPM: Доверенный платформенный модуль (TPM) версии 2.0

Дисплей > 9 дюймов с разрешением HD (720p)

Интернет-соединение - Для завершения установки на устройство при первом использовании Windows 11 Home edition требуется подключение к Интернету и учетная запись Майкрософт.

Отключение на устройстве Windows 11 в S-режиме также требует наличия интернет-соединения. Здесь можно найти подробную информацию по S-режиму.

Для всех выпусков Windows 11 требуется доступ в Интернет для выполнения обновлений, а также для загрузки и использования некоторых функций.

Так же проверить, подходит ли ваш компьютер для новой операционной системы можно через специальное приложение от компании microsoft

 

Как обмануть мозг и эффективно учиться программированию

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

– Хочу эффективно учиться верстке, но не могу сосредоточиться на скучном материале.
– Можно ли стать программистом, если мне n лет?
– Не могу писать код из-за прокрастинации.

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

Почему так происходит? Об этом в статье.

Спойлер: мы неправильно пользуемся мозгом и попадаем в его ловушки.

Почему мозг не хочет учиться

Хорошая новость: вы не можете понять и правильно применить рекурсию не из-за лени или отсутствия способностей к программированию. Трудности при изучении нового материала у большинства людей возникают из-за неправильного использования мозга. Это как с топором: если сильно постараться, бревно можно расколоть обухом. Но гораздо эффективнее рубить острием.

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

Сосредоточенный режим включается, когда мы решаем сложные и нетривиальные задачи. Также он работает, когда мы пытаемся понять что-то новое, занимаемся неизвестной нам прикладной деятельностью. Например, если вы никогда не пользовались китайскими палочками и осваиваете этот инструмент, мозг работает в сосредоточенном режиме.

фото китайской лапши и палочек
Чтобы включить сфокусированный режим, попробуйте съесть суп китайскими палочками

Что под капотом

Чтобы заглянуть под капот, то есть в черепную коробку, представьте звездное небо. Звезды на нем – нервные клетки или нейроны. Чтобы решить конкретную задачу, нервные клетки должны связаться друг с другом или образовать нейронные связи. Это можно представить в качестве созвездий.

Для решения любой задачи, например, поездки на велосипеде, объявления переменной, использования зубной щетки, на нашей персональной звездной карте есть свои созвездия или нейронные связи.

фото звездного неба с метафорой нейронных связей
Нейронные связи нужны для решения любой задачи

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

Когда человек делает что-то новое, например, изучает Python или пытается съесть суп китайскими палочками, мозг вынужден создавать новые нейронные связи. Нервные импульсы словно прокладывают новые пути на звездной карте мозга. Эти пути соединяются в новые созвездия. Но перед образованием синапсов нервный импульс вынужден попробовать огромное количество вариантов, десятки тысяч раз провалиться в черные дыры и столкнуться с остывшими звездами.

Синапс – место контакта нейронов, в котором происходит обмен нервными импульсами.

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

Медведица в виде нейронных связей
Чтобы создать новые связи (красный), нейроны вынуждены посылать нервные импульсы в ложных направлениях (желтый)

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

Почему мы пользуемся мозгом неправильно

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

Это проще всего понять на примере умений и навыков. Представьте человека, который учится вязать. Сначала он усваивает теорию и приобретает знания. Он знает, как вязать, но не умеет делать этого. Потом человек берет в руки спицы и вяжет несколько рядов. Теперь он умеет вязать. Но чтобы сделать каждую петлю, он должен сосредоточиться. Когда человек свяжет 100 тыс. рядов, он сможет вязать как ваша бабушка: глядя на экран ТВ или даже в полудреме.

Навык – доведенное до автоматизма умение. Новичок умеет вязать. Чтобы сделать петлю, его мозг должен сфокусироваться и работать в энергозатратном режиме. У бабушки сформирован навык вязания. Она может связать свитер, не фокусируясь на петлях и рядках. Ее мозг работает в расслабленном режиме. Поэтому бабушка думает о свитере, а не о движениях спиц.

бабушкины руки
Во время вязания бабушке не нужно напрягаться и постоянно думать о петлях

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

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

Как расфокусировался Дали

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

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

Изображение Дали, который использовал раслабленый режим, чтобы эффективно учиться и работать
Сальвадор Дали форсировал переход из сфокусированного в расслабленный режим работы мозга

Что общего между памятью и мышцами штангиста

Хорошая новость номер три: память можно тренировать. Этим она похожа на мышцы штангиста. Но тренироваться нужно правильно. Память и мышцы невозможно развить за день или за неделю. Только не вспоминайте про синтоловых качков и психостимуляторы. Это исключения, поэтому они подтверждают правила.

Изображение качка
Мышечная сила нарабатывается постепенно

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

У нас есть долгосрочная память. На условном жестком диске хранятся колоссальные объемы информации. Какие-то сведения мы вспоминаем без усилий. Человек отлично знает адрес своего дома, хоть и не держит эту информацию в оперативной памяти. Но он регулярно обращается к отделу мозга, в котором хранится адрес. Например, это происходит, когда он вызывает такси или заказывает пиццу.

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

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

Кстати, пословица «ума палата, да ключ потерян» очень хорошо описывает принцип работы долгосрочной памяти. Если мозг не знает ключа к нужному отделу памяти, данные в нем останутся недоступными.

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

Как эффективно учиться: практика

Эффективно учиться помогут следующие рекомендации.

1. Ешьте
Речь о правильном питании. Мозг потребляет на порядок больше энергии, чем другие органы в пересчете на массу. Для эффективной работы мозгу нужно полноценное питание, о котором можно почитать в рекомендациях Всемирной организации здравоохранения.
2. Спите
Во время бодрствования в нервной ткани скапливаются продукты метаболизма. Для эффективной работы мозг должен их удалять, а это возможно только во сне. Ложитесь до полуночи, спите 7-8 часов в сутки.
3. Не злоупотребляйте алкоголем, не курите, будьте физически активными
Объяснения не нужны, правда?
4. Переключайтесь между сфокусированным и расслабленным режимом работы мозга
Это поможет усваивать новый материал, бороться с прокрастинацией, сонливостью и другими ловушками мозга. Для переключения режимов не обязательно копировать Дали. Вот несколько идей:
  • Используйте помидорный тайм-менеджмент: чередуйте периоды интенсивной работы с перерывами. Moosti в помощь.
  • Чередуйте теорию и практику.
  • Переключайтесь между задачами.
5. Двигайтесь от общего к частному
Это тот самый дедуктивный метод, который Артур Конан Дойл ошибочно приписал Шерлоку Холмсу. Когда вы стараетесь сначала понять общую картину, мозг в расслабленном режиме формирует нейронные связи. Когда вы углубляетесь в частности, мозг цементирует новые нейронные связи. Пример: чтобы усвоить информацию, расслабленно прочитайте главу из учебника. А потом вернитесь к началу главы, сконцентрируйтесь и разбирайтесь с деталями.
6. Используйте метафоры
Представление мозга в виде звездного неба, а нейронных связей в виде синапсов – метафора. Если бы ее не было, для понимания принципов работы мозга вам пришлось бы углубиться в мир синапсов и нейротрансмиттеров. Метафоры позволяют обмануть мозг и усвоить новую информацию в расслабленном состоянии. Благодаря метафоре человек может подняться на уровень выше и получить целостную картину.
7. Повторяйте новую информацию
Повторение учит мозг быстро искать путь к нужным отделам долгосрочной памяти.
8. Дайте мозгу время
Вы лучше запомните материал, если повторите его два раза вечером и два раза утром. Четыре повторения вечером не дадут такого же эффекта, так как для наращивания мозговой мышечной массы нужно время. За ночь во время сна нейронные связи между оперативной памятью и нужным отделом долгосрочной памяти укрепятся. Поэтому вы лучше запомните материал.
9. Практикуйтесь
В прикладных видах деятельности, к которым относится и программирование, эффективно учиться помогает регулярная практика. Чтобы знания превратились в умения, а умения закрепились в виде навыка, материал нужно усвоить «через руки».

Правильно пользоваться софтом и заботиться о харде

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

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

Успешного обучения!

ИСТОЧНИК

Opera приостановила поддержку VPN в российских браузерах

Компания Opera после решения Роскомнадзора об ограничении использования сервиса Opera VPN заявила, что приостанавливает поддержку сервисов VPN в своих браузерах в России, сообщили РИА Новости в пресс-службе компании.

"Мы решили приостановить поддержку сервисов VPN в наших браузерах на территории Российской Федерации в той форме, в которой она оказывалась ранее", — заявили в компании.

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

Роскомнадзор сообщил ранее в четверг, что ввел ограничения на использование VPN-сервисов VyprVPN и Opera VPN с 17 июня "в соответствии с регламентом реагирования на угрозы обхода ограничений доступа к запрещенному контенту". Как уточняло ведомство, ограничения не коснутся российских компаний, использующих VPN-сервисы в непрерывных технологических процессах.

Производители смартфонов создадут единый стандарт быстрой зарядки

Несколько китайских производителей электроники объединились для создания единого стандарта быстрой зарядки для гаджетов. Об этом сообщает Gizmochina, ссылаясь на отраслевую документацию.
Новый стандарт зарядки будет разрабатываться Китайской академией информационных и коммуникационных технологий вместе с компаниями Honor, Huawei, Oppo, Vivo, Xiaomi, Rockchip.
Консорциум займется созданием унифицированного стандарта быстрой зарядки, который должен прийти на смену разным технологиям. Пока речь идет только о проводном питании.
Сроки выхода нового стандарта зарядки для смартфонов не называются, но это может произойти уже в ближайшее время. Среди прочих плюсов унификации называется и то, что потребителям не придется беспокоиться о совместимости зарядного устройства с новым смартфоном.

Google упростит поиск потерянных Android-смартфонов

В Android появится возможность отслеживать и находить потерянные умные устройства. Намек на эту функцию нашли энтузиасты форума Xda-developers.
В последней бета-версии Google Play Services обнаружено упоминание о разрешении на определение местоположения устройства и гаджетов других людей. Пользователь сам принимает решение, включить ему эту функцию или нет.
Возможно, Google будет использовать каждое устройство Android в сервисах Google Play для поиска потерянных или украденных устройств без подключения к Интернету. Аналогичная опция "Локатор" уже несколько лет используется на iOS от Apple.
 
О конкретных сроках запуска функции поиска потерянных смартфонов в операционной системе Android не сообщается. Скорее всего, официально ее представят вместе с 12-й версией "зеленого робота", что произойдет осенью 2021 года.

О языке SQL на примере SQLite, MySQL и PostgreSQL

Говоря о БД, нельзя не вспомнить о языке SQL, СУБД и запросах, непонятных на первый взгляд. После нашей статьи вы освоите основы SQL.

В нашей работе мы будем использовать:

  1. СУБД (SQLiteMySQL и PostgreSQL)
  2. Терминал (может быть любой: cmd, conemu, git-bash)
  3. Notepad++
  4. Любая IDE

Notepad++ нам понадобится только для удобного ввода и хранения необходимых данных, а IDE – для понимания работы с SQL через другие языки программирования (в примерах используется Java). Основная часть работы будет выполняться через терминал.

Пара слов о языке SQL

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

Вот пример работы с БД в Java:

public class DbManager {

    public static Connection connection;
    public static PreparedStatement ps;
    public static ResultSet resultSet;

    /** Подключение к БД */
    public static Connection getConnection() throws ClassNotFoundException, SQLException {
        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/location",
                "root", "root");
        System.out.println("Установлено соединение с БД.");
        return connection;
    }

    /** Создание таблицы */
    public static void createTable() throws Exception {
        try {
            connection = getConnection();
            ps = connection.prepareStatement("CREATE TABLE IF NOT EXISTS" +
                    "chatbot(id INT PRIMARY KEY AUTO_INCREMENT," +
                    "our_key VARCHAR(255), our_value VARCHAR(255))");
            ps.executeUpdate();
        } catch (Exception e){
            System.out.println(e);
        }
        finally {
            System.out.println("Создание таблицы завершено.");
        }
    }

    /** Добавление в таблицу информации */
    public static void postTable() throws Exception {
        String hello_key = "привет";
        String hello_value = "hello";

        try {
            connection = getConnection();
            ps = connection.prepareStatement("INSERT INTO chatbot(our_key, our_value)" +
                    "VALUES ('"+hello_key+"','"+hello_value+"')");
            ps.executeUpdate();
        } catch (Exception e){
            System.out.println(e);
        } finally {
            System.out.println("Таблица заполнена.");
        }
    }

    /** Выбор и вывод данных */
    public static ArrayList<String> get() throws Exception {
        try {
            connection = getConnection();
            ps = connection.prepareStatement("SELECT our_key, our_value FROM chatbot");
            resultSet = ps.executeQuery();

            ArrayList<String> array = new ArrayList<>();

            while (resultSet.next()) {
                System.out.print(resultSet.getString("our_key"));
                System.out.print(" ");
                System.out.println(resultSet.getString("our_value"));

                array.add(resultSet.getString("our_key"));
                array.add(resultSet.getString("our_value"));
            }
            System.out.println("Все записи выбраны!");
            return array;

        } catch (Exception e){
            System.out.println(e);
        }
        return null;
    }
}

Запросы, которые «обрамлены» двойными кавычками после .prepareStatement, – это и есть SQL. А вот как аналогичные запросы будут выглядеть в терминале:

Все о языке SQL на примере SQLite, MySQL и PostgreSQL

На первый взгляд, слишком сложно, но сейчас мы разберем все по порядку.

Синтаксис SQL

Запросы на SQL – это простая линейная последовательность операторов. В запросах используются:

  • зарезервированные ключевые слова;
  • идентификаторы для столбцов, таблиц, операций и функций;
  • строковые, арифметические и логические выражения для создания условий поиска и вычисления значений ячеек.

Любой оператор начинается с ключевого слова-действия вроде SELECT, CREATE, UPDATE и т. д. В конце обязательно ставится точка с запятой. Оператор может свободно занимать как одну, так и несколько строк. Разделителями логических единиц выступают:

  • 1 или несколько пробелов;
  • 1 или несколько символов новой строки;
  • 1 или несколько символов табуляции.

Комментарии могут помечаться такими способами:

  • начиная двойным минусом;
  • начиная #;
  • между /* и */ (комментарии языка Си).

Подключение к базе данных

В SQLite нет таких понятий, как пользователь или пароль. База данных представлена в виде файла, и если у вас есть доступ к файлу – есть доступ и к базе. Для создания БД и подключения к ней нужно выполнить следующее:

SQLite

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

К MySQL подключиться также несложно, но здесь придется убедиться, что сервер запущен. Для этого перейдите в «Службы» и проверьте состояние:

MySQL

Если сервер запущен, введите mysql -u имя_пользователя -p, где имя_пользователя – это логин, под которым вы зарегистрировались. Пароль можно также написать следом за -p, но  после все равно придется вводить его еще раз, а терминал предупредит о том, что пароль нельзя «светить». Зачастую -u и -p – это root и root, но если вы сменили на что-то более сложное, постарайтесь не забыть, так как при работе с MySQL авторизовываться придется часто.

MySQL

Для вызова списка доступных команд используется help или \h.

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

Workbench

В PostgreSQL все аналогично, только вводится psql -U postgres. Также PostgreSQL можно настроить для быстрой авторизации без пароля:

PostgreSQL

Список доступных команд выводится по help. В списке содержатся команды программы и SQL-команды (а в языке SQL их немало).

Так подключение к БД выглядит в Java:

/** Подключение к БД */
    public static Connection getConnection() throws ClassNotFoundException, SQLException {
        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/location",
                "root", "root");
        System.out.println("Установлено соединение с БД.");
        return connection;
    }

Создание БД и таблицы

К самым распространенным типам данных относятся: INTEGER (он же INT), BIGINT, FLOAT, DOUBLE, BOOLEAN, VARCHAR (до 255 символов), TEXT, LONGTEXT, DATE, DATETIME, TIME, TIMESTAMP. С ними придется столкнуться при создании и редактировании таблиц, так как у каждого столбца будет свой тип данных.

Запросы в SQL очень удобны: это просто английские слова, которые отображают желаемое действие.

Например, создание базы данных, переход в нее и создание таблицы будет выглядеть следующим образом:

MySQL

В SQLite просмотреть таблицы можно с помощью команды .tables:

SQLite

В MySQL это делается при помощи show tables;:

MySQL

В PostgreSQL – через \d:

PostgreSQL

Не поленитесь воспользоваться сперва Notepad++, так как при возникновении ошибки (банальная опечатка) вы сможете своевременно отредактировать запрос и вставить его правильный вариант в терминал.

Вот наши команды в формате кода:

CREATE DATABASE new_db;

\u new_db

CREATE TABLE test (id INT, name VARCHAR(255));

Так создание таблицы выглядит в Java:

/** Создание таблицы */
    public static void createTable() throws Exception {
        try {
            connection = getConnection();
            ps = connection.prepareStatement("CREATE TABLE IF NOT EXISTS" +
                    "chatbot(id INT PRIMARY KEY AUTO_INCREMENT," +
                    "our_key VARCHAR(255), our_value VARCHAR(255))");
            ps.executeUpdate();
        } catch (Exception e){
            System.out.println(e);
        }
        finally {
            System.out.println("Создание таблицы завершено.");
        }
    }

Регистр букв не имеет значения, но если вы работаете с Notepad++ или IDE, для команд лучше использовать прописные буквы: текст будет визуально отделен от остального кода, и вы сможете четко прослеживать начало и конец запросов на языке SQL.

Удаление таблицы и базы данных

В этом случае используются такие команды:

DROP DATABASE databasename;
DROP TABLE tabelname;

Если вы запускаете какой-то файл, чтобы не было сбоев, просто напишите проверку на существование таблицы и/или базы данных:

DROP DATABASE IF EXISTS databasename;
DROP TABLE IF EXISTS tabelname;

Если вы воспользуетесь командами show databases или show tables, то увидите, что удаление прошло успешно.

Заполнение, редактирование и вывод таблицы

Запросы на языке SQL будут одинаковыми для всех СУБД, поэтому рассмотрим заполнение, редактирование и вывод таблицы на примере MySQL.

Чтобы заполнить таблицу значениями, необходимо помнить типы данных в столбцах, и в соответствии с этими типами заполнять. Допустим, у нас есть таблица test с группами данных id INT PRIMARY KEY (первичный ключ) и name VARCHAR (255) NOT NULL (не нулевое значение: обязательно заполняется). Тогда заполняться эти поля должны следующим образом:

INSERT INTO test (id, name) VALUES (1, 'first_name');
INSERT INTO test (id, name) VALUES (2, 'second_name');

В Java добавление в таблицу информации выглядит так:

/** Добавление в таблицу информации */
    public static void postTable() throws Exception {
        String hello_key = "привет";
        String hello_value = "hello";

        try {
            connection = getConnection();
            ps = connection.prepareStatement("INSERT INTOchatbot(our_key, our_value)" +
                    "VALUES ('"+hello_key+"','"+hello_value+"')");
            ps.executeUpdate();
        } catch (Exception e){
            System.out.println(e);
        } finally {
            System.out.println("Таблица заполнена.");
        }
    }

Если мы установим для id констрейн AUTO_INCREMENT, это поле будет заполняться автоматически, начиная с единицы и далее. В таком случае нам не придется прописывать id: мы просто будем заполнять name.

Для изменения значений используем следующую команду:

UPDATE test SET name = 'New_name';

Так весь столбец name заполнится значениями New_name. Если нам нужно выборочное изменение, оттолкнемся от соседних столбцов и создадим условие:

UPDATE test SET name = 'Another_name' WHERE id = 2;

В данном случае мы поменяем только второе имя.

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

DELETE FROM test;
DELETE FROM test WHERE id =1;

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

  1. Выводим все данные таблицы.
  2. Выводим только 1 столбец.
  3. Выводим 1 строку.
  4. Выводим все строки, идущие после первой.
  5. Выводим данные по id в возрастающем порядке.
  6. Выводим данные по id в обратном порядке.
SELECT * FROM test;
SELECT name FROM test;
SELECT * FROM test WHERE id = 1;
SELECT * FROM test WHERE id > 1;
SELECT * FROM test ORDER BY id ASC;
SELECT * FROM test ORDER BY id DESC;

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

Вывод данных в Java выглядит так:

/** Выбор и вывод данных */
    public static ArrayList<String> get() throws Exception {
        try {
            connection = getConnection();
            ps = connection.prepareStatement("SELECT our_key, our_value" +
                    "FROM chatbot");
            resultSet = ps.executeQuery();

            ArrayList<String> array = new ArrayList<>();

            while (resultSet.next()) {
                System.out.print(resultSet.getString("our_key"));
                System.out.print(" ");
                System.out.println(resultSet.getString("our_value"));

                array.add(resultSet.getString("our_key"));
                array.add(resultSet.getString("our_value"));
            }
            System.out.println("Все записи выбраны!");
            return array;

        } catch (Exception e){
            System.out.println(e);
        }
        return null;
    }

Мы также можем переименовать поле и сменить его тип:

ALTER TABLE test CHANGE COLUMN name new_name TEXT;

Или просто сменить тип, оставив прежнее имя:

ALTER TABLE test MODIFY name TEXT;

Импорт и экспорт файлов

В языке SQL можно использовать импорт и экспорт (дамп), что значительно упрощает работу. Как это сделать посредством командой строки?

Для SQLite:

.read sqlite.sql
sqlite3 test.sqlite .dump > sqlite_dump.sql

Для MySQL:

mysql -u root -p test < mysql.sql
mysqldump -u root -p test_sql > mysql_dump.sql

Для PostgreSQL:

psql -U postgres -d test -f postgresql.sql
pg_dump -U postgres -d test > postgresql_dump.sql

PRIMARY KEY и FOREIGN KEY

FOREIGN KEY (внешний ключ) необходим для ограничения по ссылкам. Создается прямая связь между значениями двух полей. Поле, которое ссылается на другое, называется внешним ключом, а поле, на которое ссылаются – родительским ключом. Их имена могут быть разными, но тип поля должен соответствовать. Внешний ключ связан с таблицей, на которую он ссылается. Каждое значение внешнего ключа должно ссылаться на одно и то же значение родительского ключа. Если это условие верно, БД пребывает в состоянии ссылочной целостности.

Давайте рассмотрим на примере. Допустим, у нас есть 2 таблицы: регионы и города.

CREATE TABLE regions (
	id INT PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(255) NOT NULL UNIQUE,
	active BOOLEAN DEFAULT TRUE
);

CREATE TABLE city (
	id INTEGER PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(255) NOT NULL UNIQUE,
	regions_id INT NOT NULL,
	active BOOLEAN DEFAULT TRUE,
	FOREIGN KEY(regions_id) REFERENCES regions(id)
);

Примечание: для SQLite вместо AUTO_INCREMENT используется AUTOINCREMENT, а в PostgreSQL – SERIAL.

В regions_id хранится идентификатор региона, и мы делаем его внешним ключом на поле id таблицы regions.

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

INSERT INTO city (name, regions_id) VALUES ('Milano', 1);

Однако запрос успешно выполнится. Это связано с тем, что зачастую в разных СУБД используются специальные команды для включения механизма внешних ключей. Как его включить?

Для SQLite:

PRAGMA FOREIGN_KEYS = ON;

Для MySQL:

ENGINE InnoDB;

В PostgreSQL данный механизм включен по умолчанию.

Чтобы не сталкиваться с ошибками уже существующих таблиц, добавьте в импортируемый файл их удаление:

DROP TABLE IF EXISTS regions;
CREATE TABLE regions (
	id INT PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(255) NOT NULL UNIQUE,
	active BOOLEAN DEFAULT TRUE
) ENGINE InnoDB;

DROP TABLE IF EXISTS city;
CREATE TABLE city (
	id INTEGER PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(255) NOT NULL UNIQUE,
	regions_id INT NOT NULL,
	active BOOLEAN DEFAULT TRUE,
	FOREIGN KEY(regions_id) REFERENCES regions(id)
) ENGINE InnoDB;

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

SET FOREIGN_KEY_CHECKS=0;

Вывод нескольких таблиц

На языке SQL можно вывести сразу несколько таблиц. Создадим в базе данных test две таблицы: test1 и test2. Заполним их значениями, при этом id будут одинаковыми и идти по порядку (можно реализовать с помощью констрейна AUTO_INCREMENT). Чтобы вывести обе таблицы рядом, выполним следующую команду:

SELECT * FROM test1 LEFT JOIN test2 ON (test2.id = test1.id);

Видим:

Все о языке SQL на примере SQLite, MySQL и PostgreSQL

Итоги

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

Источник

 

Яндекс.Метрика Рейтинг@Mail.ru