!!!!需要注意的点:在mysql中每次定义完一条语句之后最后都要用“;”结尾,不然会报错
1、外部传入参数:
在创建过程时传入的参数选择这么定义:
IN `id` int,
IN `score` int,
IN `name` varchar(50)
在过程中用的时候直接使用定义的名字就可以直接用了
IN就代表着是传入的参数。
2、定义过程中的变量:
需要在begin 和end之间定义。
DECLARE name VARCHAR(255);
DECLARE sqlInsert VARCHAR(1000);
给变量赋值:
SET @name = (select name from person);#给全局变量name赋值。
select @name; #打印出刚才那么中赋上的值。
3、定义一条可以拼接执行的sql语句 使用concat进行拼接concat('xxx','xxx','xxxx');
SET @sqlInsert = CONCAT('SELECT * FROM person','where name = ','name');
PREPARE s2 FROM @sqlInsert;
execute s2; #上述两步是编辑sql语句与执行
deallocate prepare s2; #这步是释放语句函数
4、创建物理表与创建临时表:
创建物理表:
create table userinfo
(
userId int PRIMARY key,
userName VARCHAR(10),
pWord VARCHAR(10)
)ENGINE=InnoDB DEFAULT CHARSET=utf8
创建临时表:
CREATE TEMPORARY TABLE IF NOT EXISTS userinfo
(
userId int PRIMARY key,
userName VARCHAR(10),
pWord VARCHAR(10)
)ENGINE=InnoDB DEFAULT CHARSET=utf8
临时表跟物理表的创建区别:是否有“TEMPORARY”。 “IF NOT EXISTS”如果没有就创建,有就不创建了。
表删除
DROP TABLE userinfo; #创建的临时表用过最好是删除,不然你如果你不断开数据库,一直使用的话,临时表的内容是累加的,不会删除,临时表自动删除是数据库断开连接之后。
如果创建的表格或临时表中的数据是通过查询别的表来生成的:
CREATE TEMPORARY TABLE IF NOT EXISTS person SELECT * FROM userinfo;
临时表在同一条执行语句中,不能被访问多次,只能被访问一次。
5、mysql中的top n表示方法:
select * from person ORDER BY score desc LIMIT 1; #以score进行从大到小的排序,并且取出第一个 。limit后面的数字是多少,就是取出几条数据。
mysql中的在定义过程的时候,不能跟sql一样是dbo.sql等等,mysql中是不需要dbo这个样式的。