<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Code With Ankit]]></title><description><![CDATA[Code With Ankit]]></description><link>https://codewithankit.hashnode.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1753635590806/cec2f519-12ec-4e4f-9d85-a5554ef7f187.jpeg</url><title>Code With Ankit</title><link>https://codewithankit.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Fri, 13 Nov 2026 22:19:26 GMT</lastBuildDate><atom:link href="https://codewithankit.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Understanding SQL Fundamentals: A 
Beginner's Handbook:-]]></title><description><![CDATA[A place to store and organize information so you can find it easily. 📂✅ Example: Like a digital notebook to save and find information quickly. 📝💻…]]></description><link>https://codewithankit.hashnode.dev/understanding-sql-fundamentals-a-beginners-handbook</link><guid isPermaLink="true">https://codewithankit.hashnode.dev/understanding-sql-fundamentals-a-beginners-handbook</guid><category><![CDATA[SQL]]></category><category><![CDATA[Databases]]></category><dc:creator><![CDATA[Ankit Chakrabarty]]></dc:creator><pubDate>Sun, 27 Jul 2025 15:33:31 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1753524355478/66e02494-25b0-4de6-be08-4740c3544a0f.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="heading-check-out-my-portfolio-now-click-herehttpsankits-webvercelapp"><strong>Check Out My Portfolio Now:</strong> <a target="_blank" href="https://ankits-web.vercel.app/">🔗 Click Here</a></h3>
<h3 id="heading-what-is-a-database"><strong><mark>What is a Database?</mark></strong></h3>
<ul>
<li><p>A place to store and organize information so you can find it easily. 📂✅</p>
</li>
<li><p>Example: Like a digital notebook to save and find information quickly. 📝💻</p>
</li>
<li><p>Example: A phone contact list is a simple database. 📱</p>
</li>
</ul>
<h3 id="heading-what-is-dbms"><mark>What is DBMS?</mark></h3>
<ul>
<li><p>DBMS means Database Management System.</p>
</li>
<li><p>It’s a software that helps to store and manage data.</p>
</li>
<li><p>Makes it easy to add, update, delete, and find data.</p>
</li>
<li><p>Example**:** MySQL, Oracle, Microsoft SQL Server.</p>
</li>
</ul>
<div class="hn-table">
<table>
<thead>
<tr>
<td><strong>DBMS</strong></td><td><strong>RDBMS</strong></td></tr>
</thead>
<tbody>
<tr>
<td>Database Management System</td><td>Relational Database Management System</td></tr>
<tr>
<td>Stores data as files or documents</td><td>Stores data in tables (rows &amp; columns)</td></tr>
<tr>
<td>MongoDB</td><td>MySQL, Oracle, PostgreSQL</td></tr>
<tr>
<td>Unstructured</td><td>Structured</td></tr>
<tr>
<td>JSON-like documents</td><td>Tables with columns and data types</td></tr>
<tr>
<td>DBMS might not always do that perfectly.</td><td>RDBMS keeps your data safe during updates.</td></tr>
</tbody>
</table>
</div><h3 id="heading-what-is-a-query"><mark>What is a Query?</mark></h3>
<ul>
<li>A query is a question or request sent to a database.</li>
</ul>
<p>It asks the database to find, add, update, or delete data.</p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text">Example<strong>: </strong>You want to see all names in a friends list.</div>
</div>

<blockquote>
<p><strong>This query asks the database to show all friend names.</strong></p>
</blockquote>
<pre><code class="lang-plaintext">SELECT name FROM friends;
</code></pre>
<h3 id="heading-what-is-mysql-workbench"><mark>What is MySQL Workbench?</mark></h3>
<ul>
<li><p>It’s a tool to work with MySQL databases easily.</p>
</li>
<li><p>You can write and run SQL commands.</p>
</li>
<li><p>You can design tables and see data in a nice way.</p>
</li>
</ul>
<h3 id="heading-what-is-a-primary-key-in-a-database"><strong><mark>What is a Primary Key in a database?</mark></strong></h3>
<ul>
<li><p>It’s a special ID for each row in a table.</p>
</li>
<li><p>No two rows have the same primary key.</p>
</li>
<li><p>Example: Your student ID in a school.</p>
</li>
</ul>
<h3 id="heading-what-is-a-secondary-key-in-a-database"><strong><mark>What is a Secondary Key in a database?</mark></strong></h3>
<ul>
<li><p>A key used to find or group data, but it’s not unique.</p>
</li>
<li><p>Example:-Class name in a student list — many students share the same class.</p>
</li>
<li><p>It’s like a helper key in the database.</p>
</li>
<li><h3 id="heading-what-is-a-foreign-key-in-a-database"><strong><mark>What is a Foreign Key in a database?</mark></strong></h3>
</li>
<li><p>A foreign key is like a bridge between two tables.</p>
</li>
<li><p>It links one table’s data to another table’s unique ID (primary key).</p>
</li>
<li><p>Helps keep data organized and connected.</p>
</li>
<li><p>A foreign key is a link from one table to another .It helps tables talk to each other.</p>
</li>
<li><p>Example:-In an orders list, Customer ID tells who placed the order by linking to the customers list.</p>
</li>
</ul>
<hr />
<pre><code class="lang-sql"><span class="hljs-comment">-- Create a new database named startersql</span>
     <span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">DATABASE</span> startersql;

<span class="hljs-comment">-- Use the startersql database</span>
     <span class="hljs-keyword">USE</span> startersql;

<span class="hljs-comment">-- Delete the users table if it exists</span>
     <span class="hljs-keyword">DROP</span> <span class="hljs-keyword">TABLE</span> <span class="hljs-keyword">IF</span> <span class="hljs-keyword">EXISTS</span> <span class="hljs-keyword">users</span>;

<span class="hljs-comment">-- (You can create tables or insert data here)</span>
<span class="hljs-comment">-- (You can create tables or insert data here)</span>

<span class="hljs-comment">-- Rename the table 'users' to 'customers'</span>
     <span class="hljs-keyword">RENAME</span> <span class="hljs-keyword">TABLE</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">TO</span> customers;

<span class="hljs-comment">-- Get all columns and rows from the 'users' table</span>
    <span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;

<span class="hljs-comment">-- It displays all the columns (fields) in the table named pre.</span>
    <span class="hljs-keyword">SHOW</span> <span class="hljs-keyword">COLUMNS</span> <span class="hljs-keyword">FROM</span> pre;


<span class="hljs-comment">-- Delete the startersql database completely</span>
     <span class="hljs-keyword">DROP</span> <span class="hljs-keyword">DATABASE</span> startersql;
</code></pre>
<hr />
<h3 id="heading-step-1-create-a-database"><strong>Step 1: Create a Database:-</strong></h3>
<pre><code class="lang-sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">DATABASE</span> startersql;
<span class="hljs-keyword">USE</span> startersql;
</code></pre>
<h3 id="heading-step-2-create-a-table"><strong>Step 2: Create a Table:-</strong></h3>
<pre><code class="lang-sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> <span class="hljs-keyword">users</span> (
    <span class="hljs-keyword">id</span> <span class="hljs-built_in">INT</span> AUTO_INCREMENT PRIMARY <span class="hljs-keyword">KEY</span>,         
    <span class="hljs-comment">-- Makes a user ID that goes up automatically (1, 2, 3...)</span>

    <span class="hljs-keyword">name</span> <span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">100</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-literal">NULL</span>,                
    <span class="hljs-comment">-- Name of the user (must be filled in) Variable-length string, up to 100 characters.</span>

    email <span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">100</span>) <span class="hljs-keyword">UNIQUE</span> <span class="hljs-keyword">NOT</span> <span class="hljs-literal">NULL</span>,        
    <span class="hljs-comment">-- Email (must be filled in and cannot be the same as anyone else's)</span>

    gender ENUM(<span class="hljs-string">'Male'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'Other'</span>),    
    <span class="hljs-comment">-- Gender (choose one from Male, Female, Other)</span>

    date_of_birth <span class="hljs-built_in">DATE</span>,                        
    <span class="hljs-comment">-- Birth date (example: 2000-05-01)</span>

    salary <span class="hljs-built_in">DECIMAL</span>(<span class="hljs-number">10</span>, <span class="hljs-number">2</span>),                     
    <span class="hljs-comment">-- Salary with 2 decimal points (example: 50000.50)</span>

    created_at <span class="hljs-built_in">TIMESTAMP</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-keyword">CURRENT_TIMESTAMP</span> 
    <span class="hljs-comment">-- Adds the date &amp; time automatically when the user is added</span>
);
</code></pre>
<h4 id="heading-data-types-explained"><strong><mark>Data Types Explained:-</mark></strong></h4>
<ul>
<li><p><code>INT</code>: Integer type, used for whole numbers.</p>
</li>
<li><p><code>VARCHAR(100)</code>: Variable-length string, up to 100 characters.</p>
</li>
<li><p><code>ENUM</code>: A string object with a value chosen from a list of permitted values.</p>
</li>
<li><p><code>DATE</code>: Stores date values. eg -<code>date_of_birth DATE</code>.</p>
</li>
<li><p><code>TIMESTAMP</code>: Stores date and time, automatically set to the current timestamp when a row is created.</p>
</li>
<li><p><code>BOOLEAN</code>: Stores TRUE or FALSE values, often used for flags like <code>is_active</code>.</p>
</li>
<li><p><code>DECIMAL(10, 2)</code>: Stores exact numeric data values, useful for financial data.</p>
</li>
</ul>
<h4 id="heading-constraints-explained"><strong><mark>Constraints Explained:-</mark></strong></h4>
<ul>
<li><p><code>AUTO_INCREMENT</code>: Automatically generates a unique number for each row.</p>
</li>
<li><p><code>PRIMARY KEY</code>: Uniquely identifies each row in the table.</p>
</li>
<li><p><code>NOT NULL</code>: Ensures a column cannot have a NULL value.</p>
</li>
<li><p><code>UNIQUE</code>: Ensures all values in a column are different.</p>
</li>
<li><p><code>DEFAULT</code>: Sets a default value for a column if no value is provided. eg-<code>created_at TIMESTAMP DEFAULT</code></p>
</li>
<li><p><code>CURRENT_TIMESTAMP</code>, <code>is_active BOOLEAN DEFAULT TRUE</code></p>
</li>
</ul>
<h3 id="heading-step-3-insert-multiple-rows-at-once"><strong>Step 3-Insert Multiple Rows at Once:-</strong></h3>
<pre><code class="lang-sql"><span class="hljs-keyword">INSERT</span> <span class="hljs-keyword">INTO</span> <span class="hljs-keyword">users</span> (<span class="hljs-keyword">name</span>, email, gender, date_of_birth, salary) <span class="hljs-keyword">VALUES</span>
(<span class="hljs-string">'Aarav'</span>, <span class="hljs-string">'aarav@example.com'</span>, <span class="hljs-string">'Male'</span>, <span class="hljs-string">'1995-05-14'</span>, <span class="hljs-number">65000.00</span>),
(<span class="hljs-string">'Ananya'</span>, <span class="hljs-string">'ananya@example.com'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'1990-11-23'</span>, <span class="hljs-number">72000.00</span>),
(<span class="hljs-string">'Raj'</span>, <span class="hljs-string">'raj@example.com'</span>, <span class="hljs-string">'Male'</span>, <span class="hljs-string">'1988-02-17'</span>, <span class="hljs-number">58000.00</span>),
(<span class="hljs-string">'Sneha'</span>, <span class="hljs-string">'sneha@example.com'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'2000-08-09'</span>, <span class="hljs-number">50000.00</span>),
(<span class="hljs-string">'Farhan'</span>, <span class="hljs-string">'farhan@example.com'</span>, <span class="hljs-string">'Male'</span>, <span class="hljs-string">'1993-12-30'</span>, <span class="hljs-number">61000.00</span>),
(<span class="hljs-string">'Priyanka'</span>, <span class="hljs-string">'priyanka@example.com'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'1985-07-12'</span>, <span class="hljs-number">84000.00</span>),
(<span class="hljs-string">'Aisha'</span>, <span class="hljs-string">'aisha@example.com'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'1997-03-25'</span>, <span class="hljs-number">56000.00</span>),
(<span class="hljs-string">'Aditya'</span>, <span class="hljs-string">'aditya@example.com'</span>, <span class="hljs-string">'Male'</span>, <span class="hljs-string">'1992-06-17'</span>, <span class="hljs-number">69000.00</span>),
(<span class="hljs-string">'Meera'</span>, <span class="hljs-string">'meera@example.com'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'1989-09-05'</span>, <span class="hljs-number">77000.00</span>),
(<span class="hljs-string">'Ishaan'</span>, <span class="hljs-string">'ishaan@example.com'</span>, <span class="hljs-string">'Male'</span>, <span class="hljs-string">'2001-10-02'</span>, <span class="hljs-number">45000.00</span>),
(<span class="hljs-string">'Tanvi'</span>, <span class="hljs-string">'tanvi@example.com'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'1994-04-18'</span>, <span class="hljs-number">62000.00</span>),
(<span class="hljs-string">'Rohan'</span>, <span class="hljs-string">'rohan@example.com'</span>, <span class="hljs-string">'Male'</span>, <span class="hljs-string">'1986-12-01'</span>, <span class="hljs-number">75000.00</span>),
</code></pre>
<h3 id="heading-step-4-basic-sql-operations">**Step 4-**Basic SQL Operations:-</h3>
<pre><code class="lang-sql"><span class="hljs-comment">-- Show all columns and rows from the users table</span>
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;

