

{"id":87276,"date":"2021-03-25T09:00:16","date_gmt":"2021-03-25T03:30:16","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=87276"},"modified":"2021-03-13T18:06:29","modified_gmt":"2021-03-13T12:36:29","slug":"having-clause-in-sql","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/having-clause-in-sql\/","title":{"rendered":"Using Views And Having Clause In SQL"},"content":{"rendered":"<p>In this tutorial, we will understand what SQL Views are and how to create views.<\/p>\n<p>First, let us understand the views briefly. After that, we will move to the usage of having command.<\/p>\n<p>Towards the end, we will learn about Syntax and discuss the examples of views and the having command.<\/p>\n<h3>What are SQL Views?<\/h3>\n<p>Views are tables created by the user virtually by the SQL command containing the required conditionals.<\/p>\n<p>By using views we get the flexibility to decide which part of data more specifically how many rows and columns of data we need in our resulting virtual table.<\/p>\n<p>A view can contain rows and columns from one or multiple tables of the same database.<\/p>\n<p><strong>Syntax:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">CREATE VIEW viewName AS\r\nSELECT column1, column2, ...\r\nFROM tableName\r\nWHERE condition;\r\n<\/pre>\n<h3>Advantages of Using Views in SQL<\/h3>\n<p>We have various advantages of using views:<\/p>\n<ol>\n<li><strong>Security:<\/strong> We can hide sensitive data by using views in SQL.<\/li>\n<li><strong>Simplicity:<\/strong> We have multiple tables in a database, with the help of views we can select the content columns required by us specifically.<\/li>\n<li><strong>Consistency:<\/strong> Many times in a SQL query, we need complex logic. By using views, we can hide the complex formulas and logic and avoid inconsistencies occurring in the data.<\/li>\n<\/ol>\n<h3>SQL Demo Database<\/h3>\n<p>We will be using two tables in this tutorial i.e. DataFlair_emp1 and DataFlair_emp2. Let us view both of the tables.<\/p>\n<p><strong>Syntax:\u00a0<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">SELECT * FROM tableName ;\r\n<\/pre>\n<p><strong>Query1:\u00a0<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">SELECT * FROM DataFlair_emp1 ;\r\n<\/pre>\n<p><strong>Output:<\/strong><\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87286\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp1.png\" alt=\"View SQL database\" width=\"1920\" height=\"1032\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp1.png 1920w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp1-300x161.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp1-1024x550.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp1-150x81.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp1-768x413.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp1-1536x826.png 1536w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp1-720x387.png 720w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp1-520x280.png 520w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp1-320x172.png 320w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/p>\n<p><strong>Query2:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">SELECT * FROM DataFlair_emp2 ;\r\n<\/pre>\n<p><strong>Output:<\/strong><\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87287\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp2.png\" alt=\"View database in SQL\" width=\"1920\" height=\"1032\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp2.png 1920w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp2-300x161.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp2-1024x550.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp2-150x81.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp2-768x413.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp2-1536x826.png 1536w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp2-720x387.png 720w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp2-520x280.png 520w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/DataFlair_emp2-320x172.png 320w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/p>\n<p>Let us move forward by using examples:<\/p>\n<h4>1. Create SQL View using only one table<\/h4>\n<p>Views can be created using one or multiple tables.<\/p>\n<p><strong>Syntax:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">CREATE VIEW viewName AS\r\nSELECT column1, column2, ...\r\nFROM tableName\r\nWHERE condition;\r\n<\/pre>\n<p><strong>Example 1:<\/strong> Let us create a view from our DataFlair_emp1 table.<\/p>\n<p><strong>Query:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">CREATE VIEW salaryAndpost AS\r\nSELECT post, salary\r\nFROM dataflair_emp1 ;\r\n<\/pre>\n<p><strong>Output:<\/strong><\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-one-table.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87288\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-one-table.png\" alt=\"Create view using one table in SQL\" width=\"1920\" height=\"1028\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-one-table.png 1920w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-one-table-300x161.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-one-table-1024x548.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-one-table-150x80.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-one-table-768x411.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-one-table-1536x822.png 1536w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-one-table-720x386.png 720w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-one-table-520x278.png 520w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-one-table-320x171.png 320w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/p>\n<p>Here we can see our created view.<\/p>\n<h4>2. Creating views from multiple tables in SQL<\/h4>\n<p><strong>Syntax:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">CREATE VIEW viewName AS\r\nSELECT tableName1.column1, tableName1.column2,tableName2.column1 ...\r\nFROM tableName1, tableName2\r\nWHERE condition;\r\n<\/pre>\n<p><strong>Example 1:<\/strong> Let us create a view using tables DataFlair_emp1 and DataFlair_emp2.<\/p>\n<p><strong>Query:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">CREATE VIEW salaryPostAge AS\r\nSELECT dataflair_emp1.post, dataflair_emp1.salary , dataflair_emp2.age\r\nFROM dataflair_emp1 , dataflair_emp2\r\nWHERE dataflair_emp1.emp_id = dataflair_emp2.emp_id;\r\n<\/pre>\n<p><strong>Output:<\/strong><\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-multiple-tables.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87289\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-multiple-tables.png\" alt=\"Create view using multiple tables in SQL\" width=\"1920\" height=\"1032\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-multiple-tables.png 1920w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-multiple-tables-300x161.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-multiple-tables-1024x550.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-multiple-tables-150x81.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-multiple-tables-768x413.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-multiple-tables-1536x826.png 1536w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-multiple-tables-720x387.png 720w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-multiple-tables-520x280.png 520w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-using-multiple-tables-320x172.png 320w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/p>\n<p>Here we can see the view we created and its contents.<\/p>\n<h4>3. Updating SQL View<\/h4>\n<p>We can update an already created view by using CREATE OR REPLACE query<\/p>\n<p><strong>Syntax:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">CREATE OR REPLACE VIEW viewName AS\r\nSELECT tableName1.column1, tableName1.column2,tableName2.column1 ...\r\nFROM tableName1, tableName2\r\nWHERE condition;\r\n<\/pre>\n<p><strong>Example 1:<\/strong> Let us update our SalaryPostAge view and include the emp_id in the view as well.<\/p>\n<p><strong>Query:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">CREATE OR REPLACE VIEW salaryPostAge AS\r\nSELECT dataflair_emp1.post, dataflair_emp1.salary , dataflair_emp2.age , dataflair_emp1.emp_id\r\nFROM dataflair_emp1 , dataflair_emp2\r\nWHERE dataflair_emp1.emp_id = dataflair_emp2.emp_id;\r\n<\/pre>\n<p><strong>Output:<\/strong><\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/update-view.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87290\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/update-view.png\" alt=\"update view in SQL\" width=\"1920\" height=\"1028\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/update-view.png 1920w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/update-view-300x161.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/update-view-1024x548.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/update-view-150x80.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/update-view-768x411.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/update-view-1536x822.png 1536w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/update-view-720x386.png 720w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/update-view-520x278.png 520w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/update-view-320x171.png 320w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/p>\n<p>Here we can see our updated view and the records.<\/p>\n<h4>4. Inserting a row in a View in SQL<\/h4>\n<p><strong>Syntax:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">INSERT INTO viewName (column1, column2,column3,......) \r\nVALUES(value1,value2,value3,....);\r\n<\/pre>\n<p><strong>Example 1:<\/strong> Let us insert a row in the SalaryAndPost view.<\/p>\n<p><strong>Query:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">INSERT INTO salaryAndpost (post, salary) \r\nVALUES(\"HR Intern\" , 6000);<\/pre>\n<p><strong>Output:<\/strong><\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-row-into-view.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87291\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-row-into-view.png\" alt=\"insert row into SQL view\" width=\"1920\" height=\"1032\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-row-into-view.png 1920w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-row-into-view-300x161.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-row-into-view-1024x550.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-row-into-view-150x81.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-row-into-view-768x413.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-row-into-view-1536x826.png 1536w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-row-into-view-720x387.png 720w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-row-into-view-520x280.png 520w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-row-into-view-320x172.png 320w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/p>\n<p>Here we can see the records we inserted into the database.<\/p>\n<h4>5. Deleting a row from the View in SQL<\/h4>\n<p><strong>Syntax:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">DELETE FROM viewName\r\nWHERE condition ;\r\n<\/pre>\n<p><strong>Example 1:<\/strong> Let us delete the record which has a salary of 18000 in salaryAndpost view.<\/p>\n<p><strong>Query:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">DELETE FROM salaryAndpost \r\nWHERE salary = 18000 ;\r\n<\/pre>\n<p><strong>Output:<\/strong><\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/delete-row-from-view.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87292\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/delete-row-from-view.png\" alt=\"delete row from SQL view\" width=\"1920\" height=\"1028\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/delete-row-from-view.png 1920w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/delete-row-from-view-300x161.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/delete-row-from-view-1024x548.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/delete-row-from-view-150x80.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/delete-row-from-view-768x411.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/delete-row-from-view-1536x822.png 1536w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/delete-row-from-view-720x386.png 720w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/delete-row-from-view-520x278.png 520w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/delete-row-from-view-320x171.png 320w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/p>\n<p>Here we can see the record corresponding to salary 18,000 is deleted.<\/p>\n<h4>6. Deleting the View in SQL<\/h4>\n<p><strong>Syntax:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">DROP VIEW viewName;\r\n<\/pre>\n<p><strong>Example 1:<\/strong> Let us delete the view salaryAndpost.<\/p>\n<p><strong>Query:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">DROP VIEW salaryAndpost;\r\n<\/pre>\n<p><strong>Output:<\/strong><\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/drop-view.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87293\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/drop-view.png\" alt=\"drop view in SQL\" width=\"1920\" height=\"1036\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/drop-view.png 1920w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/drop-view-300x162.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/drop-view-1024x553.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/drop-view-150x81.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/drop-view-768x414.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/drop-view-1536x829.png 1536w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/drop-view-720x389.png 720w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/drop-view-520x281.png 520w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/drop-view-320x173.png 320w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/p>\n<p>Here we can see the SalaryAndPost view no longer exists.<\/p>\n<h4>7. Creating a View by using the WITH CHECK option<\/h4>\n<p>The With Check is a very useful clause for the updatable views. This helps us to prevent the insertion of rows with null values.<\/p>\n<p>We can use the WITH CHECK clause in the CREATE VIEW statement for the views which would be updated by us in the future. We can write the create view command as follows:<\/p>\n<p><strong>Syntax:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">CREATE VIEW viewName AS\r\nSELECT column1,column2,....\r\nFROM  tableName\r\nWHERE column1 IS NOT NULL\r\nWITH CHECK OPTION;\r\n<\/pre>\n<p><strong>Example 1:<\/strong> Let us create a view with the CHECK option.<\/p>\n<p><strong>Query:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">CREATE VIEW salaryPost AS\r\nSELECT salary, post\r\nFROM  dataflair_emp1\r\nWHERE post IS NOT NULL\r\nWITH CHECK OPTION;\r\n<\/pre>\n<p><strong>Output:<\/strong><\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-with-check-option.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87294\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-with-check-option.png\" alt=\"view with check option\" width=\"1920\" height=\"1032\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-with-check-option.png 1920w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-with-check-option-300x161.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-with-check-option-1024x550.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-with-check-option-150x81.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-with-check-option-768x413.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-with-check-option-1536x826.png 1536w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-with-check-option-720x387.png 720w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-with-check-option-520x280.png 520w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/view-with-check-option-320x172.png 320w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/p>\n<p>Here we can observe the new view we created with a check.<\/p>\n<p>Let us try to insert a row with the null value in this view.<\/p>\n<p><strong>Query:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">INSERT INTO salaryPost (salary) \r\nVALUES(10000);\r\n<\/pre>\n<p><strong>Output:<\/strong><\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/null-value-entry-into-view-with-check-option.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87296\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/null-value-entry-into-view-with-check-option.png\" alt=\"null value entry into view with check option\" width=\"1920\" height=\"1032\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/null-value-entry-into-view-with-check-option.png 1920w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/null-value-entry-into-view-with-check-option-300x161.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/null-value-entry-into-view-with-check-option-1024x550.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/null-value-entry-into-view-with-check-option-150x81.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/null-value-entry-into-view-with-check-option-768x413.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/null-value-entry-into-view-with-check-option-1536x826.png 1536w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/null-value-entry-into-view-with-check-option-720x387.png 720w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/null-value-entry-into-view-with-check-option-520x280.png 520w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/null-value-entry-into-view-with-check-option-320x172.png 320w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/p>\n<p>Here we view our view after inserting the record.<\/p>\n<p>Here the default value null was being used for the post column. Thus the insert query gives an error and we are unable to insert data into the column.<\/p>\n<p>If we specify both the columns then we can easily insert the required data.<\/p>\n<p><strong>Example Query:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">INSERT INTO salaryPost (salary, post) \r\nVALUES(20000,\"Manager\");\r\n<\/pre>\n<p><strong>Output:<\/strong><\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-value-into-view-with-check-option.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87295\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-value-into-view-with-check-option.png\" alt=\"insert value into view with check option\" width=\"1920\" height=\"1028\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-value-into-view-with-check-option.png 1920w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-value-into-view-with-check-option-300x161.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-value-into-view-with-check-option-1024x548.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-value-into-view-with-check-option-150x80.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-value-into-view-with-check-option-768x411.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-value-into-view-with-check-option-1536x822.png 1536w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-value-into-view-with-check-option-720x386.png 720w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-value-into-view-with-check-option-520x278.png 520w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/insert-value-into-view-with-check-option-320x171.png 320w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/p>\n<p>Here we can see the new row with data (20000, \u201cManager\u201d) is inserted in our view without any error.<\/p>\n<h3>HAVING Clause in SQL<\/h3>\n<p>We use HAVING clauses at places where we can\u2019t use the WHERE clause. We can\u2019t use where clause with the aggregate functions. So in those queries, we use the Having clause to specify the conditions. Some of the most popular aggregate functions are:<\/p>\n<ul>\n<li>Count<\/li>\n<li>Sum<\/li>\n<li>Avg<\/li>\n<li>Max<\/li>\n<li>Min&#8230; etc.<\/li>\n<\/ul>\n<p>Whenever we need to run a query involving aggregate functions, we need a Having clause to check if the aggregate follows the specified condition or not. We use the having clause in combination with the Group by clause in our queries.<\/p>\n<p><strong>Syntax:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">SELECT column_name(s)\r\nFROM table_name\r\nWHERE condition\r\nHAVING condition;\r\n<\/pre>\n<p>Example: Let us find the details of the employee whose count of emp_id is greater than 10.<br \/>\n<strong>Query:\u00a0<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">select * from dataflair_emp2 \r\ngroup by age\r\nHAVING count(emp_id&gt;10);\r\n<\/pre>\n<p><strong>Output:<\/strong><\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/having-clause-example-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-87297\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/having-clause-example-1.png\" alt=\"having clause in SQL\" width=\"1920\" height=\"1028\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/having-clause-example-1.png 1920w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/having-clause-example-1-300x161.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/having-clause-example-1-1024x548.png 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/having-clause-example-1-150x80.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/having-clause-example-1-768x411.png 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/having-clause-example-1-1536x822.png 1536w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/having-clause-example-1-720x386.png 720w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/having-clause-example-1-520x278.png 520w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/having-clause-example-1-320x171.png 320w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/p>\n<p>Here we can see the data which satisfies the condition in the query.<\/p>\n<h3>Summary<\/h3>\n<p>In this tutorial, we have discussed how and when to use views. We have understood with examples of various applications of views.<\/p>\n<p>In our discussion, we included creating a view, updating a view, insertion and deletion of data rows in the created views. We use views for security, simplicity, and consistency, which we have discussed in detail in our tutorial.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this tutorial, we will understand what SQL Views are and how to create views. First, let us understand the views briefly. After that, we will move to the usage of having command. Towards&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":87277,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[66],"tags":[23863,23864],"class_list":["post-87276","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sql","tag-having-clause-in-sql","tag-views-in-sql"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Using Views And Having Clause In SQL - DataFlair<\/title>\n<meta name=\"description\" content=\"The HAVING clause was added to SQL as the WHERE keyword cannot be used with aggregate functions. Learn more about views and having clause.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/having-clause-in-sql\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using Views And Having Clause In SQL - DataFlair\" \/>\n<meta property=\"og:description\" content=\"The HAVING clause was added to SQL as the WHERE keyword cannot be used with aggregate functions. Learn more about views and having clause.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/having-clause-in-sql\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-03-25T03:30:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/Using-Views-having-clause-in-SQL.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Using Views And Having Clause In SQL - DataFlair","description":"The HAVING clause was added to SQL as the WHERE keyword cannot be used with aggregate functions. Learn more about views and having clause.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/data-flair.training\/blogs\/having-clause-in-sql\/","og_locale":"en_US","og_type":"article","og_title":"Using Views And Having Clause In SQL - DataFlair","og_description":"The HAVING clause was added to SQL as the WHERE keyword cannot be used with aggregate functions. Learn more about views and having clause.","og_url":"https:\/\/data-flair.training\/blogs\/having-clause-in-sql\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2021-03-25T03:30:16+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/Using-Views-having-clause-in-SQL.jpg","type":"image\/jpeg"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/having-clause-in-sql\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/having-clause-in-sql\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/b49855299264df5e27e3ec6c2cd9fde9"},"headline":"Using Views And Having Clause In SQL","datePublished":"2021-03-25T03:30:16+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/having-clause-in-sql\/"},"wordCount":818,"commentCount":0,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/having-clause-in-sql\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/Using-Views-having-clause-in-SQL.jpg","keywords":["Having Clause In SQL","Views in SQL\\"],"articleSection":["SQL Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/having-clause-in-sql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/having-clause-in-sql\/","url":"https:\/\/data-flair.training\/blogs\/having-clause-in-sql\/","name":"Using Views And Having Clause In SQL - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/having-clause-in-sql\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/having-clause-in-sql\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/Using-Views-having-clause-in-SQL.jpg","datePublished":"2021-03-25T03:30:16+00:00","description":"The HAVING clause was added to SQL as the WHERE keyword cannot be used with aggregate functions. Learn more about views and having clause.","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/having-clause-in-sql\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/having-clause-in-sql\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/having-clause-in-sql\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/Using-Views-having-clause-in-SQL.jpg","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/03\/Using-Views-having-clause-in-SQL.jpg","width":1200,"height":628,"caption":"Having clause in SQL"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/having-clause-in-sql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"SQL Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/sql\/"},{"@type":"ListItem","position":3,"name":"Using Views And Having Clause In SQL"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/b49855299264df5e27e3ec6c2cd9fde9","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ef46b745ddad2fad690af626c6ef29b91809ad0a9f5ef398d07817d8cad042f5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ef46b745ddad2fad690af626c6ef29b91809ad0a9f5ef398d07817d8cad042f5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ef46b745ddad2fad690af626c6ef29b91809ad0a9f5ef398d07817d8cad042f5?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"DataFlair Team is a group of passionate educators and industry experts dedicated to providing high-quality online learning resources on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. With years of experience in the field, the team aims to simplify complex topics and help learners advance their careers. At DataFlair, we believe in empowering students and professionals with the knowledge and skills needed to thrive in today\u2019s fast-paced tech industry. Follow us for Free courses, expert insights, tutorials, and practical tips to boost your learning journey.","url":"https:\/\/data-flair.training\/blogs\/author\/datafbdad\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/87276","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=87276"}],"version-history":[{"count":3,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/87276\/revisions"}],"predecessor-version":[{"id":87299,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/87276\/revisions\/87299"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/87277"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=87276"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=87276"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=87276"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}