日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL之运算符和函数

發布時間:2025/3/20 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL之运算符和函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MySQL中的函數主要有一下幾類:

?字符函數;數值運算符和函數;比較運算符和函數;日期時間函數;信息函數;聚合函數;加密函數

1、字符函數

1、CONCAT()

root@localhost test>SELECT CONCAT('study','MySQL');

可以使用連接符進行輸出,如將study和MySQL之間進行連接,輸出study-MySQL的形式

root@localhost test>select CONCAT('study','-','MySQL');

首先創建一個存儲名字的數據表

root@localhost test>create table name(-> first_name varchar(20),-> last_name varchar(20)-> );

root@localhost test>insert name(first_name,last_name) VALUES ('Tom','.J'),('Jam','.L'),('KoBe','.H');

現在為了獲取完整的名字信息,將上述的名字信息輸出,可使用CONCAT命令進行輸出

root@localhost test>select CONCAT(first_name,last_name) AS full_name FROM name;

2、CONCAT_WS()

而CONCAT_WS指定連接符,第一個參數為連接符,第二個參數為需要連接的參數1,第三個參數為需要連接的參數2,以此類推

root@localhost test>select CONCAT_WS('|','A','B','C');


3、FORMAT()

FORMAT進行數字字符化,之所以把這個函數歸結到字符函數中,是因為其返回結果是一個字符型

root@localhost test>select FORMAT(12560.75456,2);

而如果想保留到整數位,則將‘2’對應的參數位置變成0即可

root@localhost test>select FORMAT(12560.75456,0);

4、UPPER/LOWER

大小寫轉換,分別是將大寫字母轉換成小寫字母;把消息字母轉換成大寫字母

root@localhost test>select UPPER('mysql'); root@localhost test>select LOWER('MYSQL');

5、LEFT/RIGHT

從字符串的左側開始獲取;或者從字符串的右側開始獲取,有兩個參數

root@localhost test>select LEFT('study-MySQL',5);

root@localhost test>select RIGHT('study-MySQL',5);

同時使用LOWER和RIGHT函數

root@localhost test>select LOWER(RIGHT('study-MySQL',5));

當然還有幾個函數


root@localhost test>select LENGTH('study-MySQL'); root@localhost test>select LTRIM(' study-MySQL ');刪除前導空格,指的是刪除第一個字符之前的空格 root@localhost test>select RTRIM(' study-MySQL ');刪除后續空格,指的是刪除最后一個字符之后的空格 root@localhost test>select TRIM(' study-MySQL ');刪除前導空格和后續空格

此外TRIM函數還有別的用法

root@localhost test>select TRIM(LEADING '?' FROM '??study-MySQL???');

表示刪除字符串中的前導的“?”字符,使用關鍵字LEADING


root@localhost test>select TRIM(TRAILING '?' FROM '??study-MySQL???');

表示刪除字符串中的后續的“?”字符,使用關鍵字TRAILING


刪除前導和后續所有的?字符,使用關鍵字BOTH

root@localhost test>select TRIM(BOTH '?' FROM '??study-MySQL???');

對于??study??MySQL??中間的?如何處理呢?通過使用replace進行替換

root@localhost test>select REPLACE('??My??SQL???','?','');

在替換的時候不是說一個字符只能替換一個字符,可以是一對多,如:

root@localhost test>select REPLACE('??My??SQL???','?','!!');

將一個?替換成2個!如上所示。也可以是多對一,如將兩個?換成一個!,如:

root@localhost test>select REPLACE('??My??SQL???','??','!');

因為右邊有三個?,因此只能替換兩個?,還有一個?成單了,無法替換

對于SUBSTRING是進行字符串的截取,有三個參數,分別是從哪個字符串中截取,從第幾位開始截取,以及截取幾個參數

root@localhost test>select SUBSTRING('study-MySQL',7,5);

substring(str, pos); substring(str, pos, len)

在字符串study-MySQL中從第7位開始截取,截取5個,注意這里與程序中不同,其下標是從1開始的。

如果只寫如兩個參數,如下表示從這一位開始一直截取到字符串的結尾

root@localhost test>select SUBSTRING('study-MySQL',7);

root@localhost test>select SUBSTRING('study-MySQL',-5,5);

從字符串的倒數第5位開始,共截取5個字符

root@localhost test>select SUBSTRING('study-MySQL',-5);

從字符串的倒數第5位開始,一直截取到結束

對于LIKE和NOT LIKE的匹配與否的問題

root@localhost test>select 'MySQL' like 'M%';

%這里表示0個或者多個字符


這里的“1”表示 true,但這里沒有體現LIKE的強大功能,現在在數據表name中插入一個記錄

root@localhost test>insert name VALUES ('JJ%','.M');

現在想找到名字中包含 J 的記錄,可以如下:

root@localhost test>select * from name WHERE first_name LIKE '%J%';


那如果想找到名字中包含%就應該

