w3resource

Create a MySQL table named job_history and enforce a constraint to ensure that values in the end_date column are entered in a specific format at runtime

MySQL Create Tables: Exercise-8 with Solution

8. Write a MySQL query to create a table named job_histry including columns employee_id, start_date, end_date, job_id and department_id and make sure that the value against column end_date will be entered at the time of insertion to the format like '--/--/----'.

Sample Solution:

-- Creating a table named 'job_history' if it doesn't already exist to store historical job information for employees

CREATE TABLE IF NOT EXISTS job_history(
    -- Column to store employee IDs with decimal precision of 6, 0, marked as NOT NULL (required)
    EMPLOYEE_ID decimal(6,0) NOT NULL,

    -- Column to store the start date of the job, marked as NOT NULL (required)
    START_DATE date NOT NULL,

    -- Column to store the end date of the job, marked as NOT NULL (required)
    END_DATE date NOT NULL
        -- CHECK constraint to ensure the end date format is '--/--/----'
        CHECK (END_DATE LIKE '--/--/----'),

    -- Column to store job IDs, marked as NOT NULL (required)
    JOB_ID varchar(10) NOT NULL,

    -- Column to store department IDs with decimal precision of 4, 0, marked as NOT NULL (required)
    DEPARTMENT_ID decimal(4,0) NOT NULL
);

Let execute the above code in MySQL command prompt

Here is the structure of the table:

mysql> DESC job_history;
+---------------+--------------+------+-----+---------+-------+
| Field         | Type         | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| EMPLOYEE_ID   | decimal(6,0) | NO   |     | NULL    |       |
| START_DATE    | date         | NO   |     | NULL    |       |
| END_DATE      | date         | NO   |     | NULL    |       |
| JOB_ID        | varchar(10)  | NO   |     | NULL    |       |
| DEPARTMENT_ID | decimal(4,0) | NO   |     | NULL    |       |
+---------------+--------------+------+-----+---------+-------+
5 rows in set (0.04 sec)

Explanation:

The above MySQL code creates a table named "job_history" if it doesn't already exist. The table has five columns:

  • EMPLOYEE_ID: Stores employee IDs with decimal precision of 6, 0 and is marked as NOT NULL (required).
  • START_DATE: Stores the start date of a job and is marked as NOT NULL (required).
  • END_DATE: Stores the end date of a job and is marked as NOT NULL (required). Additionally, there is a "CHECK" constraint to ensure the end date follows the format '--/--/----'.
  • JOB_ID: Stores job IDs and is marked as NOT NULL (required).
  • DEPARTMENT_ID: Stores department IDs with decimal precision of 4, 0 and is marked as NOT NULL (required).

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Write a SQL statement to create a table named countries including columns country_id, country_name and region_id and make sure that no countries except Italy, India and China will be entered in the table.
Next: Write a SQL statement to create a table named countries including columns country_id,country_name and region_id and make sure that no duplicate data against column country_id will be allowed at the time of insertion.

What is the difficulty level of this exercise?



Follow us on Facebook and Twitter for latest update.