0% found this document useful (0 votes)
16 views

Mastering MySQL DBMS

Uploaded by

thelord.a000
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views

Mastering MySQL DBMS

Uploaded by

thelord.a000
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 55

MySQL DBMS

From Beginner to Master

▪1
What is Database?

 These days, organizations are considering data as one important


resource like finance, human resource and time.
 The management of these resources needs special attention and
development strategy.

 large amounts of data must be stored for efficient update and


retrieval.

 Due to this reason it is considered that databases are essential to every


business.
 Databases are likewise found at the core of many modern
organization’s information systems.
Why Database?…
 Database system is about

 Organization of data
 Efficient retrieval of data
 Reliable storage of data
 Maintaining consistent data
 Making useful information for decision making
What will be learned?
 This topic aims to equip students with practical skill in
 understanding,
 designing,
 developing,
 administering and managing a database system in an
organization.

Using MySQL DBMS


What is Database?…
 Database is a collection of information, usually,
kept in a repository, on a particular subject
 A database is a storage space for content or
information (data)
 Database (DB) is used
1. To store data
2. To manipulate information so that it can be sorted
and/or searched.
3. To make record keeping and tracking fast and
efficient.

Ultimate purpose of a DB system?


▪is to transform and manage

▪Data ▪Information ▪Knowledge ▪Action

▪Data driven decision making


What does “managing data” mean?
 Making information work for us

 Making information useful


 Avoiding "accidental disorganisation”

 Making information easily accessible and integrated with the


rest of our work
Basic Definitions
 Database:
 A collection of related data.

 Data:
 Known facts that can be recorded and have
an implicit meaning.

 Mini-world:
 Some part of the real world about which
data is stored in a database.

 Database Management System


(DBMS):
 A software package/ system to facilitate
the creation and maintenance of a
computerized database.
 Database System:
 The DBMS software together with the data itself. Sometimes, the applications are also
included.

Database and DBMS


 Database is simply a collection of data. In relational
database, data is organized into tables.
 Database Management System (DBMS) is software to
create, use, maintain and manage a collection of data
required by an organization or for a specific purpose.
 eg: Oracle, MSSQL, DB4, MySQL, etc)
Student_ID Name Major CGPA

S-101 Belay Biology 2.01

S-102 Mike Inf Sc 3.56


S-103 Tye Acct 2.73

… … …

MySQL Introduction
 MySQL is an open source database management
system
 SQL stands for the Structured Query Language. It
defines how to create, insert, retrieve, modify
and delete data
 Can be downloaded for FREE from
www.mysql.com
 Reference sites
NASA, Yahoo!, Compaq, Motorola
Basic MySQL Operations
 Create Database
 Create table
 Insert records
 Load data
 Retrieve records
 Update records
 Delete records
 Modify table
 Join table
 Drop table
 Optimize table
 Count, Like, Order by, Group by
 More advanced ones (sub-queries, stored procedures, triggers, views …)

How MySQL Stores data


 A MySQL server can store several databases
Databases are stored as directories
 Default is at /usr/local/mysql/var/
 Tables are stored as files inside each database (directory)
For each table, it has three files:
table.FRM file containing information about the table structure
table.MYD file containing the row data (actual data)
table.MYI containing any indexes created for the tables, as well
as some statistics about the tables.
Login to MySQL
 mysql –h hostname –u username –p [password]

 Example
% mysql -u usrname -p
Enter password: passowrd
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 23 to server version: 3.23.41.

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>
Create User
Syntax
mysql>use mysql;
 Use database mysql, used by the system

Example
 mysql>insert into user (Host, User, Password)
values (‘localhost’, ‘aauuser’, ‘MyPass@123’);
Create a new database user aauuser

 An alternative
 GRANT USAGE ON *.* TO ‘aauuser’@’localhost‘ IDENTIFIED BY
‘MyPass@123’;
Create User
 mysql>insert into db (Host, Db, User, Select_priv,
Insert_priv, Update_priv, Delete_priv, Create_priv,
Drop_priv) values (‘localhost’, ‘is_workshopbd’, ‘aauuser‘,
‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’);
 Create a new database is_workshopbd for user aauuser
 mysql>flush privileges
 Reloads the privileges from the grant tables in the database
mysql
 An alternative
 GRANT SELECT, INSERT, UPDATE, DELETE, CREATE,
