發表文章

目前顯示的是 2016的文章

MySQL 筆記:Join 合併表格,使用方式

     Join 語法一共有三種,分別是 inner join、left join、right join。      先來簡述一下 Join 的用法。       SELECT * FROM table1 (LEFT/RIGHT) JOIN table2   ON table1.somecolum = table2.somecolum (and/or) condition2…. 前段為一般的 SELECT 語法,顯示 table1 的資訊。 JOIN table2 的意思是:要在顯示 table1 資訊的同事,把 table2 的資料也一起融入並顯示出來。等一下會介紹 join 的三種方式。 ON 之後為 JOIN 的條件。 JOIN: 也就是 INNER JOIN,該 JOIN 的用法是,只會顯示出符合 ON 條件的資料。也就是兩 table (table1 and table2) ,交集的資料。 舉例: 若 A 表格有三筆資料分別是 a_id 為 1,2,3。 若 B 表格有兩筆資料分別是 b_id 為 1,2,4。 SELECT * FROM A JOIN B ON A.a_id = B.b_id; 在執行 JOIN 合併表格之後顯示的資料會是以下。 因為合併列印的關係,兩個表格的所有資料被合併成一個表格列印出來。 而因為是 INNER JOIN 的關係,所以只印出兩表格符合條間的交集資料。 a_id b_id 1 1 2 2 LEFT JOIN: 該 JOIN 的用法是,除了顯示符合 ON 條件的資料外,還會顯示 table1 (FROM 後方所接的 table) 的所有資料。 舉例: 延續上方 INNER JOIN 時的 A, B 表格。 SELECT * FROM A LEFT JOIN B ON A.a_id = B.b_id; 執行結果如下。 可看出 A 表格的資料儘管在 a_id = 3 時找不到符合 a_id = b_id 的對象,但是該筆資料仍然被顯示出來,但對應的 b_id 因為沒有符合條件的對象而保留為 NULL。 a_id b_id 1 1 2 2

MySQL 筆記:Select 排序,使用 order by

如何使用 order by? 先舉個例子: select * from member order by create_at, update_at desc select 正常用法,後方搭配 order by 來決定排序的方式。 可以放入多個 column,越靠左方的 column 代表越高的優先權。 接著決定昇序(ASC)或降序(DESC)

MySQL 筆記:建立使用者, 更改使用者權限

     mysql 的使用者資料是建立在一個 table 當中,這個 table 記錄了所有可以使用這個 mysql 伺服器上的使用者的資料。當要登入 mysql 伺服器時,mysql 會根據這個 table 中使用者的帳號密碼去驗證目前登入的使用者是否為合法使用者。權限管理的概念也如同建立使用者資料。      而基於上述,新增使用者或更改使用者權限的方式出現了兩種,第一種是最基本的,也就是直接使用 mysql 官方提供的語法,例如:CREATE USER, GRANT 等等,而這些官方提供的方便語法執行後會立刻生效。      而第二種方法就是利用 INSERT, UPDATE, DELETE 等語法直接更改記錄使用者資料與權限的 table,但此種方法不會立刻生效,需要執行一到指令:FLUSH PRIVILEGES,這到指令有點像重新整理所有權限,一種重新載入所有使用者資料與使用者擁有權限的概念。 舉例: 建立使用者:      CREATE USER ‘newuser’@‘host’ IDENTIFIED BY ‘password’; 賦予使用者權限      GRANT ALL database.table TO ‘user’@‘host’            ALL: 權限,如果只有部分權限,則可直接指出(如:CREATE, UPDATE, SELECT...等)。           database.table: 決定要賦予的資料庫或表格。           ‘user’@‘host'要賦予權限的對象。 更新使用者權限狀況:      FLUSH PRIVILEGES;           將以上上述的加入使用者或是賦予新權限的設定重新載入,使其生效。 總結: 新增使用者和更改使用者權限有兩種方式,分別是:自行插入table 和 使用官方提供的語法。 使用官方提供的語法執行後,設定會立刻生效。 使用直接更動 table 的方式,更動後的設定不會立刻生效,需要透過 flush privileges 指令重新載入所有設定後,才會生效.