一、树状结构

参考http://www.cnblogs.com/kingteach/archive/2011/07/05/2098046.html

create procedure Pro_GetUnderOrg(in userid varchar(50))
begin
declare lev int;
set lev=1;
drop table if exists tmp1;
CREATE TABLE tmp1(`ID` BIGINT,LoginID VARCHAR(50),Username varchar(50),pre_LoginID varchar(50) ,levv INT);
INSERT tmp1 SELECT `ID`, LoginID,Username,pre_LoginID,1 FROM tbUsers WHERE pre_LoginID=userid;
while row_count()>0
do
set lev=lev+1;
INSERT tmp1 SELECT t.`ID`, t.LoginID,t.Username,t.pre_LoginID,lev from tbUsers t join tmp1 a on t.pre_LoginID=a.LoginID AND levv=lev-1;
end while ;
INSERT tmp1 SELECT `ID`,LoginID,Username,pre_LoginID,0 FROM tbUsers WHERE LoginID=userid;
SELECT * FROM tmp1 where LoginID <>userid;/*这一步是为了去除自己*/
end;

二、存储过程异常处理

create PROCEDURE Pro_JH(in curr VARCHAR(50),in target VARCHAR(50),in pre VARCHAR(50))
BEGIN
DECLARE Li CHAR(18);
DECLARE t_error INTEGER DEFAULT 0; /*注意:申明字段 必须在前面 否则会报错*/
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;
SET Li='';
START TRANSACTION;
select License INTO Li from tbLicense where UserID=curr and hasUsed=0 and Actual is NOT NULL and IsDele=0 LIMIT 1;
IF Li='' THEN
ROLLBACK;
SELECT '该用户没有可用激活码!';
ELSE
update tbLicense set hasUsed=1 where License= Li and UserID=curr;
update tbUserMeny set Total=Total-1,Available=Available-1 where userid=curr and type=2;
INSERT into tbLicenseWallet_Log (userid,ChangeAmount,License,Remark,Price) VALUES ( curr,1,Li,CONCAT('为',target,'激活账户'),(select `Value` from tbdictionary where `Key`='jhmdj'));
UPDATE tbusers set License=Li,`Status`=1,`Role`=(select ID from tbrole where rolecode='VIP') where LoginID = target and pre_LoginID =pre;
IF t_error = 1 THEN
ROLLBACK;
SELECT '错误';
ELSE
COMMIT;
SELECT '';
END IF;
END IF;
END;

三、一次更新多条数据记录

UPDATE tabl1
SET filter1 = CASE id
WHEN 1 THEN 3
WHEN 2 THEN 4
WHEN 3 THEN 5
END
WHERE id IN (1,2,3)

四、临时表的使用

/*获取上级所有的节点 一条语句中只能试用一次临时表*/
create PROCEDURE Pro_GetParents(in sid INT)
BEGIN
declare lev INT;
DECLARE userid VARCHAR(50);/*pre*/
select(select pre_LoginID from tbusers u where u.LoginID = temp.userid and IsDele=0) INTO userid from tbgethelp temp where temp.id=(SELECT temp.getid from tbhelp_successlist temp where id=sid);
set lev=1;
CREATE TEMPORARY TABLE if not exists tmp2(`ID` BIGINT,`Status` TINYINT(1),LoginID VARCHAR(50),Username varchar(50),pre_LoginID varchar(50),Mobile CHAR(15),CreateTime timestamp,levv INT)
ENGINE = memory;
truncate TABLE tmp2;
CREATE TEMPORARY TABLE if not exists tmp1(`ID` BIGINT,`Status` TINYINT(1),LoginID VARCHAR(50),Username varchar(50),pre_LoginID varchar(50),Mobile CHAR(15),CreateTime timestamp,levv INT)
ENGINE = memory;
truncate TABLE tmp1; INSERT tmp2 SELECT `ID`,`Status`,LoginID,Username,pre_LoginID,Mobile,CreateTime,lev FROM tbUsers WHERE LoginID=userid and IsDele =0;
INSERT tmp1 select * from tmp2;
while row_count()>0 and EXISTS(SELECT * from tmp1)
do
set lev=lev+1;
INSERT tmp2 SELECT t.`ID`,t.`Status`, t.LoginID,t.Username,t.pre_LoginID,t.Mobile,t.CreateTime,lev from tbUsers t join tmp1 a on t.LoginID = a.pre_LoginID where a.LoginID<>a.pre_LoginID and t.IsDele = 0 AND a.levv=(lev-1);
if row_count()>0 THEN
TRUNCATE TABLE tmp1;
INSERT tmp1 select * from tmp2 WHERE levv=lev;
END IF;
end while;
SELECT `ID`,`Status`,CASE `Status` when 0 then '未激活' else '已激活' end as StatusName,Username,LoginID,pre_LoginID,Mobile,date_format(CreateTime,'%Y-%c-%d %h:%i:%s')CreateTime,levv FROM tmp2 ORDER BY CreateTime DESC;
DROP TEMPORARY TABLE IF EXISTS tmp2;
DROP TEMPORARY TABLE IF EXISTS tmp1;
end

五、编码问题

--查询编码
show variables like 'char%'
--修改编码
character_set_server='utf8';

六、创建用户并授权

GRANT ALL PRIVILEGES ON 数据库.* TO 用户名@"%" IDENTIFIED BY "密码";

  