DROP ON is_workshopbd.* TO ‘aauuser’@’localhost’
IDENTIFIED BY ‘MyPass@123’;
Create Database
What are the current databases at the server?
mysql> show databases;
+----------------------+
| Database |
+----------------------+
| mysql | mysql is a database (stores users’ password ) used by system.
| is_workshopbd |
+----------------------+

Create a database (make a directory) whose name is MyDB


mysql> create database MyDB;

Select database to use


mysql> use MyDB;
Database changed

What tables are currently stored in the MyDB database?


mysql> show tables;
Empty set (0.00 sec)

Create Table
 CREATE TABLE Table_Name (column_specifications)
 Example

mysql> CREATE TABLE student


-> (
-> student_ID INT UNSIGNED NOT NULL,
-> name VARCHAR(20) NOT NULL,
-> major VARCHAR(50),
-> cgpa float
-> );
Query OK, 0 rows affected (0.00 sec)
Student_ID Name Major CGPA
Display Table Structure
mysql> show tables;
+--------------------+
| Tables_in_MyDB |
+--------------------+
| student |
+--------------------+
1 row in set (0.00 sec)
mysql> describe student;
+---------------+----------------------+------+------+----------+--------+
| Field | Type | Null | Key | Default | Extra |
+---------------+----------------------+-------+-----+-----------+-------+
| student_ID | int(10) unsigned | | |0 | |
| name | varchar(20) | | | | |
| major | varchar(50) | YES | | NULL | |
| cgpa | varchar(5) | YES | | NULL | |
+---------------+----------------------+-------+------+----------+-------+
4 rows in set (0.00 sec)

Modify Table Structure


ALTER TABLE table_name Operations

mysql> alter table student add primary key (student_ID);


Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings:
0 mysql> describe student;
+---------------+--------------------- +-------+------+----------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+----------------------+-------+------+----------+-------+
| student_ID | int(10) unsigned | | PRI | 0 | |
| name | varchar(20) | | | | |
| major | varchar(10) | YES | | NULL | |
| cgpa | varchar(5) | YES | | NULL | |
+---------------+----------------------+-------+------+-----------+-------+
4 rows in set (0.00 sec)

Insert Record
 INSERT INTO table_name SET col_name1=value1,
col_name2=value2, col_name3=value3, …

INSERT INTO table_name SET col_name1=value1,


col_name2=value2, col_name3=value3, …

 Example
mysql> INSERT INTO student SET student_ID=S-101, name=‘Belay',
major=‘Biology’, cgpa=‘2.01’;
Query OK, 1 row affected (0.00 sec)
Student_ID Name Major CGPA

S-101 Belay Biology 2.01

Retrieve Record
Syntax
 SELECT what_columns
FROM table or tables
WHERE condition

 Example

mysql> SELECT major, cgpa FROM student


WHERE name=‘Mike';

Student_ID Name Major CGPA

S-101 Belay Biology 2.01


+-------+-------+
| major| cgpa | +-------+-------+ S-102 Mike Inf Sc 3.56
| Inf Sc | 3.56 |
S-103 Tye Acct 2.73
+-------+-------+
1 row in set (0.00 sec) … … …

mysql> SELECT * FROM student;

Update Record
 UPDATE table_name
SET which columns to change
WHERE condition
 Example
mysql> UPDATE student SET cgpa=3.01WHERE name=‘Belay';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0 mysql>
SELECT * FROM studentWHERE name=‘Belay’;
+------------+---------------+--------+--------+
| name | student_ID | major | cgpa |
+------------+---------------+--------+--------+
| Belay | S-101 | Biology | 3.01 |
+------------+---------------+--------+--------+
1 row in set (0.00 sec)

Delete Record
 DELETE FROM table_nameWHERE condition
 Example
mysql> DELETE FROM studentWHERE name=‘Belay';
Query OK, 1 row affected (0.00 sec)

Mysql> DELETE FROM student;


Will delete ALL student records!
More Table Retrieval
 OR
mysql> select name from student where major = 'BCB' OR major = 'CS';
 COUNT (Count query results)
mysql> select count(name) from student where major = 'BCB' OR major = 'CS';
 ORDER BY (Sort query results)
mysql> select name from student where major = 'BCB' OR major = 'CS‘ ORDER
BY name; mysql> select name from student where major = 'BCB' OR major = 'CS‘
ORDER
BY name DESC; mysql> select * from student where major = 'BCB' OR major
= 'CS‘ ORDER BY student_id ASC, name DESC

 LIKE (Pattern matching)


