mysql數(shù)據(jù)庫(kù)中提供了很豐富的函數(shù)。mysql函數(shù)包括數(shù)學(xué)函數(shù)、字符串函數(shù)、日期和時(shí)間函數(shù)、條件判斷函數(shù)、系統(tǒng)信息函數(shù)、加密函數(shù)、格式化函數(shù)等。通過(guò)這些函數(shù),可以簡(jiǎn)化用戶的操作。
我們提供的服務(wù)有:網(wǎng)站制作、成都做網(wǎng)站、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、博興ssl等。為近1000家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的博興網(wǎng)站制作公司
簡(jiǎn)單介紹幾類函數(shù)的使用范圍:
數(shù)學(xué)函數(shù):這類函數(shù)只要用于處理數(shù)字。這類函數(shù)包括絕對(duì)值函數(shù)、正弦函數(shù)、余弦函數(shù)、獲取隨機(jī)數(shù)函數(shù)等。
字符串函數(shù):這類函數(shù)主要用于處理字符串。其中包括字符串連接函數(shù)、字符串比較函數(shù)、將字符串的字母變成小寫(xiě)或大寫(xiě)字母的函數(shù)、獲取子串的函數(shù)等。
日期和時(shí)間函數(shù):這類函數(shù)主要用于處理日期和時(shí)間。其中包括取當(dāng)前時(shí)間的函數(shù)、獲取當(dāng)前日期的函數(shù)、返回年份的函數(shù)、返回日期的函數(shù)等。
流程函數(shù):這類函數(shù)主要用于在SQL語(yǔ)句中控制條件選擇。其中包括IF語(yǔ)句、CASE語(yǔ)句、WHEN語(yǔ)句等。
系統(tǒng)信息函數(shù):這類函數(shù)主要用于獲取mysql數(shù)據(jù)庫(kù)的系統(tǒng)信息。其中包括獲取數(shù)據(jù)庫(kù)名的函數(shù)、獲取當(dāng)前用戶的函數(shù)、獲取數(shù)據(jù)庫(kù)版本的函數(shù)等。
加密函數(shù):這類函數(shù)主要用于對(duì)字符串進(jìn)行加密解密。其中包括字符串加密函數(shù)、字符串解密函數(shù)等。
其他函數(shù):包括格式化函數(shù)、鎖函數(shù)等。
1.字符串函數(shù)
char_lengt()
concat()
instr()
lcase()
left()
ltrim()
mid()
2.時(shí)間函數(shù)
now()
curdate()
curtime()
datediff()
date_add()
數(shù)學(xué)函數(shù)
abs()
ceiling()
floor()
pow()
rand()
round()
其他函數(shù)
md5()
version()
database()
UUID()
同一使用select 函數(shù)名(參數(shù)列表)
轉(zhuǎn)載 以下的文章主要介紹的是如何用MySQL內(nèi)置函數(shù)來(lái)轉(zhuǎn)換ip地址與相關(guān)數(shù)字,在實(shí)際操作中在處理字符格式的時(shí)候,例如將54789轉(zhuǎn)換為5,4789這樣的,我們只要用:format(12345,0)即可,以下就是具體內(nèi)容介紹。
用MySQL內(nèi)置函數(shù)轉(zhuǎn)換ip地址和數(shù)字
利用兩個(gè)內(nèi)置函數(shù)
inet_aton:將ip地址轉(zhuǎn)換成數(shù)字型
inet_ntoa:將數(shù)字型轉(zhuǎn)換成ip地址
充分利用mysql內(nèi)置的format函數(shù)
尤其是在處理字符格式的時(shí)候,例如將12345轉(zhuǎn)換成12,345這樣的,只要用:format(12345,0)即可,如果用format(12345,2)則顯示的是12,345.00了...
利用MySQL內(nèi)置函數(shù)處理時(shí)間戳問(wèn)題
eg : select FROM_UnixTIME(UNIX_TIMESTAMP(),'%Y %D %M %h:%i:%s %x');
結(jié)果: 2004 3rd August 03:35:48 2004
利用mysql_convert_table_format轉(zhuǎn)換表類型
需要DBI和DBD的mysql相關(guān)模塊支持才能用,例子:
mysql_convert_table_format --user=root --password='xx' --type=myisam test yejr
修改mysql表中的字段名
alter table tb_name change old_col new_col definition...
利用臨時(shí)變量
select @var1:=a1+a2 as a_sum,@var2:=b1+b2 as b_sum,@var1+@var2 as total_sum from test_table xxx;
用int類型存儲(chǔ)ip地址
原先錯(cuò)誤的認(rèn)為必須用bigint才夠,后來(lái)發(fā)現(xiàn)使用int unsigned類型就足夠了。 :)
利用IF函數(shù)快速修改ENUM字段值
一個(gè)例子:
update rule set enable = if('0' = enable,'1','0') where xxx;
enable 類型:enum('0','1') not null default '0'
事務(wù)無(wú)法嵌套
避免長(zhǎng)時(shí)間的sleep連接造成的連接數(shù)超出問(wèn)題
設(shè)定全局變量 wait_timeout 和 interactive_timeout 為比較小的值,例如
10(s),就能使每個(gè)sleep連接在10s之后如果還沒(méi)有查詢的話自動(dòng)斷開(kāi)。
設(shè)定mysql內(nèi)置函數(shù)客戶端的提示符(prompt)
export MYSQL_PS1="(\u:\h:)\d "
則用 mysql -hlocalhost -uroot -pxx db_name 登錄后,提示符變成:
(root:localhost:)db_name
好用吧 :), 時(shí)時(shí)刻刻提醒你在哪個(gè)服務(wù)器上,盡量避免誤操作的發(fā)生
更詳細(xì)的請(qǐng)查看MySQL手冊(cè)
整理MyISAM碎片
1.) 定期運(yùn)行 OPTIMIZE TABLE 命令即可
2.) 用mysqldump出數(shù)據(jù),然后重新import回去,這對(duì)大表來(lái)說(shuō)顯然第一種方法比較方便
整理Innodb碎片
1.) 運(yùn)行NULL命令, ALTER TABLE XXX ENGINE=Innodb;
2.) 同上的mysqldump方法
MySQL如果認(rèn)為檢索的記錄數(shù)量超過(guò)總記錄數(shù)的30%,則選擇全表掃描,而非使用索引
MySQL 5.0.3之后,VARCHAR字段后面的空格就不再刪除
升級(jí)到4.1.1或更高后,就很難降級(jí)回到4.0或4.1了,因?yàn)?InnoDB 使用了多個(gè)表空間的緣故
MySQL 4.1之后,MySQL把字符串類型字段的長(zhǎng)度定義理解為字符長(zhǎng)度而不是字節(jié)長(zhǎng)度
MySQL 4.1=5.0時(shí),增加了一個(gè)新的啟動(dòng)選項(xiàng) innodb_table_locks,它導(dǎo)致 LOCK TABLE 時(shí)也可以請(qǐng)求 InnoDB
表鎖。這個(gè)選項(xiàng)默認(rèn)打開(kāi),不過(guò)可能在 AUTOCOMMIT=1 和 LOCK TABLES 應(yīng)用中會(huì)導(dǎo)致死鎖
5.0.3開(kāi)始,在計(jì)算 DECIMAL 值和舍入精確值的時(shí)候采用精確數(shù)學(xué),DECIMAL 用更有效的格式來(lái)存儲(chǔ)
從5.0.12開(kāi)始,自然連接和使用 USING
的連接,包括外部連接的衍生形式,都按照SQL:2003標(biāo)準(zhǔn)來(lái)處理了;這個(gè)變化導(dǎo)致減少了自然連接和使用 USING
的連接產(chǎn)生的結(jié)果字段數(shù),并且還將按照更合理的順序顯示這些字段,逗號(hào)比較符的優(yōu)先順序和 JOIN, LEFT JOIN 中的一樣了
在以前,等待超時(shí)的鎖會(huì)導(dǎo)致 InnoDB 回滾當(dāng)前全部事務(wù),從5.0.13開(kāi)始,就只回滾最近的SQL語(yǔ)句了
InnoDB 和 MyISAM 表中空格結(jié)尾的 TEXT 字段索引順序改變了。因此需要運(yùn)行 "CHECK TABLE" 語(yǔ)句修復(fù)數(shù)據(jù)表,如果出現(xiàn)錯(cuò)誤,就運(yùn)行
"OPTIMIZE TABLE" 或 "REPAIR TABLE" 語(yǔ)句修復(fù),甚至重新轉(zhuǎn)儲(chǔ)(用mysqldump)
MySQL 5.0.3到5.0.5之間版本的 MyISAM 和 InnoDB 表中創(chuàng)建的 DECIMAL 字段升級(jí)到5.0.6之后會(huì)發(fā)生崩潰。
以上的相關(guān)內(nèi)容就是對(duì)用MySQL內(nèi)置函數(shù)轉(zhuǎn)換ip地址和數(shù)字的介紹,望你能有所收獲。
數(shù)據(jù)庫(kù)信息集合具信息查找添加刪除功能建立數(shù)據(jù)庫(kù)目本身便信息管理使用用戶軟件同訪問(wèn)數(shù)據(jù)庫(kù)信息數(shù)據(jù)庫(kù)本身所要求具備功能訪問(wèn)權(quán)限限制
查詢數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程和函數(shù)
select `name` from mysql.proc where db = 'xx' and `type` = 'PROCEDURE' //存儲(chǔ)過(guò)程
select `name` from mysql.proc where db = 'xx' and `type` = 'FUNCTION' //函數(shù)
show procedure status; //存儲(chǔ)過(guò)程
show function status; //函數(shù)
查看存儲(chǔ)過(guò)程或函數(shù)的創(chuàng)建代碼
show create procedure proc_name;
show create function func_name;
查看視圖
SELECT * from information_schema.VIEWS //視圖
SELECT * from information_schema.TABLES //表
查看觸發(fā)器
SHOW TRIGGERS [FROM db_name] [LIKE expr]
SELECT * FROM triggers T WHERE trigger_name=”mytrigger” \G
MySQL中的全文索引類型FULLTEXT的索引?!?FULLTEXT 索引僅可用于 MyISAM 表;他們可以從CHAR、VARCHAR或TEXT列中作為CREATE TABLE語(yǔ)句的一部分被創(chuàng)建,或是隨后使用ALTER TABLE 或 CREATE INDEX被添加。對(duì)于較大的數(shù)據(jù)集,將你的資料輸入一個(gè)沒(méi)有FULLTEXT索引的表中,然后創(chuàng)建索引,其速度比把資料輸入現(xiàn)有FULLTEXT索引的速度更為快。
全文搜索同MATCH()函數(shù)一起執(zhí)行。
mysql CREATE TABLE articles (
-id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
-title VARCHAR(200),
-body TEXT,
-FULLTEXT (title,body)- );Query OK, 0 rows affected (0.00 sec)
mysql INSERT INTO articles (title,body) VALUES
- ('MySQL Tutorial','DBMS stands for DataBase ...'),
- ('How To Use MySQL Well','After you went through a ...'),
- ('Optimizing MySQL','In this tutorial we will show ...'),
- ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
- ('MySQL vs. YourSQL','In the following database comparison ...'),
- ('MySQL Security','When configured properly, MySQL ...');
Query OK, 6 rows affected (0.00 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql SELECT * FROM articles
- WHERE MATCH (title,body) AGAINST ('database');
+----+-------------------+------------------------------------------+
| id | title | body |
+----+-------------------+------------------------------------------+
| 5 | MySQL vs. YourSQL | In the following database comparison ... |
| 1 | MySQL Tutorial| DBMS stands for DataBase ... |
+----+-------------------+------------------------------------------+
2 rows in set (0.00 sec)
MATCH()函數(shù)對(duì)于一個(gè)字符串執(zhí)行資料庫(kù)內(nèi)的自然語(yǔ)言搜索。一個(gè)資料庫(kù)就是1套1個(gè)或2個(gè)包含在FULLTEXT內(nèi)的列。搜索字符串作為對(duì)AGAINST()的參數(shù)而被給定。對(duì)于表中的每一行, MATCH() 返回一個(gè)相關(guān)值,即, 搜索字符串和 MATCH()表中指定列中該行文字之間的一個(gè)相似性度量。
在默認(rèn)狀態(tài)下, 搜索的執(zhí)行方式為不區(qū)分大小寫(xiě)方式。然而,你可以通過(guò)對(duì)編入索引的列使用二進(jìn)制排序方式執(zhí)行區(qū)分大小寫(xiě)的全文搜索。 例如,可以向一個(gè)使用latin1字符集的列給定latin1_bin 的排序方式,對(duì)于全文搜索區(qū)分大小寫(xiě)。
如上述所舉例子,當(dāng)MATCH()被用在一個(gè) WHERE 語(yǔ)句中時(shí),相關(guān)值是非負(fù)浮點(diǎn)數(shù)。零相關(guān)的意思是沒(méi)有相似性。相關(guān)性的計(jì)算是基于該行中單詞的數(shù)目, 該行中獨(dú)特子的數(shù)目,資料庫(kù)中單詞的總數(shù),以及包含特殊詞的文件(行)數(shù)目。
對(duì)于自然語(yǔ)言全文搜索,要求MATCH() 函數(shù)中命名的列和你的表中一些FULLTEXT索引中包含的列相同。對(duì)于前述問(wèn)訊, 注意,MATCH()函數(shù)(題目及全文)中所命名的列和文章表的FULLTEXT索引中的列相同。