1.创建一个数据库用户myuser_201911074,密码为123 CREATE USER myuser_201911074 IDENTIFIED WITH mysql_native_password BY '123'; 2.将数据库mydb_201911074上所有权限授予题1创建的用户 GRANT ALL ON mydb_201911074 TO myuser_201911074; 3.查询题1创建的用户拥有哪些权限 SHOW GRANTS FOR myuser_201911074; 4.撤销题1创建的用户拥有的权限 REVOKE ALL ON mydb_201911074 FROM myuser_201911074; 5.创建一个角色role_201911074 CREATE ROLE role_201911074; 6.将数据库mydb_201911074上所有权限授予题5创建的角色 GRANT ALL ON mydb_201911074 TO role_201911074; 7.将角色role_201911074 授予题2创建的用户 GRANT ALL ON role_20191074 TO myuser_201911074; 8. 修改题1创建的用户,将所有角色设置为默认角色 ALTER USER myuser_201911074 DEFAULT ROLE role_201911074; 9.修改题1创建的用户的口令为pwd123, ALTER USER myuser_201911074 IDENTIFIED WITH mysql_native_password BY 'pwd123'; 10.以题1创建的用户访问数据库,并创建表( CREATE TABLE test(id INT); ) CREATE TABLE test(id INT); 11.删除题5创建的角色 DROP ROLE role_201911074; 12.删除题1创建的用户 DROP USER myuser_201911074;
创建数据库mydb_201911074,并切换到该数据库 CREATE DATABASE mydb_201911074; USE mydb_201911074; 创建一个员工表emp_201911074,包含员工编号(empid),员工姓名(empname),员工性别(empgender) USE mysql; CREATE TABLE emp_201911074(empid INT,empname VARCHAR(20),empgender VARCHAR(1)); 创建一个表空间mytbs_201911074,对应磁盘文件mytbs_201911074.ibd CREATE TABLESPACE mytbs_201911074 ADD DATAFILE'mytbs_201911074.ibd'; 显示表格emp_201911074 DESC emp_201911074; 修改表emp_201911074,将其存储在表空间mytbs_201911074 ALTER TABLE emp_201911074 TABLESPACE=mytbs_201911074; 修改表emp_201911074,将其表空间修改为file_per_table ALTER TABLE emp_201911074 TABLESPACE=innodb_file_per_table; 修改表emp_201911074,增加列empage,放在empname后面 ALTER TABLE emp_201911074 ADD COLUMN empage INT AFTER empname; 修改表emp_201911074,将empname放在第一列 ALTER TABLE emp_201911074 MODIFY empname VARCHAR(20) FIRST; 修改表emp_201911074,将empname的类型修改为varchar(100) ALTER TABLE emp_201911074 MODIFY empname VARCHAR(100); 修改表emp_201911074,删除列empage ALTER TABLE emp_201911074 DROP COLUMN empage; 删除表emp_201911074,删除表空间mytbs_201911074,删除数据库database DROP TABLE emp_201911074; DROP TABLESPACE mytbs_201911074; DROP DATABASE mydb_201911074;
1.创建一个员工表emp_201911074,包含员工编号(empid),员工姓名(empname),员工性别(empgender), 员工入职日期(startdate),员工工资(salary),要求empid自增,同时设为主键PRIMARY KEY CREATE TABLE emp_201911074(empid INT AUTO_INCREMENT PRIMARY KEY,empname VARCHAR(20), empgender VARCHAR(10),startdate DATETIME,salary NUMERIC(10,2)); 2.将下表数据插入题1创建的表中 empid empname empgender startdate salary 1 李飞 男 1999-07-01 8000 2 赵美琪 女 2000-10-01 6000 3 齐凌凌 女 1992-08-10 12000 4 朱凯 男 2005-06-01 4500 INSERT INTO emp_201911074 VALUES(1,'李飞','男','1999-07-01',8000), (2,'赵美琪','女','2000-10-01',6000), (3,'齐凌凌','女','1992-08-10',12000), (4,'朱凯','男','2005-06-01',4500); 3.修改题1创建的表,增加一列员工年龄empage,放在empname后 ALTER TABLE emp_201911074 ADD COLUMN empage INT AFTER empname; 4.修改题1创建表的数据,将 齐凌凌 的年龄设为50 UPDATE emp_201911074 SET empage=50 WHERE empname='齐凌凌'; 5.修改题1创建表的数据,将 李飞 的年龄设为45 UPDATE emp_201911074 SET empage=45 WHERE empname='李飞'; 6.修改题1创建表的数据,将 赵美琪 的年龄设为40 UPDATE emp_201911074 SET empage=40 WHERE empname='赵美琪'; 7.修改题1创建表的数据,将 朱凯 的年龄设为35 UPDATE emp_201911074 SET empage=35 WHERE empname='朱凯'; 8.修改题1创建表的数据,将工资较低的两名员工工资上调500,要求使用order by和limit语句 UPDATE emp_201911074 SET salary=salary+500 ORDER BY salary LIMIT 2; 9.修改题1创建表的数据,将年龄较大的两名员工工资上调800,要求使用order by和limit语句 UPDATE emp_201911074 SET salary=salary+800 ORDER BY empage DESC LIMIT 2; 10.修改题1创建表的数据,将性别“男”修改成“male”,“女”修改成“female” UPDATE emp_201911074 SET empgender='male' WHERE empgender='男'; UPDATE emp_201911074 SET empgender='female' WHERE empgender='女'; 11.修改题1创建表的数据,按年龄上调所有人工资,每1岁增加10元,例如某员工50岁,那么工资就增加50*10一共500元 UPDATE emp_201911074 SET salary=salary+empage*10; 12.从题1创建的表中删除年龄大于50且工资大于10000的员工 DELETE FROM emp_201911074 WHERE empage>50 AND salary>10000;
1. 创建院系表dept_201911074,包含院系编号dno,院系名dname,其中dno为主键,且院系名不能为空 CREATE TABLE dept_201911074(dno INT PRIMARY KEY,dname VARCHAR(20) NOT NULL); 2. 在院系表中插入两行数据 dno dname 1 计算机 2 外语 INSERT INTO dept_201911074 VALUES(1,'计算机'),(2,'外语'); 3. 创建教师表teacher_201911074,包含教师编号tno 主键,教师姓名tname 非空,教工身份证号 tid 唯一,教师性别tgender,教工年龄 tage,所属院系编号 deptid CREATE TABLE teacher_201911074(tno INT PRIMARY KEY,tname VARCHAR(20) NOT NULL,tid VARCHAR(18) UNIQUE,tgender VARCHAR(4),tage INT,deptid INT); 4. 在表teacher_201911074的列deptid上增加外键约束,引用dept_201911074 表的dno列 ALTER TABLE teacher_201911074 ADD FOREIGN KEY (deptid) REFERENCES dept_201911074(dno); 5. 在教师表teacher_201911074 插入如下数据 tno tname tid tgender tage deptid 101 张潇 210204198008111234 男 40 1 102 李大明 211220197809101235 女 42 2 INSERT INTO teacher_201911074 VALUES(101,'张潇','210204198008111234','男',40,1), (102,'李大明','211220197809101235','女',42,2); 6. 查询教师表teacher_201911074 上的约束 SHOW CREATE TABLE teacher_201911074; 7. 删除教师表teacher_201911074 上的外键约束 ALTER TABLE teacher_201911074 DROP FOREIGN KEY teacher_201911074_ibfk_1; 8.在教师表teacher_201911074 上增加外键约束,当院系表dept_201911074 修改主键列值时级联更新教师表teacher_201911074,当院系表dept_201911074删除数据时将教师表teacher_201911074中对应教师的所属院系编号置成null。 ALTER TABLE teacher_201911074 ADD FOREIGN KEY (deptid) REFERENCES dept_201911074(dno) ON UPDATE CASCADE ON DELETE SET NULL;
基于如下员工表:
eid员工编号 | ename员工姓名 | age年龄 | startdate入职日期 | gender性别 | salary工资 | dname所属部门 |
---|---|---|---|---|---|---|
101 | 王明 | 30 | 2012-07-10 | 男 | 4800 | 财务 |
102 | 李飞 | 30 | 2012-07-31 | 男 | 4800 | 财务 |
103 | 朱启亮 | 35 | 2008-10-01 | 男 | 6000 | 后勤 |
104 | 朱菲菲 | 36 | 2009-07-01 | 女 | 5800 | 后勤 |
105 | 李丽 | 2012-01-01 | 女 | 5000 | 财务 | |
106 | 李晓 | 45 | 1998-07-01 | 男 | 9000 | 财务 |
CREATE TABLE emp_201911074(eid INT PRIMARY KEY,ename VARCHAR(20),age INT,startdate DATETIME,gender VARCHAR(10),salary INT,dname VARCHAR(20)); INSERT INTO emp_201911074 VALUES (101,'王明',30,'2012-07-10','男',4800,'财务'), (102,'李飞',30,'2012-07-31','男',4800,'财务'), (103,'朱启亮',35,'2008-10-01','男',6000,'后勤'), (104,'朱菲菲',36,'2009-07-01','女',5800,'后勤'), (105,'李丽',NULL,'2012-01-01','女',5000,'财务'), (106,'李晓',45,'1998-07-01','男',9000,'财务'); 1. 查询所有员工信息 SELECT * FROM emp_201911074; 2. 查询所有姓李的员工姓名、所属部门和工资 SELECT ename,dname,salary FROM emp_201911074 WHERE ename LIKE '朱%'; 3. 查询工资介于5000~8000的员工信息 SELECT * FROM emp_201911074 WHERE salary BETWEEN 5000 AND 8000; 4. 查询财务部门的男员工信息 SELECT * FROM emp_201911074 WHERE dname='财务' AND gender='男'; 5. 查询2000年前入职的员工信息 SELECT * FROM emp_201911074 WHERE startdate<'2000-01-01'; 6. 查询后勤部门年龄低于40的女员工信息 SELECT * FROM emp_201911074 WHERE dname='后勤' AND age<40 AND gender='女'; 7. 查询男员工中工资较高的两个员工信息 SELECT * FROM emp_201911074 WHERE gender='男' ORDER BY salary DESC LIMIT 2; 8. 查询员工信息,按工资从高到低排序,分页显示,每页显示5行,写出显示第一页数据的语句 SELECT * FROM emp_201911074 ORDER BY salary DESC LIMIT 0,5; 9. 统计员工人数、最高工资、最低工资和平均工资 SELECT COUNT(*),MAX(salary),MIN(salary),AVG(salary) FROM emp_201911074; 10. 统计每个部门的员工人数、最高工资、最低工资和平均工资 SELECT COUNT(*),MAX(salary),MIN(salary),AVG(salary) FROM emp_201911074 GROUP BY dname; 11. 统计每个部门工资大于5000的员工人数、最高工资、最低工资和平均工资 SELECT COUNT(*),MAX(salary),MIN(salary),AVG(salary) FROM emp_201911074 WHERE salary>5000 GROUP BY dname; 12. 统计每个姓氏的人数(使用substr函数取姓名中的姓) SELECT SUBSTR(ename,1,1),COUNT(*) FROM emp_201911074 GROUP BY SUBSTR(ename,1,1); 13. 按入职年份统计人数(使用year函数取入职日期中的年份) SELECT YEAR(startdate),COUNT(*) FROM emp_201911074 GROUP BY YEAR(startdate); 14. 统计每个姓氏的人数,显示人数大于2人的姓氏和人数 SELECT SUBSTR(ename,1,1),COUNT(*) FROM emp_201911074 GROUP BY SUBSTR(ename,1,1) HAVING COUNT(*)>2;
基于部门表dept和员工表emp完成题目
部门表 dept
字段 | 类型 | 说明 |
---|---|---|
dno | int | 部门编号,主键 |
dname | varchar(30) | 部门名称 |
员工表 emp
字段名 | 类型 | 说明 |
---|---|---|
eno | int | 员工编号,主键 |
ename | varchar(20) | 姓名 |
eage | int | 年龄 |
egender | varchar(10) | 性别 |
salary | int | 工资 |
dno | int | 部门编号,外键,引用dept(dno) |
CREATE TABLE dept( dno INT PRIMARY KEY, dname VARCHAR(20) ); CREATE TABLE emp( eno INT PRIMARY KEY, ename VARCHAR(20), eage INT, egender VARCHAR(20), salary INT, dno INT, FOREIGN KEY(eno) REFERENCES dept(dno) ); INSERT INTO dept VALUES(1,'财务'),(2,'研发'),(3,'销售'); INSERT INTO emp VALUES(101,'李敏', 30,'男',3000,1),(102,'赵一铭',32,'男',3500,1),(103,'李巧凤',40,'女',4000,1); INSERT INTO emp VALUES(104,'朱阳爱',45,'男',5500,1),(105,'蔡敏敏',40,'女',4500,1),(106,'吴大刚',42,'男',4800,1); INSERT INTO emp VALUES(107,'王晓红',36,'女',4000,1),(108,'滕格格',48,'男',6000,1),(109,'朱琳娜',55,'女',8000,1); INSERT INTO emp VALUES(201,'郑琦', 40,'男',5000,2),(202,'牟琦', 50,'男',6000,2),(203,'杨薇', 52,'女',7000,2); INSERT INTO emp VALUES(204,'张鸿鹄',26,'男',3000,2),(205,'李丽', 30,'女',3500,2),(206,'赵曼莎',35,'女',4200,2); INSERT INTO emp VALUES(301,'赵鹏', 28,'男',3000,3),(302,'李丽芬',45,'女',5000,3),(303,'朱琳琳',50,'女',7000,3); 1. 查询员工信息,要求输出 员工编号、姓名、性别、年龄以及所在部门名称 SELECT eno,ename,egender,eage,dname FROM emp,dept WHERE dept.dno=emp.dno; 2. 查询每个部门的信息,输出信息包括部门名称、员工人数、工资总额、最大工资、最小工资和平均工资 SELECT dname,COUNT(eno),COUNT(salary),MAX(salary),MIN(salary),AVG(salary) FROM emp,dept WHERE dept.dno=emp.dno GROUP BY dname; 3. 统计每个部门不同性别人数,输出信息包括部门名称、性别、人数 SELECT dname,egender,COUNT(eno) FROM emp,dept WHERE dept.dno=emp.dno GROUP BY dname,egender; 4. 查询每个部门的最小员工年龄,输出信息包括部门名称、最小年龄 SELECT dname,MIN(eage) FROM emp,dept WHERE dept.dno=emp.dno GROUP BY dname; 5. 查询每个部门每种性别的最小员工年龄,输出信息包括部门名称、最小年龄 SELECT dname,MIN(eage) FROM emp,dept WHERE dept.dno=emp.dno GROUP BY dname,egender; 6. 查询年龄大于所有员工平均年龄的员工信息,要求输出 员工编号、姓名、性别、年龄 SELECT eno,ename,egender,eage FROM emp WHERE eage>(SELECT AVG(eage) FROM emp); 7. 查询年龄最小的员工信息,要求输出 员工编号、姓名、性别、年龄 SELECT eno,ename,egender,eage FROM emp WHERE eage=(SELECT MIN(eage)FROM emp); 8. 查询年龄最小的员工信息,要求输出员工编号、姓名、性别、年龄以及所在部门名称 SELECT eno,ename,egender,eage,dname FROM emp,dept WHERE dept.dno=emp.dno AND eage=(SELECT MIN(eage)FROM emp); 9. 查询每个部门年龄最小的员工信息,要求输出 员工编号、姓名、性别、年龄和所属部门编号 SELECT eno,ename,egender,eage,dno FROM emp e WHERE eage=(SELECT MIN(eage) FROM emp WHERE dno=e.dno); 10. 查询每个部门年龄最小的员工信息,要求输出员工编号、姓名、性别、年龄以及所在部门名称 SELECT eno,ename,egender,eage,dname FROM emp e,dept d WHERE e.dno=d.dno AND eage=(SELECT MIN(eage) FROM emp WHERE dno=e.dno);
基于部门表dept和员工表emp完成题目
部门表 dept
字段 | 类型 | 说明 |
---|---|---|
dno | int | 部门编号,主键 |
dname | varchar(30) | 部门名称 |
员工表 emp
字段名 | 类型 | 说明 |
---|---|---|
eno | int | 员工编号,主键 |
ename | varchar(20) | 姓名 |
eage | int | 年龄 |
egender | varchar(10) | 性别 |
salary | int | 工资 |
dno | int | 部门编号,外键,引用dept(dno) |
CREATE TABLE dept( dno INT PRIMARY KEY, dname VARCHAR(20) ); CREATE TABLE emp( eno INT PRIMARY KEY, ename VARCHAR(20), eage INT, egender VARCHAR(20), salary INT, dno INT, FOREIGN KEY(dno) REFERENCES dept(dno) ); INSERT INTO dept VALUES(1,'财务'),(2,'研发'),(3,'销售'); INSERT INTO emp VALUES(101,'李敏', 30,'男',3000,1),(102,'赵一铭',32,'男',3500,1),(103,'李巧凤',40,'女',4000,1); INSERT INTO emp VALUES(104,'朱阳爱',45,'男',5500,1),(105,'蔡敏敏',40,'女',4500,1),(106,'吴大刚',42,'男',4800,1); INSERT INTO emp VALUES(107,'王晓红',36,'女',4000,1),(108,'滕格格',48,'男',6000,1),(109,'朱琳娜',55,'女',8000,1); INSERT INTO emp VALUES(201,'郑琦', 40,'男',5000,2),(202,'牟琦', 50,'男',6000,2),(203,'杨薇', 52,'女',7000,2); INSERT INTO emp VALUES(204,'张鸿鹄',26,'男',3000,2),(205,'李丽', 30,'女',3500,2),(206,'赵曼莎',35,'女',4200,2); INSERT INTO emp VALUES(301,'赵鹏', 28,'男',3000,3),(302,'李丽芬',45,'女',5000,3),(303,'朱琳琳',50,'女',7000,3); 1. 查看部门表dept有哪些索引。 SHOW INDEX FROM dept; 2. 查看员工表emp有哪些索引。 SHOW INDEX FROM emp; 3. 在员工表emp的年龄列eage上增加一个索引emp_eage_idx(要求使用alter table语句进行增加) ALTER TABLE emp ADD INDEX emp_eage_idx(eage); 4. 在员工表emp的姓名列ename上增加一个索引emp_ename_idx(要求使用create index语句进行增加) CREATE UNIQUE INDEX emp_ename_idx ON emp(ename); 5.删除员工表emp上外键约束 ALTER TABLE emp DROP FOREIGN KEY emp_ibfk_1; 6.删除员工表emp的dno列上的索引 ALTER TABLE emp DROP INDEX emp_ename_idx; 7.创建视图v1,显示员工中年龄大于40的男员工姓名 CREATE VIEW v1 AS SELECT ename FROM emp WHERE egender='男' AND eage>40; 8.创建视图v2,显示员工中工资较高的前3名女员工信息 CREATE VIEW v2 AS SELECT * FROM emp WHERE egender='女' ORDER BY salary DESC LIMIT 3; 9.创建视图v3,显示工资最低的员工信息 CREATE VIEW v3 AS SELECT * FROM emp WHERE salary=(SELECT MIN(salary) FROM emp); 10.创建视图v4,显示男员工中年龄最小的员工信息 CREATE VIEW v4 AS SELECT * FROM emp WHERE egender='男' and eage=(SELECT MIN(eage) FROM emp); 11.创建视图v5,显示每个部门工资最高的员工姓名、工资和所在部门名 CREATE VIEW v5 AS SELECT ename,salary,dname FROM emp e,dept d WHERE e.dno=d.dno AND eage=(SELECT Max(salary) FROM emp WHERE dno=e.dno); 12.删除视图v1、v2、v3、v4、v5 DROP VIEW v1,v2,v3,v4,v5;
基于员工表emp完成测试题目
字段名 | 类型 | 说明 |
---|---|---|
eno | int | 员工编号,主键 |
ename | varchar(20) | 姓名 |
eage | int | 年龄 |
startdate | datetime | 入职日期 |
egender | varchar(10) | 性别 |
salary | int | 工资 |
dname | int | 部门名称 |
CREATE TABLE emp( eno INT PRIMARY KEY, ename VARCHAR(20), eage INT, startdate DATETIME, egender VARCHAR(20), salary INT, dname VARCHAR(20) ); INSERT INTO emp VALUES (101,'王 明',30,'2012-07-10','男',4800,'财务'), (102,'李 飞',30,'2012-07-31','男',4800,'财务'), (103,'朱启亮',35,'2008-10-01','男',6000,'后勤'), (104,'朱菲菲',36,'2009-07-01','女',5800,'后勤'), (105,'李 丽',NULL,'2012-01-01','女',5000,'财务'), (106,'李 晓',45,'1998-07-01','男',9000,'财务'); 1.查询姓名长度超过10个字符的员工信息。 SELECT * FROM emp WHERE CHAR_LENGTH(ename)<10; 2.查询入职年份是2012年的员工信息。 SELECT * FROM emp WHERE YEAR(startdate)=2012; 3.将员工姓名中的空格去掉 UPDATE emp SET ename=REPLACE(ename,' ',''); 4.查询员工编号是101的姓氏 SELECT SUBSTR(ename,1,1)FROM emp WHERE eno=101; 5.查询员工姓名、所属部门以及工龄 SELECT ename,dname,FLOOR(DATEDIFF(NOW(),startdate)/365)FROM emp; 6.修改员工表增加工龄列workage ALTER TABLE emp ADD COLUMN worage INT; 7.计算每个员工工龄并更新到workage列 UPDATE emp SET worage=FLOOR(DATEDIFF(NOW(),startdate)/365) WHERE eno=eno; 8.查询入职月份是1~6月的员工信息 SELECT * FROM emp WHERE MONTH(startdate) BETWEEN 1 AND 6; 9.查询入职月份正好是本月的员工信息 SELECT * FROM emp WHERE MONTH(startdate)=MONTH(NOW()); 10.查询入职日期恰好是当时月末的员工信息 SELECT * FROM emp WHERE LAST_DAY(startdate)=DATE(startdate);
1.编写一个函数func_add_201911074,完成两个数相加,函数带两个输入参数(相加的两个数),返回值返回两个数的和。 DELIMITER $$ DROP FUNCTION IF EXISTS func_add_201911074$$ CREATE FUNCTION func_add_201911074(m INT,n INT) RETURNS INT DETERMINISTIC BEGIN RETURN m+n; END $$ DELIMITER ; SELECT func_add_201911074(1,2); 2.编写一个函数func_jc_201911074,函数带1个输入参数n,返回值为1~n的累乘积。 DELIMITER$$ DROP FUNCTION IF EXISTS func_jc_201911074$$ CREATE FUNCTION func_jc_201911074(n INT) RETURNS INT DETERMINISTIC BEGIN DECLARE r INT DEFAULT 1; WHILE n>0 DO SET r=r*n; SET n=n-1; END WHILE; RETURN r; END$$ DELIMITER ; SELECT func_jc_201911074(4); 3.编写一个存储过程sp_add_201911074,完成两个数相加,过程带两个输入参数(相加的两个数),一个输出参数(两个数的和,输出参数定义时在参数名前添加关键字OUT)。 DELIMITER$$ DROP PROCEDURE IF EXISTS sp_add_201911074$$ CREATE PROCEDURE sp_add_201911074(m INT,n INT,OUT r INT) BEGIN SET r=m+n; END$$ DELIMITER ; CALL sp_add_201911074(4,5,@r); SELECT @r;
4.编写一个存储过程sp_split,完成文件全路径名的拆分,函数带一个输入参数(全路径文件名,比如“c:\doc\course\db\text.txt”),两个输出参数分别返回路径和文件名(“c:\doc\course\db”, “text.txt”)。
1.假设表 CREATE TABLE emp(id INT,NAME VARCHAR(20),salary INT,dname VARCHAR(20),startdate DATE); 编写一个触发器emp_trig,当在表上执行insert时触发器被触发,插入员工数据时根据入职年份以及入职顺序自动生成员工编号id。 INSERT INTO emp VALUES(NULL,'张三',5000,'财务','2020-10-01'),(2,'张三峰',6000,'财务','2020-6-01'),(23,'张四峰',8000,'财务','2001-6-20'); 触发器会根据入职日期取入职年份2020,如果是2020年入职的第一个员工,则员工编号为2020001 DELIMITER $$ DROP TRIGGER IF EXISTS emp_trig$$ CREATE TRIGGER emp_trig BEFORE INSERT ON emp FOR EACH ROW BEGIN DECLARE maxid INT; SELECT IFNULL(MAX(id),YEAR(new.startdate)*1000)+1 INTO maxid FROM emp WHERE YEAR(startdate)=YEAR(new.startdate); SET new.id=maxid; END$$ DELIMITER ; SELECT * FROM emp; SHOW CREATE TRIGGER emp_trig; 2.创建一个事件,每月月末最后一天的晚上23点59分59秒运行一次,清除日志表log中的三个月前的数据。 CREATE TABLE applog(msgdate DATE,msg VARCHAR(100)); INSERT INTO applog VALUES ('2019-06-01','this is test log message.'), ('2020-08-01','this is test log message.'), ('2020-09-01','this is test log message.'), ('2020-10-01','this is test log message.'); DELIMITER$$ DROP EVENT IF EXISTS clearlog$$ CREATE EVENT clearlog ON SCHEDULE EVERY 1 MONTH STARTS '2020-12-31 23:59:59' DO BEGIN DELETE FROM applog WHERE msgdate