mysql> select name from student where name LIKE "J%";
 DISTINCT (Remove duplicates) mysql> select major from student; mysql>
select DISTINCT major from student;
Group By
 Cluster query results based on different groups
 Example
mysql> select major, count(*) from student GROUP BY major;
+---------+----------+
| major | count(*) |
+---------+----------+
| BBMB | 3|
| BCB | 3|
| Chem | 1|
| CS | 5|
| IG | 2|
| Math | 2|
| MCDB | 3|
| Stat | 2|
+---------+------------+
8 rows in set (0.00 sec)
NULL
 No Value
 Can not use the usual comparison operators (>, =, != …)
 Use IS or IS NOT operators to compare with
 Example

mysql> select name from student where project_ID = NULL;


Empty set (0.00 sec)

mysql> select name from student where project_ID IS NULL;


+-------+
| name|
+-------+
| Jerry |
+-------+
1 row in set (0.00 sec)
Drop Table
 DROP TABLE table_name
 Example
mysql> drop table student; Query
OK, 0 rows affected (0.00 sec)

 Logout MySQL
mysq> quit;

Data Loading
 Load batch data instead of inserting records one by one
 Example
mysql> LOAD DATA LOCAL INFILE “proj.txt" INTO TABLE project;
Query OK, 2 rows affected (0.01 sec)
Records: 2 Deleted: 0 Skipped: 0 Warnings: 0

mysql> LOAD DATA LOCAL INFILE “emp.txt" INTO TABLE employee;


Query OK, 4 rows affected (0.00 sec)
Records: 4 Deleted: 0 Skipped: 0 Warnings: 0

Loading to a Table from File


MariaDB [today]> load data local infile "C:\\xampp\\mysql\\data\\today\\emp.txt"
into table Employee;
Query OK, 4 rows affected, 7 warnings (0.00 sec)
Records: 4 Deleted: 0 Skipped: 0 Warnings: 7

MariaDB [today]> select * from Employee;


+--------+-------------------------+----------+-------+-----------+------------+
| EID | EName | Salary | Age | Gender | Tel |
+--------+-------------------------+----------+-------+-----------+------------+
|E-01 | 'Abebe Belay' | 12 | 34 | M | 121212 |
| E-02 | 'Birtukan Ayalew' | 24 | 29 | F | 131313 |
| E-03 | 'Yohannes Wube' | 10 | 42 | M | 141414 |
| E-04 | 'Mulugeta Gewe' | 29 | 32 | M | 151515 |
+-------+--------------------------+----------+------+--------+----------------+

Writing to a Table
MariaDB [today]> select * from employee into outfile "emp_out.txt";
Query OK, 4 rows affected (0.00 sec)
Joining Tables
Types of Joins
Inner joins
 return only matching rows
 enable a maximum of 256 tables to be joined at the same
time.

Types of Joins
Outer joins
 return all matching rows, plus nonmatching rows
from one or both tables
 can be performed on only two tables or views at a
time.

Left Full Right


Cartesian Product
To understand how SQL processes a join, it is important to
understand the concept of the Cartesian product.
A query that lists multiple tables in the FROM clause without
a WHERE clause produces all possible combinations of rows
from all tables. This result is called the Cartesian product.
select * from
one, two;

Cartesian Product
How many rows are returned from this query?
select * from three,
four;

Table Three Table Four Partial Results Set


X A X B
1 a1 2 x1
X A X B 1 a1 2 x2
1 a1 2 x1 1 a1 3 y
1 a2 2 x2 1 a1 5 v
2 b1 3 y 1 a2 2 x1
2 b2 5 v 1 a2 2 x2
4 d
1 a2 3 y
5*4=20
1 a2 5 v
2 b1 2 x1

Creating a Table with PK 2 b1 2 x2

and FK
Joining tables requires tables be related with one another using
primary key foreign key relationship.
One has to create the related tables before joining/combining tables.
MariaDB [today]> create table employee
-> (EID char(5) primary key,
-> Name char(25) not null,
-> Age int unsigned,
-> Salary float
-> );
Query OK, 0 rows affected (0.29 sec)

MariaDB [today]> create table dept


