<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Munyalo Meshack</title>
    <description>The latest articles on DEV Community by Munyalo Meshack (@itsmunyalo).</description>
    <link>https://dev.to/itsmunyalo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3716473%2F1a85fbef-80e0-4cb7-bb6d-7b571787df44.png</url>
      <title>DEV Community: Munyalo Meshack</title>
      <link>https://dev.to/itsmunyalo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/itsmunyalo"/>
    <language>en</language>
    <item>
      <title>Understanding SQL Joins with Practical Examples (Beginner Friendly Guide)</title>
      <dc:creator>Munyalo Meshack</dc:creator>
      <pubDate>Sun, 08 Mar 2026 04:54:16 +0000</pubDate>
      <link>https://dev.to/itsmunyalo/understanding-sql-joins-with-practical-examples-beginner-friendly-guide-1iee</link>
      <guid>https://dev.to/itsmunyalo/understanding-sql-joins-with-practical-examples-beginner-friendly-guide-1iee</guid>
      <description>&lt;p&gt;In real world databases, data is rarely stored in a single spreadsheet. Instead it is organized across multiple related tables. SQL provides powerful tools such as &lt;strong&gt;joins&lt;/strong&gt; to combine and analyze this data efficiently.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is SQL Joins.
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;SQL joins&lt;/strong&gt; are used to combine data from two or more tables based on a related column between them. In most relational databases, information is stored across multiple tables and joins allow us to bring this data together for analysis.&lt;/p&gt;

&lt;p&gt;SQL joins are useful in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Matching records using common columns such as &lt;em&gt;IDs&lt;/em&gt; or &lt;em&gt;keys&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Create meaningful results from separate tables&lt;/li&gt;
&lt;li&gt;Retrieve related data stored across multiple tables&lt;/li&gt;
&lt;li&gt;Improve data analysis by combining related information&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By using joins allows analysts to work with connected datasets instead of isolated tables, making it easier to uncover insights and answer business questions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Types of SQL Joins
&lt;/h3&gt;

&lt;p&gt;SQL joins are categorized into different types based on how data in the different tables are matched and combined.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inner join&lt;/li&gt;
&lt;li&gt;Left join (left outer join)&lt;/li&gt;
&lt;li&gt;Right join (Right outer join)&lt;/li&gt;
&lt;li&gt;Full outer join&lt;/li&gt;
&lt;li&gt;Cross join&lt;/li&gt;
&lt;li&gt;Self join&lt;/li&gt;
&lt;li&gt;Natural join&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  INNER JOIN
&lt;/h4&gt;

&lt;p&gt;An &lt;strong&gt;INNER JOIN&lt;/strong&gt; is used to return only the rows that have matching values in both tables being joined. If a record exists in one table but does not a corresponding match in the other table, it will not appear in the result.&lt;/p&gt;

&lt;p&gt;In simple terms, &lt;strong&gt;&lt;em&gt;INNER JOIN shows only data that exists in both tables.&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
This works by comparing a common column &lt;em&gt;(usually an ID or Key)&lt;/em&gt; between the two tables and returning the rows where the values match.&lt;/p&gt;

&lt;p&gt;Below we have the general syntax for an &lt;code&gt;INNER JOIN&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;syntax:
SELECT table_1.column_1, table_2.column_2, ...
FROM table_1 INNER JOIN table_2
ON table_1.matching_column = table_2.matching_column;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example:&lt;br&gt;
First we view the contents of the tables:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;select * from employees e ;

select * from departments d ;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now join the &lt;code&gt;employees&lt;/code&gt; table with the &lt;code&gt;departments&lt;/code&gt; table.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;--&amp;gt; Join the employees table to department table

SELECT employees.name, departments.department_name 
FROM employees INNER JOIN departments 
ON employees.employee_id = departments.department_id ;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, we use the &lt;strong&gt;department_id&lt;/strong&gt; column, which acts as a &lt;strong&gt;unique identifier (Primary Key/Foreign Key relationship)&lt;/strong&gt;, to connect the two tables.&lt;/p&gt;

&lt;p&gt;The result will return employees along with their department names, but &lt;strong&gt;only for employees whose &lt;code&gt;department_id&lt;/code&gt; exists in both tables&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;INNER JOIN focuses on the &lt;strong&gt;intersection of two tables&lt;/strong&gt;, meaning only the records that match in both tables are included in the result set.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  LEFT JOIN (LEFT OUTER JOIN)
&lt;/h4&gt;

&lt;p&gt;A &lt;strong&gt;&lt;code&gt;LEFT JOIN&lt;/code&gt;&lt;/strong&gt;, also called a &lt;strong&gt;&lt;code&gt;LEFT OUTER JOIN&lt;/code&gt;&lt;/strong&gt;, returns &lt;strong&gt;all rows from the left table&lt;/strong&gt; and the &lt;strong&gt;matching rows from the right table&lt;/strong&gt;. If there is no matching record in the right table, the results will still include the row from the left table, but the columns from the right table will contain &lt;strong&gt;&lt;code&gt;NULL values&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In simple terms, &lt;strong&gt;LEFT JOIN keeps everything from the left table and only the matching data from the right table&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Unlike &lt;code&gt;INNER JOIN&lt;/code&gt;, which only returns matching rows from both tables, &lt;strong&gt;LEFT JOIN keeps all rows from the left table even if no match exists in the right table&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here is the general syntax from a LEFT JOIN.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT table_1.column_1, table_2.column_2, ...
FROM table_1
LEFT JOIN table_2
ON table_1.matching_column = table_2.matching_column;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example&lt;br&gt;
First, we view the contents of the tables:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT * FROM employees;

SELECT * FROM departments;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we perform the &lt;code&gt;LEFT JOIN&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;--&amp;gt; LEFT JOIN the employees table to departments table

SELECT employees.name, departments.department_name, employees.salary
FROM employees
LEFT JOIN departments
ON employees.department_id  = departments.department_id;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Below is a snippet image of how the query in our example will turn out;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F811he2ztcqko70epgw4v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F811he2ztcqko70epgw4v.png" alt=" " width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explanation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The query returns &lt;strong&gt;all employees&lt;/strong&gt; from the &lt;code&gt;employees&lt;/code&gt; table.&lt;/li&gt;
&lt;li&gt;For the employees with a matching &lt;code&gt;department_id&lt;/code&gt; in the &lt;code&gt;department&lt;/code&gt; table, the &lt;strong&gt;department name is displayed&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;For employees with &lt;strong&gt;no matching department&lt;/strong&gt;, the &lt;code&gt;department_name&lt;/code&gt; column will show &lt;strong&gt;&lt;code&gt;NULL&lt;/code&gt;&lt;/strong&gt; as of the case with &lt;em&gt;Eve in the example above.&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;A &lt;strong&gt;LEFT JOIN returns all records from the left table and the matching records from the right table. If no match is found, NULL values are returned for columns from the right table&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  RIGHT JOIN (RIGHT OUTER JOIN)
&lt;/h4&gt;

&lt;p&gt;A &lt;code&gt;RIGHT JOIN&lt;/code&gt;, also called a &lt;code&gt;RIGHT OUTER JOIN&lt;/code&gt;, returns &lt;strong&gt;all rows from the right table&lt;/strong&gt; and the &lt;strong&gt;matching rows from the left table&lt;/strong&gt;. If there is no matching record in the left table, the result will still include the row from the right table, but columns from the left table will contain &lt;code&gt;NULL&lt;/code&gt; &lt;strong&gt;values&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In simple terms, &lt;strong&gt;RIGHT JOIN keeps everything from the right table and only the matching data from the left table&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here is the general syntax from a &lt;code&gt;RIGHT JOIN&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT table_1.column_1, table_2.column_2, ...
FROM table_1
RIGHT JOIN table_2
ON table_1.mathing_column = table_2.matching_column;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example&lt;br&gt;
First, we view the contents of the tables:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT * FROM employees;

