Spec-Zone.ru › MySQL 8.4

22.3.4.2 Выбор таблиц

Вы можете использовать метод select() для запроса и возврата записей из таблицы в базе данных. X DevAPI предоставляет дополнительные методы для использования с методом select() для фильтрации и сортировки возвращаемых записей.

MySQL предоставляет следующие операторы для указания условий поиска: OR (||), AND (&&), XOR, IS, NOT, BETWEEN, IN, LIKE, !=, <>, >, >=, <, <=, &, |, <<, >>, +, -, *, /, ~ и %.

Выбор всех записей

Чтобы выполнить запрос, возвращающий все записи из существующей таблицы, используйте метод select() без указания условий поиска. В следующем примере выбираются все записи из таблицы city в базе данных world_x.

Примечание

Ограничьте использование пустого метода select() интерактивными операциями. Всегда используйте явный выбор имен столбцов в коде приложения.

mysql-js> db.city.select()
+------+------------+-------------+------------+-------------------------+
| ID   | Name       | CountryCode | District   | Info                    |
+------+------------+-------------+------------+-------------------------+
|    1 | Kabul      | AFG         | Kabol      |{"Population": 1780000}  |
|    2 | Qandahar   | AFG         | Qandahar   |{"Population": 237500}   |
|    3 | Herat      | AFG         | Herat      |{"Population": 186800}   |
...    ...          ...           ...          ...
| 4079 | Rafah      | PSE         | Rafah      |{"Population": 92020}    |
+------+------- ----+-------------+------------+-------------------------+
4082 rows in set (0.01 sec)

Пустой набор (нет совпадающих записей) возвращает следующую информацию:

Empty set (0.00 sec)
Фильтрация поисков

Чтобы выполнить запрос, возвращающий набор столбцов таблицы, используйте метод select() и укажите столбцы для возврата в квадратных скобках. Этот запрос возвращает столбцы Name и CountryCode из таблицы city.

mysql-js> db.city.select(["Name", "CountryCode"])
+-------------------+-------------+
| Name              | CountryCode |
+-------------------+-------------+
| Kabul             | AFG         |
| Qandahar          | AFG         |
| Herat             | AFG         |
| Mazar-e-Sharif    | AFG         |
| Amsterdam         | NLD         |
...                 ...
| Rafah             | PSE         |
| Olympia           | USA         |
| Little Falls      | USA         |
| Happy Valley      | USA         |
+-------------------+-------------+
4082 rows in set (0.00 sec)

Чтобы выполнить запрос, возвращающий строки, соответствующие определенным условиям поиска, используйте метод where() для включения этих условий. Например, следующий пример возвращает имена и коды стран городов, начинающихся на букву Z.

mysql-js> db.city.select(["Name", "CountryCode"]).where("Name like 'Z%'")
+-------------------+-------------+
| Name              | CountryCode |
+-------------------+-------------+
| Zaanstad          | NLD         |
| Zoetermeer        | NLD         |
| Zwolle            | NLD         |
| Zenica            | BIH         |
| Zagazig           | EGY         |
| Zaragoza          | ESP         |
| Zamboanga         | PHL         |
| Zahedan           | IRN         |
| Zanjan            | IRN         |
| Zabol             | IRN         |
| Zama              | JPN         |
| Zhezqazghan       | KAZ         |
| Zhengzhou         | CHN         |
...                 ...
| Zeleznogorsk      | RUS         |
+-------------------+-------------+
59 rows in set (0.00 sec)

Вы можете отделить значение от условия поиска, используя метод bind(). Например, вместо использования "Name = 'Z%'" в качестве условия замените именованный заполнитель, состоящий из двоеточия, за которым следует имя, начинающееся с буквы, например name. Затем включите заполнитель и значение в метод bind() следующим образом:

mysql-js> db.city.select(["Name", "CountryCode"]).
              where("Name like :name").bind("name", "Z%")
Подсказка

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

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

Результаты проекта

Чтобы выполнить запрос, используя оператор AND, добавьте оператор между условиями поиска в метод where().

mysql-js> db.city.select(["Name", "CountryCode"]).where(
"Name like 'Z%' and CountryCode = 'CHN'")
+----------------+-------------+
| Name           | CountryCode |
+----------------+-------------+
| Zhengzhou      | CHN         |
| Zibo           | CHN         |
| Zhangjiakou    | CHN         |
| Zhuzhou        | CHN         |
| Zhangjiang     | CHN         |
| Zigong         | CHN         |
| Zaozhuang      | CHN         |
...              ...
| Zhangjiagang   | CHN         |
+----------------+-------------+
22 rows in set (0.01 sec)

Чтобы указать несколько условных операторов, можно заключить условия поиска в скобки, чтобы изменить приоритет операторов. Следующий пример демонстрирует размещение операторов AND и OR.

mysql-js> db.city.select(["Name", "CountryCode"]).
where("Name like 'Z%' and (CountryCode = 'CHN' or CountryCode = 'RUS')")
+-------------------+-------------+
| Name              | CountryCode |
+-------------------+-------------+
| Zhengzhou         | CHN         |
| Zibo              | CHN         |
| Zhangjiakou       | CHN         |
| Zhuzhou           | CHN         |
...                 ...
| Zeleznogorsk      | RUS         |
+-------------------+-------------+
29 rows in set (0.01 sec)
Ограничение, сортировка и смещение результатов

Вы можете применить методы limit(), orderBy() и offSet() для управления количеством и порядком записей, возвращаемых методом select().

Чтобы указать количество записей, включенных в результат, добавьте метод limit() со значением к методу select(). Например, следующий запрос возвращает первые пять записей в таблице country.

mysql-js> db.country.select(["Code", "Name"]).limit(5)
+------+-------------+
| Code | Name        |
+------+-------------+
| ABW  | Aruba       |
| AFG  | Afghanistan |
| AGO  | Angola      |
| AIA  | Anguilla    |
| ALB  | Albania     |
+------+-------------+
5 rows in set (0.00 sec)

Чтобы указать порядок результатов, добавьте метод orderBy() к методу select(). Передайте методу orderBy() список одного или нескольких столбцов для сортировки и, необязательно, атрибут убывания (desc) или возрастания (asc), как требуется. По умолчанию порядок сортировки – возрастающий.

Например, следующий запрос сортирует все записи по столбцу Name, а затем возвращает первые три записи в порядке убывания.

mysql-js> db.country.select(["Code", "Name"]).orderBy(["Name desc"]).limit(3)
+------+------------+
| Code | Name       |
+------+------------+
| ZWE  | Zimbabwe   |
| ZMB  | Zambia     |
| YUG  | Yugoslavia |
+------+------------+
3 rows in set (0.00 sec)

По умолчанию метод limit() начинается с первой записи в таблице. Вы можете использовать метод offset(), чтобы изменить начальную запись. Например, чтобы пропустить первую запись и вернуть следующие три записи, соответствующие условию, передайте методу offset() значение 1.

mysql-js> db.country.select(["Code", "Name"]).orderBy(["Name desc"]).limit(3).offset(1)
+------+------------+
| Code | Name       |
+------+------------+
| ZMB  | Zambia     |
| YUG  | Yugoslavia |
| YEM  | Yemen      |
+------+------------+
3 rows in set (0.00 sec)
Связанная информация
  • В Справочном руководстве MySQL содержится подробная информация о функциях и операторах.

  • Смотрите для полного определения синтаксиса.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/mysql-shell-tutorial-javascript-table-select.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API