Ответ
Да, могу составлять SQL-запросы для работы с базами данных в iOS-разработке, используя как высокоуровневые абстракции (Core Data), так и прямой SQL (SQLite).
1. Core Data (рекомендуемый способ):
Использую NSFetchRequest с NSPredicate для типобезопасных и оптимизированных запросов.
// Запрос: выбрать пользователей старше 18 лет, отсортированных по имени
let request: NSFetchRequest<User> = User.fetchRequest()
request.predicate = NSPredicate(format: "age > %@", NSNumber(value: 18))
request.sortDescriptors = [NSSortDescriptor(key: "name", ascending: true)]
// Для эффективной работы с UITableView часто использую NSFetchedResultsController
2. Прямой SQL (через обёртки вроде FMDB или SQLite.swift):
// Пример с FMDB для SQLite
let query = """
SELECT u.id, u.name, COUNT(o.id) as order_count
FROM Users u
LEFT JOIN Orders o ON u.id = o.user_id
WHERE u.age > ?
GROUP BY u.id
HAVING order_count > 0
ORDER BY u.name ASC;
"""
let resultSet = try database.executeQuery(query, values: [18])
Ключевые компетенции:
- Знание основных операторов:
SELECT,INSERT,UPDATE,DELETE,JOIN(INNER, LEFT),GROUP BY,HAVING. - Понимание важности индексов для оптимизации запросов к большим таблицам.
- Умение писать подзапросы и использовать агрегирующие функции (
COUNT,SUM,AVG). - Безопасная работа с параметризованными запросами для предотвращения SQL-инъекций.