SELECT * FROM departments;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we perform the &lt;code&gt;RIGHT JOIN&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;--&amp;gt; RIGHT JOIN the employees table to departments table

SELECT employees.name, departments.department_name, employees.salary
FROM employees
RIGHT JOIN departments
ON employees.department_id = departments.department_id ;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Below we have an image showing how our query turns out.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12so65qssqjc2p5l2bru.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12so65qssqjc2p5l2bru.png" alt=" " width="800" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explanation&lt;/strong&gt;&lt;br&gt;
The query returns &lt;strong&gt;all departments&lt;/strong&gt; from the &lt;code&gt;departments&lt;/code&gt; table because it is the &lt;strong&gt;right table&lt;/strong&gt; in the join.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If an employee belongs to a department, the &lt;strong&gt;employee name and salary will be displayed&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;If a department has &lt;strong&gt;no employee assigned&lt;/strong&gt;, the &lt;strong&gt;employee columns will contain&lt;/strong&gt; &lt;code&gt;NULL&lt;/code&gt; &lt;strong&gt;values&lt;/strong&gt; &lt;em&gt;as in the above example&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;A RIGHT JOIN returns all records from the right table and the matching records from the left table. If no match is found, &lt;code&gt;NULL&lt;/code&gt; values are returned for columns from the left table&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;
  
  
  FULL OUTER JOIN
&lt;/h4&gt;

&lt;p&gt;A &lt;code&gt;FULL OUTER JOIN&lt;/code&gt; returns &lt;strong&gt;all rows from both tables&lt;/strong&gt;, combining the results of a &lt;code&gt;LEFT JOIN&lt;/code&gt; and a &lt;code&gt;RIGHT JOIN&lt;/code&gt;. If arow from one table does not have a matching row in the other table, the missing side will contain &lt;code&gt;NULL&lt;/code&gt; &lt;strong&gt;values&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In simple terms, &lt;strong&gt;FULL OUTER JOIN keeps everything from both tables and fills in NULL where there is no match&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here is a general syntax for a &lt;code&gt;FULL OUTER JOIN&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT table_1.column_1, table_2.column_2, ...
FROM table_1
FULL OUTER JOIN table_2
ON table_1.matching_column = table_2.matching_column;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;br&gt;
We can view the contents in our tables &lt;em&gt;(optional)&lt;/em&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT * FROM employees;

SELECT * FROM departments;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we can perform the &lt;code&gt;FULL OUTER JOIN&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;--&amp;gt; FULL OUTER JOIN the employees table to departments table

SELECT employees.name, departments.department_name, employees.salary
FROM employees
FULL OUTER JOIN departments
ON employees.department_id = departments.department_id;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Below we have an image showing our query's output.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzkgbwlupdcretr1okoie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzkgbwlupdcretr1okoie.png" alt=" " width="759" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explanation&lt;/strong&gt;&lt;br&gt;
The query  returns &lt;strong&gt;all records from both the&lt;/strong&gt; &lt;code&gt;employees&lt;/code&gt; and &lt;code&gt;departments&lt;/code&gt; &lt;strong&gt;tables&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If an &lt;strong&gt;employee belongs to a department&lt;/strong&gt;, the employee's information and department name are displayed.&lt;/li&gt;
&lt;li&gt;If an &lt;strong&gt;employee has no matching department&lt;/strong&gt;, the &lt;code&gt;department_name&lt;/code&gt; column will show &lt;code&gt;NULL&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If a &lt;strong&gt;department has no employees assigned&lt;/strong&gt;, the employee related columns(&lt;code&gt;name&lt;/code&gt;, &lt;code&gt;salary&lt;/code&gt;) will show &lt;code&gt;NULL&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In summary, the result contains three types of rows:&lt;br&gt;
&lt;strong&gt;Matching rows&lt;/strong&gt; from both tables&lt;br&gt;
&lt;strong&gt;Employees without departments&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Departments without employees&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;A FULL OUTER JOIN returns records from both tables. When there is no match between the tables, the result set fills the missing side with&lt;/em&gt; &lt;code&gt;NULL&lt;/code&gt; &lt;em&gt;values&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;
  
  
  CROSS JOIN
&lt;/h4&gt;

&lt;p&gt;A &lt;code&gt;CROSS JOIN&lt;/code&gt; returns the &lt;strong&gt;Cartesian product&lt;/strong&gt; of two tables. This means that &lt;strong&gt;each row from first table is combined with every row from the second table&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cartesian product&lt;/strong&gt; is the result of ** combining every row from one table with every row from another table**.&lt;/p&gt;

&lt;p&gt;So &lt;code&gt;CROSS JOIN&lt;/code&gt; takes &lt;strong&gt;each row in the first table&lt;/strong&gt; and &lt;strong&gt;pair it with every row from the second table&lt;/strong&gt;, producing &lt;strong&gt;all possible combinations of rows&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The general syntax of &lt;code&gt;CROSS JOIN&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT table_1.column_1, table_2.column_2, ...
FROM table_1
CROSS JOIN table_2;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, unlike other joins, &lt;code&gt;CROSS JOIN&lt;/code&gt; &lt;strong&gt;does not require a matching condition&lt;/strong&gt; &lt;code&gt;ON&lt;/code&gt; &lt;strong&gt;clause&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We can view the contents of the tables (optional):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT * FROM employees;
SELECT * FROM departments;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We can now perform the &lt;code&gt;CROSS JOIN&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT employees.name, departments.department_name
FROM employees
CROSS JOIN departments;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Below we have two images, the first one is the &lt;code&gt;CROSS JOIN&lt;/code&gt; query and the second one is the results we get after running the query.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs97jqs61qt4m5u8xfz9j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs97jqs61qt4m5u8xfz9j.png" alt="CROSS JOIN Query" width="800" height="87"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxm3k7efpwrqkwvpj4qi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxm3k7efpwrqkwvpj4qi.png" alt="CROSS JOIN Result" width="479" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explanation&lt;/strong&gt;&lt;br&gt;
In this query, &lt;strong&gt;every employee is combined with every department&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example, if the &lt;code&gt;employees&lt;/code&gt; table has &lt;strong&gt;3 rows&lt;/strong&gt; and the &lt;code&gt;departments&lt;/code&gt; table has &lt;strong&gt;4 rows&lt;/strong&gt;, the result will contain:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;3 x 4 = 12 rows&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;So, each employee will appear &lt;strong&gt;once for every department&lt;/strong&gt; as we have seen in the query result image 2 above.&lt;br&gt;
This happens because &lt;code&gt;CROSS JOIN&lt;/code&gt; &lt;strong&gt;creates all possible combinations between the two tables&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;A `CROSS JOIN returns the &lt;strong&gt;Cartesian product&lt;/strong&gt; of two tables, meaning every row from the first table is combined with every row from the second table&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  NATURAL JOIN
&lt;/h3&gt;

&lt;p&gt;A &lt;code&gt;NATURAL JOIN&lt;/code&gt; is a type of SQL join that automatically joins two tables based on &lt;strong&gt;column with the same name and compatible data types&lt;/strong&gt; in both tables.&lt;/p&gt;

&lt;p&gt;Unlike other joins, you &lt;strong&gt;do not need to explicitly specify the join condition using an&lt;/strong&gt; &lt;code&gt;ON&lt;/code&gt; &lt;strong&gt;clause&lt;/strong&gt;. The database automatically detects the common columns and uses them to perform the join.&lt;/p&gt;

&lt;p&gt;In simple terms, `NATURAL JOIN &lt;strong&gt;matches rows from two tables using columns that share the same name&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;NATURAL JOIN&lt;/code&gt; general syntax is;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT column_1, column_2, ...
FROM table_1 
NATURAL JOIN table_2;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example&lt;br&gt;
In our two tables &lt;code&gt;employees&lt;/code&gt; and &lt;code&gt;departments&lt;/code&gt; we have a common column &lt;code&gt;department_id&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Image for &lt;code&gt;employees&lt;/code&gt; table;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F39rjq2n8ozo16d0v4off.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F39rjq2n8ozo16d0v4off.png" alt=" " width="731" height="204"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Image for &lt;code&gt;departments&lt;/code&gt; table;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8m0uzcvc1gyjwwyafqhg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8m0uzcvc1gyjwwyafqhg.png" alt=" " width="666" height="202"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We perform &lt;code&gt;NATURAL JOIN&lt;/code&gt; to our two tables&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT name, department_name
FROM employees 
NATURAL JOIN departments;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Below is an image showing the results of our query&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fksfa91sk35sf4lv6bf3v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fksfa91sk35sf4lv6bf3v.png" alt=" " width="728" height="317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explanation&lt;/strong&gt;&lt;br&gt;
Both tables contain the column &lt;code&gt;department_id&lt;/code&gt;, which has the same name and compatible data type.&lt;br&gt;
When the &lt;code&gt;NATURAL JOIN&lt;/code&gt; is executed, SQL automatically uses this column to match rows between the two tables.&lt;br&gt;
The result will include only rows where the &lt;code&gt;department_id&lt;/code&gt; exists in &lt;strong&gt;both tables&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Eve&lt;/strong&gt; is not included because she has no &lt;code&gt;department_id&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Finance&lt;/strong&gt; department is not included because no employee belongs to it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;A &lt;code&gt;NATURAL JOIN&lt;/code&gt; automatically joins tables using columns with the same name in both tables and returns only matching rows&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;
  
  
  SELF JOIN
