mysql 心得 MySQL心得6

2021-10-20 22:24:58 字數 3533 閱讀 1790

1. 算術運算子 算術運算子在兩個表示式上執行數**算,這兩個表示式可以是任何數字資料型別。算術運算子有:(加)、-(減)、*(乘)、/(除)和%(求模)5種運算。 (1 )「」運算子 「」運算子用於獲得乙個或多個的和: select 1.23.09345, 0.0000000000

1.算術運算子

算術運算子在兩個表示式上執行數**算,這兩個表示式可以是任何數字資料型別。算術運算子有:+(加)、-(減)、*(乘)、/(除)和%(求模)5種運算。

(1)「+」運算子

「+」運算子用於獲得乙個或多個值的和:

select 1.2+3.09345, 0.00000000001+0.00000000001;

(2)「–」運算子

「–」運算子用於從乙個值中減去另乙個值,並可以更改引數符號:

select 200-201, 0.14-0.1, -2(更改引數符號);

注意:若該操作符與bigint同時使用,則返回值也是乙個bigint。這意味著在可能產生–263的整數運算中應當避免使用減號「–」,否則會出現錯誤。其中,+(加)和–(減)運算子還可用於對日期時間值(如datetime)進行算術運算。

例如: select '2008-01-20'+ interval 22 day;

說明:interval關鍵字後面跟乙個時間間隔,22 day表示在當前的日期基礎上加上22天。當前日期為2008-01-20,加上22天後為2008-02-11。

(3)「*」運算子

「*」運算子用來獲得兩個或多個值的乘積:

select 5*12,5*0, -19530415*-19540319(算負數乘積時不加括號);

(4)「/」運算子

與乘法用法一樣,只是除以零的除法是不允許的,如果這樣做,mysql會返回null:

(5)「%」運算子

「%」運算子用來獲得乙個或多個除法運算的餘數:

select 12%5, -32%7,3%0;

2.比較運算子

比較運算子(又稱關係運算子),用於比較兩個表示式的值,其運算結果為邏輯值,可以為三種之一:1(真)、0(假)及 null(不能確定)。下表列出了在mysql中可以使用的各種比較運算子。

運 算 符

含 義運 算 符

含 義等於

小於等於

大於不等於

小於相等或都等於空

大於等於

比較運算子可以用於比較數字和字串。數字作為浮點值比較,而字串以不區分大小寫的方式進行比較(除非使用特殊的binary關鍵字)。前面已經介紹了在運算過程中mysql能夠自動地把數字轉換為字串,而在比較運算過程中,mysql能夠自動地把字串轉換為數字。

下面這個例子說明了在不同的情況下mysql以不同的方式處理數字和字串。

例: 執行下列語句: select 5 = '5ab','5'='5ab';

結果為:1,0;分析:第乙個中,字母a、b自動轉換為數字,因為沒對應數字,固轉換為0,所以與左邊相等;第二個中都可能向著對方的型別轉換,沒準了就。

(1)「=」運算子

「=」運算子用於比較表示式的兩邊是否相等,也可以對字串進行比較,示例如下:

注意:因為在預設情況下mysql以不區分大小寫的方式比較字串,所以表示式'a'='a'的結果為真。如果想執行區分大小寫的比較,可以新增binary關鍵字,這意味著對字串以二進位制方式處理。當在字串上執行比較運算時,mysql將區分字串的大小寫。

結果為:1,0;

(2)「<>」運算子

與「=」運算子相對立的是「<>」運算子,它用來檢測表示式的兩邊是否不相等,如果不相等則返回真值,相等則返回假值。

示例如下: select 5<>5 ,5<>6,』a』<>』a』,』5a』<>』5b』;

結果為:0,1,0,1

selectnull<>null, 0<>null, 0<>0;

結果為:null,null,0

3.邏輯運算子

邏輯運算子用於對某個條件進行測試,運算結果為true(1)或false(0)。mysql提供的邏輯運算子如下表所示。

運 算 符

運 算 規 則

運 算 符

運 算 規 則

not或!

邏輯非or或||

