mysql学习笔记(2)
视图:
create view XXX as 「一个sql语句」
视图:创建一个临时表。在视图里不允许删除、更新,只允许查找。
使用视图:
select * from XXX
存储过程:
delimiter $$
create procedure p1()
BEGIN
select * from t1;
END $$
delimiter ;
修改终止符为$$,然后创建存储过程p1(),最后还要再将终止符改回为“;”
通过call p1()可以执行存储过程,在存储过程中可以存很多逻辑语句。
示例:
import pymysql
conn = pymysql.connect(host = '127.0.0.1', port = 3306, user = 'root', passwd = '123', db = 't1')
cursor = conn.cursor(cursor = pymysql.cursors.DictCursor)
## 执行存储过程,获取存储过程的结果集,将返回值设置给了 @_存储过程名_序号
cursor.callproc('p1', args = (1, 22, 3 ,4))
# set @_p1_0 = 1
# set @_p1_1 = 22
# set @_p1_2 = 3
# set @_p1_3 = 4
# call p1(1, 22, 3, 4)
result1 = cursor.fetchall()
print(result1)
## 获取执行完存储的参数
cursor.execute("select @_p1_0, @_p1_1, @_p1_2, @_p1_3") # 固定用法,@_后面跟存储过程名p1再跟下划线_再加0、1、2、3,也没那么智能,即使前两个参数都是in的,也获取出来
rusult2 = cursor.fetchall()
print(result2)
conn.commit()
cursor.close()
conn.close()
动态执行SQL语句:
SQL是字符串,借助特殊语法——字符串格式化“?”进行拼接。
触发器:
触发器里NEW表示即将插入的数据行,OLD表示即将删除的数据行。
触发器无法由用户直接调用,而是由对表的增删改操作被动引发。