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.