<span class="hljs-comment">-- Show only the name and email of each user</span>
<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">name</span>, email <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;

<span class="hljs-comment">-- Show all users where gender is Female</span>
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">WHERE</span> gender = <span class="hljs-string">'Female'</span>;

<span class="hljs-comment">-- Show all users where gender is NOT Female</span>
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">WHERE</span> gender &lt;&gt; <span class="hljs-string">'Female'</span>;   <span class="hljs-comment">-- (&lt;&gt; means Not Equal To)</span>

<span class="hljs-comment">-- Select only column1 and column2 from the table called table_name</span>
<span class="hljs-keyword">SELECT</span> column1, column2 <span class="hljs-keyword">FROM</span> table_name;

<span class="hljs-comment">-- Show users whose ID is greater than 10</span>
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">id</span> &gt; <span class="hljs-number">10</span>;

<span class="hljs-comment">-- Show users who have a date of birth (not empty)</span>
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">WHERE</span> date_of_birth <span class="hljs-keyword">IS</span> <span class="hljs-keyword">NOT</span> <span class="hljs-literal">NULL</span>;

<span class="hljs-comment">-- Show users born between 1990 and 2000</span>
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">WHERE</span> date_of_birth <span class="hljs-keyword">BETWEEN</span> <span class="hljs-string">'1990-01-01'</span> <span class="hljs-keyword">AND</span> <span class="hljs-string">'2000-12-31'</span>;

<span class="hljs-comment">-- Show users whose gender is either Male or Female</span>
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">WHERE</span> gender <span class="hljs-keyword">IN</span> (<span class="hljs-string">'Male'</span>, <span class="hljs-string">'Female'</span>);

<span class="hljs-comment">-- Show Male users who earn more than 70,000, sorted by birth date (oldest first)</span>
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">WHERE</span> gender = <span class="hljs-string">'Male'</span> <span class="hljs-keyword">AND</span> salary &gt; <span class="hljs-string">'70000'</span> <span class="hljs-keyword">ORDER</span> <span class="hljs-keyword">BY</span> date_of_birth <span class="hljs-keyword">ASC</span>;

<span class="hljs-comment">-- Show users whose name starts with the letter A</span>
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">name</span> <span class="hljs-keyword">LIKE</span> <span class="hljs-string">'A%'</span>;  <span class="hljs-comment">-- % means any characters after A</span>
</code></pre>
<hr />
<h3 id="heading-altering-a-table-in-sqladd-a-column"><mark>Altering a Table in SQL(Add a Column):-</mark></h3>
<pre><code class="lang-sql"><span class="hljs-comment">--  Add a new column named 'phone' to the 'users' table to store phone numbers</span>
   <span class="hljs-keyword">ALTER</span> <span class="hljs-keyword">TABLE</span> <span class="hljs-keyword">users</span>
    <span class="hljs-keyword">ADD</span> phone <span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">15</span>);

<span class="hljs-comment">--  Remove the 'is_active' column from the 'users' table</span>
   <span class="hljs-keyword">ALTER</span> <span class="hljs-keyword">TABLE</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">DROP</span> <span class="hljs-keyword">COLUMN</span> is_active;

<span class="hljs-comment">-- Change the size of the 'name' column to allow up to 150 characters</span>
   <span class="hljs-keyword">ALTER</span> <span class="hljs-keyword">TABLE</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">MODIFY</span> <span class="hljs-keyword">COLUMN</span> <span class="hljs-keyword">name</span> <span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">150</span>);
</code></pre>
<p><strong><mark>Move a column to the first position:-</mark></strong></p>
<pre><code class="lang-sql"><span class="hljs-comment">--ALTER TABLE table_name </span>
<span class="hljs-comment">--MODIFY COLUMN column_name data_type </span>
<span class="hljs-comment">--FIRST;</span>


<span class="hljs-comment">--ALTER TABLE table_name </span>
<span class="hljs-comment">--MODIFY COLUMN column_name data_type </span>
<span class="hljs-comment">--AFTER another_column;</span>


<span class="hljs-comment">-- Move the 'email' column to be the first column in the 'users' table</span>
   <span class="hljs-keyword">ALTER</span> <span class="hljs-keyword">TABLE</span> <span class="hljs-keyword">users</span> 
   <span class="hljs-keyword">MODIFY</span> <span class="hljs-keyword">COLUMN</span> email <span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">100</span>) 
   <span class="hljs-keyword">FIRST</span>;




<span class="hljs-comment">-- Move the 'gender' column to appear right after the 'name' column in the 'users' table</span>
   <span class="hljs-keyword">ALTER</span> <span class="hljs-keyword">TABLE</span> <span class="hljs-keyword">users</span> 
   <span class="hljs-keyword">MODIFY</span> <span class="hljs-keyword">COLUMN</span> gender ENUM(<span class="hljs-string">'Male'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'Other'</span>) 
   <span class="hljs-keyword">AFTER</span> <span class="hljs-keyword">name</span>;
</code></pre>
<h3 id="heading-like-pattern-matching"><strong><mark>LIKE (Pattern Matching):-</mark></strong></h3>
<pre><code class="lang-sql"><span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">name</span> <span class="hljs-keyword">LIKE</span> <span class="hljs-string">'A%'</span>;  <span class="hljs-comment">-- Starts with A</span>
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">name</span> <span class="hljs-keyword">LIKE</span> <span class="hljs-string">'%a'</span>;  <span class="hljs-comment">-- Ends with a</span>
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">name</span> <span class="hljs-keyword">LIKE</span> <span class="hljs-string">'%li%'</span>; <span class="hljs-comment">-- Contains 'li'</span>
</code></pre>
<h3 id="heading-order-by"><strong><mark>ORDER BY:-</mark></strong></h3>
<ul>
<li><p><strong>ASC:</strong> Sorts from smallest to largest (e.g., A to Z, oldest to newest).</p>
</li>
<li><p><strong>DESC:</strong> Sorts from largest to smallest (e.g., Z to A, newest to oldest).</p>
</li>
</ul>
<pre><code class="lang-sql"><span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">ORDER</span> <span class="hljs-keyword">BY</span> date_of_birth <span class="hljs-keyword">ASC</span>;
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">ORDER</span> <span class="hljs-keyword">BY</span> <span class="hljs-keyword">name</span> <span class="hljs-keyword">DESC</span>;
</code></pre>
<h3 id="heading-limit"><strong><mark>LIMIT:-</mark></strong></h3>
<pre><code class="lang-sql"><span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">LIMIT</span> <span class="hljs-number">5</span>;  <span class="hljs-comment">-- Top 5 rows</span>
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">LIMIT</span> <span class="hljs-number">10</span> <span class="hljs-keyword">OFFSET</span> <span class="hljs-number">5</span>;  <span class="hljs-comment">-- Skip first 5 rows, then get next 10</span>
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">LIMIT</span> <span class="hljs-number">5</span>, <span class="hljs-number">10</span>;  <span class="hljs-comment">-- Get 10 rows starting from the 6th row (Same as above)</span>
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">ORDER</span> <span class="hljs-keyword">BY</span> created_at <span class="hljs-keyword">DESC</span> <span class="hljs-keyword">LIMIT</span> <span class="hljs-number">10</span>;
</code></pre>
<h2 id="heading-update-modifying-existing-data"><mark>UPDATE - Modifying Existing Data:</mark></h2>
<pre><code class="lang-sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">DATABASE</span> <span class="hljs-keyword">IF</span> <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">EXISTS</span> startersql;
<span class="hljs-keyword">USE</span> startersql;

