首先我们先来介绍一下MySql的变量:
-- 查询所有的会话变量 如果不加globaln默认就是查会话变量 SHOW VARIABLES; SHOW SESSION VARIABLES; -- 查看部分会话变量 SHOW SESSION VARIABLES LIKE 'na%'; -- 查看某个指定的会话变量 SELECT @@tx_isolation; -- 为某个会话变量赋值 SET @@tx_isolation='READ-UNCOMMITTED' -- 自定义变量-用户变量 -- 该变量是用户自定义的,不是由系统所定义的 -- 作用域为当前连接有效,等同于会话变量的作用域 -- 赋值操作符 = 或者 := -- 声明并初始化 SET @用户变量名=值; SET @用户变量名:=值; SELECT @用户变量名:=值; -- 通过SELECT INTO来设置值 SELECT 字段 INTO 用户变量名 FROM 表 SET @name='jone' SET @name=100; SET @count=1; -- 赋值 SELECT COUNT(*) INTO @count FROM book.borrowbook -- 查看 SELECT @count SET @m=1; SET @n=2; SET @sum = @m+@n; SELECT @sum; -- 输出3 -- 自定义变量-局部变量 -- 作用域:仅仅在定义它的BEGIN END 中有效 -- 声明: DECLARE 变量名 类型; DECLARE 变量名 类型 DEFAULT 值; -- 声明并初始化 SET @局部变量名=值; SET @局部变量名:=值; SELECT @局部变量名:=值; -- 通过SELECT INTO来设置值 SELECT 字段 INTO 局部变量名 FROM 表 用户变量 作用域为当前会话 定义和使用的位置:会话中的任何地方 语法:必须添加@符号,不用限定类型 局部变量 作用域为BEGIN END 中 只能在BEGIN END 中,并且为第一句话 一般不用加@符号 需要限定类型 -- 系统变量 说明:变量是由系统提供的,不是用户定义,属于服务器层面, -- 查看全局系统变量 SHOW GLOBAL VARIABLES; SELECT @@global.系统变量;
SQL三:用户表(包含字段有:用户ID[自增]、姓名、性别、民族、出生日期、身份证号),无论查询条件如何,要求查询的结果显示一个行号列(即:第一行显示1,第二行显示2,第三行显示3,依此类推)
SELECT ( @i := @i + 1 ) AS sequence, t_user_info.* FROM t_user_info,( SELECT @i := 0 ) AS it WHERE user_sex_code = 1;
**
SQL四:用户表(包含字段有:用户ID[自增]、姓名、性别、民族、出生日期、身份证号),用户ID是不连续性的,要求把用户ID转换成连续性的,从1开始即可
update t_user_info set user_id=user_id+100000; update t_user_info b, (select @rownum:=@rownum+1 as rownum, t.* from (select * from t_user_info ORDER BY user_age) t, (select @rownum:=0) tt ) temptbl set b.user_id = temptbl.rownum where b.user_id=temptbl.user_id; -- 删除连续的数据之后,执行该语句之后会从id最大值连续向下排名 否则为删除数据的最大值向后排名 无数据的话默认从1开始 ALTER TABLE t_user_info AUTO_INCREMENT = 1; ```sql ALTER TABLE t_user_info DROP COLUMN user_id; -- 删除原来的乱序主键user_id ALTER TABLE t_user_info ADD user_id INT ( 11 ) NOT NULL FIRST; -- 新建字段user_id ALTER TABLE t_user_info MODIFY COLUMN user_id INT ( 11 ) NOT NULL AUTO_INCREMENT,ADD PRIMARY KEY ( user_id ); -- 设置自增和主键