Для работы с любой базой (речь про реляционные) используется структурированный язык запросов — SQL. Сам по себе этот язык очень простой. Во всяком случае намного проще любого языка программирования. Однако многие программисты стараются избегать прямого использования SQL и вместо него применяют различные Active Records, Query Builder или даже такого монстра, как ORM. Обычно SQL-запросы очень простые, буквально несколько строчек кода, который читается как обычный english-текст. Но вместо этого они используют различные надстройки, которые имеют свой особенный синтаксис, хотя на выходе всё равно будет все те же несколько строк обычного SQL. :-)
Почему так происходит?
Мне видится проблема в том, что любой SQL — это не просто набор «функций», а точная инструкция, где указывается что и откуда нужно получить. Невозможно составить SQL-запрос не зная названия таблиц и их полей. А во многих случаях нужно знать ещё и структуру всей базы: какие таблицы, в них поля, а также связи между таблицами. Поэтому, когда программист не знает этих вещей, он будет довольствоваться готовыми функциями, которые, хотя внутри и формируют SQL-запрос, но внешне управляются через обычные параметры.