diff --git a/cross.sql b/cross.sql index cd3ee62..b95ec58 100644 --- a/cross.sql +++ b/cross.sql @@ -1,31 +1,49 @@ -CREATE TABLE employees ( - emp_id INT, - emp_name VARCHAR(50), - dept_id INT -); +-- =============================== +-- CREATE TABLES WITH PRIMARY KEYS +-- =============================== +DROP TABLE IF EXISTS employees; +DROP TABLE IF EXISTS departments; CREATE TABLE departments ( - dept_id INT, - dept_name VARCHAR(50) + dept_id INT PRIMARY KEY, + dept_name VARCHAR(50) NOT NULL ); --- Inserting sample data -INSERT INTO employees VALUES (1, 'John Doe', 101); -INSERT INTO employees VALUES (2, 'Jane Smith', 102); - -INSERT INTO departments VALUES (101, 'Human Resources'); -INSERT INTO departments VALUES (102, 'Marketing'); - - - -SELECT * from employees; -SELECT * from departments; - --- CROSS JOIN -SELECT * FROM employees -CROSS JOIN departments; - --- NATURAL JOIN -SELECT * FROM employees -NATURAL JOIN departments; +CREATE TABLE employees ( + emp_id INT PRIMARY KEY, + emp_name VARCHAR(50) NOT NULL, + dept_id INT NOT NULL, + FOREIGN KEY (dept_id) REFERENCES departments(dept_id) +); +-- =============================== +-- INSERT SAMPLE DATA +-- =============================== +INSERT INTO departments (dept_id, dept_name) VALUES +(101, 'Human Resources'), +(102, 'Marketing'); + +INSERT INTO employees (emp_id, emp_name, dept_id) VALUES +(1, 'John Doe', 101), +(2, 'Jane Smith', 102); + +-- =============================== +-- SIMPLE SELECT QUERIES +-- =============================== +SELECT * FROM employees; +SELECT * FROM departments; + +-- =============================== +-- CROSS JOIN (Cartesian Product) +-- =============================== +SELECT e.emp_id, e.emp_name, d.dept_id, d.dept_name +FROM employees e +CROSS JOIN departments d; + +-- =============================== +-- INNER JOIN USING dept_id +-- =============================== +SELECT e.emp_id, e.emp_name, d.dept_id, d.dept_name +FROM employees e +INNER JOIN departments d + ON e.dept_id = d.dept_id;