日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

数据库Mysql的学习(八)-储存过程和事务和导入导出

發布時間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库Mysql的学习(八)-储存过程和事务和导入导出 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
儲存過程
DELIMITER //
CREATE PROCEDURE pro1()
BEGIN
SELECT book_id,book_name,category FROM bookinfo t1
JOIN bookcategory t2
ON t1.book_category_id = t2.category_id;
END//
DELIMITER ;DELIMITER //
CREATE PROCEDURE pro2(IN cid CHAR(18),OUT num INT)
BEGIN
DELETE FROM reader_info WHERE card_id = cid;
SELECT COUNT(card_id) INTO num FROM readerinfo;
END//
DELIMITER ;CALL pro2('21513333333',@num);
SELECT @num;儲存過程交換兩個數
DELIMITER //
CREATE PROCEDURE pro3(INOUT num1 INT INOUT num2 INT)
BEGIN
DECLARE t INT DEFAULT 0;
SET t=num1;
SET num1=num2;
SET num2=t;
END//
DELIMITER ;SET @n1=3,@n2=4;
CALL proc3(@n1,@n2);
SELECT @n1,@n2;
DROP PROCEDURE IF EXISTS proc1;SELECT FLOOR(RAND()*5); 隨機數事務
ROLLBACK 事務回滾 就是不上面寫的都不算
COMMIT  事務提交,就是確認
SET autocommit=0  禁止自動提交  =1為開啟自動提交BEGIN
INSERT INTO mytest VALUES(4,'test01');
SAVEPOINT s1;   保存點
INSERT INTO mytest VALUES(4,'test02');
SAVEPOINT s2;  
INSERT INTO mytest VALUES(4,'test03');
ROLLBACK TO s2;
COMMIT;
01 02  會保存  03不會DELIMITER //
CREATE PROCEDURE borrowproc(cid CHAR(18),bid INT)
BEGIN
DECLARE store_num INT;
DECLARE money FLOAT(7,3);
SELECT store INTO store_num FROM bookinfo WHERE book_id=bid;
SELECT balance INTO money FROM readerinfo WHERE card_id=cid;
SET autocommit=0;  禁止自動提交  同時也是事務的開始
INSERT INTO borrowinfo VALUES(bid,cid,CURDATE()),DATE_ADD(CURDATE(),INTERVAL 1 MONTH),'');
UPDATE bookinfo SET store=store-1 WHERE book_id=bid;
UPDATE readerinfo SET balance=balance-(SELECT price FROM bookinfo WHERE  book_id=bid)*0.5 WHERE card_id =cid;
IF store_num=0 OR money<=200 THENROLLBACK;
ELSE COMMIT;
END IF;
END//
DELIMITER ;存儲引擎
SHOW ENGINES;查看支持的引擎
INNODB 安全性能較強
MYISAM 不提供事務 有較高的處理效率
MEMORY 存放臨時數據
設置存儲引擎
1.my.ini 中 找到default-STORAGE-ENGINE=INNODB  重啟mysql
2.set default_storage_engine=INNODB
3.創建表時設置
CREATE TABLE mytest(id INT PRIMARY INT,NAME VARCHAR(20))ENGINE =INNODB DEFAULT CHARSET=utf-8;4.alter TABLE test ENGINE=xxx;創建用戶CREATE USER 'rose'@'localhost' IDENTIFIED BY 'rosepwd'  創建了用戶名是rose 主機名是localhost,密碼是rosepwd//用password的哈希值來創建SELECT PASSWORD('roswpwd');xxxxxxxxxxxxxxxxxxxxxxxCREATE USER 'rose'@'localhost' IDENTIFIED BY PASSWORD ' xxxxxxxxxxxxxxxxxxxxxxx' ;用grant創建  可以帶有權限GRANT SELECT,UPDATE ON *.* TO 'testuser'@'localhost' IDENTIFIED BY 'testpwd'; select和update為允許的權限刪除用戶DROP USER 'testuser'@'localhost';DELETE FROM mysql.user WHERE HOST='hostname'AND USER='username';比如GRANT INSERT ,SELECT ON book.* TO 'rose'@'localhost';  為book數據庫下所有的表設置查找和插入權限FLUSH privileges;  刷新權限表GRANT ALL PRIVILEGES ON *.* TO 'rose'@'localhost';為所有東西設置所有權限錯誤日志SHOW VARIABLES ;數據庫的備份mysqldump -uroot -pmy123 book readerinfo >c:\mysqlbackup\tset1.sql;//備份book下的readerinfo表mysqldump -uroot -pmy123 --databases book mytese >c:\mysqlbackup\tset1.sql;//備份兩個多個數據庫mysqldump -uroot -pmy123 --all-DATABASES >c:\mysqlbackup\tset1.sql;//備份所有數據庫
 恢復mysql -uroot -pmy123 book<c:\mysqlbackup\tset1.sql;恢復數據庫下的tset表source c:\mysqlbackup\tset1.sql;  也可以導入導出位置不能隨便my.ini下  找到secure-FILE-priv='xxxxxxxxxxxxx'看這個路徑試什么你將它設置成null  這不允許導出設置成“”則為可以導出到任何位置SELECT * FROM book.readerinfo INTO OUTFILE 'xxxxxxxxxxxxxxxx/文件名。txt';這倆路徑要一樣SELECT * FROM book.readerinfo INTO OUTFILE 'xxxxxxxxxxxxxxxx/文件名。txt'FIELDS TERMINATED BY ','  設置列與列的分隔符LINES TERMINATED BY '\r\n'  設置行末尾換行符mysql導出文件mysql -uroot -pxxxx --execute='語句(執行并推出)' dbname>filename.txt;mysql -uroot -pmy123 --execute="select * from readerinfo;" book>"xxxxxxxxxxxx"
  將book數據庫下的readerinfo表導出到xxxxxxxxx導入命令
LOAD DATA INFILE "xxxxxxxxxxxx" INTO TABLE book.readerinfo;將xxx導入到book下的readerinfo  
mysqlimport -uroot -pmy123 book "xxxxxxxxxxxxxxx";

?

轉載于:https://www.cnblogs.com/wpbing/p/9223414.html

總結

以上是生活随笔為你收集整理的数据库Mysql的学习(八)-储存过程和事务和导入导出的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。