<span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> <span class="hljs-keyword">users</span> (
    <span class="hljs-keyword">id</span> <span class="hljs-built_in">INT</span> AUTO_INCREMENT PRIMARY <span class="hljs-keyword">KEY</span>,
    <span class="hljs-keyword">name</span> <span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">100</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-literal">NULL</span>,
    email <span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">100</span>) <span class="hljs-keyword">UNIQUE</span> <span class="hljs-keyword">NOT</span> <span class="hljs-literal">NULL</span>,
    gender ENUM(<span class="hljs-string">'Male'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'Other'</span>),
    date_of_birth <span class="hljs-built_in">DATE</span>,
    salary <span class="hljs-built_in">DECIMAL</span>(<span class="hljs-number">10</span>, <span class="hljs-number">2</span>),
    created_at <span class="hljs-built_in">TIMESTAMP</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-keyword">CURRENT_TIMESTAMP</span>
);
<span class="hljs-keyword">INSERT</span> <span class="hljs-keyword">INTO</span> <span class="hljs-keyword">users</span> (<span class="hljs-keyword">name</span>, email, gender, date_of_birth, salary) <span class="hljs-keyword">VALUES</span>
(<span class="hljs-string">'Aarav'</span>, <span class="hljs-string">'aarav@example.com'</span>, <span class="hljs-string">'Male'</span>, <span class="hljs-string">'1995-05-14'</span>, <span class="hljs-number">65000.00</span>),
(<span class="hljs-string">'Ananya'</span>, <span class="hljs-string">'ananya@example.com'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'1990-11-23'</span>, <span class="hljs-number">72000.00</span>),
(<span class="hljs-string">'Raj'</span>, <span class="hljs-string">'raj@example.com'</span>, <span class="hljs-string">'Male'</span>, <span class="hljs-string">'1988-02-17'</span>, <span class="hljs-number">58000.00</span>),
(<span class="hljs-string">'Sneha'</span>, <span class="hljs-string">'sneha@example.com'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'2000-08-09'</span>, <span class="hljs-number">50000.00</span>),
(<span class="hljs-string">'Farhan'</span>, <span class="hljs-string">'farhan@example.com'</span>, <span class="hljs-string">'Male'</span>, <span class="hljs-string">'1993-12-30'</span>, <span class="hljs-number">61000.00</span>),
(<span class="hljs-string">'Priyanka'</span>, <span class="hljs-string">'priyanka@example.com'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'1985-07-12'</span>, <span class="hljs-number">84000.00</span>),
(<span class="hljs-string">'Aisha'</span>, <span class="hljs-string">'aisha@example.com'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'1997-03-25'</span>, <span class="hljs-number">56000.00</span>),
(<span class="hljs-string">'Aditya'</span>, <span class="hljs-string">'aditya@example.com'</span>, <span class="hljs-string">'Male'</span>, <span class="hljs-string">'1992-06-17'</span>, <span class="hljs-number">69000.00</span>),
(<span class="hljs-string">'Meera'</span>, <span class="hljs-string">'meera@example.com'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'1989-09-05'</span>, <span class="hljs-number">77000.00</span>),
(<span class="hljs-string">'Ishaan'</span>, <span class="hljs-string">'ishaan@example.com'</span>, <span class="hljs-string">'Male'</span>, <span class="hljs-string">'2001-10-02'</span>, <span class="hljs-number">45000.00</span>),
(<span class="hljs-string">'Tanvi'</span>, <span class="hljs-string">'tanvi@example.com'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'1994-04-18'</span>, <span class="hljs-number">62000.00</span>),
(<span class="hljs-string">'Rohan'</span>, <span class="hljs-string">'rohan@example.com'</span>, <span class="hljs-string">'Male'</span>, <span class="hljs-string">'1986-12-01'</span>, <span class="hljs-number">75000.00</span>),
(<span class="hljs-string">'Zoya'</span>, <span class="hljs-string">'zoya@example.com'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'1998-01-15'</span>, <span class="hljs-number">54000.00</span>),
(<span class="hljs-string">'Karan'</span>, <span class="hljs-string">'karan@example.com'</span>, <span class="hljs-string">'Male'</span>, <span class="hljs-string">'1990-08-22'</span>, <span class="hljs-number">68000.00</span>),
(<span class="hljs-string">'Nikita'</span>, <span class="hljs-string">'nikita@example.com'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'1987-03-10'</span>, <span class="hljs-number">71000.00</span>),
(<span class="hljs-string">'Manav'</span>, <span class="hljs-string">'manav@example.com'</span>, <span class="hljs-string">'Male'</span>, <span class="hljs-string">'1996-11-29'</span>, <span class="hljs-number">61000.00</span>),
(<span class="hljs-string">'Divya'</span>, <span class="hljs-string">'divya@example.com'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'1991-02-28'</span>, <span class="hljs-number">57000.00</span>),
(<span class="hljs-string">'Harshit'</span>, <span class="hljs-string">'harshit@example.com'</span>, <span class="hljs-string">'Male'</span>, <span class="hljs-string">'1993-09-09'</span>, <span class="hljs-number">65000.00</span>),
(<span class="hljs-string">'Ritika'</span>, <span class="hljs-string">'ritika@example.com'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'1999-05-05'</span>, <span class="hljs-number">52000.00</span>),
(<span class="hljs-string">'Imran'</span>, <span class="hljs-string">'imran@example.com'</span>, <span class="hljs-string">'Male'</span>, <span class="hljs-string">'1995-07-30'</span>, <span class="hljs-number">63000.00</span>),
(<span class="hljs-string">'Juhi'</span>, <span class="hljs-string">'juhi@example.com'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'1992-10-14'</span>, <span class="hljs-number">59000.00</span>),
(<span class="hljs-string">'Tushar'</span>, <span class="hljs-string">'tushar@example.com'</span>, <span class="hljs-string">'Male'</span>, <span class="hljs-string">'1990-01-08'</span>, <span class="hljs-number">73000.00</span>),
(<span class="hljs-string">'Lata'</span>, <span class="hljs-string">'lata@example.com'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'1984-11-11'</span>, <span class="hljs-number">78000.00</span>),
(<span class="hljs-string">'Yash'</span>, <span class="hljs-string">'yash@example.com'</span>, <span class="hljs-string">'Male'</span>, <span class="hljs-string">'1997-06-06'</span>, <span class="hljs-number">64000.00</span>),
(<span class="hljs-string">'Fatima'</span>, <span class="hljs-string">'fatima@example.com'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'1993-03-03'</span>, <span class="hljs-number">55000.00</span>);

<span class="hljs-comment">-- UPDATE users SET name = 'Ankit', email = 'Ankit@gmail.com' WHERE id = 1;</span>
    <span class="hljs-keyword">DELETE</span> <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">id</span> = <span class="hljs-number">3</span>;

<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;
</code></pre>
<blockquote>
<h4 id="heading-increase-salary-by-10000-for-all-users-whose-salary-is-less-than-60000"><strong>Increase salary by ₹10,000 for all users whose salary is less than ₹60,000.</strong></h4>
</blockquote>
<pre><code class="lang-sql"><span class="hljs-keyword">UPDATE</span> <span class="hljs-keyword">users</span>
<span class="hljs-keyword">SET</span> salary = salary + <span class="hljs-number">10000</span>
<span class="hljs-keyword">WHERE</span> salary &lt; <span class="hljs-number">60000</span>;
</code></pre>
<blockquote>
<h4 id="heading-set-the-gender-of-user-ommm-to-other"><strong>Set the gender of user</strong> Ommm to Other.</h4>
</blockquote>
<hr />
<pre><code class="lang-sql"><span class="hljs-keyword">UPDATE</span> <span class="hljs-keyword">users</span>
<span class="hljs-keyword">SET</span> gender = <span class="hljs-string">'Other'</span>
<span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">name</span> = <span class="hljs-string">'Ommm'</span>;
</code></pre>
<blockquote>
<h4 id="heading-reset-salary-of-all-users-to-50000-careful-affects-all-rows"><strong>Reset salary of all users to ₹50,000 (Careful - affects all rows).</strong></h4>
</blockquote>
<pre><code class="lang-sql"><span class="hljs-keyword">UPDATE</span> <span class="hljs-keyword">users</span>
<span class="hljs-keyword">SET</span> salary = <span class="hljs-number">50000</span>;
</code></pre>
<pre><code class="lang-sql"><span class="hljs-comment">-- Update the user with ID 1, set their name and email to new values</span>
<span class="hljs-keyword">UPDATE</span> <span class="hljs-keyword">users</span> 
<span class="hljs-keyword">SET</span> <span class="hljs-keyword">name</span> = <span class="hljs-string">'Ankit'</span>, email = <span class="hljs-string">'Ankit@gmail.com'</span> 
<span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">id</span> = <span class="hljs-number">1</span>;

<span class="hljs-comment">-- Delete the user who has ID 3</span>
<span class="hljs-keyword">DELETE</span> <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> 
<span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">id</span> = <span class="hljs-number">3</span>;

<span class="hljs-comment">-- Check if the user with ID 3 still exists (should return nothing if deleted)</span>
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> 
<span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">id</span> = <span class="hljs-number">3</span>;

<span class="hljs-comment">-- Delete all users where salary is empty (NULL)</span>
<span class="hljs-keyword">DELETE</span> <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> 
<span class="hljs-keyword">WHERE</span> salary <span class="hljs-keyword">IS</span> <span class="hljs-literal">NULL</span>;

<span class="hljs-comment">-- Delete all users whose salary is less than 50000</span>
<span class="hljs-keyword">DELETE</span> <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> 
<span class="hljs-keyword">WHERE</span> salary &lt; <span class="hljs-number">50000</span>;
</code></pre>
<h2 id="heading-mysql-constraints"><strong><mark>MySQL Constraints:-</mark></strong></h2>
<pre><code class="lang-sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> <span class="hljs-keyword">users</span> (
    <span class="hljs-comment">-- id will auto-increase for each new user</span>
    <span class="hljs-keyword">id</span> <span class="hljs-built_in">INT</span> AUTO_INCREMENT PRIMARY <span class="hljs-keyword">KEY</span>,  

    <span class="hljs-comment">-- name cannot be empty (NOT NULL)</span>
    <span class="hljs-keyword">name</span> <span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">100</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-literal">NULL</span>,           

    <span class="hljs-comment">-- email must be unique for each user</span>
    email <span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">100</span>) <span class="hljs-keyword">UNIQUE</span>,             

    <span class="hljs-comment">-- user must be born after the year 2000 (real check)</span>
    date_of_birth <span class="hljs-built_in">DATE</span>,                    
    <span class="hljs-keyword">CONSTRAINT</span> chk_dob <span class="hljs-keyword">CHECK</span> (date_of_birth &gt; <span class="hljs-string">'2000-01-01'</span>),

    <span class="hljs-comment">-- gender has default value 'Other' if not given</span>
    gender ENUM(<span class="hljs-string">'Male'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'Other'</span>) <span class="hljs-keyword">DEFAULT</span> <span class="hljs-string">'Other'</span>,  

    <span class="hljs-comment">-- user is active by default</span>
    is_active <span class="hljs-built_in">BOOLEAN</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-literal">TRUE</span>,         

    <span class="hljs-comment">-- salary can be any number, but we will use this later in queries</span>
    salary <span class="hljs-built_in">DECIMAL</span>(<span class="hljs-number">10</span>,<span class="hljs-number">2</span>)                   
);
</code></pre>
<div class="hn-table">
<table>
<thead>
<tr>
<td><strong><mark>Constraint</mark></strong></td><td><strong><mark>Purpose</mark></strong></td></tr>
</thead>
<tbody>
<tr>
<td><code>UNIQUE</code></td><td>Prevents duplicate values</td></tr>
<tr>
<td><code>NOT NULL</code></td><td>Ensures value is not NULL</td></tr>
<tr>
<td><code>CHECK</code></td><td>Restricts values using a condition</td></tr>
<tr>
<td><code>DEFAULT</code></td><td>Sets a default value</td></tr>
<tr>
<td><code>PRIMARY KEY</code></td><td>Uniquely identifies each row</td></tr>
<tr>
<td><code>AUTO_INCREMENT</code></td><td>Automatically generates unique numbers</td></tr>
</tbody>
</table>
</div><pre><code class="lang-sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">DATABASE</span> <span class="hljs-keyword">IF</span> <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">EXISTS</span> db;
<span class="hljs-keyword">USE</span> db;
<span class="hljs-keyword">DROP</span> <span class="hljs-keyword">TABLE</span> <span class="hljs-keyword">IF</span> <span class="hljs-keyword">EXISTS</span> <span class="hljs-keyword">users</span>;
<span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> <span class="hljs-keyword">users</span> (
    <span class="hljs-keyword">id</span> <span class="hljs-built_in">INT</span> AUTO_INCREMENT PRIMARY <span class="hljs-keyword">KEY</span>,
    <span class="hljs-keyword">name</span> <span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">100</span>),
    gender ENUM(<span class="hljs-string">'Male'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'Other'</span>),
    email <span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">100</span>),
    salary <span class="hljs-built_in">DECIMAL</span>(<span class="hljs-number">10</span>, <span class="hljs-number">2</span>),
    date_of_birth <span class="hljs-built_in">DATE</span>
);

