Spec-Zone.ru › MySQL 9.2

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-9.2-en/mysql-shell-tutorial-javascript-table-select.html

Spec-Zone.ru

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