标签:加密 数据表 lang 流程语句 div 修改 upd 字符串长度 逗号
MySQL数据库常用函数与自定义函数
1 SELECT ABS(-8);#绝对值 2 SELECT MOD(10,9); #取模 3 SELECT FLOOR(12.99); #地板 4 SELECT CEILING(10.01);#天花板 5 SELECT ROUND(12.99);#随机数,看第一个小数点数 6 SELECT CONCAT(‘i‘,‘love‘,‘java‘);#拼接 7 SELECT * FROM t_user t WHERE t.`uname` LIKE CONCAT(‘%‘,‘a‘,‘%‘); #拼接应用 8 SELECT LENGTH(‘ilovejava‘); #字符串长度,从1开始 9 SELECT INSTR(‘ilovejava‘,‘java‘);#取字符所在的位置,从1开始 10 SELECT LEFT(‘ilovejava‘,4); #左边开始取4位 11 SELECT RIGHT(‘ilovejava‘,4); #右边开始取4位 12 SELECT SUBSTRING(‘ilovejava‘,5); #包括第5个,后面的截取; 13 SELECT SUBSTRING(‘ilovejava‘,6,2); #从6开始,取2个字符; 14 SELECT LENGTH(‘ java ‘); #12 15 SELECT LENGTH(TRIM(‘ java ‘)); #4 16 SELECT LENGTH(RTRIM(‘ java ‘)); #7 17 SELECT LENGTH(LTRIM(‘ java ‘)); #9 18 SELECT REPLACE(‘ilovejavalove‘,‘love‘,‘爱‘); #将指定的字符(第二个参数)替换为指定字符(第三个参数) 19 SELECT REPEAT(‘ilovejava‘,10);# 循环10次 20 SELECT REVERSE(‘a1a‘);# 反转 21 SELECT INSERT(‘ilovejava‘,6,4,‘web‘);#将指定的字符串从第六位开始用替换成指定的字符(web) 22 SELECT NOW(); #当前日期与时间; 23 SELECT CURDATE();#当前日期(年月日) 24 SELECT CURTIME();#当前时间 25 SELECT YEAR(NOW());#当前时间的年 26 SELECT MONTH(NOW());#当前时间的月 27 SELECT DAY(NOW());#当前时间的天 28 SELECT DATE(NOW());#当前日期(年月日) 29 SELECT HOUR(NOW());#当前时间的时 30 SELECT MINUTE(NOW());#当前时间的分 31 SELECT SECOND(NOW());#当前时间的秒 32 SELECT DAYNAME(NOW());#英文的星期几 33 SELECT QUARTER(NOW());#一刻钟 34 35 SELECT DATE_ADD(NOW(), INTERVAL 1 HOUR);#当前时间添加指定的1小时 36 SELECT DATE_SUB(NOW(), INTERVAL 1 HOUR);#当前时间减去指定的1小时 37 SELECT DATE_ADD(NOW(), INTERVAL 100 DAY);#当前时间减去指定的1天 38 SELECT DATE_FORMAT(NOW(),‘%Y-%m-%d %T‘);#拼接字符串 39 40 SELECT uname,upwd,CASE urid WHEN 1 THEN ‘学员‘ WHEN 2 THEN ‘教员‘ ELSE ‘未知角色‘;#控制流程 41 42 SELECT MD5(‘123456‘) #加密函数 43 SELECT PASSWORD(‘123456‘)#加密函数 44 45 SELECT FORMAT(2.32131216,2)#保留2位小数 46 47 #流程控制 48 SELECT t.uid,t.`uname`, CASE t.`urid` 49 WHEN 1 THEN ‘学员‘ 50 WHEN 2 THEN ‘讲师‘ 51 WHEN 3 THEN ‘班主任‘ 52 WHEN 4 THEN ‘前台‘ 53 WHEN 5 THEN ‘顾问‘ 54 WHEN 6 THEN ‘财务‘ 55 ELSE ‘未知角色‘ 56 END 角色 57 FROM t_user8 t; 58 59 60 INSERT INTO t_user (uname, upwd, uaddress, usalary, ubirthday) VALUES 61 (‘班长2‘,MD5(‘123456‘),‘sz‘,‘15000‘,NOW()); 62 63 64 SELECT FORMAT(t.`usalary`,1) 保留一位小数后的工资 FROM t_user t WHERE t.uid=1; 65 66 #自己调用自定义的函数; 67 SELECT addNum(100,200); 68 #创建自定义函数 69 #DELIMITER $$ 71 CREATE 72 FUNCTION `dbschool`.`add_nums`(num1 INT,num2 INT)#两个参数变量,类型 73 RETURNS INT(12) #返回类型与可控范围 74 BEGIN 75 RETURN num1+num2; # 返回的结果 76 END$$ 78 DELIMITER ;
MySQL存储过程
创建存储过程的语法
1 CREATE 2 /*[DEFINER = { user | CURRENT_USER }]*/ 3 PROCEDURE `dbschool`.`test`() 4 /*LANGUAGE SQL 5 | [NOT] DETERMINISTIC 6 | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } 7 | SQL SECURITY { DEFINER | INVOKER } 8 | COMMENT ‘string‘*/ 9 BEGIN 10 11 END$$ 12 13 DELIMITER ;
其中的关键字作用
分隔符 DELIMITER $$
结束符 DELIMITER ;
声明存储过程: CREATE PROCEDURE 存储过程名 ([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]])
存储过程开始和结束符号: BEGIN .... END
变量定义: declare 变量名 类型(长度) default 默认值;
变量赋值:SET 变量名=1 注意:在使用这个存储过程时,调用这个参数需要加上@符号
示例:
1 ====================增加================ 2 3 DELIMITER $$ 4 5 #使用 java1302 数据库 6 USE `java1302`$$ 7 8 #删除如果存在 insert_user 存储流程,则删除 9 DROP PROCEDURE IF EXISTS `insert_user`$$ 10 11 #创建自定义存储过程,有参有返,DEFINER=`root`@`localhost` 表示用户与本地服务器地址 12 # PROCEDURE `insert_user`定义存储过程名 13 CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_user`( 14 IN u_name VARCHAR(20),##输入操作 参数名 参数类型; 15 IN u_pwd VARCHAR(50),##输入参数; 16 IN u_sex VARCHAR(2),##输入参数; 17 IN u_addr VARCHAR(100),##输入参数; 18 IN u_rid INT(4),##输入参数; 19 IN u_total DECIMAL(7,2),##输入参数; 20 OUT msg VARCHAR(20) #输出 参数 参数类型,返回值; 因为是最后一个,所以 不需要逗号; 21 ) 22 BEGIN 23 DECLARE t_cnt INT(4) DEFAULT 0; # 自定义变量名,给定默认值,翻译:int t_cnt=0; 24 25 #根据uname判断查询表t_user8中uid返回的数量 26 SELECT COUNT(uid) INTO t_cnt FROM t_user8 WHERE uname = u_name; #如果有数据,t_cnt>0 27 28 #IF语句控制流程 开始 29 IF t_cnt=0 THEN 30 #满足t_cnt=0就进入,执行这条语句 31 INSERT INTO t_user8 (uname,upwd,usex,uaddr,urid,total) 32 VALUES (u_name,u_pwd,u_sex,u_addr,u_rid,u_total); 33 34 SET msg = ‘插入成功!‘; # 给返回的变量赋值 35 ELSE 36 SET msg = ‘此用户名已经 存在,插入失败!‘; 37 END IF; 38 #IF语句控制流程 结束 39 40 SELECT msg; #查询返回变量的值,不然没有数据显示 41 END$$ # $$表示分隔 42 43 DELIMITER ;#存储流程语句结束 44 45 46 ======================删除======================== 47 DELIMITER $$ 48 49 CREATE 50 51 PROCEDURE `delete_user`( 52 IN u_id INT(4), ##输入参数; 53 OUT msg VARCHAR(20) ##输出参数; 54 ) 55 56 BEGIN 57 58 DECLARE cnt INT(4) DEFAULT 0; 59 SELECT COUNT(*) INTO cnt FROM t_user8 WHERE uid=u_id; 60 61 IF cnt>0 THEN 62 DELETE FROM t_user8 WHERE uid=u_id; 63 SET msg = ‘删除成功!‘; 64 ELSE 65 SET msg = ‘此uid不存在,无法删除 !‘; 66 END IF; 67 68 SELECT msg; 69 70 END$$ 71 72 DELIMITER ; 73 74 =========================修改========================== 75 76 77 78 79 DELIMITER $$ 80 81 CREATE 82 83 PROCEDURE `java1302`.`update_user`( 84 IN u_id INT(4), 85 IN u_name VARCHAR(20), 86 IN u_pwd VARCHAR(50), 87 IN u_sex VARCHAR(2), 88 IN u_addr VARCHAR(100), 89 IN u_rid INT(4), 90 IN u_total DECIMAL(7,2), 91 OUT msg VARCHAR(20) #输出 参数,返回 值; 因为是最后一个,所以 不需要逗号; 92 93 ) 94 95 BEGIN 96 97 DECLARE cnt INT(4) DEFAULT 0; 98 SELECT COUNT(*) INTO cnt FROM t_user8 WHERE uid=u_id; 99 100 IF cnt>0 THEN 101 UPDATE t_user8 SET uname=u_name, 102 upwd = u_pwd, 103 usex = u_sex, 104 uaddr = u_addr, 105 urid = u_rid, 106 total=u_total 107 WHERE uid=u_id; 108 109 SET msg = ‘修改成功!‘; 110 ELSE 111 SET msg = ‘此uid不存在,无法修改 !‘; 112 END IF; 113 114 SELECT msg; 115 116 END$$ 117 118 DELIMITER ; 119 120 ====================查询===================== 121 122 DELIMITER $$ 123 124 USE `java1302`$$ 125 126 DROP PROCEDURE IF EXISTS `getAllUser`$$ 127 128 CREATE DEFINER=`root`@`localhost` PROCEDURE `getAllUser`( #getAllUser 自定义的名字; 129 IN u_name VARCHAR(20) #in:输入参数; u_name:输入参数名称; varchar(20):参数类型及长度; 130 131 132 ) 133 BEGIN 134 #过程体; 135 SELECT * FROM t_user8 t WHERE t.uname LIKE CONCAT(‘%‘,u_name,‘%‘); 136 END$$ 137 138 DELIMITER ; 139 140 141 142 ===============在sql客户端中调用========================= 143 144 #调用 自定义函数; 145 SELECT getTodayDate(); 146 147 #调用 存储过程 使用CALL关键字与函数的SELECT 不同; ‘1‘ : 输入参数; 148 CALL getAllUser(‘1‘); 149 150 #调用插入一条数据的存储过程; 151 CALL insert_user(‘yijie2‘,‘999‘,‘m‘,‘sz‘,9,777,@msg);#这里的输出需要用@家输出的变量 152 153 #调用 删除 的存储过程 ; 154 CALL delete_user(10,@msg); 155 156 #调用 修改的存储过程; 157 CALL update_user(10,‘yijie2‘,‘888‘,‘f‘,‘sz‘,8,688,@msg);
标签:加密 数据表 lang 流程语句 div 修改 upd 字符串长度 逗号
原文地址:https://www.cnblogs.com/in-the-game-of-thrones/p/11331198.html