root@localhost test>select * from name WHERE first_name LIKE '%%%';

第一個和最后一個%表示任意字符,中間的%表示需要查找的字符,但是這樣MySQL認為這三個都是通配符,因此會找出所有記錄,那如何解決呢?

root@localhost test>select * from name WHERE first_name LIKE '%1%%' ESCAPE 1;

告訴系統1后面的這個字符不需要再進行解析,直接認為是標準的%字符就可以了,這里不一定非要為1,只要是數字就可以

另外 “_”匹配的是任意一個字符,“%”匹配的是任意個字符。

2、數值運算符和函數

root@localhost test>select CEIL(3.01); 向上取整,為4 root@localhost test>select FLOOR(3.99); 向下取整,為3 root@localhost test>select 3/4; 普通除法,為0.75 root@localhost test>select 3 DIV 4; 整數除法,向下取整 root@localhost test>select 5 MOD 3; 取余,等價于%取余操作 root@localhost test>select 5.2 MOD 3; 取余位2.2 root@localhost test>select 5 % 3; root@localhost test>select POWER(2,3); 冪運算,2的3次方 root@localhost test>select ROUND(3.642,2); 保留2位,為3.64 root@localhost test>select ROUND(3.642,1); 保留1位,為3.6 root@localhost test>select ROUND(3.642,0); 只保留到整數,為3.7 root@localhost test>select TRUNCATE(125.89,2);只保留2位,為125.89 root@localhost test>select TRUNCATE(125.89,1);只保留1位,為125.8 root@localhost test>select TRUNCATE(125.89,0);只保留0位,為125 root@localhost test>select TRUNCATE(125.89,-1);為120

3、比較運算符和函數

root@localhost test>select 15 BETWEEN 10 AND 20;

root@localhost test>select 5 IN(2,3,5,7,9);

判斷5在不在序列范圍之間,在的話輸出為1


root@localhost test>insert name VALUE (NULL,'KM');

查看first_name中為空的記錄

root@localhost test>select * from name WHERE first_name IS NULL;

4、日期時間函數

root@localhost test>select NOW(); 顯示當前時間 root@localhost test>select DATE_ADD('2014-3-13',INTERVAL 365 DAY ); 2015-03-13 root@localhost test>select DATE_ADD('2014-3-13',INTERVAL 1 YEAR ); 2015-03-13 root@localhost test>select DATE_ADD('2014-3-13',INTERVAL -365 DAY ); 2013-03-13 root@localhost test>select DATE_ADD('2014-3-13',INTERVAL 3 WEEK); 2013-03-13 root@localhost test>select DATEDIFF('2014-3-6','2014-4-2'); 日期差值運算為-27 root@localhost test>select DATE_FORMAT('2014-4-17','%m/%d/%Y');日期輸出為04/17/2014

5、信息函數


root@localhost test>select CONNECTION_ID(); root@localhost test>SELECT DATABASE();

而對于LAST_INSERT_ID,在數據表name中沒有id字段,如果要得到last_insert_id必須在數據表中存在一個自動編號的字段


root@localhost test>alter table name ADD id SMALLINT UNSIGNED KEY-> AUTO_INCREMENT FIRST;


root@localhost test>INSERT name(first_name,last_name) VALUES ('KKK','.JJJ');

現在新寫入的記錄的ID為6,如果想要通過函數得到這個id可以用:

root@localhost test>select LAST_INSERT_ID();

如果同時寫入多條記錄呢,那只會返回第一條記錄對應的id

root@localhost test>INSERT name(first_name,last_name) VALUES ('KKK','.JJJ'),('AAA','.BBB');

root@localhost test>select USER(); 當前登錄用戶 root@localhost test>SELECT VERSION();當前版本信息

6、聚合函數

聚合函數的一個特點是只有一個返回值

root@localhost test>select avg(goods_price) AS avg_price FROM goods;

計算數據表goods中的平均價格,保留到小數點后的兩位

root@localhost test>select ROUND(AVG(goods_price),2) AS avg_price FROM goods;

root@localhost test>select COUNT(goods_id) AS coutsID FROM goods;

root@localhost test>select MAX(goods_price) AS coutsID FROM goods; root@localhost test>select MIN(goods_price) AS coutsID FROM goods; root@localhost test>select SUM(goods_price) AS coutsID FROM goods;

6、加密函數


可以對任何一個信息進行MD5的加密,加密后的結果是一個32的數字

root@localhost test>select MD5('admin');

而PASSWORD是進行密碼的計算

root@localhost test>select PASSWORD('admin');

如果MySQL中是為了以后的Web頁面做準備,盡量使用MD5,而PASSWORD是為了修改客戶端密碼

root@localhost test>select PASSWORD = PASSWORD('delimater');將登陸密碼修改為 delimater,退出后再次登陸即可生效。


總結

以上是生活随笔為你收集整理的MySQL之运算符和函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。