Direct SQL Query in Magento 2

There are some situations where executing direct SQL queries would be simple and much quicker leading to a more optimized Magento getCollection query.

On a large data set of an entity, Saving each individual entity can take a long time with resource-hungry and therefore make the system unusable.

Overcome this issue it is possible to issue a direct SQL query which could update a large set of data of an entity in fewer seconds.

By default, Magento will automatically connect to its database using class Magento\Framework\App\ResourceConnection with getConnection() function.

Using below code snippet you can get a resourceConnection for run row sql query. Create Block file,

calling from a template file,

Reading From The Database All the records, 

fetchAll() => This method Fetches all SQL result rows as a sequential array.
This method takes a query as it’s the first parameter, executes it and then returns all of the results as an array. Using this we can get all the records of a database table.

The result will be all the records of a customer entity as an array.
fetchCol() => This method Fetches the first column of all SQL result rows as an array.

The result looks like,


fetchOne() => This method Fetches the first column of the first row of the SQL result.

Using fetchOne you can get only a single result value. In the above query, you can get email id as result.

Update Query: Update Records in a Database table which already exist.

Delete Query: Delete specific row from a database table.

Insert Query: Insert single record in the database table using row query. The first Parameter is a table name
In below example, We will add a record into the review table.

New Record will be inserted in a review table.

insertArray Query: Insert array into a table based on columns definition.
Pass only those columns which value you want to insert in second parameter column and the third parameter is data of the specific column.
In below example, We will add the record into a review table.

Above query insert the new record in the table by column-wise.

There are many other row query function related to database. You can get all the sql function from file Magento/framework/DB/Adapter/AdapterInterface.php