mariadb数据类型、存储过程、定时任务、分区

数据类型(日期、时间)
Year(年)
MariaDB [wangyu]> create table qwe(ip year);
在这里插入图片描述
创建一个数据类型为年(year)的表 (范围1901-2155)

Time(时间)
MariaDB [wangyu]> create table a3(id time);
在这里插入图片描述
mariadb数据类型、存储过程、定时任务、分区_第1张图片

创建a3表,id字段,time字段数据类型(时间)

Datetime

MariaDB [wangyu]> create table zzz (id datetime);
在这里插入图片描述

创建一个数据类型为日期+时间(datetime)的表

Date

MariaDB [wangyu]> create table a2 (id date);
在这里插入图片描述

创建a2表,id字段,date字段的数据类型。(日期)

MariaDB [wangyu]> insert into a2 values (‘2019-01-01’);

在这里插入图片描述
在这里插入图片描述

以日期为数据插入表中 否则会报错

数据分区

Explain(查看某张表的分区)

MariaDB [cs]> explain partitions select * from wy;
在这里插入图片描述

查看wy这张表的分区

Status(查看那些表有分区)

MariaDB [cs]> show table status \G;
mariadb数据类型、存储过程、定时任务、分区_第2张图片

查看那些表有分区

Drop(删除)

MariaDB [cs]> alter table wy drop partition w03;

在这里插入图片描述

删除表分区(连数据一起删除)

Create(查看表结构)

MariaDB [cs]> show create table wy \G

mariadb数据类型、存储过程、定时任务、分区_第3张图片

查看表结构的改动

Select(查看单个分区)

MariaDB [wangyu]> select * from wang partition (p4);
mariadb数据类型、存储过程、定时任务、分区_第4张图片

查看单个分区的数据(5.6以上版本可以用 以下版本用不成)

Partition(创建分区)
Create(创建)

MariaDB [wangyu]> create table q10(id
int) partition by range columns(id)(

-> partition q1 values less than (10),

-> partition q2 values less than (20),

-> partition q3 values less than (30),

-> partition q4 values less than (maxvalue));
mariadb数据类型、存储过程、定时任务、分区_第5张图片

创建名叫q10的表格,分四个区。分区类型range

Alter(添加)

MariaDB [wangyu]> alter table q11 add partition (partition q5 values less than(50));
在这里插入图片描述

添加一个分区

procedure存储过程
create(创建存储过程)

MariaDB [wangyu]> delimiter //     #使用delimter把SQL语句的结束符改为的'//'
MariaDB [wangyu]> create procedure  qqqq(in q int)    # 定义存储过程,读取外部的整型变量p_in
-> begin   
-> select q;    # 读取参数中传递的p_in的值,p_in来自存储过程外部   
-> set q = 2;    # 更改参数p_in的值为2   
-> select q;    # 再次查询参数p_in的值
-> end //
Query OK, 0 rows affected (0.01 sec)
MariaDB [wangyu]> delimiter ;    # 使用delimter把SQL语句的结束符改回原来的';'
MariaDB [wangyu]> set @num = 1 ;
Query OK, 0 rows affected (0.00 sec)
MariaDB [wangyu]> call qqqq(@num);    # 把前面定义的变量num做为参数,调用存储过程pin
+------+                             
| q   |           # 第一次查询到的值为1,经过存储过程为参数重新赋值,第二次查询到的值为2
+------+
|   1 |
+------+
1 row in set (0.00 sec)
+------+
| q   |
+------+
|   2 |
+------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)

编辑存储过程

If、declter、set (判断、函数、传参)


