中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql 基本命令(3)-數據類型和運算符

發布時間:2020-07-17 09:41:51 來源:網絡 閱讀:362 作者:tianfo 欄目:MySQL數據庫

一、數值類型

1、數據類型有:數值類型、日i期類型、字符串類型。

2、int(20),int 指整數的取值范圍,里面的參數20,只是表示數據顯示的寬度。顯示寬度和數據類型的取值范圍是無關的。顯示寬度只是指明mysql最大可能顯示的寬度,如果插入的數據大于顯示寬度的值,只要該值不超過 該數據類型的取值范圍,數值依然可以插入,而且還能全部顯示出來。例如:規定 id int(4),插入一個數值123456到id,顯示的還是123456,和寬度無關。數據類型的寬度可以指定也可以不指定,不指定,系統會根據數據類型指定默認的寬度。

3、整數類型:tinyint(很小),smallint(小),mediumint(中),int(正常),bigint(大)

4、小數分為:浮點型和定點型

5、浮點::單精度浮點(float)雙精度浮點(double)

6、定點:decimal

7、無論定點或者是浮點,超出精度范圍會進行四舍五入處理。

8、浮點的表現形式(M,N),M是精度(總共幾位數),N是標度(小數的位數)。

9、浮點和定點的優缺點:

(1)浮點優點:長度一定,浮點表示更大的數據范圍;浮點缺點:會有精度問題。

 (2)精度要求高用定點,做小數比較和加減最好用定點,避免浮點。

二、日期類型

1、year,date,time,datetime,timestamp

2、year 范圍:

(1)2位字符串 0-69(19xx)  70-99 (20xx) 

(2)2為數字 1-69(19xx)    70-99(20xx)

 3、time and date

  (1)1112和‘1112’表示分和秒 00:11:12;11:12表示時和分11:12:00。

  (2)date :用'1919-02-09'不能用1919-02-09,用900920不能用90-09-02;

  (3)日期中mysql是允許‘不嚴格’語法,日期之間的間隔符用哪種符號都可以(-,.,/,@);

  (4)刪除表中的數據 :delete from test4;

刪除前:

mysql> SELECT * FROM test4;

+------+----------+------------+

| id   | t        | d          |

+------+----------+------------+

|  127 | NULL     | NULL       |

| NULL | 00:11:12 | NULL       |

| NULL | 00:11:12 | NULL       |

| NULL | 11:12:00 | NULL       |

| NULL | NULL     | 1990-02-09 |

| NULL | NULL     | 1990-02-09 |

+------+----------+------------+

6 rows in set (0.00 sec)

刪除后:


mysql> SELECT * FROM test4;

Empty set (0.00 sec)

4、修改時區 :set time_zone='+10:00' 修改為東10區,每增加一個市區時間增加一個小時。

三、文本字符串

1、char(M),varchar(M),其中的M必須選擇,選擇必須適合。

 Field | Type       | Null | K

-------+------------+------+--

 c1    | char(1)    | YES  |

 c2    | varchar(5) | YES  |

mysql> INSERT INTO test5 VALUES('abcd','abcde');

ERROR 1406 (22001): Data too long for column 'c1' at row 1  超出char的長度報錯。

2、text 保存非二進制的字符串,如文章內容、評論等。

3、enum 是一個字符串對象,其值為表創建時在列規定中枚舉對的一列值

    l

mysql> CREATE TABLE test6

    -> (

    -> soc INT, levevl enum('excellent','good','bad')

    -> );

Query OK, 0 rows affected (0.02 sec)


mysql> INSERT INTO test6 VALUES(70,2),(90,1),(30,3);


mysql> SELECT * FROM test6;

+------+-----------+

| soc  | levevl    |i

+------+-----------+

|   70 | good      |

|   90 | excellent |

|   30 | bad       |

+------+-----------+h

3 rows in set (0.00 sec)

4、set

(1)set 是一個字符串對象,可以有零或者多個值,最多有64個成員.

(2)enum 類型的字段只能從定義的列中選擇一個值插入,set類型的列可從定義的列值中選擇多個字符的聯合。

(3)插入set字段中列值有重復,則自動刪除重復的值(大小寫也是重復的)。

(4)插入的值必須是set中有的數據,如果插入沒有出現的數據則忽視這些值,并給出警告。

(5)例子:

mysql> CREATE TABLE test7

    -> (

    -> s SET('1','a','k','yu')

    -> );

Query OK, 0 rows affected (0.02 sec)

正確的:

mysql> INSERT INTO test7 VALUES('1,a'),('a,k,yu'),('1,yu');


mysql> SELECT * FROM test7;

+--------+

| s      |

+--------+

| 1,a    |

| a,k,yu |

| 1,yu   |

+--------+

3 rows in set (0.00 sec)