-> (DID char(3) primary key,
-> DName char(50) not null,
-> Tel char(15),
-> MangID char(5),
-> constraint foreign key fk_dept_emp(MangID) references employee(EID)
-> );
Query OK, 0 rows affected (0.21 sec)

Insert values to a Table


MariaDB [today]> insert into employee values ('E-01', 'Abebe', 29, 14650);
Query OK, 1 row affected (0.01 sec)

MariaDB [today]> insert into employee values ('E-02', 'Belay', 41, 24000);
Query OK, 1 row affected (0.01 sec)
MariaDB [today]> insert into employee values ('E-03', 'Taye', 52, 4000);
Query OK, 1 row affected (0.02 sec)

MariaDB [today]> insert into employee values ('E-04', 'Hirut', 32, 14000);
Query OK, 1 row affected (0.09 sec)

MariaDB [today]> select * from employee;


+-------+----------+--------+----------+
| EID | Name | Age | Salary |
+-------+----------+--------+----------+
| E-01 | Abebe | 29 | 14650 |
| E-02 | Belay | 41 | 24000 |
| E-03 | Taye | 52 | 4000 |
| E-04 | Hirut | 32 | 14000 |
+-------+----------+-------+-----------+
4 rows in set (0.00 sec)

Insert values to a Table with FK


 Inserting a record in Department table where the attribute MangID
is a foreign key referring to values in Employee table on the attribute
EID.
MariaDB [today]> insert into dept values ('D01', 'Finance', '343434', 'E-02');
Query OK, 1 row affected (0.02 sec)

MariaDB [today]> insert into dept values ('D02', 'Human Resource', '555555', 'E-03');
Query OK, 1 row affected (0.03 sec)

MariaDB [today]> select * from dept;


+-------+------------------------+-----------+-------------+
| DID | DName | Tel | MangID |
+-------+------------------------+-----------+-------------+
| D01 | Finance | 343434 | E-02 | | D02 |
Human Resource | 555555 | E-03 |
+-------+------------------------+-----------+-------------+
2 rows in set (0.00 sec)

Combining Tables
 Combining tables using Cartesian will result in a table where each
record of the first table is combined with each table of the second
table in a combinatory manner. This will note extract related tuple.
MariaDB [today]> select * from employee, dept;
+--------+----------+-------+----------+-------+------------------------+-----------+-------------+
| EID | Name | Age | Salary | DID | DName | Tel | MangID |
+-------+-----------+-------+----------+-------+------------------------+-----------+-------------+
| E-01 | Abebe | 29 | 14650 | D01 | Finance | 343434 | E-02 |
| E-01 | Abebe | 29 | 14650 | D02 | Human Resource| 555555 | E-03 |
| E-02 | Belay | 41 | 24000 | D01 | Finance | 343434 | E-02 |
| E-02 | Belay | 41 | 24000 | D02 | Human Resource | 555555 | E-03 |
| E-03 | Taye | 52 | 4000 | D01 | Finance | 343434 | E-02 |
| E-03 | Taye | 52 | 4000 | D02 | Human Resource | 555555 | E-03 |
| E-04 | Hirut | 32 | 14000 | D01 | Finance | 343434 | E-02 |
| E-04 | Hirut | 32 | 14000 | D02 | Human Resource | 555555 | E-03 |
+-------+----------+------+------------+--- ---+------------------------+------------+-------------+
8 rows in set (0.00 sec)

Null Values and Outer joins


Explicit joins in SQL:
Product(name, category)
Purchase(prodName, store)
SELECTProduct.name, Purchase.store
FROM Product JOINPurchase ON
Product.name = Purchase.prodName
Same as:
SELECTProduct.name, Purchase.store
FROM Product, Purchase
WHERE Product.name = Purchase.prodName
But Products that never sold will be lost !

Inner Joining Related Table


 Inner Join will extract only record that are related based on Foreign
Key Primary Key equality.

MariaDB [today]> select * from employee inner join dept on eid=mangid;


+--------+----------+-------+----------+-------+-------------------------+-----------+-------------+
| EID | Name | Age | Salary | DID | DName | Tel | MangID |
+-------+-----------+-------+----------+-------+-------------------------+-----------+-------------+
| E-02 | Belay | 41 | 24000 | D01 | Finance | 343434 | E-02 |
| E-03 | Taye | 52 | 4000 | D02 | Human Resource | 555555 | E-03 |
+-------+-----------+-------+----------+-------+-------------------------+-----------+-------------+
2 rows in set (0.00 sec)