<span class="hljs-keyword">INSERT</span> <span class="hljs-keyword">INTO</span> <span class="hljs-keyword">users</span> (<span class="hljs-keyword">name</span>, gender, email, salary, date_of_birth) <span class="hljs-keyword">VALUES</span> 
(<span class="hljs-string">'Ankit'</span>, <span class="hljs-string">'Male'</span>, <span class="hljs-string">'ankit@gmail.com'</span>, <span class="hljs-number">60000</span>, <span class="hljs-string">'1996-08-10'</span>),
(<span class="hljs-string">'Priya'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'priya@example.com'</span>, <span class="hljs-number">55000</span>, <span class="hljs-string">'1998-04-22'</span>),
(<span class="hljs-string">'Ravi'</span>, <span class="hljs-string">'Male'</span>, <span class="hljs-string">'ravi@company.com'</span>, <span class="hljs-number">72000</span>, <span class="hljs-string">'1995-01-15'</span>),
(<span class="hljs-string">'Neha'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'neha@work.com'</span>, <span class="hljs-number">50000</span>, <span class="hljs-string">'1997-12-05'</span>),
(<span class="hljs-string">'Rahul'</span>, <span class="hljs-string">'Male'</span>, <span class="hljs-string">'rahul@webmail.com'</span>, <span class="hljs-number">65000</span>, <span class="hljs-string">'1994-07-30'</span>),
(<span class="hljs-string">'Aditi'</span>, <span class="hljs-string">'Female'</span>, <span class="hljs-string">'aditi@domain.com'</span>, <span class="hljs-number">48000</span>, <span class="hljs-string">'1999-06-18'</span>),
(<span class="hljs-string">'Kiran'</span>, <span class="hljs-string">'Other'</span>, <span class="hljs-string">'kiran@misc.com'</span>, <span class="hljs-number">53000</span>, <span class="hljs-string">'2000-03-10'</span>);

<span class="hljs-comment">-- --------------------------------------------</span>
<span class="hljs-comment">-- 5. Aggregate Functions</span>
<span class="hljs-comment">-- --------------------------------------------</span>

<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">COUNT</span>(*) <span class="hljs-keyword">AS</span> total_users <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>; 
<span class="hljs-comment">-- Output: 7 users total</span>

<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">COUNT</span>(*) <span class="hljs-keyword">AS</span> female_users <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">WHERE</span> gender = <span class="hljs-string">'Female'</span>; 
<span class="hljs-comment">-- Output: 3 female users</span>

<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">MIN</span>(salary) <span class="hljs-keyword">AS</span> min_salary, <span class="hljs-keyword">MAX</span>(salary) <span class="hljs-keyword">AS</span> max_salary <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>; 
<span class="hljs-comment">-- Output: Min = 48000.00, Max = 72000.00</span>

<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">SUM</span>(salary) <span class="hljs-keyword">AS</span> total_payroll <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;
<span class="hljs-comment">-- Output: 403000.00 (total of all salaries)</span>

<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">AVG</span>(salary) <span class="hljs-keyword">AS</span> avg_salary <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;
<span class="hljs-comment">-- Output: 57642.86 (average salary)</span>

<span class="hljs-keyword">SELECT</span> gender, <span class="hljs-keyword">AVG</span>(salary) <span class="hljs-keyword">AS</span> avg_salary <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">GROUP</span> <span class="hljs-keyword">BY</span> gender;
<span class="hljs-comment">-- Output:</span>
<span class="hljs-comment">-- Male   → 65666.67</span>
<span class="hljs-comment">-- Female → 51000.00</span>
<span class="hljs-comment">-- Other  → 53000.00</span>

<span class="hljs-comment">-- --------------------------------------------</span>
<span class="hljs-comment">-- 6. String Functions</span>
<span class="hljs-comment">-- --------------------------------------------</span>

<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">name</span>, <span class="hljs-keyword">LENGTH</span>(<span class="hljs-keyword">name</span>) <span class="hljs-keyword">AS</span> name_length <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;
<span class="hljs-comment">-- Output: Ankit → 5, Priya → 5, etc.</span>

<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">name</span>, <span class="hljs-keyword">LOWER</span>(<span class="hljs-keyword">name</span>) <span class="hljs-keyword">AS</span> lowercase_name <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;
<span class="hljs-comment">-- Output: Ankit → ankit, Priya → priya, etc.</span>

<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">name</span>, <span class="hljs-keyword">UPPER</span>(<span class="hljs-keyword">name</span>) <span class="hljs-keyword">AS</span> uppercase_name <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;
<span class="hljs-comment">-- Output: Ankit → ANKIT, etc.</span>

<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">CONCAT</span>(<span class="hljs-keyword">name</span>, <span class="hljs-string">' &lt;'</span>, email, <span class="hljs-string">'&gt;'</span>) <span class="hljs-keyword">AS</span> user_contact <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;
<span class="hljs-comment">-- Output: Ankit &lt;ankit@gmail.com&gt;, etc.</span>

<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">name</span>, <span class="hljs-keyword">LEFT</span>(<span class="hljs-keyword">name</span>, <span class="hljs-number">3</span>) <span class="hljs-keyword">AS</span> first_3_letters <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;
<span class="hljs-comment">-- Output: Ankit → Ank, Priya → Pri, etc.</span>

<span class="hljs-keyword">SELECT</span> email, <span class="hljs-keyword">RIGHT</span>(email, <span class="hljs-number">4</span>) <span class="hljs-keyword">AS</span> email_end <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;
<span class="hljs-comment">-- Output: .com</span>

<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">name</span>, <span class="hljs-keyword">SUBSTRING</span>(<span class="hljs-keyword">name</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>) <span class="hljs-keyword">AS</span> mid_part <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;
<span class="hljs-comment">-- Output: Ankit → nki, Priya → riy, etc.</span>

<span class="hljs-keyword">SELECT</span> email, <span class="hljs-keyword">REPLACE</span>(email, <span class="hljs-string">'@'</span>, <span class="hljs-string">'[at]'</span>) <span class="hljs-keyword">AS</span> safe_email <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;
<span class="hljs-comment">-- Output: ankit[at]gmail.com, etc.</span>

<span class="hljs-keyword">SELECT</span> email, <span class="hljs-keyword">INSTR</span>(email, <span class="hljs-string">'@'</span>) <span class="hljs-keyword">AS</span> at_position <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;
<span class="hljs-comment">-- Output: Position of '@' in email, e.g., 6</span>

<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">name</span>, <span class="hljs-keyword">REVERSE</span>(<span class="hljs-keyword">name</span>) <span class="hljs-keyword">AS</span> reversed_name <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;
<span class="hljs-comment">-- Output: Ankit → tiknA, Priya → ayirP, etc.</span>

<span class="hljs-comment">-- --------------------------------------------</span>
<span class="hljs-comment">-- 7. Date Functions</span>
<span class="hljs-comment">-- --------------------------------------------</span>

<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">NOW</span>() <span class="hljs-keyword">AS</span> <span class="hljs-keyword">current_time</span>;
<span class="hljs-comment">-- Output: Current system date and time</span>

<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">name</span>, <span class="hljs-keyword">YEAR</span>(date_of_birth) <span class="hljs-keyword">AS</span> birth_year <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;
<span class="hljs-comment">-- Output: Ankit → 1996, Priya → 1998, etc.</span>

<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">name</span>, <span class="hljs-keyword">DATEDIFF</span>(<span class="hljs-keyword">CURDATE</span>(), date_of_birth) <span class="hljs-keyword">AS</span> days_lived <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;
<span class="hljs-comment">-- Output: Ankit → approx 10500+ days, etc.</span>

<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">name</span>, <span class="hljs-keyword">TIMESTAMPDIFF</span>(<span class="hljs-keyword">YEAR</span>, date_of_birth, <span class="hljs-keyword">CURDATE</span>()) <span class="hljs-keyword">AS</span> age <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;
<span class="hljs-comment">-- Output: Ankit → 28 (as of 2025), etc.</span>

<span class="hljs-comment">-- --------------------------------------------</span>
<span class="hljs-comment">-- 8. Mathematical Functions</span>
<span class="hljs-comment">-- --------------------------------------------</span>

<span class="hljs-keyword">SELECT</span> salary,
       <span class="hljs-keyword">ROUND</span>(salary) <span class="hljs-keyword">AS</span> rounded,
       <span class="hljs-keyword">FLOOR</span>(salary) <span class="hljs-keyword">AS</span> floored,
       <span class="hljs-keyword">CEIL</span>(salary) <span class="hljs-keyword">AS</span> ceiled
<span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;
<span class="hljs-comment">-- Output: Rounded, floored, ceiled values of each salary (usually same here)</span>

<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">id</span>, <span class="hljs-keyword">MOD</span>(<span class="hljs-keyword">id</span>, <span class="hljs-number">2</span>) <span class="hljs-keyword">AS</span> <span class="hljs-keyword">remainder</span> <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;
<span class="hljs-comment">-- Output: 0 for even id, 1 for odd id</span>

<span class="hljs-comment">-- --------------------------------------------</span>
<span class="hljs-comment">-- 9. Conditional Functions</span>
<span class="hljs-comment">-- --------------------------------------------</span>

<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">name</span>, gender,
       <span class="hljs-keyword">IF</span>(gender = <span class="hljs-string">'Female'</span>, <span class="hljs-string">'Yes'</span>, <span class="hljs-string">'No'</span>) <span class="hljs-keyword">AS</span> is_female
<span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;
<span class="hljs-comment">-- Output: Priya → Yes, Ankit → No, etc.</span>
</code></pre>
<hr />
<hr />
<h2 id="heading-mysql-transactions-and-autocommit"><strong><mark>MySQL Transactions and AutoCommit:-</mark></strong></h2>
<ul>
<li><p>Transaction means running a group of SQL commands together, and we can save or cancel them using <code>COMMIT</code> or <code>ROLLBACK</code>.</p>
</li>
<li><p>AutoCommit means MySQL automatically saves your changes after each SQL command.</p>
</li>
</ul>
<pre><code class="lang-sql"><span class="hljs-comment">-- Step 1: Create the 'users' table</span>
<span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> <span class="hljs-keyword">users</span> (
    <span class="hljs-keyword">id</span> <span class="hljs-built_in">INT</span> PRIMARY <span class="hljs-keyword">KEY</span>,
    <span class="hljs-keyword">name</span> <span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">100</span>),
    salary <span class="hljs-built_in">DECIMAL</span>(<span class="hljs-number">10</span>,<span class="hljs-number">2</span>)
);

<span class="hljs-comment">-- Step 2: Insert sample data</span>
<span class="hljs-keyword">INSERT</span> <span class="hljs-keyword">INTO</span> <span class="hljs-keyword">users</span> (<span class="hljs-keyword">id</span>, <span class="hljs-keyword">name</span>, salary) <span class="hljs-keyword">VALUES</span>
(<span class="hljs-number">1</span>, <span class="hljs-string">'Alice'</span>, <span class="hljs-number">60000.00</span>),
(<span class="hljs-number">2</span>, <span class="hljs-string">'Bob'</span>, <span class="hljs-number">55000.00</span>),
(<span class="hljs-number">3</span>, <span class="hljs-string">'Charlie'</span>, <span class="hljs-number">70000.00</span>),
(<span class="hljs-number">4</span>, <span class="hljs-string">'Diana'</span>, <span class="hljs-number">75000.00</span>),
(<span class="hljs-number">5</span>, <span class="hljs-string">'Evan'</span>, <span class="hljs-number">50000.00</span>);

