Structured Query Language is a standard Database language that is used to create, maintain, and retrieve the relational database. In this article, we will discuss this in detail about SQL. Following are some interesting facts about SQL. Let's focus on that.
SQL is case insensitive. But it is a recommended practice to use keywords (like SELECT, UPDATE, CREATE, etc.) in capital letters and use user-defined things (like table name, column name, etc.) in small letters.
We can write comments in SQL using "--" (double hyphen) at the beginning of any line. SQL is the programming language for relational databases (explained below) like MySQL, Oracle, Sybase, SQL Server, Postgre, etc. Other non-relational databases (also called NoSQL) databases like MongoDB, DynamoDB, etc. do not use SQL.
Although there is an ISO standard for SQL, most of the implementations slightly vary in syntax. So we may encounter queries that work in SQL Server but do not work in MySQL.
What is Relational Database?A relational database means the data is stored as well as retrieved in the form of relations (tables). Table 1 shows the relational database with only one relation called STUDENT which stores ROLL_NO, NAME, ADDRESS, PHONE, and AGE of students.
STUDENT Table
1 RAM DELHI 9455123451 18 2 RAMESH GURGAON 9652431543 18 3 SUJIT ROHTAK 9156253131 20 4 SURESH DELHI 9156768971 18 Important TerminologiesThese are some important terminologies that are used in terms of relation.
The queries to deal with relational database can be categorized as:
Part of the query represented by statement 1 is compulsory if you want to retrieve from a relational database. The statements written inside [] are optional. We will look at the possible query combination on relation shown in Table 1.
Different Query CombinationsCase 1: If we want to retrieve attributes ROLL_NO and NAMEof all students, the query will be:
SELECT ROLL_NO, NAME FROM STUDENT;ROLL_NO NAME 1 RAM 2 RAMESH 3 SUJIT 4 SURESH
Case 2: If we want to retrieve ROLL_NO and NAME of the students whose ROLL_NO is greater than 2, the query will be:
SELECT ROLL_NO, NAME FROM STUDENTROLL_NO NAME 3 SUJIT 4 SURESH
WHERE ROLL_NO>2;
CASE 3: If we want to retrieve all attributes of students, we can write * in place of writing all attributes as:
SELECT * FROM STUDENTROLL_NO NAME ADDRESS PHONE AGE 3 SUJIT ROHTAK 9156253131 20 4 SURESH DELHI 9156768971 18
WHERE ROLL_NO>2;
CASE 4: If we want to represent the relation in ascending order by AGE, we can use ORDER BY clause as:
SELECT * FROM STUDENT ORDER BY AGE;ROLL_NO NAME ADDRESS PHONE AGE 1 RAM DELHI 9455123451 18 2 RAMESH GURGAON 9652431543 18 4 SURESH DELHI 9156768971 18 3 SUJIT ROHTAK 9156253131 20
Note:
ORDER BY AGEis equivalent to ORDER BY AGE ASC.
If we want to retrieve the results in descending order of AGE, we can use ORDER BY AGE DESC.
CASE 5: If we want to retrieve distinct values of an attribute or group of attribute, DISTINCT is used as in:
SELECT DISTINCT ADDRESS FROM STUDENT;ADDRESS DELHI GURGAON ROHTAK
If DISTINCT is not used, DELHI will be repeated twice in result set. Before understanding GROUP BY and HAVING, we need to understand aggregations functions in SQL.
Aggregation FunctionsAggregation functions are used to perform mathematical operations on data values of a relation. Some of the common aggregation functions used in SQL are:
SELECT COUNT (PHONE) FROM STUDENT;
SELECT SUM(AGE) FROM STUDENT;
In the same way, MIN, MAX and AVG can be used. As we have seen above, all aggregation functions return only 1 row. AVERAGE: It gives the average values of the tupples. It is also defined as sum divided by count values.
Syntax:
AVG(attributename)
OR
SUM(attributename)/COUNT(attributename)
The above mentioned syntax also retrieves the average value of tupples.
Syntax:
MAX(attributename)
Syntax:
MIN(attributename)
SELECT ADDRESS, SUM(AGE) FROM STUDENT
GROUP BY (ADDRESS);
In this query, SUM(AGE) will be computed but not for entire table but for each address. i.e.; sum of AGE for address DELHI(18+18=36) and similarly for other address as well. The output is:
ADDRESS SUM(AGE) DELHI 36 GURGAON 18 ROHTAK 20If we try to execute the query given below, it will result in error because although we have computed SUM(AGE) for each address, there are more than 1 ROLL_NO for each address we have grouped. So it can’t be displayed in result set. We need to use aggregate functions on columns after SELECT statement to make sense of the resulting set whenever we are using GROUP BY.
SELECT ROLL_NO, ADDRESS, SUM(AGE) FROM STUDENT
GROUP BY (ADDRESS);
NOTE:
An attribute which is not a part of GROUP BY clause can’t be used for selection.Conclusion
Any attribute which is part of GROUP BY CLAUSE can be used for selection but it is not mandatory.
But we could use attributes which are not a part of the GROUP BY clause in an aggregate function.
SQL is a standard language used to manage data in relational databases. SQL is mainly divided into four main categories: Data definition language, data manipulation language, transaction control language, and data query language and SQL is a powerful language that can be used to carry out a wide range of operations like insert ,delete and update.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4