EDUCBA

EDUCBA

MENUMENU
  • Free Tutorials
  • Free Courses
  • Certification Courses
  • 360+ Courses All in One Bundle
  • Login
Home Data Science Data Science Tutorials MySQL Tutorial Natural Join in MySQL
Secondary Sidebar
MySQL Tutorial
  • Joins
    • Joins in MySQL
    • MySQL Outer Join
    • Left Outer Join in MySQL
    • MySQL Self Join
    • Natural Join in MySQL
    • MySQL DELETE JOIN
    • MySQL Update Join
    • MySQL Cross Join
  • Basic
    • MySQL floor
    • MySQL DESCRIBE table
    • MySQL encryption
    • Introduction to MySQL
    • Is SQL Server a Database?
    • What is MySQL
    • Is MySQL Programming Language
    • MySQL Server
    • MySQL AB
    • MySQL Community Server
    • How To Install MySQL
    • MySQL Versions
    • MySQL OpenSource
    • MySQL GUI Tools
    • MySQL Grant
    • MySQL Error 1064
    • MySQL Drop Database
    • MySQL not equal
    • MySQL SELECT INTO Variable
    • MySQL Commands
    • MySQL Operators
    • What is MySQL Schema
    • Wildcards in MySQL
    • MySQL Constraints
    • MySQL Administration
    • MySQL Data Type
    • MYSQL COMMIT
    • MySQL FORMAT
    • Timestamp to Date in MySQL
    • MySQL DATEDIFF
    • MySQL?Incremental Backup
    • MySQL JSON Data Type
    • MySQL ENUM
    • MySQL Default Port
    • Cheat Sheet MySQL
  • Queries
    • MySQL Queries
    • MySQL Query Commands
    • SELECT in MySQL
    • MySQL INSERT IGNORE
    • MySQL having
    • ORDER BY in MySQL
    • MySQL Cheat Sheet
    • MySQL ORDER BY Random
    • MySQL ORDER BY DESC
    • MySQL GROUP BY
    • MySQL GROUP BY Count
    • MySQL GROUP BY month
    • MySQL WHERE Clause
    • MySQL WITH
    • MySQL FETCH
    • MySQL DDL
    • MySQL DML
    • MySQL WHERE IN Array
    • MySQL Fetch Array
    • MySQL ISNULL
    • MySQL Index Types
    • Mysql? Export Schema
    • Amazon RDS for MySQL
    • MySQL greatest
  • Database
    • What is Data Modeling
    • What is Data Processing
    • DBMS Architecture
    • DBMS Keys
    • Careers in Database Administration
    • What is MySQL Database
    • MySQL Relational Database
    • How to Connect Database to MySQL
    • MySQL Database Repair
    • RDBMS Interview Questions
    • DBMS Interview Questions
  • Functions
    • MySQL Function
    • MySQL Aggregate Function
    • MySQL String functions
    • MySQL Date Functions
    • MySQL Window Functions
    • MySQL Math Functions
    • MySQL Boolean
    • Cursor in MySQL
    • Condition in MySQL
    • MySQL BETWEEN
    • Insert in MySQL
    • MySQL IFNULL()
    • MySQL TIMESTAMPDIFF()
    • MySQL COALESCE()
    • MySQL count()
    • MIN() in MySQL
    • MySQL Numeric
    • MySQL field()
    • MySQL FIND_IN_SET()
    • MySQL avg()
    • MySQL MAX() Function
    • MySQL BIN()
    • MySQL Concat
    • MySQL DECODE()
    • MySQL REGEXP_REPLACE()
    • MySQL Asynchronous
    • MySQL innodb_buffer_pool_size
    • MySQL key_buffer_size
    • MySQL TRUNCATE()
    • MySQL ROW_NUMBER()
    • NOT in MySQL
    • MySQL IN Operator
    • LIKE in MySQL
    • ANY in MySQL
    • MySQL NOT IN
    • MySQL CHECK Constraint
    • MySQL DISTINCT
    • MySQL ALL
    • MySQL Union
    • MySQL UNION ALL
    • MySQL EXISTS
    • MySQL ON DELETE CASCADE
    • MySQL REGEXP
    • MySQL Index
    • MySQL Add Index
    • MySQL REINDEX
    • MySQL UNIQUE INDEX
    • MySQL Clustered Index
    • MySQL? InnoDB Cluster
    • Table in MySQL
    • ALTER TABLE MySQL
    • MySQL Temporary Table
    • MySQL Clone Table
    • MySQL Repair Table
    • MySQL Lock Table
    • MySQL Optimize Table
    • TRUNCATE TABLE MySQL
    • MySQL?Table?Size
    • MySQL Table Dump
    • MySQL Update Set
    • MySQL ALTER TABLE Add Column
    • MySQL RANK()
    • MySQL CTE
    • MySQL LAG()
    • MySQL GROUP_CONCAT()
    • MySQL EXTRACT()
    • MySQL REPLACE
    • MySQL AUTO_INCREMENT
    • MySQL SYSDATE()
    • MySQL NULLIF()
    • MySQL Substring
    • MySQL SUBSTRING_INDEX()
    • MySQL LOWERCASE
    • MySQL Row
    • MySQL NOW
    • MySQL CEIL
    • MySQL Alias
    • MySQL Trigger
    • MySQL SHOW Triggers
    • MySQL UPDATE Trigger
    • MySQL DELETE Trigger
    • MySQL AFTER UPDATE Trigger
    • MySQL Stored Procedure
    • ROLLUP in MySQL
    • MySQL? INSTR()
    • MySQL Subquery
    • MySQL Timestamp
    • MySQL? Hour()
    • MySQL MOD()
    • MySQL DATE_FORMAT()
    • ALTER Column in MySQL
    • MySQL Rename Column
    • MySQL Interval
    • MySQL CURDATE
    • MySQL BIT
    • MySQL Binlog
    • MySQL Average
    • MySQL TEXT
    • MySQL SHOW
    • MySQL Offset
    • MySQL Timezone
    • mysql_real_escape_string
    • MySQL Datetime
    • MySQL DATE_SUB()
    • MySQL FULLTEXT
    • MySQL DATE_ADD()
    • MySQL sum()
    • MySQL Merge
    • MySQL BigInt
    • MySQL ROUND
    • MySQL VARCHAR
    • MySQL Decimal
    • MySQL Limit
    • MySQL today()
    • MySQL WEEKDAY
    • MySQL Split
    • MySQL Create Function
    • MySQL BLOB
    • MySQL encode()
    • MySQL Primary Key
    • MySQL Foreign Key
    • Unique Key in MySQL
    • MySQL Drop Foreign Key
    • MySQL DROP TRIGGER
    • MYSQL Database
    • Delete Database MySQL
    • MySQL Root
    • MySQL Root Password
    • MySQL Client
    • MySQL Users
    • MySQL?User Permissions
    • MySQL add user
    • MySQL List User
    • MySQL Show Users
    • MySQL User Password
    • MySQL?Cardinality
    • MySQL Workbench
    • MySQL Backup
    • MySQL REVOKE
    • MySQL Dump
    • MySQL Cluster
    • MySQL Full Text Search
    • MySQL Admin Tool
    • MySQL Export Database
    • MySQL Export to CSV
  • Advanced
    • MySQL Formatter
    • MySQL TINYINT
    • MySQL Grant All Privileges
    • MySQL DROP TABLE
    • MySQL rename database
    • MySQL Flush Privileges
    • MySQL super Privilege
    • MySQL Character Set
    • MySQL Log File
    • MySQL Flush Log
    • Grant Privileges MySQL
    • MySQL WHILE LOOP
    • IF Statement in MySQL
    • MySQL CASE Statement
    • MySQL IF Function
    • MySQL IF EXISTS
    • MySQL UUID
    • Views in MySQL
    • MySQL Replication
    • MySQL Partition
    • Toad for MySQL
    • Navicat for MySQL
    • MySQL AES_Encrypt
    • MySQL Performance Tuning
    • MySQL Transaction
    • MySQL? sort_buffer_size
    • MySQL? Sync
    • MySQL? Query Cache
    • MySQL Collation
    • MySQL ODBC Driver
    • MySQL Partitioning
    • MySQL InnoDB
    • MySQL Float vs Decimal
    • MySQL Union vs Union All
  • Interview Questions
    • MySQL Interview Questions

