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

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

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

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

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

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

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

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

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

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

В 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:

К самым распространенным типам данных относятся: 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++, так как при возникновении ошибки (банальная опечатка) вы сможете своевременно отредактировать запрос и вставить его правильный вариант в терминал.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Выводим все данные таблицы.
  2. Выводим только 1 столбец.
  3. Выводим 1 строку.
  4. Выводим все строки, идущие после первой.
  5. Выводим данные по id в возрастающем порядке.
  6. Выводим данные по id в обратном порядке.

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

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

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

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

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

Видим:

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

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

proglib.io

Добавить комментарий

Ваш e-mail не будет опубликован.

12 + семь =