As a start, I am assuming that you all know what is SQL or you have some experience with SQL or you are using SQL for many years.
I know many people who know so much about SQL and even have created many projects based on SQL and they do not know what is the SQL engine or how actually SQL database engine works. It’s obvious no one’s care about the internal working of SQL engine or something because without knowing How SQL works we can still create and access database using any SQL program.
##Is SQL a Programming or a Query Language?
With SQL we can interchangeably use the Query and Programming language, many developers refer SQL as a peculiar programming language because SQL engine contain two components compiler and vertical machine the compiler compile the query commands into procedures and the Virtual machine runs that procedures. The concept of SQL engine compiling and executing the SQL query make it a programming language. So if someone says SQL is a programming language then up to some extent he would be considered right.
Why to use SQL if we any programming Language can create a CRUD operations program?
It’s correct that using any programming language we can create a program which can perform simple CRUD (Create Read Update and Delete) operations, but when it’s come complex queries for that in programming language we have to write hundreds of lines for the equivalent few lines of SQL.
SQL Overview
SQL stands for Structured Query Language which could be refer as either a programming or a Query language, the main purpose of SQL to interact with the relational database in which data store in tabular form. SQL can manage a large amount of data, especially if data is written simultaneously and we have many transitions over that data.
When the user uses SQL for data management, there the user gets the ability to perform Create, Retrieve, Update, and Delete data between database. There are various Relational Database Management systems(DBMS) such as MySQL, SQLite, Postgres SQL, etc. and they all provided the same kind of features.
There are some terminologies in Database such as database server, or Database engine, or database management system. In database we can interchangeably use these three terminologies so do not get confused when we say SQL engine or SQL server, they all are same.
What is a SQL Engine?
A SQL engine is a kind of software that collect and interprets the SQL commands so the appropriate operations can be performed on the relational database. The objective of SQL engine to create, read, update and delete (CRUD) data from a database.
A SQL engine or a SQL server database engine includes two main components a storage engine and a query processor, these days some modern SQL DBMS contains more than one Storage engines. We have many types of SQL engines and they all have different architecture, but used to perform the same objective which includes CRUD operations on the database and many other features.
SQL has cover a large part of online market and many enterprises use their SQL systems for Online Transaction Processing and online analytical processing.
How the SQL Database Engine Works?
On the surface we all know, the compiler of SQL compiles the query and the virtual machine execute the compiled query. Now let’s talk about how the database engine works.
SQL has many stages on which the process of query compilation and execution take place. Every SQL database engine contain two main components Compiler and Virtual machine to execute the queries. The compiler read the query and convert that query to appropriate byte code, then that byte code evaluated by the virtual machine and a proper response given back to the client.
The Complete Execution of a query is Categories into 3 main stages
- Compiling (Parsing, Checks, and Semantics)
- Binding
- Optimising
- Executing
Compiling-parsing
This is a part of compiling process, and in compiling parsing the query statement is tokenized into individual words with appropriate verbiage and clauses.
Compiling-Check-Semantics
The Compiling Semitics checks the validation of the statement and match it with the system’s catalogue. This Compiling stage validates whether the query is valid or not, it also validates the authority of user to execute the statement.
Compiling-Binding
It creates the corresponding binary representation for the entered query statement. All the SQL server engines has this compiling state where the byte code get generated.
By this stage of compiling the statement has been compiled and now it will be sent to the database server for the optimization and execution.
Optimising
It Optimizes the best algorithm for the byte code. This feature is also known as Query Optimizer or Relational Engine.
Executing
The Virtual machine get the Optimised byte code and execute it.
SQL STATEMENT --> Parsing -->Binding --> Query Optimization --> Query Execution --> Result
Note: The Parsing Compiling process does not require any permission from database which make it the fastest processing stage of Compiling.
SQL conversion of Data to Table
SQL was written in C and it uses a principle of Binary-Tree which make the incoming data to store in Rows and Columns. In binary tree structure we have several branches that keep pointing to the new data element same structure is followed by the SQL database in which data get turned into tables where each column and rows data point to each other.
SQL Database Engines Work in a Nutshell
The SQL engine Process the query into multistage. The processing of query can vary from one relational DBMS to another. In the very first stage the query get parse and converted into compatible format such as JASON file, then the another compiling process take place which check the sematic of the parsed file, and in last stage of compilation the parsed file gets converted into corresponding byte code.
The Second step is optimization in which appropriate algorithms such as sorting, searching, etc. applied on the byte code. At last, the virtual machine executes the code and provide the client with the proper result.
What is a SQL Server Storage Engine?
It is a software which is used to perform CRUD (Create, Read, Update and Delete) operation between disk and memory.
Conclusion
To create a database environment, we require SQL database engine, and to build the database engine we often use the low-level programming languages such as C++ or C because they give user control over the memory management, which is missing in high-level programming languages, in high-level programming languages memory-management is done automatically by the operating system. SQL engine is cross-platform developers can use different platforms to build some program but all the platform can link with SQL engine for the database facilities.