Natural Join in MySQL

By Priya PedamkarPriya Pedamkar

Natural Join in MySQL

Introduction to Natural Join in MySQL

Natural Join in MYSQL is a Join operation used in the SELECT query, to retrieve rows from two or more tables with a common column name. We need to make sure the common column has the same data type, in both the tables. We have understood that JOIN is a cross product with a condition, which means the output is derived from multiple tables based on the condition specified. NATURAL JOIN has this ‘condition’ pre-defined that, the output is a product of common columns in all the tables under study.

Syntax

The NATURAL JOIN syntax is as follows:

Start Your Free Data Science Course

Hadoop, Data Science, Statistics & others

SELECT row_name from table_1_name NATURAL JOIN table_2_name;

Explanation: Here we have two tables with names table 1 and table 2. Both these tables have at least one column which is of the same data type and has the same column name. Now, the output is ‘row_name’ which can be anyone or more rows with similar values in both tables 1 and table 2. This is the simplest way of explaining the NATURAL JOIN. We can discuss this further in detail with examples. Also, note that NATURAL JOIN can be used in tables having more than one common column and also in scenarios with more than two columns.

How Natural Join in MySQL Work?

Let’s discuss the working of NATURAL JOIN in detail. For that, we can consider two tables as below:

Our first table, named EMP, is having details regarding the employee number asE_No, employee name as E_name, and employee location as Location.

