The knowledge of SQL has always been in demand. Even if you don’t have a job as a data analyst or any other relevant position, knowing how to write basic SQL queries can be a useful addition to your resume.
There are plenty of resources to learn about SQL, including our informative Essential SQL blog. However, such an abundance of information often confuses learners, especially beginners, because it’s quite scattered.
So, today, we’ve collected all the essential information about writing SQL queries into one ultimate guide to help you gain and practice this knowledge more effectively.
A Brief Look at SQL and Its Main Components
Structured Query Language (SQL) is a programming language specific to a domain, designed to help maintain structured data held in a database. Basically, this language is what helps us communicate with a database, update it, and retrieve data from it.
From this definition, we can conclude that you can use SQL to perform a variety of tasks, like:
- creating a database
- launching tables and writing queries in a database
- requesting information from a database
- update or delete specific records or an entire database
To better understand how this language functions, you also need to have a basic knowledge of its main components or dialects.
- Data Definition Language – the SQL dialect used to create a database, update the data inside of it, or delete the database entirely.
- Data Manipulation Language – the SQL dialect used to maintain the database and specify what you want to do with it (enter, change, or extract).
- Data Control Language – the SQL dialect used to secure the database.
Some experts also single out the Transaction Control Language dialect that is used to manage and control transactions in order to maintain data integrity (the assurance of accuracy and consistency) in the SQL statement.
What Do You Need to Write an SQL Query?
To write an SQL query, you will first need to create a relational database.
In SQL, we call a database relational because it is divided into tables that are related to each other. These tables break down the data into smaller and more manageable units, which allows better maintenance and overall performance.
Where can you create an SQL database?
To do it, you need to have a Database Management System (DBMS) installed. A DBMS is a software that helps you create and manage the database. If you don’t have one installed on your system already, here are a few most popular options:
- MySQL (open-source)
- SQL Server Express (open-source)
- Oracle (paid)
Regardless of the DBMS you choose, all of them provide security and protection for all the databases you create. It also helps maintain consistency if there are several users working on the DBMS at once.
The Guide to Writing an SQL Query
Now, let’s take a closer look at what you need to know to write an SQL query as well as some common mistakes to avoid.
Step #1: Understand the Process behind the SQL Query
Before you start writing an SQL query, you need to understand how it works, when performing commands.
When you enter a query, it is immediately parsed into a tree. A parser, which is a computer program that translates SQL statements into a parse tree, helps identify whether the query fits the syntactical as well as semantic requirements, i.e., that it is recognizable.
Then, if everything is correct, the parser creates an internal query, which is then passed to the rewrite engine.
After that, the task optimizer, which analyzes how many execution plans a query has, finds the optimal execution plan for your given query. This plan represents the algorithm, which will be used to perform the command.
If the query is written correctly, you will get the results you expect.
Now, let’s take a look at what it takes to write a proper SQL query.
Step #2: Get a Database Ready
So, as we already mentioned, to write an SQL query, you need to create an environment for it by launching a database.
If you already have your DBMS software installed, you can proceed right to creating a database by using a ‘CREATE DATABASE’ statement. The basic syntax of this command will look like this:
|CREATE DATABASE database_name;
For instance, if you want to create a database for client reviews, the result will look like this:
|CREATE DATABASE client_reviews;
To move on to using your database, you need to continue your SQL query with the ‘USE’ statement:
This will make this database a target for all your future commands.
Keep in mind: if the database with this name already exists, you will get an error message. However, to avoid this, you can use the ‘IF NOT EXISTS’ statement. Here’s how it looks like in MySQL:
|mysql> CREATE DATABASE IF NO EXISTS client_reviews;
If your query is correct, you will get an OK message.
Step #3: Create a Table to Organize Information
If the database is ready, you can now proceed to creating a table. As we already mentioned, tables help you structure your queries and make the data more manageable.
To create a table, you need to input the ‘CREATE TABLE’ statement. The syntax for this statement will look similar to this:
|CREATE TABLE table_name (
It is clear what we should insert in the table name and column name, but let’s take a closer look at the types of constraints.
A constraint is a declaration of data type, which indicates what kind of data the column will include. There are several kinds of constraints that you can include in a column:
- CHAR – fixed-length data strings (max. size of 255 characters)
- DATE – dates in the YYYY-MM-DD format
- DATETIME – dates in the YYYY-MM-DD format and time in the HH:MM:SS format
- DECIMAL – precise decimal data
- INT – numbers within the range of 2147483648 to 2147483647
- TEXT – textual data (max. size of 65,500 characters)
- TIMESTAMP – timestamp data with the precise number of seconds
- VARCHAR – variable-length data strings (max. size of 65,500 characters)
- Modifiers – UNIQUE constraint ensures unique value for each row in a column; PRIMARY-KEY constraint marks a relevant field in the table; DEFAULT constraint represents the default value of the columns; AUTO_INCREMENT automatically assigns value to a field if it has not been specified; CHECK constraint puts a restriction on the values that can be included in one column; NOT NULL constraint excludes the null value from a field.
If we create a table for each of the people who have given their customer reviews, the final result will look like this:
|CREATE TABLE customer profiles (
id INT NOT NULL AUTO_INCREMENT
name VARCHAR NOT NULL
When creating a table, you can encounter the same problem as with a database if the table does not exist. To avoid it, to the ‘CREATE TABLE’ statement, you should also add the ‘IF NOT EXISTS’ statement.
Step #4: Start with the Basic SQL Statements
When the table is ready and operational, you can now continue writing SQL queries by inserting data inside the table.
Here are all basic statements to input and manage the data inside the table:
1) ‘INSERT INTO’ statement
This statement is used to include new rows into a table. Here’s how the syntax will look like in this case:
|INSERT INTO table_name (column1, column2, column 3);
You can also include values – the data that you want to include in each column.
Here’s how the final query would look like for our customer reviews table after inserting data into it:
|INSERT INTO customer profiles (name, birth_date, review)
VALUES (‘Jennifer Dickinson’, ‘1987-07-07’, ‘good service’)
The final result will give you a numbered list of the names, birth dates, and reviews in the form of a table.
2) ‘SELECT’ clause
This clause is used to select and extract data from one or different tables. The syntax for this clause will follow this pattern:
|SELECT column1_name, column2_name FROM table_name
The combination of the ‘SELECT’ and ‘FROM’ clauses allows you to fetch information from one or several columns within one or different tables. If you want to select all columns in one table, you can simply use the combination of ‘SELECT’, ‘FROM’ clauses, and the name of the table.
3) ‘WHERE’ clause
By inserting this clause in a table, you can select data based on a certain condition. It is helpful if you want to select for an update or entirely delete one of the records in a row or a column based on a condition like a name, birth date, etc. Here’s the basic syntax using this clause:
|SELECT column1_name FROM table_name WHERE condition
As you can see, the WHERE clause is used together with the ‘SELECT’ and ‘FROM’ clauses to help you fetch the right data from the right column or row.
You can also use the ‘WHERE’ clause to filter different records based on a certain condition.
To make sure that you select the right data, this clause allows you to use several basic comparison operators:
- = (equal)
- > (greater than)
- < (less than)
- >= (greater than or equal)
- <= (less than or equal)
- LIKE (to find similar patterns)
- IN (finding matches according to a certain value)
- BETWEEN (defining the range of values)
To make these operators work, include them right after the ‘WHERE’ clause.
4) ‘AND’ and ‘OR’ operators
To write a basic SQL query and effectively select the data from a certain column in a table, you also need to use ‘AND’ and ‘OR’ operators used together with the ‘WHERE’ clause.
The AND operator is used to combine two different conditions and gives you the results only if there is data that matches both these conditions. Here’s how the syntax with the ‘AND’ operator looks like:
|SELECT column1_name, column2_name…FROM table_name
WHERE condition1 AND condition2
Respectively, the OR operator combines two different conditions and gives you the results if there is data that matches one of these conditions. The syntax, in this case, looks like this:
|SELECT column1_name, column2_name…FROM table_name
WHERE condition1 OR condition2
To write a more complex SQL query, you can also combine the ‘AND’ and ‘OR’ operators, which will allow you to retrieve data that matches many different conditions.
5) ‘IN’ and ‘BETWEEN’ Operators
These operators help you select an exclusive variety of values based on certain conditions.
The IN operator allows you to select all the data that falls under a certain criterion. The syntax of the query, including the ‘IN’ operator, should look like this:
SELECT column1_name…FROM table_name
WHERE condition1 IN (value1, value2, value3…)
For instance, you can retrieve information about customers coming from the same country using this operator. Similarly, you can add ‘NOT’ to the ‘IN’ operator, if you want to exclude some results.
If you want to get results within a certain range of values, you can use the BETWEEN operator. In this case, the syntax will look as follows:
SELECT column1_name…FROM table_name
WHERE condition1 BETWEEN value1 AND value 2
As you can see, the ‘AND’ operator is also used to compare the values and fetch the results.
6) ‘ORDER BY’ clause
This clause is used when you want to put the fetched results in a certain order. The ORDER BY clause tells the server how to organize the data, and the syntax looks like this:
|SELECT column_list…FROM table_name ORDER BY column_name
preferred order of the fetched data.
7) ‘LIMIT’ clause
If you want to limit the number of results, you can include the ‘LIMIT’ clause in MySQL or Top clause in SQL Server. The basic syntax using this clause looks like this:
|SELECT column_list…FROM table_name ORDER BY value LIMIT number
As you can see, the ‘ORDER BY’ clause is also used in this case, because it helps identify the values to be limited.
8) ‘UPDATE’ statement
Once you’ve inserted and selected data, you can now proceed to writing an SQL query to update this data. To do it, you will need to use the UPDATE statement, for which the syntax looks similar to this:
SET column1_name = value 1…
WHERE condition1, condition2…
The ‘SET’ clause allows you to identify a specific column or row that needs to be updated. You can also use all the above-mentioned operators, like ‘AND’ and ‘OR’ to update the table.
9) ‘DELETE’ statement
This statement allows you to remove one or several rows. The syntax for this query is simple and looks like this:
|DELETE FROM table_name WHERE condition
The ‘WHERE’ clause specifies the record that should be deleted according to the condition assigned to it. Don’t omit it, otherwise, you will delete all the records from the table.
10) ‘TRUNCATE TABLE’ statement
However, if you do want to remove all the rows at once, the TRUNCATE TABLE statement will help you do it quicker than a ‘DELETE’ statement. The syntax for this query looks like this:
|TRUNCATE TABLE table_name
While removing the rows from the table, this statement doesn’t actually delete the structure of the table. You can use this statement if you want to rework the entire table.
Step #5: Proofread Your SQL Query
If you’ve finished writing an SQL query and it still doesn’t work, you might have made a mistake along the way.
So, watch out for these most common SQL query mistakes and make sure you proofread your query to avoid them:
- Misspelled commands. This is the most common SQL query mistake. To solve this problem, you can use an SQL editor to fix the broken SQL statements and clauses. If your query contains text under the TEXT constraint, you also need to proofread it. You can do it quickly using different thesis sites containing automated proofreaders.
- The omission of punctuation signs. A proper SQL query also needs to have brackets and quotation marks to operate properly. So check your query for single quotes and double quotes and make sure everything displays properly.
- Improper order of the statement. If your query doesn’t work, the statements in it might be in an improper order. Having syntax templates at hand might help if you don’t have enough experience writing SQL queries.
To make your SQL queries work, you need to write them while keeping in mind where performance problems might appear within your query. Then, if you get an error message, you might already have an understanding, where to look for an issue and how to solve it.
Don’t Get Discouraged!
Learning SQL is a lot like learning a foreign language – practice makes perfect.
When it comes to writing SQL queries, it is important to follow the syntax patterns to complete them while keeping in mind the process behind the queries.
Other than that, writing SQL queries is very much straightforward, starting from the creation of the database and the table as the foundation for your query, and ending with proofreading your query to eliminate mistakes.
Hopefully, our guide will help you become more skilled at writing SQL queries, as you now have the essential knowledge and the tools to do this.