&lt;/h4&gt;

&lt;p&gt;A &lt;code&gt;SELF JOIN&lt;/code&gt; is a type of join where &lt;strong&gt;a table is joined with itself&lt;/strong&gt;. This is useful when you want to compare or relate rows within the same table.&lt;br&gt;
In self join, the same table is treated as &lt;strong&gt;two separate tables&lt;/strong&gt; by using &lt;strong&gt;table aliases&lt;/strong&gt;, allowing you to compare records within that table.&lt;/p&gt;

&lt;p&gt;In simple terms, &lt;strong&gt;a &lt;code&gt;SELF JOIN&lt;/code&gt; allows rows in a table to be related to other rows in the same table&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The general syntax of &lt;code&gt;SELF JOIN&lt;/code&gt;;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT a.column_name, b.column_name
FROM table_name a
JOIN table_name b
ON a.common_column = b.common_column;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this case, &lt;code&gt;a&lt;/code&gt; and &lt;code&gt;b&lt;/code&gt; are &lt;strong&gt;aliases&lt;/strong&gt; representing two instances of the same table.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
Let us consider an &lt;code&gt;employees&lt;/code&gt; table where each employee may have a manager. The manager is also listed in the same table.&lt;/p&gt;

&lt;p&gt;To find each employee and their manager, we can use a &lt;code&gt;SELF JOIN&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT  
    e.name AS employee,
    m.name AS manager