Code:

SELECT * from  EMP;

Output:

EMP Table

Now, the second table, named Dept, has data regarding the employee number as E_No, employee department as Dept and department name as Dept_name.

Code:

SELECT * from Dept;

Output:

Dept Table

Now, we need the output as below: Print the names of employees who have a department assigned to them.

If we do a basic analysis of the two tables EMP and Dept, we can get to know that there is a common column in these two tables, which is E_No. But the required output says, employee names, where employee names field is taken from EMP table. So it is clear that we need to join the two tables to get the output.

Now from the second table, it is also clear that, only three employees have a department assigned to them, whereas there are 5 employees totally in the company. So, two employees are not assigned to any department. The two employees without department are employees with IDs 2 and 4.

Let’s consider writing a query for the question, with normal SELECT and a where clause as below.

Code:

select EMP.E_No, EMP.E_Name from EMP, Dept where EMP.E_NO = Dept.E_No;

This SELECT query does the below function: select those employee names from the tables EMP and Dept, where the E_No from EMP table is the same as E_No from the Dept table. This is exactly the same output required for our query as well.

Output:

Natural Join in MySQL3

The above SELECT query might look simple and easy to write, but imagine if there is more common columns and the data needed in output are also more in number. In that case, the simple SELECT query will become more complicated.

As another option, INNER JOIN can also replace the NATURAL JOIN, but the condition is to be specified like above. Let us have a quick look into using INNER JOIN also before we get detailed into NATURAL JOIN. The query will look like,

Code:

SELECT EMP.E_No, EMP.E_Name from EMP INNER JOIN Dept on EMP.E_No = Dept.E_No;

This query will pick rows from the EMP table, which has the field E_No the same in both EMP and Dept tables. As said above, this query will be simpler and easy to understand only on small tables, with a lesser number of columns, common columns, and data.

Output:

Natural Join in MySQL4

That is where the NATURAL JOIN is used. The operation will select the required rows based on all the common columns available. The SELECT query will look much simpler also.

