Condition (SQL): Difference between revisions

Content deleted Content added
Examples: syntax highlight
m Removing link(s) Wikipedia:Articles for deletion/Where (SQL) closed as delete (XFDcloser)
 
(12 intermediate revisions by 12 users not shown)
Line 1:
{{Refimprove|date=December 2009}}
 
A [[relational database management system]] uses [[SQL]] '''conditions''' or [[Expression (programming)|expressions]] in '''[[Where (SQL){{mono|<tt>WHERE</tt>]]}}''' clauses and in '''[[Having (SQL)|<tt>{{mono|HAVING</tt>}}]]''' clauses to '''<tt>{{mono|[[select (SQL)|SELECT]]</tt>}}''' subsets of data.
 
== Types of condition ==
Line 7:
 
* Many conditions compare values for (for example) equality, inequality or similarity.
* The EXISTS condition uses the [[SQL:2003|SQL standard]] [[SQL keywords|keyword]] <code>EXISTS</code><ref>
 
* The EXISTS condition uses the [[SQL:2003|SQL standard]] [[SQL keywords|keyword]] <code>EXISTS</code><ref>
{{cite book
|last= Fehily
Line 17 ⟶ 16:
|publisher= Peachpit Press
|isbn= 978-0-321-33417-6
|pages= [https://archive.org/details/sql0000fehi/page/439 439–440, 480]
|pages= 480
|quote= SQL Keywords [...] The appendix lists the [[SQL:2003]] standard's reserved and non-reserved keywords. [...] EXISTS [...]
|url= https://archive.org/details/sql0000fehi/page/439
}}
</ref> to determine whether rows exist in a [[subquery]] result.<ref>
Line 30 ⟶ 29:
|publisher= Peachpit Press
|isbn= 978-0-321-33417-6
|page= [https://archive.org/details/sql0000fehi/page/278 278]
|page= 278
|quote= EXISTS and NOT EXISTS [...] look for the existence or nonexistence of rows in a subquery result.
|url= https://archive.org/details/sql0000fehi/page/278
}}
</ref>
 
==Examples==
To '''<tt>{{mono|SELECT</tt>}}''' one row of data from a table called ''tab'' with a primary key column (''pk'') set to 100 &mdash; use the condition ''pk = 100'':
<sourcesyntaxhighlight lang="sql">SELECT * FROM tab WHERE pk = 100</sourcesyntaxhighlight>
 
To identify whether a table ''tab'' has rows of data with a duplicated key column ''dk'' set to 100 &mdash; use the condition ''dk = 100'' and the condition ''having count(*) > 1'':
<sourcesyntaxhighlight lang="sql">SELECT *dk FROM tab WHEREGROUP BY dk = 100 HAVING count(*) > 1</sourcesyntaxhighlight>
 
== Advanced conditional logic in SQL ==
To identify whether a table ''tab'' has rows of data with a duplicated key column ''dk'' set to 100 &mdash; use the condition ''dk = 100'' and the condition ''having count(*) > 1'':
In addition to basic equality and inequality conditions, SQL allows for more complex conditional logic through constructs such as <code>CASE</code>, <code>COALESCE</code>, and <code>NULLIF</code>. The <code>CASE</code> expression, for example, enables SQL to perform conditional branching within queries, providing a mechanism to return different values based on evaluated conditions. This logic can be particularly useful for data transformation during retrieval, especially in SELECT statements. Meanwhile, <code>COALESCE</code> simplifies the process of handling NULL values by returning the first non-NULL value in a given list of expressions, which is especially useful in scenarios where data might be incomplete or missing. Furthermore, SQL's support for three-valued logic (True, False, Unknown) introduces nuances when handling NULL values in conditions, making it essential to carefully structure queries to account for the "Unknown" state that arises in certain comparisons with NULL values. Proper use of these advanced conditions enhances the flexibility and robustness of SQL queries, particularly in complex data retrieval and reporting environments.
<source lang="sql">SELECT * FROM tab WHERE dk = 100 HAVING count(*) > 1</source>
 
{{SQL}}
Line 49 ⟶ 52:
{{DEFAULTSORT:Condition (Sql)}}
[[Category:SQL]]
[[Category:Articles with example SQL code]]