mysql 基础技术的更多相关文章

  1. MySQL基础和JDBC

    第一章 命令行工具 mysqladmin:MySQL服务器管理工具 mysql:MySQL客服端链接工具 mysqldump 演示链接到服务器host=127.0.0.1,用户名为root,密码为空 ...

  2. { MySQL基础数据类型}一 介绍 二 数值类型 三 日期类型 四 字符串类型 五 枚举类型与集合类型

    MySQL基础数据类型 阅读目录 一 介绍 二 数值类型 三 日期类型 四 字符串类型 五 枚举类型与集合类型 一 介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己 ...

  3. Linux系统——MySQL基础(一)

    # 数据库 ## 数据库简单的分类:(1)关系型数据库:MySQL和Oracle.Postgresql(2)非关系型数据库:Memcached和Redis(3)消息队列中间件(4)搜索引擎数据库:El ...

  4. 如鹏网学习笔记(五)MySql基础

    MySQL基础 一.数据库概念 1,网友装备信息.论坛帖子信息.QQ好友关系信息.学籍管理系统中的学生信息等都要“持久化”的保存到一个地方, 如果通过IO写到文件中,那么会非常麻烦,而且不利于多人共享 ...

  5. MySQL基础、索引、查询优化等考察点

    MySQL基础 MySQL数据类型 整数类型 TINYINT. SMALLINT. MEDIUMINT. INT. BIGINT 属性:UNSIGNED 长度:可以为整数类型指定宽度,例如:INT(1 ...

  6. 数据库系统(五)---MySQL基础

    一.SQL基本概念: SQL 已经成为关系数据库的标准语言,是一种数据库查询和程序设计语言,用 于存取数据以及查询.更新和管理关系数据库系统. 功能不仅仅是查询,还包括数据定义.数据操纵和数据控制等于 ...

  7. MySQL基础概念知多少

    MySQL基础概念相关的名词还是挺多的,比如3大范式.4种隔离界别.ACID.DQL.DML.DDL,还有redo.undo.binlog等,本文就统一整理下MySQL常见的基础概念,方便小伙伴们翻阅 ...

  8. MySQL基础普及《MySQL管理之道:性能调优、高可用与监控》

    最近工作的内容涉及MySQL运维内容,陆陆续续读了几本相关的书,其中一本是<MySQL管理之道:性能调优.高可用与监控>. 内容涵盖性能调优(包括sql优化等).备份.高可用,以及读写分离 ...

  9. 【目录】mysql 基础篇系列

    随笔分类 - mysql 基础篇系列 mysql 开发基础系列22 SQL Model(带迁移事项) 摘要: 一.概述 与其它数据库不同,mysql 可以运行不同的sql model 下, sql m ...

随机推荐

  1. Window vagrant 安装部署【转】

    回想以前,想要安装个虚拟机是多么的麻烦.先要费尽心机找到想要的操作系统镜像文件,然后安装虚拟化软件,按照其提供的GUI界面操作一步步创建,整个过程费时费力.但是,自从使用了Vagrant以后,咱腰不酸 ...

  2. android调试系列--使用ida pro调试原生程序

    1.工具介绍 IDA pro: 反汇编神器,可静态分析和动态调试. 模拟机或者真机:运行要调试的程序. 样本:自己编写NDK demo程序进行调试 2.前期准备 2.1  准备样本程序(假设已经配置好 ...

  3. for循环和经典案例

    循环:初始条件,循环条件,状态改变,循环体.for(初始条件;循环条件;状态改变){ 循环体}for(int i=1;i<=10;i++){ }例子:100以内与7有关的数.求100以内所有数的 ...

  4. C#中唯一标识符GUID的一些知识点

    概念 GUID: 即Globally Unique Identifier(全球唯一标识符) 也称作 UUID(Universally Unique IDentifier) . GUID是一个通过特定算 ...

  5. OkHttp 上手

    OkHttp 上手 优点 快.节省带宽. 支持 HTTP/2 和 SPDY. HTTP/2 和 SPDY 允许对同一个主机的所有请求,使用一个 socket. 如果不支持 SPDY 的话,可以用连接池 ...

  6. asp.net 正则表达式

    在平时的开发中常常用到替换法:  普通的字符串替换可以使用string.replace(string,string),但是比较难解决HTML文本的替换. 经我几番查找,终也找出解决办法:正则匹配替换. ...

  7. Arc engine - Geodatabase.

    Geodatabase以层次结构的数据对象来组织地理数据. 这些数据对象存储在要素类(Feature Classes).对象类(0bject classes)和数据集(Feature datasets ...

  8. 数据库分库分表(sharding)系列(二) 全局主键生成策略

    本文将主要介绍一些常见的全局主键生成策略,然后重点介绍flickr使用的一种非常优秀的全局主键生成方案.关于分库分表(sharding)的拆分策略和实施细则,请参考该系列的前一篇文章:数据库分库分表( ...

  9. Windows下Mysql解压缩版配置安装与卸载

    安装: ①解压Mysql到合适的位置! ②以管理员身份运行命令提示符(cmd),cd C:\Documents and Settings\Administrator\桌面\mysql-5.6.24-w ...

  10. Meta 整合

    Meta 整合:http://segmentfault.com/a/1190000002407912