We have discussed the scenario with a normal SELECT query using where clause, and with INNER JOIN. Now, let’s write the same query with a NATURAL JOIN.

Code:

SELECT E_No, E_Name from EMP NATURAL JOIN Dept;

To explain the above query, consider the two tables we discussed above. The query asks to select the employee names from the table EMP, where a NATURAL JOIN is to be performed with table Dept. We know NATURAL JOIN considers the common columns from the two tables understudy and here Dept table and EMP table have one column with title E_No in common. Thus the query will select only those rows, which has value in both the EMP and Dept table. Looking at the tables we can identify there are three rows with data in both the tables. So the output will be like below:

Output:

Natural Join in MySQL5

This explains the basic working of NATURAL JOIN in a SELECT query. NATURAL JOIN can be used along with the WHERE clause also. Suppose, from the above tables, we need to select only Alan’s data, which is an employee with data in both Emp and Dept tables, and E_No as 1. The query will be as follows:

Code:

SELECT E_No, E_Name from EMP NATURAL JOIN Dept WHERE E_No = ‘1’;

Output:

Natural Join in MySQL6

NATURAL JOIN can be used on more than two tables as well. The third table can have the common column or it can have any other columns from either of the tables.

Conclusion

We have discussed in detail about the working of NATURAL JOIN. To recollect, below are the main point, NATURAL JOIN gives the output as rows from two or more tables with common column name and similar data types. It is an operation used mainly with SELECT queries. NATURAL JOIN makes the SELECT query simpler with minimal use of conditions. Make sure the common columns have the same column name and data types.

Recommended Articles

This is a guide to Natural Join in MySQL. Here we discuss introduction to Natural Join in MySQL, syntax and how does it work in detail. You can also go through our other related articles to learn more –

  1. Natural Join SQL
  2. Joins in MySQL
  3. MySQL Self Join
  4. MySQL Trigger
Popular Course in this category
MySQL Training Program (12 Courses, 10 Projects)
  12 Online Courses |  10 Hands-on Projects |  92+ Hours |  Verifiable Certificate of Completion
4.5
Price

View Course

Related Courses

MS SQL Training (16 Courses, 11+ Projects)4.9
Oracle Training (17 Courses, 8+ Projects)4.8
PL SQL Training (4 Courses, 2+ Projects)4.7
Primary Sidebar
Footer
About Us
  • Blog
  • Who is EDUCBA?
  • Sign Up
  • Live Classes
  • Corporate Training
  • Certificate from Top Institutions
  • Contact Us
  • Verifiable Certificate
  • Reviews
  • Terms and Conditions
  • Privacy Policy
  •  
Apps
  • iPhone & iPad
  • Android
Resources
  • Free Courses
  • Database Management
  • Machine Learning
  • All Tutorials
Certification Courses
  • All Courses
  • Data Science Course - All in One Bundle
  • Machine Learning Course
  • Hadoop Certification Training
  • Cloud Computing Training Course
  • R Programming Course
  • AWS Training Course
  • SAS Training Course

ISO 10004:2018 & ISO 9001:2015 Certified

© 2023 - EDUCBA. ALL RIGHTS RESERVED. THE CERTIFICATION NAMES ARE THE TRADEMARKS OF THEIR RESPECTIVE OWNERS.

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you

Let’s Get Started

By signing up, you agree to our Terms of Use and Privacy Policy.

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA Login

Forgot Password?

By signing up, you agree to our Terms of Use and Privacy Policy.

This website or its third-party tools use cookies, which are necessary to its functioning and required to achieve the purposes illustrated in the cookie policy. By closing this banner, scrolling this page, clicking a link or continuing to browse otherwise, you agree to our Privacy Policy

Loading . . .
Quiz
Question:

Answer:

Quiz Result
Total QuestionsCorrect AnswersWrong AnswersPercentage

Explore 1000+ varieties of Mock tests View more