SQL进阶17-变量的声明/使用(输出)--全局变量/会话变量--用户变量/局部变量
/*进阶17 变量
系统变量:
全局变量:
会话变量: 自定义变量:
用户变量:
局部变量: */
/*
#一: 系统变量
#说明: 变量由系统提供,不是用户定义的,属于服务器层面
#使用的语法 #1/查看所有的系统变量,
show global /[session] variables; 2.查看满足条件的部分系统变量
show global/[session] variables like '%char%'; 3.查看指定的某个系统变量的值
select @@global/[session] .系统变量名; 4.为某个系统变量赋值
方式一:
set global/[session] 系统变量名=值;
方式二:
set @@global/[session].系统变量名=值; 注意:
如果是全局级别,则需要加上global;
如果是会话级别,则需要加上session ;【如果不写,默认是这个】
*/
/*
#2>> 会话变量
作用域 : 仅对当前会话(查询的sql文件 / 连接) 有效 #① : 查看所有的会话变量
SHOW VARIABLES; #547行
SHOW SESSION VARIABLES; #547行 #② : 查看部分的会话变量
SHOW VARIABLES LIKE '%char%';
SHOW SESSION VARIABLES LIKE '%char%'; */
/*
#2>> 会话变量
作用域 : 仅对当前会话(查询的sql文件 / 连接) 有效 对比用户变量和局部变量:
作用域 定义和使用的位置 语法
用户变量: 当前会话 会话中的任何地方 必须加@符号,不用限定类型 局部变量: begin end中 只能在begin end中,且 一般不用加@符号,需要限定类型
为第一句话 */
#1》 全局变量
#① 查看所有的全局变量
SHOW GLOBAL VARIABLES;
#② 查看部分的全局变量
SHOW GLOBAL VARIABLES LIKE 'character%';
#③ 查看指定的全局变量
SELECT @@global.autocommit; #1 #④: 为某个指定的全局变量赋值
SET @@global.autocommit=0; #0 #2>> 会话变量
/*
作用域 : 仅对当前会话(查询的sql文件 / 连接) 有效
*/ #① : 查看所有的会话变量
SHOW VARIABLES; #547行
SHOW SESSION VARIABLES; #547行 #② : 查看部分的会话变量
SHOW VARIABLES LIKE '%char%';
SHOW SESSION VARIABLES LIKE '%char%'; #③ : 查看指定的某个会话变量
#select @@tx_isolation; #不支持
#select @@session.tx_isolation; #不支持查询隔离级别 #④ : 为某个会话变量赋值
#set @@tx_isolation='read-uncommitted'; #不支持更改隔离级别
#SET session @@tx_isolation='read-uncommitted'; #二: 自定义变量
/*
说明: 变量是用户自己进行定义的,不是由系统提供的;
使用步骤: 声明/赋值/使用(查看/比较/运算等..) */ #1.用户变量
#作用域:针对当前会话(连接)有效,同于会话变量的作用域
#赋值的操作符: =或:=
#① 声明并初始化
SET @用户变量名=值;
SET @用户变量名:=值;
SELECT @用户变量名:=值; #方式二:通过select into
SELECT 字段 INTO 变量名
FROM 表;
#输出结果
SELECT @num; #案例:
SET @name='john';
SET @name=100;
#声明并初始化
SELECT COUNT(*) INTO @num
FROM employees; SELECT @num;
#----------------------------- #2.局部变量 ------没办法实践!!实践错!!!!
/*
作用域:仅仅作用在定义它的begin end中有效
应用在begin end中的第一句话 */
#① 声明
DECLARE 变量名 类型;
DECLARE 变量名 类型 DEFAULT 值;
#① 赋值
SET 局部变量名=值;
SET 局部变量名:=值;
SELECT @用户变量名:=值;
#方式二:通过select into
SELECT 字段 INTO 局部变量名
FROM 表;
#③ 使用
SELECT 局部变量名;
# 案例--------------- #1.使用用户变量实现加法
SET @m=1;
SET @n=2;
SET @sum=@m+@n;
SELECT @sum; #2.使用局部变量实现加法
SQL进阶17-变量的声明/使用(输出)--全局变量/会话变量--用户变量/局部变量的更多相关文章
- eclipse自动生成变量名声明(按方法返回值为本地变量赋值)
eclipse自动生成变量名声明(按方法返回值为本地变量赋值) ctrl+2+L 这个快捷键可自动补全代码,极大提升编码效率! 注:ctrl和2同时按完以后释放,再快速按L.不能同时按! 比如写这句代 ...
- C++ 变量的声明与定义的区别
变量声明和定义的区别 我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:(望我的指点 ...
- C++头文件保护符和变量的声明定义
1.#ifndef #define #endif头文件保护符 在编译的过程中,每个.cpp文件被看成一个单独的文件来编译成单独的编译单元,#ifndef 保证类的头文件在同一个.cpp文件里被多次引用 ...
- C#中对于变量的声明和初始化
C#变量初始化是C#强调安全性的另一个例子.简单地说,C#编译器需要用某个初始值对变量进行初始化,之后才能在操作中引用该变量.大多数现代编译器把没有初始化标记为警告,但C#编译器把它当作错误来看待. ...
- 变量的声明和定义以及extern的用法
变量的声明和定义以及extern的用法 变量的声明不同于变量的定义,这一点往往容易让人混淆. l 变量 ...
- MYSQL的用户变量(@)和系统变量(@@)
9.3. 用户变量 可以先在用户变量中保存值然后在以后引用它:这样可以将值从一个语句传递到另一个语句.用户变量与连接有关.也就是说,一个客户端定义的变量不能被其它客户端看到或使用.当客户端退出时,该客 ...
- 走向面试之数据库基础:三、SQL进阶之变量、事务、存储过程与触发器
一.变量那点事儿 1.1 局部变量 (1)声明局部变量 DECLARE @变量名 数据类型 ) DECLARE @id int (2)为变量赋值 SET @变量名 =值 --set用于普通的赋值 SE ...
- pl sql 变量的声明和赋值
链接地址:http://www.cnblogs.com/zhengcheng/p/4168670.html 一.什么是PL-SQL PL-SQL是结合了Oracle过程语言和结构化查询语言(SQL)的 ...
- 转:SQL进阶之变量、事务、存储过程与触发器
一.变量那点事儿 1.1 局部变量 (1)声明局部变量 DECLARE @变量名 数据类型 DECLARE @name varchar(20) DECLARE @id int (2)为变量赋值 SET ...
随机推荐
- python解析本地HTML文件
Python使用爬虫技术时,每运行一次,本地都会访问一次主机.为避免完成程序前调试时多次访问主机增加主机负荷,我们可以在编写程序前将网页源代码存在本地,调试时访问本地文件即可.现在我来分享一下爬取资料 ...
- WXS-----学会使用WXS
学会使用WXS require函数用于引入其他WXS模块 不要重复引入两个wxs模块,不然后者会覆盖前者
- Linux 缺少 mime.types 文件 mailcap
问题描述: 一个项目当中使用的是 ossfs 挂载的一个 oss,在系统上传附件时,比如图片或视频时, 它的头信息为,application/octet-stream,上传后直接为二进制文件,访问的话 ...
- VMware中安装Ubntu
"懦夫没有能力去表现爱:爱是勇者的特权"----甘地 原文请见: https://blog.csdn.net/wumumang/article/details/54099997 一 ...
- php 文字转换成拼音
<?php //中文字转拼音 $d=array( array("a",-20319), array("ai",-20317), array("a ...
- 哈希--Hash,“散列”/“哈希”
哈希 Hash,翻译“散列”,音译为“哈希”,把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射,也就是散列值的空间通常远小于输入的空间,不同的输入可能会散 ...
- 定时任务-C#线程类 windows服务
原理 最常用的就是C#中 timer类写一个定时方法,然后在把他宿主到windows服务里面. C#中Timer分类 关于C# Timer类 在C#里关于定时器类就有3个 C# Timer使用的方法 ...
- Word表格和文本自由互换
未完 ...... 点击访问原文(进入后根据右侧标签,快速定位到本文)
- leetcode 2019.10.29 首次破百
刷题首次破百,记录一下自己成长的历程. 仍在路上,会慢慢变强的~
- 在ubuntu 16.04 的vm中添加新网卡,同一网段不同ip
在ubuntu 16.04 的vm中添加新网卡,同一网段不同ip 来源 https://blog.51cto.com/744478/2083672 在ubuntu 16.04 的vm中新加了一块网卡, ...