超范圍錯誤的:

mysql> INSERT INTO test7 VALUES('a,c');

ERROR 1265 (01000): Data truncated for column 's' at row 1

5、二進制字符串類型 : BIT,BINARY,VARBINARY,TINYBLOB,BLOB,MENDIUMBLOB,LONGBLOB.

6、char和varchar的選擇:

 (1) 在速度有要求的用char實現。

(2)對于MYISAM存儲引擎:用char,用空間換時間。

(3)InnoDB存儲引擎:用varchar,可以節省空間。

7、blob和text的選擇:

    BLOB主要存圖片、音頻信息,TEXT只能存純文本文件。

四:運算符

1、類型:算數運算符、比較運算符、邏輯運算符、位操作運算符。

2、

(1)算數運算(+、-、*、/、%(余或者模運算))。

(2)比較(>,<,=,>=,<=,!=) in ,between and, is null,greatest,least,like ,regexp(正則)

(3)邏輯運算求值結果都為1(true)或為0(false)。運算符(邏輯與(AND或者&&),邏輯或(OR或者||),邏輯非(NOT 或者!),邏輯異或(XOR)).

3、位操作運算:位與(&),位或(|),位非(~),位異或(^)、左移(<<)、右移(>>)

4、操作符用法:

(1)算數運算

mysql> CREATE TABLE test8(num INT(4));


mysql> INSERT INTO test8  VALUES(64);


mysql> SELECT * FROM test8;

+------+

| num  |

+------+

|   64 |

+------+

1 row in set (0.00 sec)


mysql> SELECT num ,num+10,num-10,num*10,num/10,num%10 FROM test8;

+------+--------+--------+--------+--------+--------+

| num  | num+10 | num-10 | num*10 | num/10 | num%10 |

+------+--------+--------+--------+--------+--------+

|   64 |     74 |     54 |    640 | 6.4000 |      4 |

+------+--------+--------+--------+--------+--------+

1 row in set (0.00 sec)

(2)比較運算

1>等比較

mysql> SELECT 1=2,1=1,1<=>2,1<=>1;

+-----+-----+-------+-------+

| 1=2 | 1=1 | 1<=>2 | 1<=>1 |

+-----+-----+-------+-------+

|   0 |   1 |     0 |     1 |

+-----+-----+-------+-------+

1 row in set (0.00 sec)

=和<=>是一樣的效果。

2>

若有一個或者兩個參數為NULL,則比較運算的結果為NULL;若同一個比較運算中的兩個參數都是字符串,則按照字符串進行比較;若兩個參數均為整數,則按照整數進行比較;若一個字符串和數字進行相等判斷,則自動將字符串轉換為數。

3>

mysql> SELECT 'good'!='bad','123'!=123,'rts'<>'rt';

+---------------+------------+-------------+

| 'good'!='bad' | '123'!=123 | 'rts'<>'rt' |

+---------------+------------+-------------+

|             1 |          0 |           1 |

+---------------+------------+-------------+

1 row in set (0.00 sec)

!=和<>效果一樣

4> <、<=,>,>=的用法和上邊用法一樣。

5>IS NULL ISNULL() ,IS NOT NULL用法。

mysql> SELECT NULL IS NULL, NULL ISNULL,10 IS NOT NULL;

+--------------+--------+----------------+

| NULL IS NULL | ISNULL | 10 IS NOT NULL |

+--------------+--------+----------------+

|            1 |   NULL |              1 |

+--------------+--------+----------------+

1 row in set (0.04 sec)


mysql> SELECT ISNULL(NULL),ISNULL(1);

+--------------+-----------+

| ISNULL(NULL) | ISNULL(1) |

+--------------+-----------+

|            1 |         0 |

+--------------+-----------+

1 row in set (0.03 sec)

6>between.. and ...

mysql> SELECT 4 BETWEEN 2 AND 5, 5 BETWEEN 2 AND 3;

+-------------------+-------------------+

| 4 BETWEEN 2 AND 5 | 5 BETWEEN 2 AND 3 |

+-------------------+-------------------+

|                 1 |                 0 |

+-------------------+-------------------+

1 row in set (0.00 sec)

7>找最大最小值

最小值

mysql> SELECT LEAST(12,34,56,67,10,7);

+-------------------------+

| LEAST(12,34,56,67,10,7) |

+-------------------------+

|                       7 |

+-------------------------+

1 row in set (0.03 sec)

最大值

mysql> SELECT GREATEST (20,12,45,16,87,3);

+-----------------------------+

| GREATEST (20,12,45,16,87,3) |

+-----------------------------+

|                          87 |

+-----------------------------+

1 row in set (0.00 sec)

當進行最大最小值比較時,如果比較值列表中有NULL,則不能判斷大小,返回值為NULL;

