学习准备创建一个测试数据库和表
1、数据库test1
Create database test1;
2、表
Create table user (
Name varchar(50),
Passwd varchar(100)
);
3、插入数据
Insert into user (name,passwd) values (“test”,”test”);
添加外部连接账号
GRANT ALL PRIVILEGES ON *.* TO 账号名@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
恢复数据库:
mysql -u root –password=root密码 数据库名 < 备份文件.sql
我们常使用的的还原的方式:
Source “sql文件路径”
这个是字符集问题。
1、使用status命令查看数据库信息
可以看到字符集为GBK
2.如果字符集为GBK,修改为utf8
打开my.ini文件 修改
default-character-set=utf8
character-set-server=utf8
脚本编写常见语句了解
1、DELIMITER
其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。
默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,直接执行语句。
2、DEFINER
定义存储过程权限,DEFINER=`sa`@`%` sa账号,%是所有权限连接
存储过程
DELIMITER $$
CREATE DEFINER=`sa`@`%` PROCEDURE `test`()
BEGIN
DECLARE num INT;
DECLARE temp VARCHAR(5);
DECLARE tempname VARCHAR(50);
/*定义游标*/
DECLARE cur CURSOR FOR SELECT account FROM user LIMIT 10;
SET num =1;
SET temp ='robjy';
/*打开游标*/
OPEN cur;
/ *定义循环*/
WHILE (num < 10) /*while循环*/
DO
/*读取游标下一个数据*/
FETCH cur INTO tempname;
UPDATE user SET account = CONCAT(temp,num) WHERE account = tempname;
SET num = num +1;
END WHILE;
/*关闭游标*/
CLOSE cur;
END$$
CREATE DEFINER=`sa`@`%` PROCEDURE `test`()
BEGIN
DECLARE num INT;
DECLARE temp VARCHAR(5);
DECLARE tempname VARCHAR(50);
DECLARE cur CURSOR FOR SELECT name FROM user LIMIT 10000;
SET num =1;
SET temp ='robot';
OPEN cur;
WHILE (num < 10000)
DO
FETCH cur INTO tempname;
UPDATE user SET name= CONCAT(temp,num) WHERE name = tempname;
SET num = num +1;
END WHILE;
CLOSE cur;
END$$
DELIMITER ;
CALL test;