<span class="hljs-comment">-- Step 3: View initial data</span>
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;

<span class="hljs-comment">-- Output:</span>
<span class="hljs-comment">/*
+----+---------+----------+
| id | name    | salary   |
+----+---------+----------+
|  1 | Alice   | 60000.00 |
|  2 | Bob     | 55000.00 |
|  3 | Charlie | 70000.00 |
|  4 | Diana   | 75000.00 |
|  5 | Evan    | 50000.00 |
+----+---------+----------+
*/</span>

<span class="hljs-comment">-- Step 4: Turn off AutoCommit</span>
<span class="hljs-keyword">SET</span> autocommit = <span class="hljs-number">0</span>;

<span class="hljs-comment">-- Step 5: Start a transaction (optional but recommended)</span>
<span class="hljs-keyword">START</span> <span class="hljs-keyword">TRANSACTION</span>;

<span class="hljs-comment">-- Step 6: Update Evan’s salary to 80000 (temporary change)</span>
<span class="hljs-keyword">UPDATE</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">SET</span> salary = <span class="hljs-number">80000</span> <span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">id</span> = <span class="hljs-number">5</span>;

<span class="hljs-comment">-- Step 7: Check Evan’s salary before deciding</span>
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">id</span> = <span class="hljs-number">5</span>;

<span class="hljs-comment">-- Output:</span>
<span class="hljs-comment">/*
+----+-------+----------+
| id | name  | salary   |
+----+-------+----------+
|  5 | Evan  | 80000.00 |  &lt;-- Updated but NOT saved yet
+----+-------+----------+
*/</span>

<span class="hljs-comment">-- Step 8: Something is wrong — rollback the change</span>
<span class="hljs-keyword">ROLLBACK</span>;

<span class="hljs-comment">-- Step 9: Check Evan’s salary again after rollback</span>
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">id</span> = <span class="hljs-number">5</span>;

<span class="hljs-comment">-- Output:</span>
<span class="hljs-comment">/*
+----+-------+----------+
| id | name  | salary   |
+----+-------+----------+
|  5 | Evan  | 50000.00 |  &lt;-- Back to original value
+----+-------+----------+
*/</span>

<span class="hljs-comment">-- Step 10: Turn AutoCommit back on (optional)</span>
<span class="hljs-keyword">SET</span> autocommit = <span class="hljs-number">1</span>;

<span class="hljs-comment">-- Step 11: Final check – View all data</span>
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> <span class="hljs-keyword">users</span>;

<span class="hljs-comment">-- Output:</span>
<span class="hljs-comment">/*
+----+---------+----------+
| id | name    | salary   |
+----+---------+----------+
|  1 | Alice   | 60000.00 |
|  2 | Bob     | 55000.00 |
|  3 | Charlie | 70000.00 |
|  4 | Diana   | 75000.00 |
|  5 | Evan    | 50000.00 |  &lt;-- No change saved
+----+---------+----------+
*/</span>
</code></pre>
<ul>
<li><p><strong>SET autocommit = 0;</strong> → Turn off auto-save, you control when to save.</p>
</li>
<li><p><strong>UPDATE</strong> → Make a change in the data.</p>
</li>
<li><p><strong>COMMIT;</strong> → Save your changes permanently.</p>
</li>
<li><p><strong>ROLLBACK;</strong> → Undo your changes, don’t save.</p>
</li>
<li><p><strong>SET autocommit = 1;</strong> → Turn auto-save back on.</p>
</li>
</ul>
<blockquote>
<p>Can I Drop a PRIMARY KEY?</p>
<p>Yes, you <strong>can drop a primary key</strong> in MySQL using:</p>
<pre><code class="lang-sql"><span class="hljs-keyword">ALTER</span> <span class="hljs-keyword">TABLE</span> <span class="hljs-keyword">users</span> <span class="hljs-keyword">DROP</span> PRIMARY <span class="hljs-keyword">KEY</span>;
</code></pre>
</blockquote>
<h3 id="heading-foreign-key"><strong><mark>Foreign key:-</mark></strong></h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>customer_id (PK)</td><td>name</td><td>email</td></tr>
</thead>
<tbody>
<tr>
<td>1</td><td>Alice</td><td><a target="_blank" href="mailto:alice@example.com">alice@example.com</a></td></tr>
<tr>
<td><a target="_blank" href="mailto:alice@example.com">2</a></td><td><a target="_blank" href="mailto:alice@example.com">Bob</a></td><td><a target="_blank" href="mailto:bob@example.com">bob@example.com</a></td></tr>
</tbody>
</table>
</div><div class="hn-table">
<table>
<thead>
<tr>
<td>order_id (PK)</td><td>order_date</td><td>customer_id (FK)</td><td>amount</td></tr>
</thead>
<tbody>
<tr>
<td>101</td><td>2025-07-27</td><td>1</td><td>150.00</td></tr>
<tr>
<td>102</td><td>2025-07-28</td><td>2</td><td>200.00</td></tr>
</tbody>
</table>
</div><ul>
<li>In Orders table<strong>,</strong> <code>customer_id</code> is the foreign key — it points to the customer in the Customers table.</li>
</ul>
<pre><code class="lang-sql"><span class="hljs-comment">-- Create Customers table (Parent table)</span>
<span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> customers (
    customer_id <span class="hljs-built_in">INT</span> PRIMARY <span class="hljs-keyword">KEY</span>,
    <span class="hljs-keyword">name</span> <span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">50</span>)
);

<span class="hljs-comment">-- Create Orders table (Child table) with foreign key to Customers</span>
<span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> orders (
    order_id <span class="hljs-built_in">INT</span> PRIMARY <span class="hljs-keyword">KEY</span>,
    order_date <span class="hljs-built_in">DATE</span>,
    customer_id <span class="hljs-built_in">INT</span>,
    <span class="hljs-keyword">FOREIGN</span> <span class="hljs-keyword">KEY</span> (customer_id) <span class="hljs-keyword">REFERENCES</span> customers(customer_id)
);

<span class="hljs-comment">-- Insert data into Customers</span>
<span class="hljs-keyword">INSERT</span> <span class="hljs-keyword">INTO</span> customers <span class="hljs-keyword">VALUES</span>
(<span class="hljs-number">1</span>, <span class="hljs-string">'Alice'</span>),
(<span class="hljs-number">2</span>, <span class="hljs-string">'Bob'</span>);

<span class="hljs-comment">-- Insert data into Orders linked to Customers</span>
<span class="hljs-keyword">INSERT</span> <span class="hljs-keyword">INTO</span> orders <span class="hljs-keyword">VALUES</span>
(<span class="hljs-number">101</span>, <span class="hljs-string">'2025-07-27'</span>, <span class="hljs-number">1</span>),  <span class="hljs-comment">-- Alice's order</span>
(<span class="hljs-number">102</span>, <span class="hljs-string">'2025-07-28'</span>, <span class="hljs-number">2</span>);  <span class="hljs-comment">-- Bob's order</span>

<span class="hljs-comment">-- Check Customers table</span>
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> customers;
<span class="hljs-comment">-- Output:</span>
<span class="hljs-comment">-- +-------------+-------+</span>
<span class="hljs-comment">-- | customer_id | name  |</span>
<span class="hljs-comment">-- +-------------+-------+</span>
<span class="hljs-comment">-- |           1 | Alice |</span>
<span class="hljs-comment">-- |           2 | Bob   |</span>
<span class="hljs-comment">-- +-------------+-------+</span>

<span class="hljs-comment">-- Check Orders table</span>
<span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> orders;
<span class="hljs-comment">-- Output:</span>
<span class="hljs-comment">-- +----------+------------+-------------+</span>
<span class="hljs-comment">-- | order_id | order_date | customer_id |</span>
<span class="hljs-comment">-- +----------+------------+-------------+</span>
<span class="hljs-comment">-- |      101 | 2025-07-27 |           1 |</span>
<span class="hljs-comment">-- |      102 | 2025-07-28 |           2 |</span>
<span class="hljs-comment">-- +----------+------------+-------------+</span>

<span class="hljs-comment">-- Trying to insert an order with a customer_id that doesn't exist will fail</span>
<span class="hljs-comment">-- INSERT INTO orders VALUES (103, '2025-07-29', 3);</span>
<span class="hljs-comment">-- Error: Cannot add or update a child row: a foreign key constraint fails</span>
</code></pre>
<h2 id="heading-sql-joins-in-mysql"><strong><mark>SQL JOINs in MySQL:-</mark></strong></h2>
<ul>
<li>JOIN = connect two tables using a common column to get related data together.</li>
</ul>
<pre><code class="lang-sql"><span class="hljs-comment">-- ----------------------------------------</span>
<span class="hljs-comment">-- 1. Create Sample Tables</span>
<span class="hljs-comment">-- ----------------------------------------</span>

<span class="hljs-comment">-- Drop tables if they already exist</span>
<span class="hljs-keyword">DROP</span> <span class="hljs-keyword">TABLE</span> <span class="hljs-keyword">IF</span> <span class="hljs-keyword">EXISTS</span> Employees;
<span class="hljs-keyword">DROP</span> <span class="hljs-keyword">TABLE</span> <span class="hljs-keyword">IF</span> <span class="hljs-keyword">EXISTS</span> Departments;

<span class="hljs-comment">-- Employees Table</span>
<span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> Employees (
    EmpID <span class="hljs-built_in">INT</span> PRIMARY <span class="hljs-keyword">KEY</span>,
    EmpName <span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">100</span>),
    DeptID <span class="hljs-built_in">INT</span>
);

<span class="hljs-comment">-- Departments Table</span>
<span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> Departments (
    DeptID <span class="hljs-built_in">INT</span> PRIMARY <span class="hljs-keyword">KEY</span>,
    DeptName <span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">100</span>)
);

<span class="hljs-comment">-- ----------------------------------------</span>
<span class="hljs-comment">-- 2. Insert Sample Data</span>
<span class="hljs-comment">-- ----------------------------------------</span>

<span class="hljs-comment">-- Insert Employees</span>
<span class="hljs-keyword">INSERT</span> <span class="hljs-keyword">INTO</span> Employees (EmpID, EmpName, DeptID) <span class="hljs-keyword">VALUES</span>
(<span class="hljs-number">1</span>, <span class="hljs-string">'Alice'</span>, <span class="hljs-number">10</span>),
(<span class="hljs-number">2</span>, <span class="hljs-string">'Bob'</span>, <span class="hljs-number">20</span>),
(<span class="hljs-number">3</span>, <span class="hljs-string">'Charlie'</span>, <span class="hljs-number">30</span>),
(<span class="hljs-number">4</span>, <span class="hljs-string">'Diana'</span>, <span class="hljs-literal">NULL</span>),
(<span class="hljs-number">5</span>, <span class="hljs-string">'Eve'</span>, <span class="hljs-number">40</span>);  <span class="hljs-comment">-- No matching department</span>