MariaDB [wangyu]> delimiter //     进入存储过程编辑界面
  MariaDB [wangyu]> create procedure   if1(in wang int)     创建存储过程,定义参数     
  -> begin     
  -> declare var int;    定义环境变量     
  -> set var = wang + 1;    给参数赋值     
  -> if var = 0 then        判断环境变量的值是否正确     
  -> insert into table2 values(17);      正确的话往表中写入数据     
  -> end if;                    
  结束判断     
  -> if wang = 0 then        判断参数     
  -> update table2 set id=id+1;    
  正确给参数+1     
  -> else    
  -> update table2 set id=id+2;     
  错误给参数+2
  -> end if;      判断结束   
  -> end //      创建存储过程的结束语句(//)
  Query OK, 0 rows affected (0.00 sec)
  MariaDB [wangyu]> delimiter ;
  MariaDB [wangyu]> call if1(2);
  Query OK, 0 rows affected (0.00 sec)
  MariaDB [wangyu]> select * from  table2;
  Empty set (0.00 sec)
  MariaDB [wangyu]> call if1(-1);
  Query OK, 1 row affected (0.00 sec)
  MariaDB [wangyu]> select * from  table2;
  +------+
  | id    |
  +------+
  |   19 |
  +------+
  1 row in set (0.00 sec)

存储过程中加入变量,判断,参数

Repeat(循环)




 
  
  MariaDB [wangyu]> delimiter //      进入存储过程界面
  MariaDB [wangyu]> create procedure  tableq(n1 int)    创建存储过程     
  -> begin     
  -> set @x=0;     
  -> repeat set @x=@x+1;       循环     
  -> insert into table1 values(@x);     
  -> until @x>n1     
  -> end repeat;            结束循环     
  -> end;     
  -> //
  Query OK, 0 rows affected (0.00 sec)
  MariaDB [wangyu]> delimiter ;
  MariaDB [wangyu]> call tableq(5);
  Query OK, 1 row affected (0.02 sec)
  MariaDB [wangyu]> select * from  tableq;
  ERROR 1146 (42S02): Table 'wangyu.tableq'  doesn't exist
    MariaDB [wangyu]> select * from  table1;
  +------+
  | id    |
  +------+
  |     1 |
  |     2 |
  |     3 |
  |     4 |
  |     5 |
  |     6 |
  +------+
  6 rows in set (0.00 sec)

存储过程中的循环

While(循环)




 
  
  MariaDB [wangyu]> delimiter //
  MariaDB [wangyu]> create procedure  while5()     
  -> begin     
  -> declare var int;     
  -> set var=0;     
  -> while var < 6 do     
  -> insert into table3 values(var);     
  -> set var=var+1;     
  -> end while;     
  -> end //
  Query OK, 0 rows affected (0.00 sec)
  MariaDB [wangyu]> delimiter ;
  MariaDB [wangyu]> call while5;
  Query OK, 1 row affected (0.01 sec)
  MariaDB [wangyu]> select * from  table3;
  +------+
  | id    |
  +------+
  |     0 |
  |     1 |
  |     2 |
  |     3 |
  |     4 |
  |     5 |
  +------+
  6 rows in set (0.00 sec)

存储过程中的while循环

Lables(跳出循环)




 
  
  MariaDB [wangyu]> delimiter //    进入编辑存储过程界面
  MariaDB [wangyu]> create procedure  loop1()     创建存储过程     
  -> begin     
  -> declare var int;     定义环境变量     
  -> set var = 0;     
  -> a:loop           循环(loop)     
  -> if var = 5 then     判断     
  -> set var=var+1;          
  -> iterate a;         重新开始执行循环     
  -> end if;     
  -> insert into table5 values(var);     
  -> set var=var+1;     
  -> if var >=6 then     判断     
  -> leave a;          离开循环     
  -> end if;            结束判断     
  -> end loop;         结束循环   
  -> end //          创建存储过程结束
  Query OK, 0 rows affected (0.01 sec)
  MariaDB [wangyu]> delimiter ;
  MariaDB [wangyu]> call loop1;
  Query OK, 1 row affected (0.01 sec)
  MariaDB [wangyu]> select * from
  table5;
  +------+
  | id    |
  +------+
  |     0 |
  |     1 |
  |     2 |
  |     3 |
  |     4 |
  |     6 |
  +------+
  6 rows in set (0.00 sec)

