/*进阶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-变量的声明/使用(输出)--全局变量/会话变量--用户变量/局部变量的更多相关文章

  1. eclipse自动生成变量名声明(按方法返回值为本地变量赋值)

    eclipse自动生成变量名声明(按方法返回值为本地变量赋值) ctrl+2+L 这个快捷键可自动补全代码,极大提升编码效率! 注:ctrl和2同时按完以后释放,再快速按L.不能同时按! 比如写这句代 ...

  2. C++ 变量的声明与定义的区别

    变量声明和定义的区别 我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:(望我的指点 ...

  3. C++头文件保护符和变量的声明定义

    1.#ifndef #define #endif头文件保护符 在编译的过程中,每个.cpp文件被看成一个单独的文件来编译成单独的编译单元,#ifndef 保证类的头文件在同一个.cpp文件里被多次引用 ...

  4. C#中对于变量的声明和初始化

    C#变量初始化是C#强调安全性的另一个例子.简单地说,C#编译器需要用某个初始值对变量进行初始化,之后才能在操作中引用该变量.大多数现代编译器把没有初始化标记为警告,但C#编译器把它当作错误来看待. ...

  5. 变量的声明和定义以及extern的用法

    变量的声明和定义以及extern的用法                                          变量的声明不同于变量的定义,这一点往往容易让人混淆. l         变量 ...

  6. MYSQL的用户变量(@)和系统变量(@@)

    9.3. 用户变量 可以先在用户变量中保存值然后在以后引用它:这样可以将值从一个语句传递到另一个语句.用户变量与连接有关.也就是说,一个客户端定义的变量不能被其它客户端看到或使用.当客户端退出时,该客 ...

  7. 走向面试之数据库基础:三、SQL进阶之变量、事务、存储过程与触发器

    一.变量那点事儿 1.1 局部变量 (1)声明局部变量 DECLARE @变量名 数据类型 ) DECLARE @id int (2)为变量赋值 SET @变量名 =值 --set用于普通的赋值 SE ...

  8. pl sql 变量的声明和赋值

    链接地址:http://www.cnblogs.com/zhengcheng/p/4168670.html 一.什么是PL-SQL PL-SQL是结合了Oracle过程语言和结构化查询语言(SQL)的 ...

  9. 转:SQL进阶之变量、事务、存储过程与触发器

    一.变量那点事儿 1.1 局部变量 (1)声明局部变量 DECLARE @变量名 数据类型 DECLARE @name varchar(20) DECLARE @id int (2)为变量赋值 SET ...

随机推荐

  1. C# .NET WINFORM MUTEX 互斥

    static class Program 里的全局变量: static System.Threading.Mutex appMutex; Main 方法里的内容: string exeName = & ...

  2. skynet sproto 问题

    刚碰到一个小细节,纠结了半个小时 sproto的协议,request 和{ 必须有空格

  3. ztree节点名称排序

    // result 为后台返回的集合,在渲染tree前的数据 result = result.sort(function (a, b) { // 判断前面一个是字母,后面一个不是字母,那么不换位置,返 ...

  4. Appium移动自动化测试-----(二)安装 Android SDK

    安装Android SDK Android SDK(Software Development Kit,软件开发工具包)提供了 Android API 库和开发工具构建,测试和调试应用程序.简单来讲,A ...

  5. OpenCV基于字节指针进行高效像素遍历

    直接获取Mat对象的像素块的数据指针,基于字节指针操作,实现快速像素遍历方法(1280x720, 彩色,仅需几毫秒完成).Mat对象的数据组织形式与像素块数据的存储方式,Mat对象由两个部分组成,元数 ...

  6. todo----mysql常用语句总结补充完成

    todo----mysql常用语句总结补充完成

  7. todo...git ssh http的区别

    todo...git ssh http的区别 https://www.jianshu.com/p/2cced982009f https://www.cnblogs.com/skating/p/6296 ...

  8. 第五章 模块之 getpass、sys、os

    5.5 getpass 密码不显示(只能在终端运行) 密码不显示(只能在终端运行) import getpass​pwd = getpass.getpass('请输入密码:')if pwd == '1 ...

  9. Vue.js 2.x 混入

    Vue.js 2.x mixins 混入 混入(mixins)是一种分发vue组件中可复用功能的非常灵活的方式.混入对象可以包含任意组件选项.当组件使用混入对象时,所有混入对象的选项将被混入该组件本身 ...

  10. 海思SDK 与各芯片对照

    本文链接:https://blog.csdn.net/liuxizhen2009/article/details/84261221 海思SDK不对外开放. 海思35系列sdk Hi3507   Hi3 ...