MySQL數(shù)據(jù)庫數(shù)據(jù)視圖
一、 數(shù)據(jù)視圖
視圖是原始數(shù)據(jù)庫數(shù)據(jù)的一種變換,是查看表中數(shù)據(jù)的另外一種方式。我們可以將視圖看成是一個移動的窗口,從這個窗口中可以看到感興趣的數(shù)據(jù)。
二、數(shù)據(jù)視圖操作
創(chuàng)建視圖
// 標(biāo)準(zhǔn)語法: CREATE VIEW 視圖名稱 [(列名列表)] AS 查詢語句; // 創(chuàng)建city_country視圖,保存城市和國家的信息(使用指定列名) CREATE VIEW city_country(city_id,city_name,country_name) AS SELECT c1.id, c1.name, c2.name FROM city c1, country c2 WHERE c1.cid = c2.id;
修改視圖數(shù)據(jù)
// 標(biāo)準(zhǔn)語法: UPDATE 視圖名稱 SET 列名=值 WHERE 條件; // 注意:修改視圖數(shù)據(jù)后,源表中的數(shù)據(jù)也會隨之修改 UPDATE city_country SET city_name="深圳" WHERE city_name="北京";
修改視圖列明
// 標(biāo)準(zhǔn)語法: ALTER VIEW 視圖名稱 (列名列表) AS 查詢語句; ALTER VIEW city_country (city_id, city_name, NAME) AS SELECT c1.id, c1.name, c2.name FROM city c1, country c2 WHERE c1.cid = c2.id;
刪除視圖
// 標(biāo)準(zhǔn)語法 DROP VIEW [IF EXISTS] 視圖名稱; // 刪除city_country視圖 DROP VIEW IF EXISTS city_country;
三、數(shù)據(jù)的備份與回復(fù)
liunx備份
備份文件:
mysqldump -u root -p 數(shù)據(jù)庫名稱 > 文件保存路徑
還原:
source 文件保存路徑
mysql備份
備份-> 導(dǎo)出備份數(shù)據(jù)庫 還原-> 導(dǎo)入備份文件
四、 MySQL存儲過程和函數(shù)
概念
- 存儲過程和函數(shù)是 事先經(jīng)過編譯并存儲在數(shù)據(jù)庫中的一段 SQL 語句的集合
好處:
- 可以重復(fù)使用,減輕開發(fā)人員的工作量
- 減少網(wǎng)絡(luò)流量,調(diào)用只需要傳遞參數(shù)名和參數(shù)即可
- 減少數(shù)據(jù)在數(shù)據(jù)庫和應(yīng)用服務(wù)器之間的傳輸,可以提高數(shù)據(jù)處理的效率
- 將部分邏輯在數(shù)據(jù)庫層進(jìn)行了處理,減少業(yè)務(wù)層代碼
區(qū)別:
- 函數(shù)必須有返回值
- 存儲過程沒有返回值
五、存儲過程操作
初始數(shù)據(jù)
-- 創(chuàng)建學(xué)生表 CREATE TABLE student( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT, gender VARCHAR(5), score INT ); -- 添加數(shù)據(jù) INSERT INTO student VALUES (NULL,'張三',23,'男',95),(NULL,'李四',24,'男',98), (NULL,'王五',25,'女',100),(NULL,'趙六',26,'女',90); -- 按照性別進(jìn)行分組,查詢每組學(xué)生的總成績。按照總成績的升序排序 SELECT gender, SUM(score) getSum FROM student GROUP BY gender ORDER BY getSum ASC;
創(chuàng)建過程
// 標(biāo)準(zhǔn)語法
//
DELIMITER $
-- 標(biāo)準(zhǔn)語法
CREATE PROCEDURE 存儲過程名稱(參數(shù)列表)
BEGIN
SQL 語句列表;
END $
-- 修改分隔符為分號
DELIMITER ;
// 創(chuàng)建stu_group()存儲過程,封裝 分組查詢總成績,并按照總成績升序排序的功能
DELIMITER$
CREATE PROCEDURE stu_group()
BEGIN
SELECT gender, SUM(score) getSum FROM student GROUP BY gender ORDER BY getSum ASC;
END$
DELIMITER ;調(diào)用存儲過程
// CALL 存儲過程名稱(實際參數(shù)); CALL stu_group();
查找存儲過程
// 標(biāo)準(zhǔn)語法: SELECT * FROM mysql.proc WHERE db='數(shù)據(jù)庫名稱'; SELECT * FROM mysql.proc WHERE db='demoMysql';
刪除存儲過程
//標(biāo)準(zhǔn)語法: DROP PROCEDURE [IF EXISTS] 存儲過程名稱; DROP PROCEDURE IF EXISTS stu_group;
其他語法
// 定義變量
// 語法:DECLARE 變量名 數(shù)據(jù)類型 [DEFAULT 默認(rèn)值];
// 變量賦值
// 語法一:SET 變量名 = 變量值;
// 語法二:SELECT 列名 INTO 變量名 FROM 表名 [WHERE 條件];
// 判斷語句
// if語句
// IF 判斷條件1 THEN 執(zhí)行的sql語句1;
// [ELSEIF 判斷條件2 THEN 執(zhí)行的sql語句2;]
// ...
// [ELSE 執(zhí)行的sql語句n;]
// END IF;
DELIMITER $
CREATE PROCEDURE pro_test2()
BEGIN
-- 定義變量
DECLARE NAME VARCHAR(20);
DECLARE totalScore INT;
DECLARE info VARCHAR(10);
-- 為變量賦值
SET NAME = '賦值方式1';
SELECT SUM(score) INTO totalScore FROM student;
IF totalScore > 500 THEN
SET info='總分超過500';
END IF;
-- 使用變量
SELECT NAME,totalScore,info;
END$
DELIMITER;
// 參數(shù)傳遞
// 標(biāo)準(zhǔn)語法: CREATE PROCEDURE 存儲過程名稱([IN|OUT|INOUT] 參數(shù)名 數(shù)據(jù)類型)
DELIMITER $
CREATE PROCEDURE pro_test5(IN total INT, OUT info VARCHAR(10))
BEGIN
-- 對總成績判斷
IF total > 380 THEN
SET info = '學(xué)習(xí)優(yōu)秀';
ELSEIF total >= 320 AND total <= 380 THEN
SET info = '學(xué)習(xí)不錯';
ELSE
SET info = '學(xué)習(xí)一般';
END IF;
END$
DELIMITER;
// 調(diào)用過程
CALL pro_test5(350,@info);
SELECT @info;六、 存儲函數(shù)
其實和存儲過程區(qū)別不大,主要在于定義的時候用FUNCTION,同時有return
DELIMITER $ CREATE FUNCTION fun_test1() RETURNS INT // 返回值類型 BEGIN DECLARE s_count INT; SELECT COUNT(*) INTO s_count FROM student WHERE score > 95;// 條件語句 RETURN s_count;// 返回結(jié)果; END $ DELIMITER ; // 調(diào)用函數(shù) SELECT fun_test1(); // 刪除函數(shù) DROP FUNCTION fun_test1();
到此這篇關(guān)于MySQL數(shù)據(jù)庫數(shù)據(jù)視圖的文章就介紹到這了,更多相關(guān)SQL數(shù)據(jù)視圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
通過mysql show processlist 命令檢查mysql鎖的方法
show processlist 命令非常實用,有時候mysql經(jīng)常跑到50%以上或更多,就需要用這個命令看哪個sql語句占用資源比較多,就知道哪個網(wǎng)站的程序問題了。2010-03-03
修改MySQL密碼的四種方法總結(jié)(適合初學(xué)者!)
在日常使用數(shù)據(jù)庫的過程中,難免會遇到需要修改賬號密碼的情景,比如密碼太簡單需要修改、密碼過期需要修改、忘記密碼需要修改等,下面這篇文章主要給大家介紹了關(guān)于修改MySQL密碼的四種方法,介紹的方法非常適合初學(xué)者,需要的朋友可以參考下2022-08-08