Outer Joining Related Table


MariaDB [today]> insert into dept values (‘D03', 'Procurement', '777777’, NULL);
Query OK, 1 row affected (0.03 sec)

MariaDB [today]> select * from dept;


+-------+------------------------+-----------+-------------+
| DID | DName | Tel | MangID |
+-------+------------------------+-----------+-------------+
| D01 | Finance| 343434 | E-02 | | D02 |
Human Resource | 555555 | E-03 |
| D03 | Procurement | 777777 | NULL |
+-------+------------------------+-----------+-------------+
2 rows in set (0.00 sec)

MariaDB [today]> select * from employee;


+-------+----------+--------+----------+ In outer join, record either from the
| EID | Name | Age | Salary | left or right or both sides which are
+-------+----------+--------+----------+ not related will be included in the
| E-01 | Abebe | 29 | 14650 | result.
| E-02 | Belay | 41 | 24000 |
| E-03 | Taye | 52 | 4000 |
| E-04 | Hirut | 32 | 14000 |
+-------+----------+-------+-----------+
4 rows in set (0.00 sec)

Null Values and Outer joins


Left outer joins in SQL:
Product(name, category)
Purchase(prodName, store)
SELECTProduct.name, Purchase.store
FROM Product LEFTOUTERJOINPurchase ON
Product.name = Purchase.prodName
Right outer joins in SQL:
Product(name, category)
Purchase(prodName, store)
SELECTProduct.name, Purchase.store
FROM Product RightOUTERJOINPurchase ON
Product.name = Purchase.prodName

Left and Right Outer Join


MariaDB [today]> select * from employee left outer join dept
-> on employee.eid=dept.mangid;
+--------+---------+--------+----------+----------+------------------------+-----------+-------------+
| EID | Name | Age | Salary | DID | DName | Tel | MangID |
+--------+---------+--------+----------+----------+------------------------+-----------+-------------+
| E-02 | Belay | 41 | 24000 | D01 | Finance | 343434 | E-02 |
| E-03 | Taye | 52 | 4000 | D02 | Human Resource | 555555 | E-03 |
| E-01 | Abebe | 29 | 14650 | NULL | NULL | NULL | NULL |
| E-04 | Hirut | 32 | 14000 | NULL | NULL | NULL | NULL |
+--------+---------+--------+----------+----------+------------------------+-----------+------------+
4 rows in set (0.01 sec)

MariaDB [today]> select * from employee right outer join dept


-> on employee.eid=dept.mangid;
+----------+-----------+---------+------------+-------+------------------------+----------+-------------+
| EID | Name | Age | Salary | DID | DName | Tel | MangID |
+----------+----------+----------+------------+-------+------------------------+----------+-------------+
| E-02 | Belay | 41 | 24000 | D01 | Finance | 343434 | E-02 | | E-03 | Taye | 52 |
4000 | D02 | Human Resource | 555555 | E-03 |
| NULL | NULL | NULL | NULL | D03 | Procurement | 777777 | NULL |
+----------+----------+----------+------------+-------+------------------------+----------+-------------+
3 rows in set (0.00 sec)

Backup Database
 mysqldump
 Writes the contents of database tables into text files
 Example
>mysqldump –p bcb –T ./

 Select … INTO OUTFILE ‘/path/outputfilename’;


 Example
 >SELECT * FROM student INTO OUTFILE ‘/dump/student.txt’;
 mysql –u username –p password –h host database > /path/to/file

 mysql –u bcb –p tuckseed0 bcb > test

MySQL Indexing
 Index
 Index columns that you search for
 Example
MariaDB [today]> alter table employee add index(name);
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
MariaDB [today]> describe employee;
+--------+--------------------+------+-------+----------+--------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------------+------+-------+-----------+-------+
| EID | char(5) | NO | PRI | NULL | |
| Name | char(25) | NO | MUL | NULL | |
| Age | int(10) unsigned | YES | | NULL | |
| Salary | float | YES | | NULL | |
+--------+--------------------+------+--------+----------+-------+
4 rows in set (0.00 sec)

MySQL Optimization (cont.)


 EXPLAIN
Find what is going on a slow query
Example
 mysql> EXPLAIN select * from student s, project p
