MySql. Простые sql запросы


Данная публикаци содержит рецепты простых SQL запросов, которые можно выполнять для обращения к MySql серверу для получения данных.

Все примеры будут разобраны на основании таблицы users, которая состоит из 4х колонок - id, login, pass и male.

Запрос для создания таблицы users:
create table users
(
    id    int auto_increment
        primary key,
    login varchar(255) null,
    pass  varchar(255) null,
    male  tinyint      null
);


И выполняем запрос на создание нескольких записей:
INSERT INTO users (id, login, pass, male) VALUES ('alex', '$2y$10$6SzbBCMENklStIgTqBKIluijJUnbeZ5WqIu4RJgkksnFZon5kH14y', 1);
INSERT INTO users (id, login, pass, male) VALUES ('Mikle', '$ws$10$6SzbBCMENklStIgTqBKIluijJUnbeZ5WqIu4RJgkksnFZon5kH14y', 1);
INSERT INTO users (id, login, pass, male) VALUES ('Olia', '$2y$10$88zbBCKLJklStIgTqBKIluijJUnbeZ5WqJI4RJgkksnFZon5kH14y', 2);
INSERT INTO users (id, login, pass, male) VALUES ('Tom', '$2y$20$6SzbBCNRNklStIgTqBKIluijJUnbeZ5WqIu4RJgkksnFZon5kH20y', 1);
INSERT INTO users (id, login, pass, male) VALUES ('Margaret', '$2y$20$6SzbBCNRNklStIgTqBKIluijJUnbeZ4wqIu4RJgkksnFZon5kH20y', 2);
INSERT INTO users (id, login, pass, male) VALUES ('alex', '$2y$10$6SzbBCMENklStIgTqBKIluijJUnbeZ5WqIu4RJgkksnFZon5kH14y', 1);

Таким образом в базе данных users должно существовать 6 пользователей.