邏輯或and或&&

邏輯與xor

邏輯異或

(1)and運算子

and運算子用於測試兩個或更多的值(或表示式求值)的有效性,如果它的所有成分為真,並且不是null,它返回真值,否則返回假值。例如: select (1=1) and(9>10),('a'='a') and ('c'結果為0,1;

(2)xor運算子

如果包含的值或表示式乙個為真而另乙個為假並且不是null,那麼它返回真值,否則返回假值。(兩者一樣返回假,不一樣返回真)

例如: select (1=1) xor (2=3), (1<2) xor (9<10);

4.位運算子

位運算子在兩個表示式之間執行二進位制位操作,這兩個表示式的型別可為整型或與整型相容的資料型別(如字元型,但不能為image型別),位運算子如下表所示。

運 算 符

運 算 規 則

運 算 符

運 算 規 則

位and

位取反位or

位右移位xor

位左移5.除了以上的運算子,mysql還提供了其他一些常用的運算子,如between運算子、in運算子、is null 和isnot null運算子、like運算子、regexp運算子等,這些在第4章select語句中的where子句中已經有過介紹。

當乙個複雜的表示式有多個運算子時,運算子優先順序決定執行運算的先後次序。執行的順序會影響所得到的運算結果。運算子優先順序如下表所示。在乙個表示式中按先高(優先順序數字小)後低(優先順序數字大)的順序進行運算。

運 算 符

優先順序運 算 符

優先順序+(正)、–(負)、~(按位not)

not*(乘)、/(除)、%(模)

and+(加)、–(減)

all、any、between、in、like、or、some

=(賦值)

^(位異或)、&(位與)、|(位或)

6.表示式

表示式就是常量、變數、列名、複雜計算、運算子和函式的組合。乙個表示式通常可以得到乙個值。與常量和變數一樣,表示式的值也具有某種資料型別,可能的資料型別有字元型別、數值型別、日期時間型別。這樣,根據表示式的值的型別,表示式可分為字元型表示式、數值型表示式和日期型表示式。

表示式還可以根據值的複雜性來分類:

當表示式的結果只是乙個值,如乙個數值、乙個單詞或乙個日期,這種表示式叫做標量表示式。例如:1+2,'a'>'b'。

當表示式的結果是由不同型別資料組成的一行值,這種表示式叫做行表示式。例如,('081101','王林','計算機',500)。

當表示式的結果為0個、1個或多個行表示式的集合,那麼這個表示式就叫做表表示式。

表示式按照形式還可分為單一表示式和復合表示式。單一表示式就是乙個單一的值,如乙個常量或列名。復合表示式是由運算子將多個單一表示式連線而成的表示式,例如:1+2+3,a=b+3,'2008-01-20'+interval 2 month。

表示式一般用在select及select語句的where子句中。

mysql 優化心得

mysql的優花其實是個艱難的工作,要搞的東西太多了,之前在 中摘了一些原則,最近對乙個100多萬條資料的表做優花時,有如下心得 1 取必須要用的資料 這裡對於select 語句中只選有用的字段,這樣的原則就肯定人人都知道的了。但關鍵的是,要從全域性考慮問題,比如我的這個應用 是每個新聞網頁的跟帖,...

mysql 優化心得

mysql的優花其實是個艱難的工作,要搞的東西太多了,之前在 中摘了一些原則,最近對乙個100多萬條資料的表做優花時,有如下心得 1 取必須要用的資料 這裡對於select 語句中只選有用的字段,這樣的原則就肯定人人都知道的了。但關鍵的是,要從全域性考慮問題,比如我的這個應用 是每個新聞網頁的跟帖,...

Mysql 索引心得

1 頻繁查詢的字段,應該建立索引。2 更新非常頻繁的字段,不應該建立索引。3 唯一性太差的字段,比如 gender欄位,就不應該建立索引。4 不會出現在where條件之後的字段,不應該建立索引。滿足一下條件,應該建立索引 1 頻繁要查詢的字段,經常出現在where條件後面的字段,應該建立索引。2 更...