<span class="hljs-comment">-- Insert Departments</span>
<span class="hljs-keyword">INSERT</span> <span class="hljs-keyword">INTO</span> Departments (DeptID, DeptName) <span class="hljs-keyword">VALUES</span>
(<span class="hljs-number">10</span>, <span class="hljs-string">'HR'</span>),
(<span class="hljs-number">20</span>, <span class="hljs-string">'Engineering'</span>),
(<span class="hljs-number">30</span>, <span class="hljs-string">'Marketing'</span>),
(<span class="hljs-number">50</span>, <span class="hljs-string">'Sales'</span>); <span class="hljs-comment">-- No matching employee</span>

<span class="hljs-comment">-- ----------------------------------------</span>
<span class="hljs-comment">-- 3. INNER JOIN: Only matching rows</span>
<span class="hljs-comment">-- ----------------------------------------</span>

<span class="hljs-keyword">SELECT</span> 
    E.EmpID, E.EmpName, D.DeptName
<span class="hljs-keyword">FROM</span> 
    Employees E
<span class="hljs-keyword">INNER</span> <span class="hljs-keyword">JOIN</span> 
    Departments D <span class="hljs-keyword">ON</span> E.DeptID = D.DeptID;

<span class="hljs-comment">-- ✅ Shows only employees that belong to existing departments</span>

<span class="hljs-comment">-- ----------------------------------------</span>
<span class="hljs-comment">-- 4. LEFT JOIN: All employees, matched or not</span>
<span class="hljs-comment">-- ----------------------------------------</span>

<span class="hljs-keyword">SELECT</span> 
    E.EmpID, E.EmpName, D.DeptName
<span class="hljs-keyword">FROM</span> 
    Employees E
<span class="hljs-keyword">LEFT</span> <span class="hljs-keyword">JOIN</span> 
    Departments D <span class="hljs-keyword">ON</span> E.DeptID = D.DeptID;

<span class="hljs-comment">-- ✅ Shows all employees, including those without a department (NULLs for Dept)</span>

<span class="hljs-comment">-- ----------------------------------------</span>
<span class="hljs-comment">-- 5. RIGHT JOIN: All departments, matched or not</span>
<span class="hljs-comment">-- ----------------------------------------</span>

<span class="hljs-keyword">SELECT</span> 
    E.EmpName, D.DeptName
<span class="hljs-keyword">FROM</span> 
    Employees E
<span class="hljs-keyword">RIGHT</span> <span class="hljs-keyword">JOIN</span> 
    Departments D <span class="hljs-keyword">ON</span> E.DeptID = D.DeptID;

<span class="hljs-comment">-- ✅ Shows all departments, including those with no employees</span>

<span class="hljs-comment">-- ----------------------------------------</span>
<span class="hljs-comment">-- 6. FULL OUTER JOIN: All rows from both sides</span>
<span class="hljs-comment">-- ----------------------------------------</span>
<span class="hljs-comment">-- <span class="hljs-doctag">Note:</span> Not all SQL databases (like MySQL) support FULL OUTER JOIN natively.</span>
<span class="hljs-comment">-- You can simulate it using UNION</span>

<span class="hljs-keyword">SELECT</span> 
    E.EmpName, D.DeptName
<span class="hljs-keyword">FROM</span> 
    Employees E
<span class="hljs-keyword">LEFT</span> <span class="hljs-keyword">JOIN</span> 
    Departments D <span class="hljs-keyword">ON</span> E.DeptID = D.DeptID

<span class="hljs-keyword">UNION</span>

<span class="hljs-keyword">SELECT</span> 
    E.EmpName, D.DeptName
<span class="hljs-keyword">FROM</span> 
    Employees E
<span class="hljs-keyword">RIGHT</span> <span class="hljs-keyword">JOIN</span> 
    Departments D <span class="hljs-keyword">ON</span> E.DeptID = D.DeptID;

<span class="hljs-comment">-- ✅ Shows all combinations: matched and unmatched from both tables</span>

<span class="hljs-comment">-- ----------------------------------------</span>
<span class="hljs-comment">-- 7. CROSS JOIN: Cartesian product (every row with every other)</span>
<span class="hljs-comment">-- ----------------------------------------</span>

<span class="hljs-keyword">SELECT</span> 
    E.EmpName, D.DeptName
<span class="hljs-keyword">FROM</span> 
    Employees E
<span class="hljs-keyword">CROSS</span> <span class="hljs-keyword">JOIN</span> 
    Departments D;
</code></pre>
<p><strong>Employees Table</strong></p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>EmpID</td><td>EmpName</td><td>DeptID</td></tr>
</thead>
<tbody>
<tr>
<td>1</td><td>Alice</td><td>10</td></tr>
<tr>
<td>2</td><td>Bob</td><td>20</td></tr>
<tr>
<td>3</td><td>Charlie</td><td>30</td></tr>
<tr>
<td>4</td><td>Diana</td><td>NULL</td></tr>
<tr>
<td>5</td><td>Eve</td><td>40</td></tr>
</tbody>
</table>
</div><p><strong>Departments Table</strong></p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>DeptID</td><td>DeptName</td></tr>
</thead>
<tbody>
<tr>
<td>10</td><td>HR</td></tr>
<tr>
<td>20</td><td>Engineering</td></tr>
<tr>
<td>30</td><td>Marketing</td></tr>
<tr>
<td>50</td><td>Sales</td></tr>
</tbody>
</table>
</div><hr />
<h3 id="heading-inner-join"><mark>INNER JOIN:-</mark></h3>
<pre><code class="lang-sql"><span class="hljs-keyword">SELECT</span> E.EmpID, E.EmpName, D.DeptName
<span class="hljs-keyword">FROM</span> Employees E
<span class="hljs-keyword">INNER</span> <span class="hljs-keyword">JOIN</span> Departments D <span class="hljs-keyword">ON</span> E.DeptID = D.DeptID;
</code></pre>
<div class="hn-table">
<table>
<thead>
<tr>
<td>EmpID</td><td>EmpName</td><td>DeptName</td></tr>
</thead>
<tbody>
<tr>
<td>1</td><td>Alice</td><td>HR</td></tr>
<tr>
<td>2</td><td>Bob</td><td>Engineering</td></tr>
<tr>
<td>3</td><td>Charlie</td><td>Marketing</td></tr>
</tbody>
</table>
</div><h3 id="heading-left-join"><strong><mark>LEFT JOIN:-</mark></strong></h3>
<pre><code class="lang-sql"><span class="hljs-keyword">SELECT</span> E.EmpID, E.EmpName, D.DeptName
<span class="hljs-keyword">FROM</span> Employees E
<span class="hljs-keyword">LEFT</span> <span class="hljs-keyword">JOIN</span> Departments D <span class="hljs-keyword">ON</span> E.DeptID = D.DeptID;
</code></pre>
<div class="hn-table">
<table>
<thead>
<tr>
<td>EmpID</td><td>EmpName</td><td>DeptName</td></tr>
</thead>
<tbody>
<tr>
<td>1</td><td>Alice</td><td>HR</td></tr>
<tr>
<td>2</td><td>Bob</td><td>Engineering</td></tr>
<tr>
<td>3</td><td>Charlie</td><td>Marketing</td></tr>
<tr>
<td>4</td><td>Diana</td><td>NULL</td></tr>
<tr>
<td>5</td><td>Eve</td><td>NULL</td></tr>
</tbody>
</table>
</div><h3 id="heading-right-join"><mark>RIGHT JOIN:-</mark></h3>
<pre><code class="lang-sql"><span class="hljs-keyword">SELECT</span> E.EmpName, D.DeptName
<span class="hljs-keyword">FROM</span> Employees E
<span class="hljs-keyword">RIGHT</span> <span class="hljs-keyword">JOIN</span> Departments D <span class="hljs-keyword">ON</span> E.DeptID = D.DeptID;
</code></pre>
<div class="hn-table">
<table>
<thead>
<tr>
<td>EmpName</td><td>DeptName</td></tr>
</thead>
<tbody>
<tr>
<td>Alice</td><td>HR</td></tr>
<tr>
<td>Bob</td><td>Engineering</td></tr>
<tr>
<td>Charlie</td><td>Marketing</td></tr>
<tr>
<td>NULL</td><td>Sales</td></tr>
</tbody>
</table>
</div><h3 id="heading-full-outer-join-simulated-with-union"><mark>FULL OUTER JOIN (Simulated with UNION):-</mark></h3>
<pre><code class="lang-sql"><span class="hljs-keyword">SELECT</span> E.EmpName, D.DeptName
<span class="hljs-keyword">FROM</span> Employees E
<span class="hljs-keyword">LEFT</span> <span class="hljs-keyword">JOIN</span> Departments D <span class="hljs-keyword">ON</span> E.DeptID = D.DeptID
<span class="hljs-keyword">UNION</span>
<span class="hljs-keyword">SELECT</span> E.EmpName, D.DeptName
<span class="hljs-keyword">FROM</span> Employees E
<span class="hljs-keyword">RIGHT</span> <span class="hljs-keyword">JOIN</span> Departments D <span class="hljs-keyword">ON</span> E.DeptID = D.DeptID;
</code></pre>
<div class="hn-table">
<table>
<thead>
<tr>
<td>EmpName</td><td>DeptName</td></tr>
</thead>
<tbody>
<tr>
<td>Alice</td><td>HR</td></tr>
<tr>
<td>Bob</td><td>Engineering</td></tr>
<tr>
<td>Charlie</td><td>Marketing</td></tr>
<tr>
<td>Diana</td><td>NULL</td></tr>
<tr>
<td>Eve</td><td>NULL</td></tr>
<tr>
<td>NULL</td><td>Sales</td></tr>
</tbody>
</table>
</div><h3 id="heading-cross-join"><mark>CROSS JOIN:-</mark></h3>
<pre><code class="lang-sql"><span class="hljs-keyword">SELECT</span> E.EmpName, D.DeptName
<span class="hljs-keyword">FROM</span> Employees E
<span class="hljs-keyword">CROSS</span> <span class="hljs-keyword">JOIN</span> Departments D;
</code></pre>
<div class="hn-table">
<table>
<thead>
<tr>
<td>EmpName</td><td>DeptName</td></tr>
</thead>
<tbody>
<tr>
<td>Alice</td><td>HR</td></tr>
<tr>
<td>Alice</td><td>Engineering</td></tr>
<tr>
<td>Alice</td><td>Marketing</td></tr>
<tr>
<td>Alice</td><td>Sales</td></tr>
<tr>
<td>Bob</td><td>HR</td></tr>
<tr>
<td>Bob</td><td>Engineering</td></tr>
<tr>
<td>...</td><td>...</td></tr>
<tr>
<td>Eve</td><td>Sales</td></tr>
</tbody>
</table>
</div><hr />
<h3 id="heading-summary-table"><strong>Summary Table</strong></h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td><strong>JOIN Type</strong></td><td><strong>Description</strong></td></tr>
</thead>
<tbody>
<tr>
<td><code>INNER JOIN</code></td><td>Only matching rows from both tables</td></tr>
<tr>
<td><code>LEFT JOIN</code></td><td>All rows from left table + matching from right</td></tr>
<tr>
<td><code>RIGHT JOIN</code></td><td>All rows from right table + matching from left</td></tr>
</tbody>
</table>
</div><h3 id="heading-union-all">UNION ALL:-</h3>
<pre><code class="lang-sql"><span class="hljs-keyword">SELECT</span> E.EmpName, D.DeptName
<span class="hljs-keyword">FROM</span> Employees E
<span class="hljs-keyword">LEFT</span> <span class="hljs-keyword">JOIN</span> Departments D <span class="hljs-keyword">ON</span> E.DeptID = D.DeptID