where s.project_ID = p.project_ID order by p.level;
Stored Procedures
Stored Procedures
 Like procedures in other languages
 Allow for quick reuse of language constructs
 Reduce the amount of code that must be written
 Allow parameter-driven code
 Must change the default command delimiter “;” to something else

 General format in MySQL


DELIMITER $$
CREATE PROCEDURE procName(optionalParamDecls)
BEGIN
SQL_Statements
END$$
DELIMITER ;
Stored Procedures
Example:

MariaDB [today]> delimiter @@


MariaDB [today]> create procedure myview()
-> begin
-> select * from employee inner join dept
-> where employee.eid=dept.mangid;
-> end; @@
Query OK, 0 rows affected (0.01 sec)

MariaDB [today]> delimiter ;


Executing Stored Procedures
call procName(); call
procName(arg1, arg2,…);
Examples:
call advList();
call p4(12345);
Executing Stored Procedures
Example:
MariaDB [today]> call myview();
+------+-------+------+--------+-----+----------------+--------+--------+
| EID | Name | Age | Salary | DID | DName | Tel | MangID |
+------+-------+------+--------+-----+----------------+--------+--------+
| E-02 | Belay | 41 | 24000 | D01 | Finance | 343434 | E-02 |
| E-03 | Taye | 52 | 4000 | D02 | Human Resource | 555555 | E-03 |
+------+-------+------+--------+-----+----------------+--------+--------+
2 rows in set (0.00 sec)

Query OK, 0 rows affected (0.02 sec)


MariaDB [today]> ->

Modifying and Deleting Stored


Procedures
 To drop a stored procedure in MySQL
DROP PROCEDURE procName;
or
DROP PROCEDURE IF EXISTS procName;
 To modify a procedure, DROP it then CREATE it again
SQL Triggers
 To monitor a database and take a corrective action when a
condition occurs
 Examples:
 Charge $10 overdraft fee if the balance of an account after a withdrawal
transaction is less than $500
 Limit the salary increase of an employee to no more than 5% raise

CREATE TRIGGER trigger-name


trigger-time trigger-event
ON table-name
FOR EACH ROW trigger-
action;

trigger-time {BEFORE, AFTER} trigger-


event {INSERT,DELETE,UPDATE}
Triggers
MariaDB [today]> create trigger default_trig
-> before insert on employee
-> for each row
-> begin
-> if(new.salary is NULL) then
-> set new.salary=5000;
-> end if;
-> end @@
Query OK, 0 rows affected (0.03 sec)

MariaDB [today]>delimiter ;
Example: Triggers MariaDB [today]> select * from employee;
+------+-------+------+--------+
| EID | Name | Age | Salary |
+------+-------+------+--------+
| E-01 | Abebe | 29 | 14650 |
| E-02 | Belay | 41 | 24000 |
| E-03 | Taye | 52 | 4000 |
| E-04 | Hirut | 32 | 14000 |
+------+-------+------+--------+
MariaDB [today]> insert into employee values ('E-05','Hareg',29,NULL);
Query OK, 1 row affected (0.03 sec)

MariaDB [today]> select * from employee;


+------+-------+------+--------+
| EID | Name | Age | Salary |
+------+-------+------+--------+
| E-01 | Abebe | 29 | 14650 |
| E-02 | Belay | 41 | 24000 |
| E-03 | Taye | 52 | 4000 |
| E-04 | Hirut | 32 | 14000 |
| E-05 | Hareg | 29 | 5000 |
+------+-------+------+--------+
5 rows in set (0.00 sec)

MariaDB [today]>

Remarks about Trigger


 If you have the same or similar processing that has to go on
during insert and delete, then it’s best to have that in a
procedure or function and then call it from the trigger.
 A given trigger can only have one event.
 A good naming standard for a trigger is
<table_name>_event if you have the room for that in the
name.
 Just like a function or a procedure, the trigger body will
need a begin … end unless it is a single statement trigger.
The Special Powers of a Trigger
 While in the body of a trigger, there are potentially two sets of column
values available to you, with special syntax for denoting them.
 old.<column name> will give you the value of the column before the DML
statement executed.
 new.<column name> will give you the value of that column after the DML
statement executed.
 Insert triggers have no old values available, and delete triggers have no
new values available for obvious reasons.
 Update triggers have both the old and the new values available.
 Only triggers can access these values this way.
 These tables are created when the transaction start and dropped when
the transaction end.
 These tables (old and new) will be used for logging as well

End of Topic

You might also like