一、树状结构

参考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. 小米路由器mini搭建个人静态网站的方法

    小米路由和小米路由mini从本质上来说差距就在1T的硬盘上,其它并没有明显差别,但是功能却差很多,例如:小米路由有自带的LAMP模式,而小米路由mini则没有,换句话说,其实这个功能是被阉割了,仔细研 ...

  2. 免费邮件服务器:MailEnable

    官方网站地址:www.mailenable.com 下载最新版的 Standard Edition (FREE) 安装之前请留意安装指引就可以了,安装上去之后,直接就可以使用了 安装指引上写的清清楚楚 ...

  3. Android软键盘弹出时布局问题

    最近项目需要做一个类似聊天室的模块,基于Socket实现的,这部分稍后一段时间再做总结,功能上的相关点都实现了小例子也做出来了,最后发现一个比较腻歪的问题就是软键盘弹出时总是会把标题“挤出”屏幕,(无 ...

  4. 在Unity中使用Shader

    1.Material 和 Shader 的关系.一个材质包括一个Shader程序.在Shader中设置的属性能够通过Material可视化设置 2.内建Shader,在5.0之后的版本号中大部分旧的S ...

  5. [Regex Expression] Find Sets of Characters

    Regular Expression Character Classes define a group of characters we can use in conjunction with qua ...

  6. html5图片标签与属性

    标记:  标 记  说 明 <lmg> 图像 <Map> 图像映射 <Area> 图像映射中定义区域 <lmg>标记属性:  属 性  说 明 Src ...

  7. 配置错误--分析器错误消息: 无法识别的属性“targetFramework”。请注意属性名称区分大小写。

    在部署网站的时候,很容易遇到这个一样错误:分析器错误消息: 无法识别的属性“targetFramework”.请注意属性名称区分大小写.  错误如图: 错误原因: 部署网站时,使用的应用程序池版本不对 ...

  8. http status 源码

    private static readonly String[][] s_HTTPStatusDescriptions = new String[][] { null, new String[] { ...

  9. datatable列操作

    DataTable myDt =dt;  //删除列  myDt.Columns.Remove("minArea");  myDt.Columns.Remove("max ...

  10. asp.net从服务器(指定文件夹)下载任意格式的文件到本地

    一.我需要从服务器下载ppt文件到本地 protected void Btn_DownPPT_Click(object sender, EventArgs e)        {            ...