<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Riecelle Wati</title>
    <description>The latest articles on DEV Community by Riecelle Wati (@recelle_watti_0202e63281a).</description>
    <link>https://dev.to/recelle_watti_0202e63281a</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4209157%2Fc91f106e-8c26-429f-a8a2-fdc43beee7d6.png</url>
      <title>DEV Community: Riecelle Wati</title>
      <link>https://dev.to/recelle_watti_0202e63281a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/recelle_watti_0202e63281a"/>
    <language>en</language>
    <item>
      <title>SQL Operators Made Simple: Learn with Practical Examples</title>
      <dc:creator>Riecelle Wati</dc:creator>
      <pubDate>Mon, 26 Oct 2026 17:17:42 +0000</pubDate>
      <link>https://dev.to/recelle_watti_0202e63281a/sql-operators-made-simple-learn-with-practical-examples-904</link>
      <guid>https://dev.to/recelle_watti_0202e63281a/sql-operators-made-simple-learn-with-practical-examples-904</guid>
      <description>&lt;h1&gt;
  
  
  SQL Operators Made Simple: Learn with Practical Examples
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;SQL (Structured Query Language) is used to retrieve, filter, and manage data stored in databases. When working with large datasets, it is important to find specific information instead of viewing every record. SQL operators help us compare values, combine conditions, perform calculations, and search for patterns.&lt;/p&gt;

&lt;p&gt;In this article, I will summarise what I learned about SQL operators this week using practical examples from a hospital database.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Comparison Operators
&lt;/h2&gt;

&lt;p&gt;Comparison operators compare values and filter records based on conditions. Common operators include &lt;code&gt;=&lt;/code&gt;, &lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;&lt;/code&gt;, &lt;code&gt;&amp;gt;=&lt;/code&gt;, and &lt;code&gt;&amp;lt;=&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;For example, I used the greater-than operator to identify patients whose hospital bills exceeded 100,000.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;first_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;department&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;bill_amount&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;hospital&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;patients&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;bill_amount&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;100000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This query returns patients whose bills are greater than 100,000. The &lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt; operator can also be used to find values that are not equal to a specified value.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Logical Operators
&lt;/h2&gt;

&lt;p&gt;Logical operators combine conditions. &lt;code&gt;AND&lt;/code&gt; requires all conditions to be true, &lt;code&gt;OR&lt;/code&gt; requires at least one condition to be true, and &lt;code&gt;NOT&lt;/code&gt; reverses a condition.&lt;/p&gt;

&lt;p&gt;For example, this query finds female patients admitted to the Maternity department.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;hospital&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;patients&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;gender&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Female'&lt;/span&gt;
  &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;department&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Maternity'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both conditions must be true for a patient to appear in the results. Parentheses can help clarify queries that combine &lt;code&gt;AND&lt;/code&gt; and &lt;code&gt;OR&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Range and List Operators
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;BETWEEN&lt;/code&gt; operator checks whether a value falls within a range, including both endpoints. The &lt;code&gt;IN&lt;/code&gt; operator checks whether a value matches any item in a list.&lt;/p&gt;

&lt;p&gt;To find patients whose bills fall between 10,000 and 50,000:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;first_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;bill_amount&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;hospital&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;patients&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;bill_amount&lt;/span&gt; &lt;span class="k"&gt;BETWEEN&lt;/span&gt; &lt;span class="mi"&gt;10000&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="mi"&gt;50000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To find patients from Nairobi or Mombasa:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;hospital&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;patients&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;county&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Nairobi'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Mombasa'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using &lt;code&gt;IN&lt;/code&gt; makes the query easier to read than writing multiple &lt;code&gt;OR&lt;/code&gt; conditions.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Mathematical and Arithmetic Operators
&lt;/h2&gt;

&lt;p&gt;Arithmetic operators perform calculations on numeric values.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Operator&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;+&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Addition&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Subtraction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;*&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Multiplication&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Division&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;%&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Remainder&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For example, we can calculate a 10% increase in a patient's bill for demonstration purposes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;first_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;bill_amount&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;bill_amount&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;adjusted_bill&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;hospital&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;patients&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The calculated value appears under &lt;code&gt;adjusted_bill&lt;/code&gt;. This query does not change the original bills stored in the table.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Assignment Operators
&lt;/h2&gt;

