前言

mysql数据库使用mysql语言。
mysql语言的基本功能是对数据表的增、删、改、查,主要就是方便操作数据表。
当然mysql语言也有其它语言的if条件选择和while循环,所以可以当编程语言用。
但是mysql语言没有数组,可以用表格代替数组。mysql语言没有类,因为不是面向对象,而是面向过程。

表格操作

1.创建表格
Navicat上,点Table,鼠标右键菜单选择NewTable。
Name是列名,Type是数据类型,Length是数据长度,Key是主键。
列名取名时,用英文,建议以_col结尾,表示这个名称是列名(column),免得以后和变量名搞混了。
数字的type选int(整数),字符串的type选varchar,长度默认是255字节。
某一列设置主键,就说明这一列的数据不能重复。主键成为索引,能大幅度提高数据查找速度。数据多又没有主键索引的表格,查找速度慢。
最后,保存和取名。
创建这样的表格:名叫test0,分为3列:编号(id_col)、姓名(name_col)、成绩(score_col)。
编号是int整数型,姓名是varchar字符型,成绩是int整数型。编号是主键。
+--------+----------+-----------+
| id_col | name_col | score_col |
+--------+----------+-----------+
|        |          |           |
+--------+----------+-----------+
注意:不要用id和name作为列名,因为这两个名称是系统保留字。

2.向表格添加(插入)数据
insert into 表名(列名) values(要插入的值);
例如:insert into test0(id_col,name_col,score_col) values(1,"张三",85);
+--------+----------+-----------+
| id_col | name_col | score_col |
+--------+----------+-----------+
|    1   |   张三   |    85     |
+--------+----------+-----------+
注意1:sql语句的标点符号和括号都是英文的
注意2:字符外面要加引号,而数字不用加引号
注意3:SQL语句结尾后,要有分号

3.修改数据
update 表名 set 列名 = 修改的数值 where 列名 = 列值;
where后面是条件。
例如:update test0 set score_col = 80 where name_col = "张三"; 
就是把张三的成绩修改为80.
+--------+----------+-----------+
| id_col | name_col | score_col |
+--------+----------+-----------+
|    1   |   张三   |    80     |
+--------+----------+-----------+
张三的成绩由85变为80

4.删除数据
delete from 表名 where 列名 = 列值
例如:delete from test0 where name_col = "张三";
表就空了:
+--------+----------+-----------+
| id_col | name_col | score_col |
+--------+----------+-----------+
|        |          |           |
+--------+----------+-----------+

5.查找数据
先添加数据,可双击表名,添加内容
添加完,点下面的对钩,再点加号,继续添加
+--------+----------+-----------+
| id_col | name_col | score_col |
+--------+----------+-----------+
|   1    |   张三   |    80     |
+--------+----------+-----------+
|   2    |   李四   |    75     |
+--------+----------+-----------+
select 列名 from 表名 where 列名 = 列值
例如:select score_col from test0 where name_col = "张三";
显示:80

存储过程

调用存储过程:
存储过程就是一堆程序的集合,调用存储过程,就是执行这堆程序。
Navicat中,点左侧导航栏的函数(Function),鼠标右键新建函数(New function),就可以创建存储过程。

查询(Query)界面中使用变量,不能用declare,而用@变量名,例如@a,且不用定义。
调用存储过程用call,例如创建名为abc的存储过程,调用abc就写call abc();

带有参数的存储过程:
create procedure abc(in a int,out b int)
BEGIN
set b = a + 2;
END

查询(Query)界面调用存储过程:
call abc(1,@b);
select @b;
显示:3
字符形式:
call abc("哈哈",@b);
select @b;

存储过程调用存储过程,例如:
declare a int;
declare b int;
set a = 1;
call abc(a,b);
select b;
显示:3
in 表示输入参数,out表示输出参数。

变量操作

1.定义变量
存储过程中,定义变量用declare。
例如declare s varchar(10);
就是定义名叫s的变量,长度为10字节。
varchar是动态的,定义10个字节长度,如果只用到3个字节,实际占存储就3个字节。
也可以declare n int;
就是定义名叫n的数字类型的变量。

2.变量赋值
set s = "哈哈";
set n = 6;

3.显示变量的值
select s;
显示:哈哈
select n;
显示:6

4.变量值的加减乘除
declare m int;
set m = n + 2;
select m;
显示:8
也可以写:
set m = n - 1;
set m = n * 3;
星号表示乘号。
set m = n / 2;
斜杠表示除号。

条件选择和循环

1.if条件选择
declare x int;
declare y varchar(10);
set x = 2;
set y = "";
if x > 3 then
	set y = "大于3";
else
	set y = "小于3";
end if;
select y;
显示:小于3
if是条件,如果不满足if后面的条件,就执行if条件后面的程序。如果不满足if条件,就执行else后面的程序。

如果多个条件选择:
if 条件1 then
	程序1
elseif 条件2 then
	程序2
elseif 条件3 then
	程序3
else
	程序4
end if;
注意1:如果前3个条件都不满足,就默认执行else后面的程序4,也可以不写最后面的else和程序4。
注意2:else和if是连起来的,不是分开的。

2.while循环
while 循环条件 do
	程序
	变量自增
end while;
例如:
declare n int;
declare i int;
set n = 2;
set i = 1;
while i < 3 do
	set n = n + 10;
	set i = i + 1;
end while;
select n;
显示:22

第一次循环:
i值为初始化的1,i小于3,满足循环条件,所以执行while里的程序,
使n的值加10,n原本是2,加了10,变为12,
接下来i使自己增加1,于是i变为2。
第二次循环:
i的值已为2,i依然小于3,满足循环条件,执行while循环,
使n的值再加10,既由12加10变为22,
接着i自增1,由2变为3。
第三次循环:
i的值已为3,不满足小于3这个条件,所以第三次循环无法执行。
最终结果:循环了2次,n的值为22,i的值为3。