亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3370 | 回復(fù): 0
打印 上一主題 下一主題

使用Mysql的小技巧總結(jié) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2010-02-23 13:51 |只看該作者 |倒序?yàn)g覽

使用Mysql的小技巧總結(jié)
2009年09月02日 作者: 大頭剛 
使用Mysql也很長一段時(shí)間了,在使用的過程中遇到過各種各樣的問題,有些看上去很小的問題,在解決的過程中卻花了很長時(shí)間,解決后才發(fā)現(xiàn),原來這樣簡單。所以總結(jié)了一些經(jīng)驗(yàn)和技巧,把它寫出來,希望對讀者能有所幫助,少走彎路。
1. binary
BINARY不是函數(shù),是類型轉(zhuǎn)換運(yùn)算符,它用來強(qiáng)制它后面的字符串為一個二進(jìn)制字符串,可以理解為在字符串比較的時(shí)候區(qū)分大小寫。舉例:
mysql> select * from tjob;
+-------+
| title |
+-------+
| 11    |
| 22    |
| 33    |
| aa    |
| bb    |
| cc    |
| AA    |
| BB    |
| CC    |
+-------+
9 rows in set (0.00 sec)

mysql> select title from tjob where title like 'a%';
+-------+
| title |
+-------+
| aa    |
| AA    |
+-------+
2 rows in set (0.00 sec)

mysql> select title from tjob where binary title like 'a%';
+-------+
| title |
+-------+
| aa    |
+-------+
1 row in set (0.00 sec)

mysql> select title from tjob where binary title like 'A%';
+-------+
| title |
+-------+
| AA    |
+-------+
1 row in set (0.00 sec)
2.group by with rollup
在group by結(jié)果的最后一行,列出所有行的總和,如下,多了最后一行
mysql> select count(*),title from tjob group by title with rollup;
+----------+-------+
| count(*) | title |
+----------+-------+
|        1 | 11    |
|        1 | 22    |
|        1 | 33    |
|        2 | aa    |
|        2 | bb    |
|        2 | cc    |
|        9 | NULL  |
+----------+-------+
7 rows in set (0.00 sec)
3.group_concat
group_concat合并行,例如把title字段的值打印在一行,逗號分隔。
mysql> select group_concat(title separator ',') from tjob;
+-----------------------------------+
| group_concat(title separator ',') |
+-----------------------------------+
| 11,22,33,aa,bb,cc,AA,BB,CC        |
+-----------------------------------+
1 row in set (0.00 sec)
4.order by if
排序時(shí)將某列中特定值排在最前,例如我在排序中要把a(bǔ)a放在最前面:
select title from tjob order by if(title='aa',0,1),title;
+-------+
| title |
+-------+
| aa    |
| AA    |
| 11    |
| 22    |
| 33    |
| bb    |
| BB    |
| cc    |
| CC    |
+-------+
5.prompt
如果有很多mysql數(shù)據(jù)庫管理,有時(shí)會發(fā)生自己忘記了在那臺服務(wù)器,那臺數(shù)據(jù)庫上,毋庸多說,誰都知道這有多危險(xiǎn)?梢允褂胮rompt來重寫mysql客戶端提示符。
mysql>prompt \u@\h(\d) \r:\m:\s>
\u:連接用戶
\h:連接主機(jī)
\d:連接數(shù)據(jù)庫
\r:\m:\s:顯示當(dāng)前時(shí)間

如果嫌每次都在命令行修改麻煩,直接修改my.cnf參數(shù)
[mysql]    #這是不是[mysqld]   
prompt=\\u@\\d \\R:\\m>
6.pager
如果select出來的結(jié)果集超過幾個屏幕,那么前面的結(jié)果一晃而過無法看到。使用pager可以設(shè)置調(diào)用os的more或者less等顯示查詢結(jié)果,和在os中使用more或者less查看大文件的效果一樣。
mysql> pager more
PAGER set to 'more'
mysql> \P more
PAGER set to 'more'

mysql> pager less
PAGER set to 'less'
mysql> \P less
PAGER set to 'less'

mysql> nopager
PAGER set to stdout
7.delimiter
delimiter就是告訴MySQL解釋器,命令的結(jié)束符是什么。
默認(rèn)情況下MySQL命令結(jié)束是以分號(;),在寫過程或者函數(shù)等情況下,這會產(chǎn)生不少問題,因?yàn)榇鎯^程中有許多語句,所以每一個都需要一個分號。因此你需要選擇一個不太可能出現(xiàn)在你的語句或程序中的字符串作為分隔符。
mysql> delimiter $
mysql> select count(*) from tjob$
+----------+
| count(*) |
+----------+
|        9 |
+----------+
1 row in set (0.00 sec)

想改回到分號,只需
mysql> delimiter ;
8.load data local infile
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [FIELDS      //字段
        [TERMINATED BY 'string']   //字段分割符
        [[OPTIONALLY] ENCLOSED BY 'char']//字段的包含符,默認(rèn)是''(空)
        [ESCAPED BY 'char' ]       //轉(zhuǎn)義符,如'\\'
    ]
    [LINES
        [STARTING BY 'string']     //行的開始字符串,從string后面開始
        [TERMINATED BY 'string']   //行分隔符,默認(rèn)是'\n'(空行)
    ]
    [IGNORE number LINES]          //跳過前面number行
    [(col_name_or_user_var,...)]   //字段名稱
    [SET col_name = expr,...)]
使用load data導(dǎo)入數(shù)據(jù),看起來是很簡單,但是卻經(jīng)常容易出錯。比如,需要導(dǎo)入的文本有時(shí)候并不是以’\n’(空行)結(jié)尾,不細(xì)心的話很容易出錯。有時(shí)候?qū)氲臄?shù)據(jù)有列的信息,則可以使用IGNORE number LINES跳過前面指定行數(shù)等。
9.unix_timestamp and from_unixtime
unix_timestamp將時(shí)間轉(zhuǎn)化成時(shí)間戳格式。
from_unixtime將時(shí)間戳轉(zhuǎn)化成時(shí)間格式。
mysql> select unix_timestamp(now());
+-----------------------+
| unix_timestamp(now()) |
+-----------------------+
|            1251884321 |
+-----------------------+
1 row in set (0.00 sec)

mysql> select from_unixtime(1251884321);
+---------------------------+
| from_unixtime(1251884321) |
+---------------------------+
| 2009-09-02 17:38:41       |
+---------------------------+
1 row in set (0.00 sec)
很多時(shí)候mysql的應(yīng)用都是使用時(shí)間戳格式來存儲時(shí)間,這兩個函數(shù)應(yīng)用的場合很多,需要牢記。
上面列舉了本人在使用mysql的時(shí)候遇到的一些容易出錯的問題和自己的一些經(jīng)驗(yàn)技巧,目前想到的就是上面的這些,以后將不斷補(bǔ)充,歡迎大家給我留言補(bǔ)充。


本文來自ChinaUnix博客,如果查看原文請點(diǎn):http://blog.chinaunix.net/u3/111930/showart_2184975.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP