数据类型(日期、时间)
Year(年)
MariaDB [wangyu]> create table qwe(ip year);
创建一个数据类型为年(year)的表 (范围1901-2155)
Time(时间)
MariaDB [wangyu]> create table a3(id time);
创建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;
查看那些表有分区
Drop(删除)
MariaDB [cs]> alter table wy drop partition w03;
删除表分区(连数据一起删除)
Create(查看表结构)
MariaDB [cs]> show create table wy \G
查看表结构的改动
Select(查看单个分区)
MariaDB [wangyu]> select * from wang partition (p4);
查看单个分区的数据(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));
创建名叫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 [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 [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();
查看数据库版本