先來簡單瞭解一下MySQL資料庫有意思的簡介
言歸正傳:今天來學習使用MySQl的 臨時表,變數,行轉列,預處理的一些入門使用相關話題!
個人之前一直使用比較多的資料庫就是Sqlserver,Sqlserver的強大,和儲存過程的牛13的地方這裡不多說了,
在在主流的關係型資料庫中,Mysql,Sqlserver,Oracle等,作者都有使用,相比還是微軟的Sqlserver是最人性化的,資料庫自帶的工具也是最好用的
什麼,執行計劃,作業任務,表分割槽,主從複製,讀寫分離,儲存過程,自定義型別,表函式,標量函式等等,都是比較人性化的使用!
新的公司使用的是Mysql關係型資料庫,curd其實大都數的sql語法類似Sqlserver,
但是個人還是覺得MySQl比較弱,功能和使用體驗上完全就不是一個等級的,
這裡沒有其他的故意貶低MySQl的意思,也不展開討論這個話題,
存在即有其中的道理,畢竟MySql也有自身的優點,例如:體積小巧,開源免費等!
1:臨時表 使用案例
語法案例如下:
DROP TEMPORARY TABLE if EXISTS p_table; //如果存在就先刪除
CREATE TEMPORARY TABLE p_table // 建立臨時表根據下面的查詢結果來處理
SELECT S.id,S.score
FROM studentscore S
WHERE S.id>1;
SELECT id, score FROM p_table;
2:mysql語句自定義變數 使用案例
SET @id=1;// 帶上自定義的變數,後面需要;分號結尾
DROP TEMPORARY TABLE if EXISTS p_table;
CREATE TEMPORARY TABLE p_table
SELECT S.id,S.score
FROM studentscore S
WHERE S.id>@id;
SELECT id, score FROM p_table;
3:mysql的行轉列 使用案例
在Mysql中行轉列通常有 case when,和 if(a='' b,c)再結合 max,sum,avg 這樣的函式來處理
3.1:先建立表studentScore已經插入一些測試的資料
DROP TABLE IF EXISTS studentScore;
CREATE TABLE studentScore(
id INT(11) NOT NULL auto_increment,
userid VARCHAR(20) NOT NULL COMMENT '使用者id',
subject VARCHAR(20) COMMENT '科目',
score DOUBLE COMMENT '成績',
PRIMARY KEY(id)
)ENGINE = INNODB DEFAULT CHARSET = utf8;
INSERT INTO studentScore(userid,subject,score) VALUES ('111','語文',98);
INSERT INTO studentScore(userid,subject,score) VALUES ('111','數學',88);
INSERT INTO studentScore(userid,subject,score) VALUES ('111','英語',58);
INSERT INTO studentScore(userid,subject,score) VALUES ('222','語文',69);
INSERT INTO studentScore(userid,subject,score) VALUES ('222','數學',88);
INSERT INTO studentScore(userid,subject,score) VALUES ('222','英語',80);
INSERT INTO studentScore(userid,subject,score) VALUES ('333','語文',90);
INSERT INTO studentScore(userid,subject,score) VALUES ('333','數學',75);
INSERT INTO studentScore(userid,subject,score) VALUES ('333','英語',82);
INSERT INTO studentScore(userid,subject,score) VALUES ('333','政治',91);
SELECT* FROM studentScore;
3.1:行轉列 使用案例,使用max,正常的情況下一個使用者與一條資料,就可以使用sum(),max取其中最大的那條
3.2:行轉列 ,if() 使用案例
3.3:使用SUM(IF()) 生成列 + UNION 生成彙總行,並利用 IFNULL將彙總行標題顯示為 Total
4:Mysql的預處理語句的使用案例:
5:最後,看到MySQl也可以有上面的這些功能,是不是一下子對MySQl產生了好感,
原來MySQl也是如此可愛啊,嘻嘻!!!