本文共 2427 字,大约阅读时间需要 8 分钟。
#具备以下特点的视图不允许更新
#1.包含以下关键字的sql语句:分组函数、distinct、group by、having、union、或者union all常量视图
select中包含子查询
join可以更新 不能插入
from一个不能更新的视图
where子句的子查询引用了from子句中的表
系统变量:
全局变量 会话变量 自定义变量: 用户变量 局部变量#一、系统变量
注意: 如果是全局级别,则需要加global,如果是会话级别,则需要添加session,如果不写,则默认session /*说明:变量由系统提供的,不是用户定义,属于服务器层面使用的语法:
1、查看所有的系统变量show global | session variables;
2、查看满足条件的部分系统变量
show global |【session】 variables like '%char%';
3、查看指定的某个系统变量的值
select @@global | 【session】.系统变量名;
4、为某个系统变量赋值
方式一:set global | 【session】 系统变量名= 值;
方式二:
set @@global | 【session】.系统变量名 = 值;
#全局变量的演示
作用域:服务器每次启动将为所有的全局变量赋初始值,针对于所有的会话(连接)有效,但不能跨重启 #1.查看所有的全局变量show global variables;
#2.查看部分的全局变量
show global variables like '%char%';
#3.查看指定的全局变量的值
select @@global.autocommit;
#4.为某个指定的全局变量赋值
set @@global.autocommit = 0;
#会话变量
作用域:仅仅针对于当前会话(连接)有效说明:变量是用户自定义的,不是由系统的
使用步骤: 声明 赋值 使用(查看、比较、运算等)#1.用户变量
作用域:针对于当前会话(连接)有效,同于会话变量的作用域 应用在任何地方,也就是begin end里面或begin end外面 #①声明并初始化set @用户变量名=值;或者set @用户变量名:=值;或者select @用户变量名:=值;
#②赋值(更新用户变量的值)
方式一:通过set或selectset @用户变量名=值;或者set @用户变量名:=值;或者select @用户变量名:=值;
方式二:通过select into
select 字段 into 变量名from 表;
#③使用(查看用户变量的值)
select @用户变量名;#2.局部变量 作用域:仅仅在定义它的begin end中有效 应用在begin end中的第一句话 #①声明
declare 变量名 类型;declare 变量名 类型 default 值;
#②赋值
方式一:通过set或selectset 局部变量名=值;或者set 局部户变量名:=值;或者select @局部变量名:=值;
方式二:通过select into
select 字段 into 局部变量名from 表;
#③使用
select 局部变量名;
对比用户变量和局部变量:
存储过程和函数:类似于java中的方法
好处: 1、提高代码的重要性 2、简化操作 3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率 #存储过程 含义:一组预先编译好的sql语句的集合,理解成批处理语句 #一、创建语法create procedure 存储过程名(参数列表)begin 存储过程体(一组合法的sql语句)end
注意:
1、参数列表包含三部分 参数模式 参数名 参数类型 举例: in stuname varchar(20)参数模式:
in:该参数可以作为输入,也就是该参数需要调用方法入值 out:该参数可以作为输出,也就是该参数可以作为返回值 inout:该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值2、如果存储过程体仅仅只有一句话,begin end可以省略
存储过程体中的每条sql语句的结尾要求必须加分号 存储过程的结尾可以使用 delimiter 重新设置 语法: delimiter 结束标记 案例: delimiter $ #二、调用语法 call 存储过程名(实参列表); #1.空参列表 #案例:插入到admin表中五条记录#2.创建带in模式参数的存储过程
#案例1:创建存储过程实现 根据女神名,查询对应的男神信息#案例2:创建存储过程实现用户是否登录成功
#3、创建带out模式的存储过程 #案例1:根据女神名,返回对应的男神名#案例2:根据女神名,返回对应的男神名和男神魅力值
#4.创建带inout模式参数的存储过程 #案例1:传入a和b两个值,最终a和b都翻倍并返回 begin end内部相当于局部变量的赋值a,b是局部变量【存储过程案例一】
#一、创建存储过程实现传入用户名和密码,插入到admin表中 #二、创建存储过程实现传入女神编号,返回女神姓名和电话 #三、创建存储过程实现传入两个女神的生日,返回大小 #三、删除存储过程语法:drop procedure 存储过程名#四、查看存储过程的信息
语法:show create procedure 存储过程名【存储过程案例二】 #四、创建存储过程实现传入一个日期,格式化成xx年xx月xx日并返回 #五、创建存储过程实现传入女神名称,返回 女神 and 男神 格式的字符串 #六、创建存储过程根据传入的条目数和起始索引,查询beauty表的记录
转载地址:http://xjzki.baihongyu.com/