&lt;p&gt;Assignment involves setting or updating a value. In PostgreSQL, &lt;code&gt;=&lt;/code&gt; is used to assign a value in an &lt;code&gt;UPDATE&lt;/code&gt; statement.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;UPDATE&lt;/span&gt; &lt;span class="n"&gt;hospital&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;patients&lt;/span&gt;
&lt;span class="k"&gt;SET&lt;/span&gt; &lt;span class="n"&gt;bill_amount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50000&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;patient_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This sets the bill for the patient with ID 1 to 50,000. The &lt;code&gt;WHERE&lt;/code&gt; clause is important because leaving it out could update every patient's bill.&lt;/p&gt;

&lt;p&gt;To increase an existing bill by 1,000, we can write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;UPDATE&lt;/span&gt; &lt;span class="n"&gt;hospital&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;patients&lt;/span&gt;
&lt;span class="k"&gt;SET&lt;/span&gt; &lt;span class="n"&gt;bill_amount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;bill_amount&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;patient_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PostgreSQL does not use &lt;code&gt;+=&lt;/code&gt; as a standard SQL assignment operator.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. NULL Values and Identity-Related Comparisons
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;NULL&lt;/code&gt; represents a missing or unknown value. I learned to use &lt;code&gt;IS NULL&lt;/code&gt; to find missing information and &lt;code&gt;IS NOT NULL&lt;/code&gt; to find information that is present.&lt;/p&gt;

&lt;p&gt;For example, this query finds patients without recorded email addresses:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;first_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;last_name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;hospital&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;patients&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;email&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using &lt;code&gt;email = NULL&lt;/code&gt; does not work as expected because SQL uses special rules for NULL comparisons.&lt;/p&gt;

&lt;p&gt;In Python, &lt;code&gt;is&lt;/code&gt; and &lt;code&gt;is not&lt;/code&gt; are identity operators. They are not used in the same way in SQL. PostgreSQL provides &lt;code&gt;IS DISTINCT FROM&lt;/code&gt; for comparisons that handle NULL values explicitly.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Pattern Matching with LIKE
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;LIKE&lt;/code&gt; operator searches for text patterns. The &lt;code&gt;%&lt;/code&gt; wildcard matches zero or more characters, while &lt;code&gt;_&lt;/code&gt; matches exactly one character.&lt;/p&gt;

&lt;p&gt;For example, to find patients whose first names begin with K:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;first_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;last_name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;hospital&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;patients&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;first_name&lt;/span&gt; &lt;span class="k"&gt;LIKE&lt;/span&gt; &lt;span class="s1"&gt;'K%'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In PostgreSQL, &lt;code&gt;LIKE&lt;/code&gt; is case-sensitive. The &lt;code&gt;ILIKE&lt;/code&gt; operator can be used for case-insensitive matching.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Common Mistakes to Avoid
&lt;/h2&gt;

&lt;p&gt;Some common mistakes when using SQL operators include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using &lt;code&gt;= NULL&lt;/code&gt; instead of &lt;code&gt;IS NULL&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Forgetting that &lt;code&gt;BETWEEN&lt;/code&gt; includes both endpoints.&lt;/li&gt;
&lt;li&gt;Combining &lt;code&gt;AND&lt;/code&gt; and &lt;code&gt;OR&lt;/code&gt; without parentheses when the intended logic is unclear.&lt;/li&gt;
&lt;li&gt;Forgetting that &lt;code&gt;LIKE&lt;/code&gt; is case-sensitive in PostgreSQL.&lt;/li&gt;
&lt;li&gt;Running an &lt;code&gt;UPDATE&lt;/code&gt; without checking its &lt;code&gt;WHERE&lt;/code&gt; condition.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SQL also includes commands such as &lt;code&gt;CREATE TABLE&lt;/code&gt;, &lt;code&gt;ALTER TABLE&lt;/code&gt;, &lt;code&gt;DELETE&lt;/code&gt;, &lt;code&gt;TRUNCATE&lt;/code&gt;, and &lt;code&gt;DROP TABLE&lt;/code&gt;. These are database commands rather than operator categories. &lt;code&gt;DELETE&lt;/code&gt; removes selected rows, &lt;code&gt;TRUNCATE&lt;/code&gt; removes all rows while retaining the table structure, and &lt;code&gt;DROP TABLE&lt;/code&gt; removes the table itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Learning SQL operators has helped me understand how to filter records, combine conditions, perform calculations, handle missing values, and search for patterns. Practising these operators using a hospital database has strengthened my understanding of how SQL retrieves and manages information. These skills provide a foundation for writing more accurate and efficient queries.&lt;/p&gt;

</description>
      <category>postgressql</category>
      <category>beginners</category>
      <category>datascience</category>
      <category>sql</category>
    </item>
  </channel>
</rss>