<span class="hljs-keyword">UNION</span> <span class="hljs-keyword">ALL</span>

<span class="hljs-keyword">SELECT</span> E.EmpName, D.DeptName
<span class="hljs-keyword">FROM</span> Employees E
<span class="hljs-keyword">RIGHT</span> <span class="hljs-keyword">JOIN</span> Departments D <span class="hljs-keyword">ON</span> E.DeptID = D.DeptID
<span class="hljs-keyword">WHERE</span> E.DeptID <span class="hljs-keyword">IS</span> <span class="hljs-literal">NULL</span>; <span class="hljs-comment">-- Avoid double-counting matches</span>
</code></pre>
<div class="hn-table">
<table>
<thead>
<tr>
<td>EmpName</td><td>DeptName</td></tr>
</thead>
<tbody>
<tr>
<td>Alice</td><td>HR</td></tr>
<tr>
<td>Bob</td><td>Engineering</td></tr>
<tr>
<td>Charlie</td><td>Marketing</td></tr>
<tr>
<td>Diana</td><td>NULL</td></tr>
<tr>
<td>Eve</td><td>NULL</td></tr>
<tr>
<td>NULL</td><td>Sales</td></tr>
</tbody>
</table>
</div><blockquote>
<ul>
<li><p><code>UNION</code>: Removes duplicates between the two queries.</p>
</li>
<li><p><code>UNION ALL</code>: Includes all rows, including duplicates.</p>
</li>
</ul>
</blockquote>
<h3 id="heading-self-join"><strong><mark>Self JOIN:-</mark></strong></h3>
<pre><code class="lang-sql"><span class="hljs-comment">-- Create the table</span>
<span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> employees (
    <span class="hljs-keyword">id</span> <span class="hljs-built_in">INT</span> PRIMARY <span class="hljs-keyword">KEY</span>,
    <span class="hljs-keyword">name</span> <span class="hljs-built_in">VARCHAR</span>(<span class="hljs-number">100</span>),
    manager_id <span class="hljs-built_in">INT</span>
);

<span class="hljs-comment">-- Insert sample data</span>
<span class="hljs-keyword">INSERT</span> <span class="hljs-keyword">INTO</span> employees (<span class="hljs-keyword">id</span>, <span class="hljs-keyword">name</span>, manager_id) <span class="hljs-keyword">VALUES</span>
(<span class="hljs-number">1</span>, <span class="hljs-string">'Alice'</span>, <span class="hljs-literal">NULL</span>),
(<span class="hljs-number">2</span>, <span class="hljs-string">'Bob'</span>, <span class="hljs-number">1</span>),
(<span class="hljs-number">3</span>, <span class="hljs-string">'Charlie'</span>, <span class="hljs-number">1</span>),
(<span class="hljs-number">4</span>, <span class="hljs-string">'David'</span>, <span class="hljs-number">2</span>),
(<span class="hljs-number">5</span>, <span class="hljs-string">'Eve'</span>, <span class="hljs-number">2</span>);

<span class="hljs-comment">-- Self join: get employees and their manager's name</span>
<span class="hljs-keyword">SELECT</span>
    e.id <span class="hljs-keyword">AS</span> employee_id,
    e.name <span class="hljs-keyword">AS</span> employee_name,
    m.name <span class="hljs-keyword">AS</span> manager_name
<span class="hljs-keyword">FROM</span>
    employees e
<span class="hljs-keyword">LEFT</span> <span class="hljs-keyword">JOIN</span>
    employees m <span class="hljs-keyword">ON</span> e.manager_id = m.id;
</code></pre>
<div class="hn-table">
<table>
<thead>
<tr>
<td>employee_id</td><td>employee_name</td><td>manager_name</td></tr>
</thead>
<tbody>
<tr>
<td>1</td><td>Alice</td><td>NULL</td></tr>
<tr>
<td>2</td><td>Bob</td><td>Alice</td></tr>
<tr>
<td>3</td><td>Charlie</td><td>Alice</td></tr>
<tr>
<td>4</td><td>David</td><td>Bob</td></tr>
<tr>
<td>5</td><td>Eve</td><td>Bob</td></tr>
</tbody>
</table>
</div><blockquote>
<p><mark>Project1:-</mark></p>
</blockquote>
<pre><code class="lang-sql"><span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">DISTINCT</span> name_hos       <span class="hljs-comment">-- Get different hospital names  </span>
<span class="hljs-keyword">FROM</span> pre                       <span class="hljs-comment">-- From the table called 'pre'  </span>
<span class="hljs-keyword">WHERE</span> name_hos <span class="hljs-keyword">IS</span> <span class="hljs-keyword">NOT</span> <span class="hljs-literal">NULL</span>     <span class="hljs-comment">-- Only names that are not empty  </span>
  <span class="hljs-keyword">AND</span> <span class="hljs-keyword">TRIM</span>(name_hos) != <span class="hljs-string">''</span>     <span class="hljs-comment">-- And not just spaces  </span>
<span class="hljs-keyword">ORDER</span> <span class="hljs-keyword">BY</span> name_hos;             <span class="hljs-comment">-- Put the names in order  </span>
<span class="hljs-comment">-----------------------------------------------------------------------------------------------------</span>
<span class="hljs-comment">--SELECT p51.basic_diagnosis, COUNT(DISTINCT pre.pat_id) AS patient_count</span>
    <span class="hljs-comment">--FROM pre</span>
    <span class="hljs-comment">--JOIN demohealth.p51 AS p51 ON pre.preid = p51.preid</span>
    <span class="hljs-comment">--WHERE pre.name_hos = ?</span>
      <span class="hljs-comment">--AND (</span>
       <span class="hljs-comment">-- DATE(pre.entrydate) BETWEEN ? AND ?</span>
        <span class="hljs-comment">--OR DATE(pre.apptdate) BETWEEN ? AND ?</span>
     <span class="hljs-comment">-- )</span>
    <span class="hljs-comment">--GROUP BY p51.basic_diagnosis</span>
    <span class="hljs-comment">--ORDER BY patient_count DESC</span>
<span class="hljs-comment">----------------------------------------</span>
<span class="hljs-keyword">SELECT</span> p51.basic_diagnosis,               <span class="hljs-comment">-- Get the diagnosis name  </span>
       <span class="hljs-keyword">COUNT</span>(<span class="hljs-keyword">DISTINCT</span> pre.pat_id) <span class="hljs-keyword">AS</span> patient_count  <span class="hljs-comment">-- Count unique patients for each diagnosis  </span>
<span class="hljs-keyword">FROM</span> pre                                  <span class="hljs-comment">-- From the table named 'pre'  </span>
<span class="hljs-keyword">JOIN</span> demohealth.p51 <span class="hljs-keyword">AS</span> p51 <span class="hljs-keyword">ON</span> pre.preid = p51.preid  <span class="hljs-comment">-- Join with 'p51' table where preid matches  </span>
<span class="hljs-keyword">WHERE</span> pre.name_hos = <span class="hljs-string">'VBCR019'</span>            <span class="hljs-comment">-- Only for hospital named 'VBCR019'  </span>
  <span class="hljs-keyword">AND</span> (                                  
    <span class="hljs-built_in">DATE</span>(pre.entrydate) <span class="hljs-keyword">BETWEEN</span> <span class="hljs-string">'2013-01-01'</span> <span class="hljs-keyword">AND</span> <span class="hljs-string">'2024-12-31'</span>  <span class="hljs-comment">-- Dates between 2013 and 2024 for entry date  </span>
    <span class="hljs-keyword">OR</span> <span class="hljs-built_in">DATE</span>(pre.apptdate) <span class="hljs-keyword">BETWEEN</span> <span class="hljs-string">'2013-01-01'</span> <span class="hljs-keyword">AND</span> <span class="hljs-string">'2024-12-31'</span>  <span class="hljs-comment">-- Or dates between 2013 and 2024 for appointment date  </span>
  )  
<span class="hljs-keyword">GROUP</span> <span class="hljs-keyword">BY</span> p51.basic_diagnosis              <span class="hljs-comment">-- Group results by diagnosis  </span>
<span class="hljs-keyword">ORDER</span> <span class="hljs-keyword">BY</span> patient_count <span class="hljs-keyword">DESC</span>;              <span class="hljs-comment">-- Show diagnoses with most patients first  </span>
<span class="hljs-comment">-----------------------------------------------------------------------------------------------------</span>
<span class="hljs-comment">--SELECT pre.pat_id, p51.basic_diagnosis, p51.value, MIN(pre.preid) AS preid</span>
    <span class="hljs-comment">--FROM pre</span>
   <span class="hljs-comment">-- JOIN demohealth.p51 AS p51 ON pre.preid = p51.preid</span>
   <span class="hljs-comment">-- WHERE pre.name_hos = ?</span>
     <span class="hljs-comment">-- AND p51.basic_diagnosis = ?</span>
     <span class="hljs-comment">-- AND (</span>
       <span class="hljs-comment">-- DATE(pre.entrydate) BETWEEN ? AND ?</span>
       <span class="hljs-comment">-- OR DATE(pre.apptdate) BETWEEN ? AND ?</span>
      <span class="hljs-comment">--)</span>
   <span class="hljs-comment">-- GROUP BY pre.pat_id, p51.basic_diagnosis, p51.value</span>
   <span class="hljs-comment">-- ORDER BY MIN(pre.entrydate) DESC</span>
<span class="hljs-comment">----------------------------------------</span>
<span class="hljs-keyword">SELECT</span> pre.pat_id,                       <span class="hljs-comment">-- Patient ID  </span>
       p51.basic_diagnosis,              <span class="hljs-comment">-- Diagnosis name  </span>
       p51.value,                        <span class="hljs-comment">-- Related value for diagnosis  </span>
       <span class="hljs-keyword">MIN</span>(pre.preid) <span class="hljs-keyword">AS</span> preid           <span class="hljs-comment">-- Smallest preid for this patient and diagnosis  </span>
<span class="hljs-keyword">FROM</span> pre  
<span class="hljs-keyword">JOIN</span> demohealth.p51 <span class="hljs-keyword">AS</span> p51 <span class="hljs-keyword">ON</span> pre.preid = p51.preid  <span class="hljs-comment">-- Join on preid  </span>
<span class="hljs-keyword">WHERE</span> pre.name_hos = <span class="hljs-string">'VBCR019'</span>      <span class="hljs-comment">-- Hospital name to filter  </span>
  <span class="hljs-keyword">AND</span> p51.basic_diagnosis = <span class="hljs-string">'DM'</span>        <span class="hljs-comment">-- Diagnosis to filter  </span>
  <span class="hljs-keyword">AND</span> (                                  
    <span class="hljs-built_in">DATE</span>(pre.entrydate) <span class="hljs-keyword">BETWEEN</span> <span class="hljs-string">'2020-01-01'</span> <span class="hljs-keyword">AND</span> <span class="hljs-string">'2024-12-31'</span>  <span class="hljs-comment">-- Entry dates between Jan 1, 2020 and Dec 31, 2024  </span>
    <span class="hljs-keyword">OR</span> <span class="hljs-built_in">DATE</span>(pre.apptdate) <span class="hljs-keyword">BETWEEN</span> <span class="hljs-string">'2020-01-01'</span> <span class="hljs-keyword">AND</span> <span class="hljs-string">'2024-12-31'</span> <span class="hljs-comment">-- Or appointment dates in the same range  </span>
  )  