FROM employees e 
LEFT JOIN employees m
ON e.manager_id = m.manager_id ;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Below is an image to show the above query and the output.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F95w0n0bbrdrjdak08wi6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F95w0n0bbrdrjdak08wi6.png" alt=" " width="800" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explanation&lt;/strong&gt;&lt;br&gt;
In the query;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;employees&lt;/code&gt; table is referenced &lt;strong&gt;twice&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;e&lt;/code&gt; represents the &lt;strong&gt;employee&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;m&lt;/code&gt; represents the &lt;strong&gt;manager&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The join condition:&lt;br&gt;
&lt;code&gt;e.manager_id = m.employee_id&lt;/code&gt;&lt;br&gt;
matches each employee with their corresponding manger.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Alice&lt;/strong&gt; and &lt;strong&gt;Diana&lt;/strong&gt; have no manager, so the value is &lt;strong&gt;NULL&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Other employees are matched with their respective managers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;A `SELF JOIN &lt;strong&gt;joins a table with itself&lt;/strong&gt;, allowing relationships between rows within the same table to be analyzed.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Common use Cases for a SELF JOIN&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;SELF JOIN&lt;/code&gt; are useful when working with &lt;strong&gt;hierarchical or relational data&lt;/strong&gt;,such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Employees and their managers&lt;/li&gt;
&lt;li&gt;Organizational structures&lt;/li&gt;
&lt;li&gt;Parent child relationships&lt;/li&gt;
&lt;li&gt;Comparing rows within the same dataset&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Conclusion
&lt;/h4&gt;

&lt;p&gt;SQL joins are essential for working with relational databases because data is usually stored across multiple related tables. By using different types of joins, we can combine and analyze this data effectively.&lt;/p&gt;

&lt;p&gt;In this article we covered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;INNER JOIN&lt;/li&gt;
&lt;li&gt;LEFT JOIN&lt;/li&gt;
&lt;li&gt;RIGHT JOIN&lt;/li&gt;
&lt;li&gt;FULL OUTER JOIN&lt;/li&gt;
&lt;li&gt;CROSS JOIN&lt;/li&gt;
&lt;li&gt;NATURAL JOIN&lt;/li&gt;
&lt;li&gt;SELF JOIN&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each join type serves a different purpose depending on how the data should be matched and returned.&lt;/p&gt;

&lt;p&gt;Understanding SQL joins is a foundational skill for anyone working with databases, data analysis, backend development, or data engineering.&lt;/p&gt;

</description>
      <category>sql</category>
      <category>database</category>
      <category>datascience</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Getting Started with Data Analysis Using Microsoft Excel (Beginner’s Guide)</title>
      <dc:creator>Munyalo Meshack</dc:creator>
      <pubDate>Thu, 12 Feb 2026 09:46:33 +0000</pubDate>
      <link>https://dev.to/itsmunyalo/getting-started-with-data-analysis-using-microsoft-excel-beginners-guide-301a</link>
      <guid>https://dev.to/itsmunyalo/getting-started-with-data-analysis-using-microsoft-excel-beginners-guide-301a</guid>
      <description>&lt;p&gt;You happen to have a spreadsheet full of sales data, just rows and columns. You do not need SQL or Python to start analyzing data. In this article we are going to use Microsoft Excel to perform data analysis step by step.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Data Analysis.
&lt;/h2&gt;

&lt;p&gt;This is the process of inspecting, cleaning, transforming, and modeling data with the goal of discovering useful information, informing conclusions and supporting decision making.&lt;br&gt;
In simple terms, data analysis helps us answer questions like:&lt;br&gt;
&lt;em&gt;Which product sells the most?&lt;br&gt;
What is the average rating?&lt;br&gt;
Are discounts increasing sales?&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Why use Excel for Data Analysis?
&lt;/h2&gt;

&lt;p&gt;For years Excel has remained a data powerhouse when it comes to data analysis. Even in an era where we have popular tools like Python, Power Bi, R, Excel is still one of the most essential tools for data analysts.&lt;br&gt;
One of the greatest benefits of Excel is that you do not need prior coding experience and you can learn the basics quickly. It is also one of the primary tools that is used in data collection during data entry.&lt;br&gt;
Whether you are cleaning data, analyzing trends, or presenting insights, Excel offers flexibility, ease of use, and a vast range of functions that other tools often can’t match in day-to-day business scenarios.&lt;/p&gt;
&lt;h2&gt;
  
  
  Understanding Excel Data (Rows, Columns, Cells)
&lt;/h2&gt;

&lt;p&gt;Excel is made of rows and columns which make up a grid like structure in the spreadsheet. Each cell in the grid is identified by a unique combination of a row number and a column letter.&lt;br&gt;
In the image below the column and row header are displayed, the intersection of each columns and rows make a unique cell.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwssvxipips089tg9j6w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwssvxipips089tg9j6w.png" alt=" " width="431" height="213"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Columns are identified using letter and they are vertically positioned. While rows are identified numerically and are positioned horizontally. In the example of the image above, the first column is &lt;strong&gt;A&lt;/strong&gt; and the first row is &lt;strong&gt;1&lt;/strong&gt;. That makes the first cell to be identified as &lt;strong&gt;A1&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Preparing Data for Analysis.
&lt;/h2&gt;

&lt;p&gt;Now that we are familiarizing ourselves with how excel looks, it will feel much better to do so while getting a test of what it does and the powerful features it provides under the hood.&lt;/p&gt;

&lt;p&gt;Understanding basics of &lt;strong&gt;Data Analysis in Excel&lt;/strong&gt; is the first step towards making informed decisions. In the next sections, we’ll start working with real data and explore how Excel helps us clean, analyze, and summarize information efficiently.&lt;/p&gt;
&lt;h2&gt;
  
  
  Understanding Your Dataset
&lt;/h2&gt;

&lt;p&gt;In Excel data is usually represented in the form of a dataset. This is a regular Excel spreadsheet containing rows and columns, with data depending on the field of origin.&lt;/p&gt;

&lt;p&gt;The first job of any data analyst when presented with any form of data is to study the data and understand the type of data they have. It can be from sales, health records, telecommunication, Human Resource, etc.&lt;br&gt;
Below is an example of a simple HR dataset stored in Excel.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo7bk9jiv4m5i2uogp5i9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo7bk9jiv4m5i2uogp5i9.png" alt=" " width="665" height="218"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a simple Excel dataset with columns showing employee details and rows filled with individual employee data.&lt;/p&gt;

&lt;p&gt;Once you are familiar with the dataset, the next step is to perform some basic data cleaning.&lt;/p&gt;
&lt;h2&gt;
  
  
  Basic Data Cleaning in Excel
&lt;/h2&gt;

&lt;p&gt;Data cleaning is a very essential step of data analysis. Before we start deriving any insights or making sense of our data, we need to make sure we have a clean and consistent data to work with.&lt;/p&gt;

&lt;p&gt;There are a few things we need to check before proceeding with analysis.&lt;/p&gt;
&lt;h3&gt;
  
  
  Identifying missing values
&lt;/h3&gt;

&lt;p&gt;Having data with missing values is common in any dataset. This can be caused by many factors during data collection, such as omission, forgetfulness, or unclear data requirements.&lt;/p&gt;

&lt;p&gt;It is our first responsibility to make sure that the missing values are worked on to prevent getting wrong analysis.&lt;br&gt;
There are several ways to deal with missing values;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Remove rows with missing values&lt;br&gt;
This works only if the number of rows with missing values  will not have any major effect when deducted from the dataset. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fill them with &lt;strong&gt;&lt;em&gt;N/A&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;NULL&lt;/em&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;em&gt;UNKNOWN&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
These are situations where the data is non-numerical and cannot be computed i.e. personal details like Phone number, City, etc.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here we can use the Find and Replace.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select the column with missing values &lt;/li&gt;
&lt;li&gt;Press &lt;code&gt;Ctrl + H&lt;/code&gt; or on the &lt;code&gt;Home&lt;/code&gt; ribbon at the far right click on &lt;code&gt;Find &amp;amp; Select&lt;/code&gt;. Check on the image below.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkw348e1obbceftomnybg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkw348e1obbceftomnybg.png" alt=" " width="800" height="79"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The below image will appear for Find and Replace&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frqjekljb0ygsat60hqo4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frqjekljb0ygsat60hqo4.png" alt=" " width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the &lt;code&gt;Find what&lt;/code&gt; field, type the value you want to replace. In the &lt;code&gt;Replace with&lt;/code&gt; field, type the new value.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Filling the missing values with mean, median or average.
For numerical columns we can calculate the mean, median or average of the whole column and fill it in the missing values in the column.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Removing Duplicates
&lt;/h3&gt;

&lt;p&gt;In many instance we will get duplicates in our datasets. Maybe employees with same employee_id or products with the same product_id. This results to having wrong analysis&lt;/p&gt;

&lt;p&gt;Removing duplicates helps in remaining with cleaner data and in return gives correct outputs like count, mean, median, average, sum.&lt;/p&gt;

&lt;p&gt;In Excel, duplicates can be removed by selecting the dataset, going to the &lt;code&gt;Data&lt;/code&gt; tab, and clicking &lt;code&gt;Remove Duplicates&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Formatting Columns
It is very crucial that we have columns formatted with the correct data type it represent.
We select an individual column by clicking on top of the column where it is labelled with an alphabetical letter.
On the &lt;code&gt;Home&lt;/code&gt; ribbon go to the &lt;code&gt;Number&lt;/code&gt; segment and choose the correct data type.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmbza826m23kelk0etk1v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmbza826m23kelk0etk1v.png" alt=" " width="800" height="79"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on on the small arrow at bottom right of the segment to get the datatype selection table as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdzfnhhc6rrqpv6zvxs7l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdzfnhhc6rrqpv6zvxs7l.png" alt=" " width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can now select on the given datatypes as per the one in your column.&lt;/p&gt;

&lt;p&gt;The benefit of this is that it makes calculations and analysis easier and more accurate.. We can be able to use data given in every column correctly as  per it's datatype.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Renaming Columns
Columns names are like street names to guide us as we maneuver through the dataset. They help us know where to find specific data and what it represents..
This means having the correct names for our columns is very important in our data analysis process.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To rename a column we &lt;strong&gt;double click the cell with the column name&lt;/strong&gt; and then we can type in an appropriate name.&lt;/p&gt;

&lt;p&gt;At this point, our data is clean, consistent, and ready for analysis. In the next section, we will begin exploring the data using basic Excel tools such as sorting, filtering, and simple formulas.&lt;/p&gt;
&lt;h3&gt;
  
  
  Sorting and Filtering Data
&lt;/h3&gt;

&lt;p&gt;Now that we have clean data with no missing values or duplicates, we are ready to dive a little deeper into the world of data analysis.&lt;/p&gt;

&lt;p&gt;We begin this by &lt;strong&gt;sorting&lt;/strong&gt; our data. &lt;br&gt;
Sorting in Excel is the process of arranging data in a specific order; alphabetically, numerically, or by date in either ascending or descending order. &lt;br&gt;
There are different ways we can sort data in Excel. The first way is by clicking at the top of a column header to select it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to the &lt;strong&gt;Home&lt;/strong&gt; tab on the ribbon and, on the far right under the &lt;strong&gt;Editing&lt;/strong&gt; group, click &lt;strong&gt;Sort &amp;amp; Filter&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Click on the dropdown arrow to get more options on how to sort as illustrated in the image below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9b29h8o6xgcr1btzth5q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9b29h8o6xgcr1btzth5q.png" alt=" " width="800" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the &lt;code&gt;Sort &amp;amp; Filter&lt;/code&gt; options we have two major options to choose from; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sort A to Z / Oldest to Newest&lt;/strong&gt; – This is Ascending Order&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sort Z to A / Newest to Oldest&lt;/strong&gt; – This is Descending Order&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;We can follow the above procedure when we want to sort one or a few columns in our dataset.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The second way to sort your data is by formatting the dataset to a table.&lt;br&gt;
You:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on any cell in the dataset&lt;/li&gt;
&lt;li&gt;Go to the &lt;code&gt;Home&lt;/code&gt; ribbon&lt;/li&gt;
&lt;li&gt;Under &lt;code&gt;styles&lt;/code&gt; segment; click on &lt;strong&gt;&lt;strong&gt;Format as Table&lt;/strong&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you click it, you will see multiple table styles to choose from. Check the image below for reference.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3148x3ol749iseefftqg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3148x3ol749iseefftqg.png" alt=" " width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By making the data to a table, we will get a dropdown button at the right corner of every column. The button will give us options to choose from when we need to sort the column as depicted in the image below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Friczk3l41bvri30gacrj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Friczk3l41bvri30gacrj.png" alt=" " width="800" height="627"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You may have noticed that the Sort &amp;amp; Filter options are grouped together in Excel. Both in the first example and the second one. This makes it easier for us to also filter or use the filter function on our dataset when needed. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Filtering&lt;/strong&gt; in Excel is the process of displaying only the rows of data that meet specific conditions, while temporarily hiding the rest of the data.&lt;/p&gt;

&lt;p&gt;In simple terms, filtering helps us focus on the information we are interested in without deleting or permanently removing any data. &lt;br&gt;
For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Showing only products with a rating above 4&lt;/li&gt;
&lt;li&gt;Viewing employees from a specific department&lt;/li&gt;
&lt;li&gt;Displaying sales made in a particular month&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When a filter is applied, Excel does not remove any data. Instead, it hides the rows that do not match the selected criteria. This allows us to analyze specific parts of a dataset more efficiently.&lt;/p&gt;

&lt;p&gt;Filtering is especially useful when working with large datasets where manually searching through rows would be time-consuming.&lt;/p&gt;

&lt;p&gt;In the image below we see how to find the filter function just as we did we the sort.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnageu1cb4tny63c4qt4k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnageu1cb4tny63c4qt4k.png" alt=" " width="800" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can also filter by formatting the dataset to a table first. This way we use the arrows in the column header of every column to apply the preferred filter as shown in the image below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsjcrm58ddlu71crwncbm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsjcrm58ddlu71crwncbm.png" alt=" " width="665" height="648"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can uncheck the boxes of the items we want to filter out so that we only remain with what we want to view.&lt;/p&gt;

&lt;p&gt;With sorting and filtering, we can now explore our dataset from different perspectives and uncover meaningful insights more efficiently.&lt;/p&gt;
&lt;h2&gt;
  
  
  Basic Excel Formulas
&lt;/h2&gt;

&lt;p&gt;As we have seen, Excel is not only a spreadsheet used to store data in rows and columns, but it is also a very powerful tool when it comes to manipulating data.&lt;/p&gt;

&lt;p&gt;One of the best parts of Excel is its ability to perform computations on your data. This is possible because of the wide range of built-in formulas available in Excel. We are going to look at a few basic formulas such as SUM, AVERAGE, and COUNT.&lt;/p&gt;
&lt;h3&gt;
  
  
  SUM
&lt;/h3&gt;

&lt;p&gt;To write any formula in Excel, we must start with an equals sign =.&lt;br&gt;
This tells Excel that we want to perform a calculation in the selected cell.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SUM&lt;/strong&gt; refers to the addition of two or more numbers.&lt;br&gt;
For example: 2 + 2 = 4&lt;br&gt;
In Excel we can either type the values manually or use cell representation.&lt;/p&gt;

&lt;p&gt;In a new cell, type:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;=5 + 5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Press &lt;code&gt;Enter&lt;/code&gt;
This will return the result &lt;code&gt;10&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgd10enfkomjdyh7esu6x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgd10enfkomjdyh7esu6x.png" alt=" " width="272" height="107"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can also use the &lt;code&gt;SUM()&lt;/code&gt; function.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=SUM(5+5) 
=SUM(5,5)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both formulas will return the correct result.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu3euw1bt5azfdf5bpgmw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu3euw1bt5azfdf5bpgmw.png" alt=" " width="334" height="163"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Cell References
&lt;/h3&gt;

&lt;p&gt;This becomes more useful when working with data inside a spreadsheet.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=SUM(B2,F2)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This adds the values in cells &lt;strong&gt;B2&lt;/strong&gt; and &lt;strong&gt;F2&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsth3sz4hzpm0ak9h4911.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsth3sz4hzpm0ak9h4911.png" alt=" " width="499" height="168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Summing a Range of Cells
&lt;/h3&gt;

&lt;p&gt;We can also calculate the total of a range of values in either column or rows.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=SUM(B2:F4)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz23vzm4tegxy0smlzbx6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz23vzm4tegxy0smlzbx6.png" alt=" " width="609" height="170"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This calculates the total of all values within that rectangular range.&lt;/p&gt;

&lt;p&gt;If you want to sum values vertically in a single column:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=SUM(B2:B6)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faqfp3yfwdwdw2vi779ml.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faqfp3yfwdwdw2vi779ml.png" alt=" " width="516" height="188"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This adds all the values from &lt;strong&gt;B2&lt;/strong&gt; to &lt;strong&gt;B6&lt;/strong&gt;&lt;br&gt;
With that we can now confidently use the &lt;code&gt;SUM()&lt;/code&gt; function.&lt;/p&gt;
&lt;h3&gt;
  
  
  AVERAGE() Function
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;AVERAGE&lt;/code&gt; is the sum of a group of numbers divided by the total count of those numbers. It represents the central or typical value in a given dataset.&lt;/p&gt;

&lt;p&gt;In Excel, the &lt;code&gt;AVERAGE()&lt;/code&gt; function calculates the mean of selected cells automatically.&lt;/p&gt;

&lt;p&gt;Just like the &lt;code&gt;SUM()&lt;/code&gt; function, in &lt;code&gt;AVERAGE()&lt;/code&gt; function we can either type the values manually inside the formula or use cell referencing.&lt;br&gt;
Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=AVERAGE(66,72,80,62,60)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will returns &lt;code&gt;68&lt;/code&gt; as the average&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frvwv9eghsgxfuwk4yg1t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frvwv9eghsgxfuwk4yg1t.png" alt=" " width="484" height="207"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Cell Referencing
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=AVERAGE(B2:B6)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This calculate the average of values in cells &lt;strong&gt;B2&lt;/strong&gt; to &lt;strong&gt;B6&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzktfy9zlv4haunvax5t0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzktfy9zlv4haunvax5t0.png" alt=" " width="534" height="248"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The formula works both vertically(columns) and horizontally(rows).&lt;br&gt;
Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=AVERAGE(B3:F3)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feb0udyx06i0q90wp44h2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feb0udyx06i0q90wp44h2.png" alt=" " width="629" height="241"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This would calculate the average of values across a row.&lt;/p&gt;

&lt;h3&gt;
  
  
  COUNT() Function
&lt;/h3&gt;

&lt;p&gt;COUNT is used to count the number of cells that contain numeric values in a dataset.&lt;/p&gt;

&lt;p&gt;In Excel, the COUNT() function counts only numbers. It ignores text and empty cells.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=COUNT(66,60,72,80,78,)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will return &lt;code&gt;5&lt;/code&gt; because there are five numeric values.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femjcueg8yl8pd3s7r9am.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femjcueg8yl8pd3s7r9am.png" alt=" " width="736" height="138"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Cell Referencing
&lt;/h3&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;code&gt;=COUNT(B2:F2)&lt;/code&gt;&lt;br&gt;
This counts how many cells in the range B2 to F2 contain numbers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fai7h8vktsu03nz1sgd0f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fai7h8vktsu03nz1sgd0f.png" alt=" " width="681" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;If a cell contains text, it will not be counted by &lt;code&gt;COUNT()&lt;/code&gt;.&lt;br&gt;
(If you want to count all non-empty cells, you would use &lt;code&gt;COUNTA()&lt;/code&gt; instead.)&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  MAX() Function
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;MAX&lt;/code&gt; returns the largest value in a selected range of numbers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=MAX(66,60,72,80,78)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ad69gzj3q6jf1z5jpus.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ad69gzj3q6jf1z5jpus.png" alt=" " width="757" height="145"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This will return 80 because it is the highest value.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Cell Referencing
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=MAX(B2:F2)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ficz6ovxi970dsn5eo2xf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ficz6ovxi970dsn5eo2xf.png" alt=" " width="709" height="146"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This returns the largest number in cells B2 to F2.&lt;/p&gt;

&lt;h3&gt;
  
  
  MIN() Function
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;MIN&lt;/code&gt; returns the smallest value in a selected range of numbers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=MIN(66,60,72,80,78)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh1f38tup8yrw2ta2nic5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh1f38tup8yrw2ta2nic5.png" alt=" " width="800" height="134"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This will return 60 because it is the smallest value.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Cell Referencing
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=MIN(B2:F2)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0dqgz3p8lg19t5artpjk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0dqgz3p8lg19t5artpjk.png" alt=" " width="771" height="175"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This returns the smallest number in cells B2 to F2.&lt;/p&gt;

&lt;h3&gt;
  
  
  MEDIAN() Function
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;MEDIAN&lt;/code&gt; returns the middle value in a dataset when the numbers are arranged in order.&lt;/p&gt;

&lt;p&gt;If there is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An odd number of values → it returns the middle number.&lt;/li&gt;
&lt;li&gt;An even number of values → it returns the average of the two middle numbers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=MEDIAN(66,60,72,80,78)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feln4p1udun2wp7i2hpkb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feln4p1udun2wp7i2hpkb.png" alt=" " width="800" height="160"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This returns &lt;code&gt;72&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Cell Referencing
&lt;/h3&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=MEDIAN(B2:F2)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F81kb0j7bku2j0j0j0zaf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F81kb0j7bku2j0j0j0zaf.png" alt=" " width="800" height="164"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This calculates the median of values in cells B2 to F2.&lt;/p&gt;

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

&lt;p&gt;Microsoft Excel remains one of the most accessible and powerful tools for data analysis. Without writing a single line of code, we can clean data, organize it, explore trends, and perform meaningful calculations using built-in functions.&lt;/p&gt;

&lt;p&gt;In this article, we learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What data analysis is&lt;/li&gt;
&lt;li&gt;Why Excel is still relevant in modern data workflows&lt;/li&gt;
&lt;li&gt;How to understand datasets in rows and columns&lt;/li&gt;
&lt;li&gt;Basic data cleaning techniques&lt;/li&gt;
&lt;li&gt;How to sort and filter data for better exploration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essential formulas such as &lt;code&gt;SUM&lt;/code&gt;, &lt;code&gt;AVERAGE&lt;/code&gt;, &lt;code&gt;COUNT&lt;/code&gt;, &lt;code&gt;MAX&lt;/code&gt;, &lt;code&gt;MIN&lt;/code&gt;, and &lt;code&gt;MEDIAN&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;These are foundational skills for anyone beginning their journey into data analysis.&lt;/p&gt;

&lt;p&gt;As you grow more comfortable with Excel, you can explore more advanced tools such as &lt;em&gt;&lt;strong&gt;Pivot Tables&lt;/strong&gt;&lt;/em&gt;, &lt;strong&gt;&lt;em&gt;conditional formatting&lt;/em&gt;&lt;/strong&gt;, &lt;em&gt;&lt;strong&gt;charts&lt;/strong&gt;&lt;/em&gt;, and eventually transition into tools like &lt;strong&gt;&lt;em&gt;SQL&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;Power BI&lt;/em&gt;&lt;/strong&gt;, or &lt;strong&gt;&lt;em&gt;Python&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Every data journey starts somewhere, and Excel is one of the best places to begin.&lt;/p&gt;

&lt;p&gt;If you are learning data analysis, I will be sharing more beginner friendly guides on Excel and transitioning into tools like &lt;strong&gt;SQL&lt;/strong&gt; and &lt;strong&gt;Python&lt;/strong&gt;. Stay tuned.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>datascience</category>
      <category>dataanalysis</category>
      <category>learning</category>
    </item>
    <item>
      <title>Git for Beginners: Tracking Changes, Push and Pull Explained</title>
      <dc:creator>Munyalo Meshack</dc:creator>
      <pubDate>Sun, 18 Jan 2026 18:13:34 +0000</pubDate>
      <link>https://dev.to/itsmunyalo/git-for-beginners-tracking-changes-push-and-pull-explained-3co6</link>
      <guid>https://dev.to/itsmunyalo/git-for-beginners-tracking-changes-push-and-pull-explained-3co6</guid>
      <description>&lt;h2&gt;
  
  
  Git and GitHub
&lt;/h2&gt;

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

&lt;p&gt;If you are new to programming, data analysis, or tech in general, Git and GitHub can feel confusing at first.&lt;br&gt;
People throw around terms like &lt;em&gt;repository, commit, push,&lt;/em&gt; and &lt;em&gt;pull&lt;/em&gt; often without explaining what they actually mean.&lt;/p&gt;

&lt;p&gt;This article is written for &lt;strong&gt;absolute beginners&lt;/strong&gt;, including:&lt;/p&gt;

&lt;p&gt;People with &lt;strong&gt;no technical background&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;People who have &lt;strong&gt;never used Git before&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;People who just want a &lt;strong&gt;simple, clear explanation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this first part, we will focus only on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What GitHub is&lt;/li&gt;
&lt;li&gt;What Git is and why we need it&lt;/li&gt;
&lt;li&gt;Creating a GitHub account&lt;/li&gt;
&lt;li&gt;Installing Git on Windows, macOS, and Linux&lt;/li&gt;
&lt;li&gt;Connecting Git to your GitHub account&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  What Is GitHub?
&lt;/h2&gt;

&lt;p&gt;GitHub is a cloud based platform that allows developers to store, manage, and collaborate on code using a version control system called Git.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;In simple terms GitHub is a website where people store and share code online.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Think of GitHub like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google Drive, but for code&lt;/li&gt;
&lt;li&gt;Dropbox, but for projects&lt;/li&gt;
&lt;li&gt;A backup location for your work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With GitHub, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Save your projects online&lt;/li&gt;
&lt;li&gt;Access them from any computer&lt;/li&gt;
&lt;li&gt;Share your work with others&lt;/li&gt;
&lt;li&gt;Collaborate with teammates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even if you are working alone, GitHub is useful because it keeps your work safe.&lt;/p&gt;
&lt;h2&gt;
  
  
  What Is Git?
&lt;/h2&gt;

&lt;p&gt;Git is a distributed version control system (VCS) used to track changes in source code during software development.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Git is a tool that runs on your computer.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Git helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Track changes in your files&lt;/li&gt;
&lt;li&gt;Save different versions of your work&lt;/li&gt;
&lt;li&gt;Go back to an earlier version if something breaks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Imagine writing a document and being able to say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Take me back to how this looked yesterday.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s what Git does but for code and files.&lt;/p&gt;
&lt;h2&gt;
  
  
  How to Create a GitHub Account
&lt;/h2&gt;

&lt;p&gt;Creating a GitHub account is free and easy.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step-by-step:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://github.com" rel="noopener noreferrer"&gt;https://github.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Click Sign up &lt;/li&gt;
&lt;li&gt;Enter:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Email address&lt;/li&gt;
&lt;li&gt;    Username&lt;/li&gt;
&lt;li&gt;    Password&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Verify your email &lt;/li&gt;
&lt;li&gt;Complete the setup steps&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You now have a GitHub account.&lt;/p&gt;
&lt;h2&gt;
  
  
  What Is Git (the Software)?
&lt;/h2&gt;

&lt;p&gt;Before we install it, one important clarification:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;GitHub → a website&lt;br&gt;
Git → a program you install on your computer&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Installing Git allows your computer to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Track changes&lt;/li&gt;
&lt;li&gt;Communicate with GitHub&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  How to Download and Install Git
&lt;/h3&gt;
&lt;h3&gt;
  
  
  On Windows
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://git-scm.com" rel="noopener noreferrer"&gt;https://git-scm.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Download for Windows&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;Open the downloaded file&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Next&lt;/strong&gt; on most screens (default options are fine)&lt;/li&gt;
&lt;li&gt;Finish installation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After installing, you will have &lt;strong&gt;Git Bash&lt;/strong&gt;, a terminal used to run Git commands.&lt;/p&gt;
&lt;h2&gt;
  
  
  On macOS (MacBook)
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Option 1: Using the Installer
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://git-scm.com" rel="noopener noreferrer"&gt;https://git-scm.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Download Git for macOS&lt;/li&gt;
&lt;li&gt;Open the installer and follow the steps&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  Option 2: Using Terminal
&lt;/h3&gt;

&lt;p&gt;Open &lt;strong&gt;Terminal&lt;/strong&gt; and type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git --version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If Git is not installed, macOS will prompt you to install it.&lt;/p&gt;

&lt;h2&gt;
  
  
  On Linux
&lt;/h2&gt;

&lt;p&gt;Open a terminal and run:&lt;/p&gt;

&lt;p&gt;For Ubuntu / Debian:&lt;br&gt;
&lt;code&gt;sudo apt install git&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For Fedora:&lt;br&gt;
&lt;code&gt;sudo dnf install git&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;After installation, confirm:&lt;br&gt;
&lt;code&gt;git version&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  How to Connect Git to Your GitHub Account
&lt;/h2&gt;

&lt;p&gt;To connect Git on your computer to GitHub online, Git needs to know &lt;strong&gt;who you are&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 1: Set Your Name
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git config --global user.name "Your Name"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 2: Set Your Email
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git config --global user.email "youremail@example.com"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Use the &lt;strong&gt;same email&lt;/strong&gt; you used for GitHub&lt;br&gt;
This does not upload anything yet. It only tells Git:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"This work belongs to me."&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Understanding a Repository
&lt;/h2&gt;
&lt;h2&gt;
  
  
  What Is a Repository?
&lt;/h2&gt;

&lt;p&gt;A repository (or repo) is a centralized location where project files and resources are stored. Repositories typically exist in the cloud, allowing for collaboration, version control and remote access to code modules and software packages.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In simple terms:&lt;br&gt;
A repository (repo) is a project folder that Git is tracking.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When a folder becomes a repository:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Git starts watching files inside it&lt;/li&gt;
&lt;li&gt;Git can track changes over time&lt;/li&gt;
&lt;li&gt;Git can save versions of your work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A repository contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your project files (code, text, images)&lt;/li&gt;
&lt;li&gt;A hidden folder called &lt;code&gt;.git&lt;/code&gt; (Git’s brain)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;em&gt;If a folder does not have a &lt;code&gt;.git&lt;/code&gt; folder, Git is not tracking it.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Local vs Remote Repository
&lt;/h2&gt;

&lt;p&gt;There are two types of repositories you’ll work with:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Local Repository&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Lives on your computer&lt;/li&gt;
&lt;li&gt;Where you write and edit code&lt;/li&gt;
&lt;li&gt;Created using the terminal&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Remote Repository&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Lives online (GitHub)&lt;/li&gt;
&lt;li&gt;Used for backup and collaboration&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Creating Your First Repository
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Step 1: Open Git Bash / Terminal
&lt;/h3&gt;

&lt;p&gt;Navigate to the folder where you want your project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd Documents
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a new project folder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir my-first repo
cd my-first-repo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At this point:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The folder exists&lt;/li&gt;
&lt;li&gt;Git is &lt;strong&gt;not&lt;/strong&gt; tracking it yet&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Initialize Git
&lt;/h3&gt;

&lt;p&gt;To tell Git to start tracking this folder, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will see something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Initialize empty Git repository
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Congratulations, this folder is now a &lt;strong&gt;Git repository&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What Actually Happened?
&lt;/h3&gt;

&lt;p&gt;When you ran &lt;code&gt;git init&lt;/code&gt;, Git:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created a hidden &lt;code&gt;.git&lt;/code&gt; folder&lt;/li&gt;
&lt;li&gt;Started tracking this directory&lt;/li&gt;
&lt;li&gt;Prepared to record changes
You normally &lt;strong&gt;never touch&lt;/strong&gt; the &lt;code&gt;.git&lt;/code&gt; folder manually.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Checking Repository Status:
&lt;/h3&gt;

&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Confirms you are inside a repository&lt;/li&gt;
&lt;li&gt;Shows tracked and untracked files
At this stage it may say:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;No commits yet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is expected.&lt;/p&gt;

&lt;h3&gt;
  
  
  Adding a File to the Repository
&lt;/h3&gt;

&lt;p&gt;Create a simple file e.g:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;touch index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check status again:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Untracked files:
  index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Meaning:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Git sees the file, but is not tracking it yet."&lt;br&gt;
This is where &lt;strong&gt;change tracking&lt;/strong&gt; begins.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  How Git Tracks Changes
&lt;/h1&gt;

&lt;p&gt;We have created a repository and saw that Git can “see” files.&lt;br&gt;
Now we will answer an important question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How does Git know what changed, and what to save?&lt;/strong&gt;&lt;br&gt;
Git does this using &lt;strong&gt;two main areas&lt;/strong&gt;:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;working directory&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;staging area&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understanding these two will make Git feel logical instead of confusing.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Working Directory
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;working directory&lt;/strong&gt; is simply:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Your project folder as you normally use it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is where you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write code&lt;/li&gt;
&lt;li&gt;Edit files&lt;/li&gt;
&lt;li&gt;Delete or rename files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You open index.html&lt;/li&gt;
&lt;li&gt;You change some text&lt;/li&gt;
&lt;li&gt;You save the file&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At this point:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The file is changed&lt;/li&gt;
&lt;li&gt;Git &lt;strong&gt;notices&lt;/strong&gt; the change&lt;/li&gt;
&lt;li&gt;But Git has &lt;strong&gt;not saved&lt;/strong&gt; it yet&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;em&gt;Git does &lt;strong&gt;not&lt;/strong&gt; auto-save your work.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Why Git Doesn’t Auto-Save
&lt;/h3&gt;

&lt;p&gt;Beginners often ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Why doesn’t Git just save changes automatically?”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Because Git is designed to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Let you decide what to save&lt;/li&gt;
&lt;li&gt;Let you group related changes together&lt;/li&gt;
&lt;li&gt;Avoid saving broken or unfinished work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You control when a version is created.&lt;/p&gt;
&lt;h3&gt;
  
  
  Checking Changes with &lt;code&gt;git status&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;To see what Git knows about your project, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;modified: index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"This file changed, but it is not ready to be saved yet."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Git is watching, but waiting for instructions&lt;/p&gt;

&lt;h3&gt;
  
  
  The Staging Area
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;staging area&lt;/strong&gt; is where you tell Git:&lt;/p&gt;

&lt;p&gt;_&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“These are the changes I want to save.”&lt;br&gt;
_&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It acts as a &lt;strong&gt;preparation zone&lt;/strong&gt; between editing and saving.&lt;/p&gt;

&lt;p&gt;Think of it like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Selecting files before uploading&lt;/li&gt;
&lt;li&gt;Choosing photos before posting&lt;/li&gt;
&lt;li&gt;Packing items before traveling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing is saved permanently yet.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why &lt;code&gt;git add&lt;/code&gt; Exists
&lt;/h3&gt;

&lt;p&gt;To move changes from the working directory to the staging area, you use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or to add everything:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What this tells Git:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I want these changes included in the next save."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  How Git knows what changed
&lt;/h3&gt;

&lt;p&gt;Git compares:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The last saved version&lt;/li&gt;
&lt;li&gt;The current version of your files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It then records &lt;strong&gt;only the differences&lt;/strong&gt;, not the entire file.&lt;/p&gt;

&lt;p&gt;This makes Git:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fast&lt;/li&gt;
&lt;li&gt;Efficient&lt;/li&gt;
&lt;li&gt;Very accurate&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Checking the Staging Area
&lt;/h3&gt;

&lt;p&gt;After running &lt;code&gt;git add&lt;/code&gt;, check again:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you will see something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Changes to be committed:
  index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This means;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"These changes are staged and ready to be saved"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Why the Staging Area Is Important
&lt;/h3&gt;

&lt;p&gt;Without staging:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You couldn’t choose what to save&lt;/li&gt;
&lt;li&gt;Every small change would be forced into history&lt;/li&gt;
&lt;li&gt;Commits would become messy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Staging allows you to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Group related changes&lt;/li&gt;
&lt;li&gt;Keep history clean&lt;/li&gt;
&lt;li&gt;Commit with confidence&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Commits — Saving Your Work in Git
&lt;/h2&gt;

&lt;p&gt;We have learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Git tracks your project in the &lt;strong&gt;working directory&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;You move changes to the &lt;strong&gt;staging area&lt;/strong&gt; using &lt;code&gt;git add&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now it’s time to &lt;strong&gt;save a snapshot of your work*, this is called a **commit&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Is a Commit?
&lt;/h3&gt;

&lt;p&gt;A &lt;strong&gt;commit&lt;/strong&gt; is like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;photo of your project&lt;/strong&gt; at a point in time&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;save point&lt;/strong&gt; in a video game&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;version checkpoint&lt;/strong&gt; of your code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you commit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Git stores the current state of files in the staging area&lt;/li&gt;
&lt;li&gt;You can later go back to this point if needed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of it as telling Git:&lt;/p&gt;

&lt;p&gt;_&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“This is a version I’m happy with — save it.”&lt;br&gt;
_&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Why Commits Matter
&lt;/h3&gt;

&lt;p&gt;Commits are important because they let you:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Undo mistakes&lt;/strong&gt; – go back to a previous commit if something breaks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Track progress&lt;/strong&gt; – see what changed over time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collaborate safely&lt;/strong&gt; – others can see your work without overwriting yours&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep history organized&lt;/strong&gt; – clean, meaningful snapshots make debugging easier&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Without commits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your history is lost&lt;/li&gt;
&lt;li&gt;You can’t roll back changes&lt;/li&gt;
&lt;li&gt;Collaboration becomes dangerous&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How to Create Your First Commit
&lt;/h3&gt;

&lt;p&gt;Assuming you have:&lt;/p&gt;

&lt;p&gt;A repository (&lt;code&gt;git init&lt;/code&gt; done)&lt;/p&gt;

&lt;p&gt;Added files to the staging area (&lt;code&gt;git add&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;You create a commit like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit -m "Add initial project files"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Breaking this down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;git commit&lt;/code&gt; - tells Git to save the snapshot&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-m&lt;/code&gt; - allows you to add a &lt;strong&gt;message describing the changes&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;"Add initial project files"&lt;/code&gt; - the commit message (explained below)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Writing Meaningful Commit Messages
&lt;/h3&gt;

&lt;p&gt;Commit messages are important because they tell &lt;strong&gt;you and others&lt;/strong&gt; what changed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tips for beginners:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Use the present tense: &lt;code&gt;"Fix bug in login form"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Be short but descriptive: &lt;code&gt;"Add homepage layout"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Focus on what changed, not how: &lt;code&gt;"Update README"&lt;/code&gt; vs &lt;code&gt;"Type some text"&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit -m "stuff"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit -m "Add styling to navigation bar"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Checking Your Commit
&lt;/h3&gt;

&lt;p&gt;After committing, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;commit 9fceb02
Author: Your Name &amp;lt;youremail@example.com&amp;gt;
Date: Sat Jan 18 16:00 2026

    Add initial project files
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Meaning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Git saved your snapshot&lt;/li&gt;
&lt;li&gt;You now have a &lt;strong&gt;recorded version&lt;/strong&gt; of your project&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Push and Pull — Syncing with GitHub
&lt;/h1&gt;

&lt;p&gt;In the previous parts, we have learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating a repository&lt;/li&gt;
&lt;li&gt;Tracking changes&lt;/li&gt;
&lt;li&gt;Saving work with commits&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now it’s time to &lt;strong&gt;share your work online&lt;/strong&gt; and &lt;strong&gt;keep it up-to-date&lt;/strong&gt;. This is where &lt;strong&gt;push&lt;/strong&gt; and  &lt;strong&gt;pull&lt;/strong&gt; come in.&lt;/p&gt;

&lt;h3&gt;
  
  
  Local vs Remote Repository
&lt;/h3&gt;

&lt;p&gt;Before we talk commands, let’s review:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Repository&lt;/th&gt;
&lt;th&gt;Where it lives&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Local&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Your computer&lt;/td&gt;
&lt;td&gt;Edit files, track changes, commit versions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Remote&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;GitHub (online)&lt;/td&gt;
&lt;td&gt;Backup, collaboration, portfolio&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Push and pull are simply &lt;strong&gt;the communication between local and remote&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What Is Push?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Push&lt;/strong&gt; sends your &lt;strong&gt;committed changes&lt;/strong&gt; from your local repository to GitHub.&lt;/p&gt;

&lt;p&gt;Think of it as:&lt;/p&gt;

&lt;p&gt;_&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I’ve made changes on my computer. Save them online.”&lt;br&gt;
_&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git push origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Breaking it down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;git push&lt;/code&gt; - sends changes&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;origin&lt;/code&gt; - the remote repository (GitHub)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;main&lt;/code&gt; - the branch you are pushing to (usually &lt;code&gt;main&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After pushing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your work is safe online&lt;/li&gt;
&lt;li&gt;Others can see your changes&lt;/li&gt;
&lt;li&gt;You have a backup in case your computer fails&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What Is Pull?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Pull&lt;/strong&gt; fetches changes from GitHub (remote) to your local repository.&lt;/p&gt;

&lt;p&gt;Think of it as:&lt;/p&gt;

&lt;p&gt;_&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Check online for new updates and bring them to my computer.”&lt;br&gt;
_&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git pull origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After pulling:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your local project is up-to-date&lt;/li&gt;
&lt;li&gt;You avoid conflicts with other people’s changes&lt;/li&gt;
&lt;li&gt;You can continue working safely&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Safe Workflow Habits
&lt;/h3&gt;

&lt;p&gt;Even if you’re working alone, following safe habits is important.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Always pull before starting work&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git pull
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Ensures you have the latest version&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Stage and commit your changes regularly&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add
git commit -m "Describe changes"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Push after completing a task&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Saves work online&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Write meaningful commit messages&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Helps you and others understand the history&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Avoid working directly on GitHub&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;edit locally - commit - push - then view online&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s how a typical session looks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Start your work
git pull

# Make changes to your files
# Stage and commit changes
git add .
git commit -m "Add feature or fix bug"

# Save your work online
git push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>beginners</category>
      <category>datascience</category>
      <category>git</category>
      <category>development</category>
    </item>
  </channel>
</rss>
