数据类型与变量
1.数据类型
- 整型
- 如果插入的数值超出整型范围,out of range 并且自动插入临界值
- 如果不设置类型长度,会默认设置长度
-
整数类型 字节 tinyint 1 smallint 3 smallint 3 int、interger 4 Bigint 8
- 小数
- D代表小数部位长度
- M和D都可省略,如果是定点型的话,M默认为10,D默认为0;如果是float和double,则会根据插入的数值精度来决定
-
浮点型类型 字节 float 4 double 8 定点数类型 字节 DEC(M,D)/DECIMAL(M,D) M+2 Bigint 8
- 字符型
- 较短的文本:char、varchar;
- binary和varbinary用于保存较短的二进制;
- enum用于保存枚举;set用于保存集合
类型 写法 M的意思 特点 耗费空间 效率 char char(M) 最大字符数,可以省略,默认为1 固定长度的字符 比较耗费 高 varchar varchar(M) 最大字符数,不可以省略 可变长度的字符 比较节省 低
- 日期时间
| 日期和时间类型 | 字节 |
| date(只保存日期) | 4 |
| datetime(只能反映出插入时的当地时区,保存日期+时间,范围1000~9999) | 8 |
| timestamp(支持的时间范围较小,和实际时区有关,更能反映实际日期,受版本影响,保存日期+时间,范围1970-2038) | 4 |
| time(只保存时间) | 3 |
| year(只保存年) | 1 |
2. 变量
- 系统变量:变量由系统提供,不是用户自定义,属于服务器层面
- 全局变量:服务器每次启动时将为所有的全局变量赋初始值,针对于所有的会话(连接)有效,但不能跨重启
- 会话变量:仅仅针对于当前会话(连接)有效
- 使用语法:如果是全局级别需要加global,会话级别可加可不加session .
-- 查看所有的系统变量 show global/【session】 variables; -- 查看满足条件的部分系统变量 show global/【session】 variables like "%char%"; -- 查看指定的某个系统变量的值 select @@global.系统变量名; -- 给某个系统变量赋值 set global/【session】系统变量名= 值; set global/【session】.系统变量名= 值;
- 用户变量:针对于当前会话(连接)有效,等同于会话变量的作用域。可以放在begin end中也可外放,不用限定类型
-- 声明并初始化 set @用户变量名=值; set @用户变量名:=值; select @用户变量名:=值; -- 赋值(更新用户变量的值) -- 通过select或set set @用户变量名=值; set @用户变量名:=值; select @用户变量名:=值 ; -- 通过select into select 字段 into 变量名 from 表; -- 查看 select @用户变量名; - 局部变量:仅仅在定义他的begin end中有效,应用在begin end中的第一句
-- 声明 declare 变量名 类型; declare 变量名 类型 default 值; -- 赋值 -- 通过select或set set 局部变量名=值; set 局部变量名:=值; select @局部变量名:=值 -- 通过select into select 字段 into 局部变量名 from 表; -- 使用 select 局部变量名;
3.流程控制
- 分支控制
- if 函数实现简单的双分支:执行顺序: 如果表达式1成立,则if 返回表达式2的值,否则返回表达式3的值。if 多分支结构,只能应用在begin end中
if (表达式1,表达式2,表达式3); //if结构,只能应用在begin end中 if 条件1 then 语句1; elseif 条件2 then 语句2; ... 【else 语句n】 end if;
- case 结构实现等值判断或区间判断
- 如果when 中的值满足或条件成立,则执行对应then 后面的语句,并结束case;如果都不满足,则执行else语句;
case 变量、表达式、字段 //实现等值判断 when 要判断的值1 then 返回值1; when 要判断的值2 then 返回值2 ; ... else 返回值n; end -- 或者 case //实现区间判断 when 条件1 then 要显示的值1或语句1; when 条件2 then 要显示的值2或语句2; ... else 要显示的值n或语句n; end
- if 函数实现简单的双分支:执行顺序: 如果表达式1成立,则if 返回表达式2的值,否则返回表达式3的值。if 多分支结构,只能应用在begin end中
- 循环控制:
-
【标签:】while 循环条件 do 循环体; end while 【标签】; -
--可以模拟简单的死循环 【标签:】loop 循环体; end loop 【标签】; -
【标签:】repeat 循环体; until 结束循环的条件 end repeat 【标签】;
-
浙公网安备 33010602011771号