Essential SQL Operations and Table Relationships for Database Management

Core SQL Commands

Create database and tables:

CREATE DATABASE company_db DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

CREATE TABLE department (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(16) NOT NULL
) DEFAULT CHARSET=utf8;

CREATE TABLE employee (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  full_name VARCHAR(16) NOT NULL,
  email VARCHAR(32) NOT NULL,
  age INT,
  dept_id INT
) DEFAULT CHARSET=utf8;

Data Insertion

INSERT INTO department(name) VALUES ("Engineering");
INSERT INTO department(name) VALUES ("Operations");
INSERT INTO department(name) VALUES ("Sales");

INSERT INTO employee(full_name, email, age, dept_id) 
VALUES ("John Smith", "john.smith@company.com", 30, 1),
       ("Sarah Johnson", "sarah.j@company.com", 28, 1),
       ("Michael Brown", "m.brown@company.com", 35, 2),
       ("Emily Davis", "emily.d@company.com", 42, 3);

Exact Queries

SELECT * FROM employee WHERE age > 30;
SELECT id, full_name FROM employee WHERE dept_id = 1;
SELECT * FROM employee WHERE age BETWEEN 25 AND 40;

Pattern Matching

SELECT * FROM employee WHERE full_name LIKE '%John%';
SELECT * FROM employee WHERE email LIKE '%@company.com';

Data Transformation

SELECT id, full_name, 
  CASE 
    WHEN age < 30 THEN 'Junior'
    WHEN age < 40 THEN 'Mid-level'
    ELSE 'Senior'
  END AS experience_level
FROM employee;

Result Ordering

SELECT * FROM employee ORDER BY age DESC;
SELECT * FROM employee ORDER BY dept_id ASC, age DESC;

Result Limiting

SELECT * FROM employee LIMIT 3;
SELECT * FROM employee ORDER BY age DESC LIMIT 2;

Data Aggregation

SELECT dept_id, COUNT(id) AS staff_count 
FROM employee 
GROUP BY dept_id 
HAVING COUNT(id) > 1;

Table Joins

SELECT e.id, e.full_name, d.name AS department 
FROM employee e 
LEFT JOIN department d ON e.dept_id = d.id;

Data Combination

SELECT id, name FROM department
UNION
SELECT id, full_name FROM employee;

Dataabse Table Relationships

One-to-Many Relationship

CREATE TABLE department (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(16) NOT NULL
) DEFAULT CHARSET=utf8;

CREATE TABLE employee (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  full_name VARCHAR(16) NOT NULL,
  dept_id INT NOT NULL,
  CONSTRAINT fk_emp_dept FOREIGN KEY (dept_id) REFERENCES department(id)
) DEFAULT CHARSET=utf8;

Many-to-Many Relationship

CREATE TABLE student (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(16) NOT NULL
) DEFAULT CHARSET=utf8;

CREATE TABLE course (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  title VARCHAR(16) NOT NULL
) DEFAULT CHARSET=utf8;

CREATE TABLE enrollment (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  student_id INT NOT NULL,
  course_id INT NOT NULL,
  CONSTRAINT fk_enroll_student FOREIGN KEY (student_id) REFERENCES student(id),
  CONSTRAINT fk_enroll_course FOREIGN KEY (course_id) REFERENCES course(id)
) DEFAULT CHARSET=utf8;

User Access Control

Account Management

CREATE USER 'dev_user'@'localhost' IDENTIFIED BY 'secure_pass123';
RENAME USER 'dev_user'@'localhost' TO 'developer'@'192.168.1.%';
ALTER USER 'developer'@'192.168.1.%' IDENTIFIED BY 'new_password_456';

Privilege Assignment

GRANT SELECT, INSERT ON company_db.* TO 'developer'@'192.168.1.%';
REVOKE INSERT ON company_db.employee FROM 'developer'@'192.168.1.%';
FLUSH PRIVILEGES;

Permission Verification

SHOW GRANTS FOR 'developer'@'192.168.1.%';

Tags: MySQL sql DatabaseDesign ForeignKeys UserAuthorization

Posted on Sat, 07 Nov 2026 16:07:27 +0000 by zapa