一、基础工作
1、创建数据库
mysql> create database school default character set utf8 collate utf8_general_ci;
2、创建表
#id 整型 主建 不能为空 自动增长
#name 字符型 长度50 不能为空
#age 整型 不能为空 默认值18
mysql> create table student(
-> id int primary key not null auto_increment,
-> name varchar(50) not null,
-> age int not null default 18
-> );
二、存储过程
(1)定义一个无参数存储过程
1、创建存储过程,批量创建10条记录
mysql> delimiter $$ # 将语句的结束符号从分号;临时改为两个$$(可以是自定义)
mysql> create procedure insertdata() # 创建存储过程
-> begin
-> declare i int default 1; # 创建变量,初始值1
-> while i < 10 do # 循环
-> insert into student (name,age) values (concat('tom',i),i);
-> set i = i+1;
-> end while; # 结束循环
-> end
-> $$
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ; # 将语句的结束符号恢复为分号
2、调用存储过程
call insertdata();
3、查看结果
mysql> select * from student;
+----+------+-----+
| id | name | age |
+----+------+-----+
| 1 | tom1 | 1 |
| 2 | tom2 | 2 |
| 3 | tom3 | 3 |
| 4 | tom4 | 4 |
| 5 | tom5 | 5 |
| 6 | tom6 | 6 |
| 7 | tom7 | 7 |
| 8 | tom8 | 8 |
| 9 | tom9 | 9 |
+----+------+-----+
9 rows in set (0.00 sec)
(2)定义一个带参数的存储过程(IN)
1、创建存储过程
mysql> delimiter $$
mysql> create procedure delete_data(in uid int) # 定义一个参数uid
-> begin
-> delete from student where id=uid;
-> end
-> $$
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
2、调用存储过程,删除第5条记录
mysql> call delete_data(5);
3、查看数据库
mysql> select * from student;
+----+------+-----+
| id | name | age |
+----+------+-----+
| 1 | tom1 | 1 |
| 2 | tom2 | 2 |
| 3 | tom3 | 3 |
| 4 | tom4 | 4 |
| 6 | tom6 | 6 |
| 7 | tom7 | 7 |
| 8 | tom8 | 8 |
| 9 | tom9 | 9 |
+----+------+-----+
8 rows in set (0.00 sec)
(3)定义一个带参数的存储过程(OUT)
1、创建存储过程
mysql> delimiter $$
mysql> create procedure select_data(out average int)
-> begin
-> select avg(age) into average from student;
-> end
-> $$
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
2、调用,求平均值
mysql> call select_date(@average);
3、查看
mysql> select @average;
+----------+
| @average |
+----------+
| 15 |
+----------+
1 row in set (0.00 sec)