mirror of
https://github.com/boostorg/mysql.git
synced 2025-05-12 14:11:41 +00:00
89 lines
2.6 KiB
SQL
89 lines
2.6 KiB
SQL
--
|
|
-- Copyright (c) 2019-2024 Ruben Perez Hidalgo (rubenperez038 at gmail dot com)
|
|
--
|
|
-- Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
-- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
--
|
|
|
|
-- Connection system variables
|
|
SET NAMES utf8;
|
|
|
|
-- Database
|
|
DROP DATABASE IF EXISTS boost_mysql_examples;
|
|
CREATE DATABASE boost_mysql_examples;
|
|
USE boost_mysql_examples;
|
|
|
|
-- Tables
|
|
CREATE TABLE company(
|
|
id CHAR(10) NOT NULL PRIMARY KEY,
|
|
name VARCHAR(100) NOT NULL,
|
|
tax_id VARCHAR(50) NOT NULL
|
|
);
|
|
CREATE TABLE employee(
|
|
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
first_name VARCHAR(100) NOT NULL,
|
|
last_name VARCHAR(100) NOT NULL,
|
|
salary INT UNSIGNED,
|
|
company_id CHAR(10) NOT NULL,
|
|
FOREIGN KEY (company_id) REFERENCES company(id)
|
|
);
|
|
CREATE TABLE audit_log(
|
|
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
t TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
msg TEXT
|
|
);
|
|
CREATE TABLE notes(
|
|
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
title TEXT NOT NULL,
|
|
content TEXT NOT NULL
|
|
);
|
|
|
|
INSERT INTO company (name, id, tax_id) VALUES
|
|
("Award Winning Company, Inc.", "AWC", "IE1234567V"),
|
|
("Sector Global Leader Plc", "SGL", "IE1234568V"),
|
|
("High Growth Startup, Ltd", "HGS", "IE1234569V")
|
|
;
|
|
INSERT INTO employee (first_name, last_name, salary, company_id) VALUES
|
|
("Efficient", "Developer", 30000, "AWC"),
|
|
("Lazy", "Manager", 80000, "AWC"),
|
|
("Good", "Team Player", 35000, "HGS"),
|
|
("Enormous", "Slacker", 45000, "SGL"),
|
|
("Coffee", "Drinker", 30000, "HGS"),
|
|
("Underpaid", "Intern", 15000, "AWC")
|
|
;
|
|
|
|
-- Stored procedures
|
|
DELIMITER //
|
|
|
|
CREATE PROCEDURE get_employees(IN pin_company_id CHAR(10))
|
|
BEGIN
|
|
START TRANSACTION READ ONLY;
|
|
SELECT id, name, tax_id FROM company WHERE id = pin_company_id;
|
|
SELECT first_name, last_name, salary FROM employee WHERE company_id = pin_company_id;
|
|
COMMIT;
|
|
END//
|
|
|
|
CREATE PROCEDURE create_employee(
|
|
IN pin_company_id CHAR(10),
|
|
IN pin_first_name VARCHAR(100),
|
|
IN pin_last_name VARCHAR(100),
|
|
OUT pout_employee_id INT
|
|
)
|
|
BEGIN
|
|
START TRANSACTION;
|
|
INSERT INTO employee (company_id, first_name, last_name)
|
|
VALUES (pin_company_id, pin_first_name, pin_last_name);
|
|
SET pout_employee_id = LAST_INSERT_ID();
|
|
INSERT INTO audit_log (msg) VALUES ('Created new employee...');
|
|
COMMIT;
|
|
END//
|
|
|
|
DELIMITER ;
|
|
|
|
-- User
|
|
DROP USER IF EXISTS 'example_user'@'%';
|
|
CREATE USER 'example_user'@'%' IDENTIFIED WITH 'mysql_native_password';
|
|
ALTER USER 'example_user'@'%' IDENTIFIED BY 'example_password';
|
|
GRANT ALL PRIVILEGES ON boost_mysql_examples.* TO 'example_user'@'%';
|
|
FLUSH PRIVILEGES;
|