MySql学习笔记(四)

MySql学习

– 第十二部分 函数(常用)
– 日期和时间函数
– CURDATE() 当前日期
– CURTIME() –当前时间

select CURDATE(),CURTIME() from t_time

– 字符串函数
– 1.CHAR_LENGTH(str) – 计算字符串s的字符数
– 2. UPPER(str) – 把所有字母变为大写字母
– 3. LOWER(str) – 把所有字母变为小写字母

 SELECT name ,CHAR_LENGTH(name),UPPER(name),LOWER(name) from t_time

– 数学函数
– 1. ABS(X) q求绝对值
SELECT number,ABS(number) from t_time
– 2.SQRT(X) 求平方根
– 3. MOD(N,M) 求余数
SELECT SQRT(number) ,MOD(9,2) FROM t_time

– 加密函数
– 1.PASSWORD(str) – 一般对用户的密码加密, 不可逆
– 2.MD5(str)– 普通加密 不可逆
– 3. ENCODE(str,pass_str) – 加密函数,结果时一个二进制的数,必须y用blob类型来保存
– 4. DECODE(crypt_str,pass_str) – 解密函数

insert into t_time VALUES(null,'2017-9-17','ss',1,password('123'))

insert into t_time VALUES(null,'2017-9-17','ss',1,MD5('123'))

select * from t_time 

insert into t_time VALUES(null,'2017-9-17','ss',1,MD5('123'),ENCODE('aaa','aa')) -- 加密

SELECT DECODE(pp,'aa') from t_time WHERE id=4; -- 解密

– 第十三部分 存储过程与函数
– 存储过程的引入
– 存储过程和函数是在数据库中定义的一些SQL语句的集合,然后直接调用这些存储过程来执行已经定义好的SQL语句
– 存储过程和函数可以避免开发人员重复的编写相同的SQL语句,而且,存储过程和函数是在MySql服务器中存储和执行的,可以减少客户端和服务器端的数据传输

– 创建存储过程和函数

delimiter &&
create PROCEDURE pro_bok(  in b INT, out count_num INT)
READS SQL DATA
BEGIN
select count(*) from t_book WHERE bookTypeId=b;
END
&&
delimiter;

CALL pro_bok (1,@total) -- 调用存储过程

– 创建存储函数

delimiter &&
CREATE FUNCTION fun_book(bookId int )
RETURNS VARCHAR(20)
BEGIN
RETURN (select bookName from t_book where id=bookID);
END
&&
delimiter;

select fun_book(2) -- 调用函数

– 变量的使用

– 定义变量

delimiter &&
create PROCEDURE pro_user()
BEGIN
DECLARE a,b VARCHAR(20);
INSERT INTO t_user VALUES(null,a,b);
END
&&
delimiter ;

CALL pro_user();
SELECT * from t_user

– 为变量赋值

delimiter &&
create PROCEDURE pro_user2()
BEGIN
DECLARE a,b VARCHAR(20);
SET a='java123' ,b='123';
INSERT INTO t_user VALUES(null,a,b);
END
&&
delimiter ;

CALL pro_user2();
SELECT * from t_user

– 游标的使用
– 查询语句可能查询出多条记录,在存储过程和函数中使用游标来逐条读取查询结果中的记录。游标的使用包括声明游标,
– 打开游标,关闭游标。游标必须声明在处理程序之前和变量和条件之后

– 声明游标

delimiter &&
create PROCEDURE pro_user3()
BEGIN
DECLARE a,b VARCHAR(20);
DECLARE cur_t_user2 CURSOR for SELECT userNAME,PASSWORD FROM T_USER2;
OPEN cur_t_user2;
FETCH cur_t_user2 INTO A,B;
INSERT INTO t_user VALUES(null,a,b);
CLOSE cur_t_user2;
END
&&
delimiter ;

– 流程控制的使用
– 存储过程和函数中可以使用流程控制来控制语句的执行

– IF

delimiter &&
create PROCEDURE pro_user4( in bookid INT)
BEGIN
select count(*)  into @num from t_user where id=bookid;
IF @num>0 THEN update t_user set userName='dzb' where id=bookid;
ELSE 
insert into t_user VALUES(null ,'hasdhsa','dsa');
end IF;
 END
&&
delimiter ;

CALL pro_user4(1)
select * from t_user

– CASE

delimiter &&
create PROCEDURE pro_user5( in bookid INT)
BEGIN
select count(*)  into @num from t_user where id=bookid;
CASE @num 
when 1 THEN update t_user set userName='dzb' where id=bookid;
when 2 THEN insert into t_user VALUES(null ,'hasdhsa','dsa');
ELSE 
insert into t_user VALUES(null ,'hasdhsa','dsa');
end CASE;
 END
&&
delimiter ;

CALL pro_user5(1)
select * from t_user

– LOOP LEAVE语句

delimiter &&
create PROCEDURE pro_user6( in totalNum INT)
BEGIN
  a:LOOP
SET totalNum=totalNum-1;
IF totalNum=0 then LEAVE a;
ELSE insert into t_user VALUES(null ,'hasdhsa','dsa');
 END IF;
END LOOP a ;
END
&&
delimiter ;

CALL pro_user6(1)
select * from t_user

– ITERATE 跳出本次循环 进入下次循环

delimiter &&
create PROCEDURE pro_user7( in totalNum INT)
BEGIN
  a:LOOP
SET totalNum=totalNum-1;
IF totalNum=0 then LEAVE a;
ELSEIF totalNum=3 then ITERATE a;
 END IF;
insert into t_user VALUES(null ,'hasdhsa','dsa');
END LOOP a ;
END
&&
delimiter ;

CALL pro_user7(3)
select * from t_user

– REPEAT 有条件的循环语句

delimiter &&
create PROCEDURE pro_user8( in totalNum INT)
BEGIN
REPEAT
set  totalNum=totalNum-1;
insert into t_user VALUES(null ,'hasdhsa','dsa');
UNTIL totalNum=1;
END
&&
delimiter ;

CALL pro_user8(3)
select * from t_user

– WHILE

delimiter &&
create PROCEDURE pro_user9( in totalNum INT)
BEGIN
WHILE
  totalNum>0 DO
insert into t_user VALUES(null ,'hasdhsa','dsa');
set  totalNum=totalNum-1;
end WHILE;
END
&&
delimiter ;


CALL pro_user9(3)
select * from t_user

– 查看存储过程和函数
– show STATUS 查看存储过程和函数的状态
– SHOW CREATE 查看存储过程函数的状态
show PROCEDURE STATUS LIKE ’ pro_user1’

show CREATE PROCEDURE pro_user1

– 修改存储过程和函数

ALTER PROCEDURE pro_user1 COMMIT ‘测试一个commit’

– 删除存储过程和函数
drop PROCEDURE pro_user1

– 十四部分 数据备份
– 备份数据可以保证数据库数据的安全

– 使用mysqldump命令备份
mysqldump -u root -p db_book >c:db_book.sql

– 数据还原
mysql- u root -p [db_book]< BACKUP.SQL

猜你喜欢

转载自blog.csdn.net/m0_37591671/article/details/78016322