1. 创建视图
一般格式:create view 视图名称 as SQL语句
create view v1 as
select * from userinfo where nid>=12;
2. 删除视图
一般格式:drop view 视图名称
drop view v1;
3. 修改视图
一般格式:alter view 视图名称 as SQL语句
alter view v1 as
select * from student where sid<=10;
MySQL无参存储过程
1. 创建存储过程
delimiter && // 将系统;更新为&&
CREATE PROCEDURE p1() // 创建存储名称p1其中()必加
BEGIN // 开始
SELECT * FROM score; // 在其中添加SQL语句
END && // 结束
delimiter ; // 重新将系统&& 更新为;
2. 直接在Navicat中执行 执行存储过程
call p1()
3. Pycharm 执行MySQL存储过程
import pymysql
// 创建连接
conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='1234567890',db='Table_Test')
// 打开游标
cursor = conn.cursor()
// 执行存储过程
cursor.callproc('p1')
result = cursor.fetchall()
print(result) // ((1, 1, 1, 60), (2, 1, 2, 59), (3, 2, 1, 100), (4, 2, 2, 89), (5, 3, 1, 49), (6, 3, 2, 70), (7, 1, 3, 89), (8, 2, 3, 67), (9, 3, 3, 47), (10, 4, 1, 90), (11, 4, 2, 40), (12, 4, 3, 80), (13, 5, 1, 31), (14, 5, 2, 70), (15, 5, 3, 100), (16, 6, 1, 89), (18, 6, 3, 88), (19, 1, 1, 89))
cursor.close()
conn.close()
MySQL有参存储过程
1. 创建存储过程
in
仅用于传入参数用out
仅用于返回值用inout
既可以传入又可以当作返回值
delimiter && // 将系统;更新为&&
CREATE PROCEDURE p1(
in i1 int, // 让内部使用
in i2 int,
inout i3 int,
out r1 int // 即使传递给内部,也不会取到值,这个参数只用来从内部传递值到外部
) // 创建存储名称p1其中()必加
BEGIN // 开始
DECLARE temp1 int; // DECLARE创建某个类型,以后赋值只能该类型的值
DECLARE temp2 int default 0; // 创建默认值
set temp1 = 1; // 变量的赋值
set r1 = i1 + i2 + temp1 + temp2;
set i3 = i3 + 100;
// 也可在此处增加SQL语句
END && // 结束
delimiter ; // 重新将系统&& 更新为;
2. Navicat中执行存储过程
set @t1 =4;
set @t2 = 0;
CALL p1 (1, 2 ,@t1, @t2);
SELECT @t1,@t2;
3. Pycharm指定MySQL存储过程
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))
# 获取执行完存储的参数
cursor.execute("select @_p1_0,@_p1_1,@_p1_2,@_p1_3")
result = cursor.fetchall()
conn.commit()
cursor.close()
conn.close()
print(result)
网友评论