mysql 位或 mysql 使用位運算

2021-10-18 20:55:31 字數 1332 閱讀 3971

如果你不知道什麼是位運算的話,那麼請你先去看看基礎的c語言教程吧。與運算a&b ,或運算a|b, 異資料庫

如果你不知道什麼是位運算的話, 那麼請你先去看看基礎的c語言教程吧。

與運算 a & b  ,

或運算 a | b ,

異或運算 a ^ b ,

或者你也可以將 與運算理解為 + 法

例如1|2 = 3   (1+2 = 3)

1|2|4 = 7 (1+2+4 = 7)

將 異或運算理解為 - 法

例如3^2 = 1 (3-2 = 1)

3^1 = 2  (3-1 = 2)

最後將 與運算 作為判斷

例如3&2 = 1    (3 = 1 + 2, 由 1和2組成 ,所以判斷3&2 = 1 )

3&4 = 0   ( 3 沒有由 4組成,所以判斷3&4 = 0)

那麼位運算有何用處呢, 例如 unix系統中的許可權, 通常我們所知  許可權分為  r 讀, w 寫, x 執行,其中 它們的權值分別為4,2,1, 所以 如果使用者要想擁有這三個許可權 就必須  chomd 7  , 即 7=4+2+1 表明 這個使用者具有rwx許可權,如果只想這個使用者具有r,x許可權 那麼就 chomd 5即可

說道此處就要涉及到資料庫了。

通常 我們的資料表中 可能會包含各種狀態屬性, 例如 blog表中 , 我們需要有欄位表示其是否公開,是否有設定密碼,是否被管理員封鎖,是否被置頂等等。 也會遇到在後期運維中,策劃要求增加新的功能而造成你需要增加新的字段。

這樣會造成後期的維護困難,資料庫增大,索引增大的情況。 這時使用位運算就可以巧妙的解決。

例如define('b_public',1);  // 公開

define('b_password',2);  // 加密

define('b_lock',4); // 封鎖

define('b_top',8); // 置頂

-- 公開blog  給status進行或運算

update blog set status = status | 1;

-- 加密blog 給status進行或運算

update blog set status = status | 2;

-- 封鎖blog

update blog set status = status | 4;

-- 解鎖blog

update blog set status = status ^ 4;

--查詢所有被置頂的blog

select * from blog where status & 8;

雖然節省了空間,但是由於沒有辦法對status欄位使用索引,所以如何使用來優化查詢才是最重點的。

mysql 位或 MySQL 運算子

mysql 運算子 本章節我們主要介紹 mysql 的運算子及運算子的優先順序。mysql 主要有以下幾種運算子 算術運算子 比較運算子 邏輯運算子 位運算子 算術運算子 mysql 支援的算術運算子包括 運算子作用 加法 減法 乘法 或 div除法 或 mod取餘 在除法運算和模運算中,如果除數為...

32位 64位mysql安裝使用

1.1 64位 1.2 32位 3 配置mysql配置檔案 在e mysql mysql 5.7.27 win32中新建my.ini 編輯如下配置資訊,my.ini需要以ansi格式編碼,不然後面會報錯 mysql 設定mysql客戶端預設字符集 default character set utf8...

64位mysql使用教程

解壓後,配置環境變數 path中新增 d program files mysql mysql 5.7.17 winx64 bin 在啟動mysql 之前我們要做個處理 5.7版本在解壓後是沒有data這個資料夾的,不要手動建立乙個空的data資料夾,而是進入cmd,輸入mysqld initiali...