當進行字符串的比較時,字母越靠后值越大,反之值越小。

8> in ,not in 判斷操作數是否為列表中一個值。

mysql> SELECT 3 IN(1,4,3,2,6), 4 NOT IN(1,4,5,6,7);

+-----------------+---------------------+

| 3 IN(1,4,3,2,6) | 4 NOT IN(1,4,5,6,7) |

+-----------------+---------------------+

|               1 |                   0 |

+-----------------+---------------------+

1 row in set (0.03 sec)

9>LIKE 只有兩種通配符(%,可以匹配任何數目的字符,甚至包括零字符;_可以匹配一個字符。)

mysql> SELECT 'phon' like 'phon','phon'like 'pho_','phon'like 'p%';

+--------------------+-------------------+-----------------+

| 'phon' like 'phon' | 'phon'like 'pho_' | 'phon'like 'p%' |

+--------------------+-------------------+-----------------+

|                  1 |                 1 |               1 |

+--------------------+-------------------+-----------------+

1 row in set (0.00 sec)


mysql> SELECT 'phon'  like '%';

+------------------+

| 'phon'  like '%' |

+------------------+

|                1 |

+------------------+

1 row in set (0.00 sec)

10>regexp 正則通配符

‘^’匹配以該字符后面的字符開頭的字符串

 ‘$’匹配以該字符后面的字符結尾的字符串

‘.’匹配任何一個單字符

‘[...]’匹配在括號內的任何字符

‘*’匹配零個或多個在他前面的字符。


mysql> SELECT 'ssky' REGEXP '^s','ssky' REGEXP 'y&','ssky' REGEXP 's.sky';

+--------------------+--------------------+-----------------------+

| 'ssky' REGEXP '^s' | 'ssky' REGEXP 'y&' | 'ssky' REGEXP 's.sky' |

+--------------------+--------------------+-----------------------+

|                  1 |                  0 |                     0 |

+--------------------+--------------------+-----------------------+

1 row in set (0.00 sec)


mysql> SELECT 'abdedey' REGEXP 'de*';

+------------------------+

| 'abdedey' REGEXP 'de*' |

+------------------------+

|                      1 |

+------------------------+

1 row in set (0.00 sec)

* 加其中一個字符可以匹配任何字符串,類似于like。

5、邏輯運算

1> NOT 或者 !

邏輯非運算符表示當前操作數為0時,所得值為1;操作數為非零時,所得值為0;操作數為null時返回值為null。

2>AND 或者 &&

邏輯與運算符表示當所有操作數為非零值、并且不為null,計算結果為1;當的一個或者多個操作數位零時所得結果為0.

3>OR 或者||

邏輯或運算符,中兩個操作數均為非null值,且任意一個操作數為非0值時(1 or 2 or 0 為1),結果為1;0 or null,為null;1or null 為1;null or null 為null

4>異或運算

1 xor 1  和 0 xor 0為 0; 1 xor0 為1;1 xor null為null.

1 xor 1 xor 1 中有多個操作數,運算順序從左到右依次計算1 xor 1 結果為0,再與1進行異或運算,結果為1.

a xor b 的計算等同于(a AND(NOTb))或者 ((NOTa) AND b).

6、位運算:用來對二進制字節中 的位進行測試、位移或者測試處理。

位運算的類型:位或(|),位與(&),位異或(^),位左移(<<),位右移(>>),位取反,反轉所有比特(~)

1>位與   位或

mysql> SELECT 3& 4,3|4;

+------+-----+

| 3& 4 | 3|4 |

+------+-----+

|    0 |   7 |

+------+-----+

1 row in set (0.03 sec)

2>位異或運算 對應為的二進制不同,對應為的結果為1如

3:011 , 4:100。 3^4 就是011 ^100  結果 111=7

mysql> SELECT 3^4;

+-----+

| 3^4 |

+-----+

|   7 |

+-----+

1 row in set (0.00 sec)

3>位左移 ,位右移

就是將二進制的中1的位置左移或右移,移出的位置補0.

列:11<<3  1100  

4>位 取反的實質就是將參與運算的數據,按對應的二進制數諸位反轉,即1去反后變0,0取反后變1.

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

光山县| 临猗县| 苏州市| 旌德县| 普兰县| 南投县| 乡宁县| 吐鲁番市| 昌吉市| 桐梓县| 云林县| 崇左市| 金门县| 北辰区| 盐边县| 天台县| 清原| 华安县| 武宣县| 海城市| 瓮安县| 哈尔滨市| 岳池县| 于田县| 广昌县| 宁乡县| 博白县| 台东市| 石泉县| 女性| 德清县| 连城县| 莆田市| 治县。| 仁寿县| 乐昌市| 陇川县| 重庆市| 迭部县| 额尔古纳市| 沙洋县|