Lables(跳出循环的命令)

存储过程循环(loop),iterate(重新循环)

Case(判断)




 
  
  MariaDB [wangyu]> delimiter //    进入存储过程编辑界面
  MariaDB [wangyu]> create procedure  mmm(in q int)   创建存储过程定义传参     
  -> begin     
  -> declare var int;      定义变量     
  -> set var = q;    把传参定义成变量     
  -> case var       判断     
  -> when 0 then     如果变量等于0为真     
  -> insert into table2 values(11);     给表写入数据     
  -> when 1 then      如果变量等于1为真     
  -> insert into table2 values(22);      给表写入数据     
  -> else          否则为假     
  -> insert into table2 values(33);      给表写入数据     
  -> end case;    结束判断     
  -> end //     存储过程结束
  Query OK, 0 rows affected (0.01 sec)
  MariaDB [wangyu]> delimiter ;
  MariaDB [wangyu]> call mmm(0);    执行存储过程
  Query OK, 1 row affected (0.00 sec)   
  MariaDB [wangyu]> select * from  table2;   查看验证
  +------+
  | id    |
  +------+
  |    19 |
  |    30 |
  |    40 |
  |    50 |
  |    50 |
  |    50 |
  |    11 |
  |    11 |
  +------+
  8 rows in set (0.00 sec)

存储过程中case的应用

Show(查看存储过程)

MariaDB [wangyu]> show create procedure loop1 \G;

mariadb数据类型、存储过程、定时任务、分区_第6张图片

MariaDB [book]> show procedure status \G

查看所有存储过程

Drop(删除)

MariaDB [wangyu]> drop procedure loop1;

删除存储过程

event定时任务
查看是否开启定时策略

MariaDB [wangyu]> show variables like ‘%event_sche%’;

在这里插入图片描述

查看定时策略是否开启 (1或on为开启)

开启定时策略

MariaDB [wangyu]> set global event_scheduler=1;

mariadb数据类型、存储过程、定时任务、分区_第7张图片

开启定时策略

创建定时任务

MariaDB [wangyu]> create event wangyu
-> on schedule every 1 second
-> on completion preserve disable
-> do call while5;
在这里插入图片描述

创建定时任务

代码说明:
上面为整体代码,敲完再写分号
第一行create event day_event是创建名为second_event的事件,注意此处没有括号
第二行是创建周期定时的规则,本处的意思是每秒钟执行一次
第三行on completion preserve disable是表示创建后并不开始生效。
第四行do call test_proce()是该event(事件)的操作内容,表示调用我们刚刚创建的test_proce()存储过程

查询定时任务

MariaDB [wangyu]> SELECT event_name,event_definition,interval_value,interval_field,status
FROM information_schema.EVENTS;

在这里插入图片描述

查看所有定时任务

开启定时任务

MariaDB [wangyu]> alter event wangyu on
completion preserve enable;

开启定时任务

关闭定时任务

MariaDB [wangyu]> alter event wangyu on
completion preserve disable;

关闭定时任务

常见周期定时规则

Every

单位 second,minute,hour,day,week(周),quarter(季度),month,year
1 on schedule every 1 second //每秒执行1次
2 on schedule every 2 minute //每两分钟执行1次
3 on schedule every 3 day //每3天执行1次

At

1 on schedule at current_timestamp()+interval 5 day //5天后执行
2 on schedule at current_timestamp()+interval 10 minute //10分钟后执行
3 on schedule at ‘2016-10-01 21:50:00’ //在2016年10月1日,晚上9点50执行

STARTS ENDS

1 on schedule every 1 day starts current_timestamp()+interval 5 day ends current_timestamp()+interval 1 month //5天后开始每天都执行执行到下个月底
2 on schedule every 1 day ends current_timestamp()+interval 5 day //从现在起每天执行,执行5天

查询MySQL版本

MariaDB [(none)]> select version();

mariadb数据类型、存储过程、定时任务、分区_第8张图片

查看数据库版本

你可能感兴趣的:(数据库)