<span class="hljs-keyword">GROUP</span> <span class="hljs-keyword">BY</span> pre.pat_id, p51.basic_diagnosis, p51.value  <span class="hljs-comment">-- Group by patient, diagnosis, value  </span>
<span class="hljs-keyword">ORDER</span> <span class="hljs-keyword">BY</span> <span class="hljs-keyword">MIN</span>(pre.entrydate) <span class="hljs-keyword">DESC</span>;        <span class="hljs-comment">-- Sort by earliest entry date, newest first  </span>
<span class="hljs-comment">-----------------------------------------------------------------------------------------------------</span>
</code></pre>
<blockquote>
<p><mark>Project2:-</mark></p>
</blockquote>
<pre><code class="lang-sql"><span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">DISTINCT</span> name_hos              <span class="hljs-comment">-- Get only different (unique) hospital names  </span>
<span class="hljs-keyword">FROM</span> healthcaredb.pre                 <span class="hljs-comment">-- From the 'pre' table in the 'healthcaredb' database  </span>
<span class="hljs-keyword">ORDER</span> <span class="hljs-keyword">BY</span> name_hos;                    <span class="hljs-comment">-- Sort the hospital names in alphabetical order  </span>
<span class="hljs-comment">-----------------------------------------------------------------------------------------------------------------------</span>
<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">DISTINCT</span> basic_diagnosis              <span class="hljs-comment">-- Get only unique diagnosis names  </span>
<span class="hljs-keyword">FROM</span> demohealth.p51                          <span class="hljs-comment">-- From the 'p51' table in the 'demohealth' database  </span>
<span class="hljs-keyword">ORDER</span> <span class="hljs-keyword">BY</span> basic_diagnosis;                    <span class="hljs-comment">-- Sort the diagnosis names alphabetically  </span>
<span class="hljs-comment">----------------------------------------------------------------------------------------------------------------------</span>
<span class="hljs-comment">-----------------------------------------------------------------------------------------------------------------------------------------------------</span>

 <span class="hljs-comment">--SELECT DISTINCT pr.preid</span>
   <span class="hljs-comment">-- FROM healthcaredb.pre pr</span>
    <span class="hljs-comment">--JOIN demohealth.p51 p ON pr.preid = p.preid</span>
    <span class="hljs-comment">--WHERE TRIM(UPPER(p.basic_diagnosis)) = TRIM(UPPER(?))</span>
      <span class="hljs-comment">--AND TRIM(UPPER(pr.name_hos)) = TRIM(UPPER(?))</span>
      <span class="hljs-comment">--AND pr.entrydate BETWEEN ? AND ?</span>
<span class="hljs-comment">-----------------------------------------------</span>
<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">DISTINCT</span> pr.preid                            <span class="hljs-comment">-- Get unique preid values</span>
<span class="hljs-keyword">FROM</span> healthcaredb.pre pr                            <span class="hljs-comment">-- From the 'pre' table</span>
<span class="hljs-keyword">JOIN</span> demohealth.p51 p <span class="hljs-keyword">ON</span> pr.preid = p.preid         <span class="hljs-comment">-- Join with 'p51' table on preid</span>
<span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">TRIM</span>(<span class="hljs-keyword">UPPER</span>(p.basic_diagnosis)) = <span class="hljs-keyword">TRIM</span>(<span class="hljs-keyword">UPPER</span>(<span class="hljs-string">'DM'</span>))  <span class="hljs-comment">-- Filter diagnosis (e.g., 'Diabetes')</span>
  <span class="hljs-keyword">AND</span> <span class="hljs-keyword">TRIM</span>(<span class="hljs-keyword">UPPER</span>(pr.name_hos)) = <span class="hljs-keyword">TRIM</span>(<span class="hljs-keyword">UPPER</span>(<span class="hljs-string">'VBCR019'</span>))   <span class="hljs-comment">-- Filter hospital name (e.g., 'City Hospital')</span>
  <span class="hljs-keyword">AND</span> pr.entrydate <span class="hljs-keyword">BETWEEN</span> <span class="hljs-string">'2016-03-15'</span> <span class="hljs-keyword">AND</span> <span class="hljs-string">'2024-11-30'</span>;       <span class="hljs-comment">-- Random date range between 2013 and 2024</span>
<span class="hljs-comment">----------------------------------------------------------------------------------------------------------------------</span>
<span class="hljs-comment">-----------------------------------------------------------------------------------------------------------------------------------------------------</span>

<span class="hljs-comment">--SELECT DISTINCT basic_diagnosis AS disease</span>
    <span class="hljs-comment">--FROM demohealth.p51</span>
    <span class="hljs-comment">--WHERE preid = ?</span>

<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">DISTINCT</span> basic_diagnosis <span class="hljs-keyword">AS</span> disease
<span class="hljs-keyword">FROM</span> demohealth.p51
<span class="hljs-keyword">WHERE</span> preid = <span class="hljs-number">1713347150718</span>;
<span class="hljs-comment">-----------------------------------------------------------------------------------------------------------------------------------------------------</span>
<span class="hljs-comment">-----------------------------------------------------------------------------------------------------------------------------------------------------</span>

<span class="hljs-comment">--SELECT DISTINCT pr.preid</span>
    <span class="hljs-comment">--FROM healthcaredb.pre pr</span>
    <span class="hljs-comment">--JOIN demohealth.p51 p ON pr.preid = p.preid</span>
    <span class="hljs-comment">--WHERE TRIM(UPPER(p.basic_diagnosis)) = TRIM(UPPER(?))</span>
     <span class="hljs-comment">-- AND TRIM(UPPER(pr.name_hos)) = TRIM(UPPER(?))</span>
     <span class="hljs-comment">-- AND pr.entrydate BETWEEN ? AND ?</span>
<span class="hljs-comment">----------------------------------------------------</span>

<span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">DISTINCT</span> pr.preid                     <span class="hljs-comment">-- Select unique preid values (no duplicates)</span>
<span class="hljs-keyword">FROM</span> healthcaredb.pre pr                     <span class="hljs-comment">-- From the 'pre' table in 'healthcaredb' (alias pr)</span>
<span class="hljs-keyword">JOIN</span> demohealth.p51 p <span class="hljs-keyword">ON</span> pr.preid = p.preid  <span class="hljs-comment">-- Join with 'p51' table on matching preid</span>
<span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">TRIM</span>(<span class="hljs-keyword">UPPER</span>(p.basic_diagnosis)) = <span class="hljs-keyword">TRIM</span>(<span class="hljs-keyword">UPPER</span>(<span class="hljs-string">'CMD'</span>))  <span class="hljs-comment">-- Filter by diagnosis 'Diabetes' (case-insensitive, trimmed)</span>
  <span class="hljs-keyword">AND</span> <span class="hljs-keyword">TRIM</span>(<span class="hljs-keyword">UPPER</span>(pr.name_hos)) = <span class="hljs-keyword">TRIM</span>(<span class="hljs-keyword">UPPER</span>(<span class="hljs-string">'VBCR019'</span>))   <span class="hljs-comment">-- Filter by hospital name 'City Hospital' (case-insensitive, trimmed)</span>
  <span class="hljs-keyword">AND</span> pr.entrydate <span class="hljs-keyword">BETWEEN</span> <span class="hljs-string">'2015-01-01'</span> <span class="hljs-keyword">AND</span> <span class="hljs-string">'2024-12-31'</span>;        <span class="hljs-comment">-- Filter records with entrydate between Jan 1, 2015 and Dec 31, 2023</span>
<span class="hljs-comment">----------------------------------------------------------------------------------------------------------------------------------------------------</span>
<span class="hljs-comment">-----------------------------------------------------------------------------------------------------------------------------------------------------</span>
<span class="hljs-comment">--SELECT basic_diagnosis AS disease, COUNT(DISTINCT preid) AS count</span>
      <span class="hljs-comment">--FROM demohealth.p51</span>
      <span class="hljs-comment">--WHERE preid IN (${placeholders})</span>
        <span class="hljs-comment">--AND TRIM(UPPER(basic_diagnosis)) != TRIM(UPPER(?))</span>
        <span class="hljs-comment">--AND TRIM(UPPER(basic_diagnosis)) != 'OTHERS'</span>
      <span class="hljs-comment">--GROUP BY basic_diagnosis</span>
      <span class="hljs-comment">--ORDER BY count DESC</span>
      <span class="hljs-comment">--LIMIT ?-</span>
<span class="hljs-comment">----------------------------------------</span>
<span class="hljs-keyword">SELECT</span> basic_diagnosis <span class="hljs-keyword">AS</span> disease,                <span class="hljs-comment">-- Rename 'basic_diagnosis' column as 'disease'</span>
       <span class="hljs-keyword">COUNT</span>(<span class="hljs-keyword">DISTINCT</span> preid) <span class="hljs-keyword">AS</span> <span class="hljs-keyword">count</span>             <span class="hljs-comment">-- Count how many unique 'preid' values for each diagnosis</span>
<span class="hljs-keyword">FROM</span> demohealth.p51                               <span class="hljs-comment">-- Use the 'p51' table from 'demohealth' database</span>
<span class="hljs-keyword">WHERE</span> preid <span class="hljs-keyword">IN</span> (<span class="hljs-number">1001</span>, <span class="hljs-number">1002</span>, <span class="hljs-number">1003</span>, <span class="hljs-number">1004</span>)           <span class="hljs-comment">-- Filter rows where 'preid' is in this list (replace with real IDs)</span>
  <span class="hljs-keyword">AND</span> <span class="hljs-keyword">TRIM</span>(<span class="hljs-keyword">UPPER</span>(basic_diagnosis)) != <span class="hljs-keyword">TRIM</span>(<span class="hljs-keyword">UPPER</span>(<span class="hljs-string">'Flu'</span>))  <span class="hljs-comment">-- Exclude the diagnosis 'Flu' (case-insensitive)</span>
  <span class="hljs-keyword">AND</span> <span class="hljs-keyword">TRIM</span>(<span class="hljs-keyword">UPPER</span>(basic_diagnosis)) != <span class="hljs-string">'OTHERS'</span>           <span class="hljs-comment">-- Also exclude the diagnosis labeled as 'OTHERS'</span>
<span class="hljs-keyword">GROUP</span> <span class="hljs-keyword">BY</span> basic_diagnosis                          <span class="hljs-comment">-- Group results by diagnosis</span>
<span class="hljs-keyword">ORDER</span> <span class="hljs-keyword">BY</span> <span class="hljs-keyword">count</span> <span class="hljs-keyword">DESC</span>                               <span class="hljs-comment">-- Show diagnoses with the most patients first</span>
<span class="hljs-keyword">LIMIT</span> <span class="hljs-number">5</span>;                                          <span class="hljs-comment">-- Show only the top 5 results</span>
<span class="hljs-comment">----------------------------------------------------------------------------------------------------------------------------------------------------</span>
<span class="hljs-comment">-----------------------------------------------------------------------------------------------------------------------------------------------------</span>
</code></pre>
]]></content:encoded></item></channel></rss>