Далее перечислены различные запросы к базе данных:
  • Получение всех записей со всеми полями из таблицы


    SELECT * FROM users;

    Результат:
    mysql> SELECT * FROM users;
    +----+----------+--------------------------------------------------------------+------+
    | id | login | pass | male |
    +----+----------+--------------------------------------------------------------+------+
    | 1 | alex | $2y$10$6SzbBCMENklStIgTqBKIluijJUnbeZ5WqIu4RJgkksnFZon5kH14y | 1 |
    | 2 | Mikle | $ws$10$6SzbBCMENklStIgTqBKIluijJUnbeZ5WqIu4RJgkksnFZon5kH14y | 1 |
    | 3 | Olia | $2y$10$88zbBCKLJklStIgTqBKIluijJUnbeZ5WqJI4RJgkksnFZon5kH14y | 2 |
    | 4 | Tom | $2y$20$6SzbBCNRNklStIgTqBKIluijJUnbeZ5WqIu4RJgkksnFZon5kH20y | 1 |
    | 5 | Margaret | $2y$20$6SzbBCNRNklStIgTqBKIluijJUnbeZ4wqIu4RJgkksnFZon5kH20y | 2 |
    | 6 | alex | $2y$10$6SzbBCMENklStIgTqBKIluijJUnbeZ5WqIu4RJgkksnFZon5kH14y | 1 |
    +----+----------+--------------------------------------------------------------+------+
    5 rows in set (0.00 sec)


  • Получение всех записей с определенными полями из таблицы


    SELECT id, login, male FROM users;

    Результат:
    mysql> SELECT id, login, male FROM users;
    +----+----------+------+
    | id | login | male |
    +----+----------+------+
    | 1 | alex | 1 |
    | 2 | Mikle | 1 |
    | 3 | Olia | 2 |
    | 4 | Tom | 1 |
    | 5 | Margaret | 2 |
    | 6 | alex | 1 |
    +----+----------+------+
    5 rows in set (0.00 sec)


  • Запрос на вывод всех даннных исключая дубликаты


    Для получения данных исключая дубликаты потребуется выражение distinct.
    Выражение DISTINCT используется для выпорки уникальных значени для указанных столбцов.
    Для примера выполним запрос на получение списка пользователей с уникальными не повторяющимися именами:
    SELECT DISTINCT login FROM users;

    Результат:
    mysql> SELECT DISTINCT login FROM users;
    +----------+
    | login |
    +----------+
    | alex |
    | Mikle |
    | Olia |
    | Tom |
    | Margaret |
    +----------+
    5 rows in set (0.00 sec)


    В результате выполнения запроса мы получили список пользователей и отсеиванием повторяющихся имен.
  • Выполнение запроса с условием (WHERE):


    Наша таблицы состоит из 6 записей, где указан их пол в колонке male.
    Мужской - 1.
    Женский -2.

    Выполняем запрос на получение списка пользователей женского пола:
    SELECT * FROM users WHERE male = 2;

    Результат:
    mysql> SELECT * FROM users WHERE male = 2;
    +----+----------+--------------------------------------------------------------+------+
    | id | login | pass | male |
    +----+----------+--------------------------------------------------------------+------+
    | 3 | Olia | $2y$10$88zbBCKLJklStIgTqBKIluijJUnbeZ5WqJI4RJgkksnFZon5kH14y | 2 |
    | 5 | Margaret | $2y$20$6SzbBCNRNklStIgTqBKIluijJUnbeZ4wqIu4RJgkksnFZon5kH20y | 2 |
    +----+----------+--------------------------------------------------------------+------+
    2 rows in set (0.00 sec)


    Таким образом, благодаря условию "WHERE male = 2" мы делаем выборку всех пользователей с женским полом.
  • Запрос с упорядочиванием (сортировкой).


    Запрос с упорядочиванием может понадобится в случаях, когда необходимо получить отсортированные по возрастанию или убыванию данные.
    Для примера выведем список пользователей в обратном порядке по полю "id".
    Для выполнения запроса необходимо воспользоваться конструкцией ORDER BY и указанием типа сортировки asc или desc.
    SELECT * FROM users ORDER BY id DESC;

    Перичень типов сортировки:
    ASC - от меньшего к большему
    DESC - от большего к меньшему

    Результат:
    Таким образом мы получаем тот же список пользователей отсортированный в обратном порядке (от большего к меньшему) по колонке "id".
    mysql> SELECT * FROM users ORDER BY id DESC;
    +----+----------+--------------------------------------------------------------+------+
    | id | login | pass | male |
    +----+----------+--------------------------------------------------------------+------+
    | 6 | alex | $2y$10$6SzbBCMENklStIgTqBKIluijJUnbeZ5WqIu4RJgkksnFZon5kH14y | 1 |
    | 5 | Margaret | $2y$20$6SzbBCNRNklStIgTqBKIluijJUnbeZ4wqIu4RJgkksnFZon5kH20y | 2 |
    | 4 | Tom | $2y$20$6SzbBCNRNklStIgTqBKIluijJUnbeZ5WqIu4RJgkksnFZon5kH20y | 1 |
    | 3 | Olia | $2y$10$88zbBCKLJklStIgTqBKIluijJUnbeZ5WqJI4RJgkksnFZon5kH14y | 2 |
    | 2 | Mikle | $ws$10$6SzbBCMENklStIgTqBKIluijJUnbeZ5WqIu4RJgkksnFZon5kH14y | 1 |
    | 1 | alex | $2y$10$6SzbBCMENklStIgTqBKIluijJUnbeZ5WqIu4RJgkksnFZon5kH14y | 1 |
    +----+----------+--------------------------------------------------------------+------+
    6 rows in set (0.00 sec)


  • Запрос с подсчетом количества записей.


    Подсчет количества записей можно произвести благодаря функции count().
    Значение count должно принимать наименование поля таблицы.
    В рамках примера выполним запрос на получение общего количества записей в таблице:
    SELECT count(id) FROM users;

    Результат:
    mysql> SELECT count(id) FROM users;
    +-----------+
    | count(id) |
    +-----------+
    | 6 |
    +-----------+
    1 row in set (0.00 sec)

    В результате было получено общее количество записей в таблице users.

  • Выполнение запроса в указанном диапазоне:


    Данный тип запроса может понаобиться, когда нам нужно получить данные начиная с указанной позиции и в определенном количестве.
    Данный запрос полезен при получении данных на Web сайте для постраничного перехода.
    SELECT * FROM users LIMIT 3, 2;

    При выполнении данного запроса будет получен список пользователей в количестве 2х человек, начиная с 4 пользователя.
    Результат:
    mysql> SELECT * FROM users LIMIT 3, 2;
    +----+----------+--------------------------------------------------------------+------+
    | id | login | pass | male |
    +----+----------+--------------------------------------------------------------+------+
    | 4 | Tom | $2y$20$6SzbBCNRNklStIgTqBKIluijJUnbeZ5WqIu4RJgkksnFZon5kH20y | 1 |
    | 5 | Margaret | $2y$20$6SzbBCNRNklStIgTqBKIluijJUnbeZ4wqIu4RJgkksnFZon5kH20y | 2 |
    +----+----------+--------------------------------------------------------------+------+
    2 rows in set (0.00 sec)


  • Поиск слова или строки


    Одним из простых запросов можно посчитать запрос для поиска слова или строки в таблице.
    Для этого нужно воспользоваться оператором LIKE.
    Сделаем запрос в таблицу posts, для поиска слов "Lorem Ipsum" в колонке "full_text":
    SELECT * FROM posts WHERE full_text LIKE '%Lorem Ipsum%';

    Результат:

    Процесс поиска слова или строки описан в статье - MySql. Поиск слова или строки

Новость отредактировал: Fixlix - 8-05-2019, 16:51
Причина: Добавлен пункт с поиском слова или строки в MySql базе данных

Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.