常用sql:
SHOW VARIABLES LIKE 'character%';查看字符集
SHOW VARIABLES LIKE 'collation_%';
show engines;查看引擎
show databases; 查看數據庫
show tables;
desc table_name;
GRANT ALL PRIVILEGES ON *.* TO 'guming'@'localhost' IDENTIFIED BY 'guming' WITH GRANT OPTION;授權
show PRIVILEGES;查看權限
show grants for test@localhost;查看用戶權限
select * from mysql.user where user='test';
函數
邏輯:case when,isnull,IFnull等
數學:mod,cell,floor,round(),trancate(),abs()
字符串函數:rtrim,ltrim,substring,locate(),INSTR(),length,left,right
REPEAT(str,count)
返回一個由重復的字符串str 組成的字符串,字符串str的數目等于count 。 若 count <= 0,則返回一個空字符串。若str 或 count 為 NULL,則返回 NULL 。
REPLACE(str,from_str,to_str)
返回字符串str 以及所有被字符串to_str替代的字符串from_str 。
REVERSE(str)
返回字符串 str ,順序和字符順序相反。
日期函數:current_date,datediff,adddate,date_add,dayofweek,dayofyear,dayofmonth,month,hour(),
str_to_date: SELECT STR_TO_DATE('20031031',GET_FORMAT(DATE,'ISO'));
select date_format(current_date(),'%Y-%m-%d %W');
select extract(YEAR_MONTH FROM current_date());
轉換函數:
cast:可使用CAST()函數將某個值轉為另外一種類型。CONVERT
convert_TZ:CONVERT_TZ() 將時間日期值dt 從from_tz 給出的時區轉到to_tz給出的時區
concat:返回結果為連接參數產生的字符串。如有任何一個參數為NULL ,則返回值為 NULL。
全文檢索
SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('database');
在默認狀態下, 搜索的執行方式為不區分大小寫方式。然而,你可以通過對編入索引的列使用二進制排序方式執行區分大小寫的全文搜索。 例如,可以向一個使用latin1字符集的列給定latin1_bin 的排序方式,對于全文搜索區分大小寫。
利用IN BOOLEAN MODE修改程序, MySQL 也可以執行布爾全文搜索:
mysql> SELECT * FROM articles WHERE MATCH (title,body)
-> AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);
這個問詢檢索所有包含單詞“MySQL”的行,但不檢索包含單詞“YourSQL”的行。
全文搜索支持查詢擴展功能 (特別是其多變的“盲查詢擴展功能” )。若搜索短語的長度過短, 那么用戶則需要依靠全文搜索引擎通常缺乏的內隱知識進行查詢。這時,查詢擴展功能通常很有用。例如, 某位搜索 “database” 一詞的用戶,
可能認為“MySQL”、“Oracle”、“DB2” and “RDBMS”均為符合 “databases”的項,因此都應被返回。這既為內隱知識。
mysql> SELECT * FROM articles
-> WHERE MATCH (title,body)
-> AGAINST ('database' WITH QUERY EXPANSION);
加密函數:
ENCRYPT()
md5()
password()
字符集操作
SELECT CHARSET(CONVERT('abc' USING utf8));SELECT CHARSET(USER());
查詢緩存設置:
服務器啟動時要禁用查詢緩存,設置query_cache_size系統變量為0,query_cache_type=on
SET GLOBAL query_cache_size = 40000;
SHOW VARIABLES LIKE 'query_cache_size';
SHOW VARIABLES LIKE 'query_cache%';
開啟緩存后:
select * from ad_position where id=201;
SHOW STATUS LIKE 'Qcache_hits'; 查詢命中次數
SET SESSION query_cache_type = ON;(ON:1,OFF:0,2:DEMAND)
on 啟用緩存,SELECT SQL_NO_CACHE除外
off 不用緩存,
DEMAND 僅對以SELECT SQL_CACHE開始的那些查詢語句啟用緩存。
清除緩存:
可以使用FLUSH QUERY CACHE語句來清理查詢緩存碎片以提高內存使用性能。該語句不從緩存中移出任何查詢。
RESET QUERY CACHE語句從查詢緩存中移出所有查詢。FLUSH TABLES語句也執行同樣的工作。
什么類型的數據緩存?
查詢結果集緩存,對于動態的結果集是不緩存的。必須是一樣的sql,并且結果集無變化。
表更新后,對應表的緩存失效,此時同一sql有很能結果集不同了。
注釋:查詢緩存不返回舊的數據。當表更改后,查詢緩存值的相關條目被清空。
注釋:如果你有許多mysqld服務器更新相同的MyISAM表,在這種情況下查詢緩存不起作用。
注釋:查詢緩存不適用于服務器方編寫的語句。如果正在使用服務器方編寫的語句,要考慮到這些語句將不會應用查詢緩存
調整緩存:
· query_cache_min_res_unit默認值是4KB。這應該適合大部分情況。
· 如果你有大量返回小結果數據的查詢,默認數據塊大小可能會導致內存碎片,顯示為大量空閑內存塊。由于缺少內存,內存碎片會強制查詢緩存從緩存內存中修整(刪除)查詢。這時,你應該減少query_cache_min_res_unit變量的值。
空閑塊和由于修整而移出的查詢的數量通過Qcache_free_blocks和Qcache_lowmem_prunes變量的值給出。
·
如果大量查詢返回大結果(檢查
Qcache_total_blocks和Qcache_queries_in_cache狀態變量),你可以通過增加
query_cache_min_res_unit變量的值來提高性能。但是,注意不要使它變得太大(參見前面的條目)。
更改存儲引擎
ALTER TABLE engineTest ENGINE = ARCHIVE;
字符集設置:
在ini文件中加入下面配置:
default-character-set = utf8
character_set_server = utf8
導入數據庫備份時遇到的問題,空間不夠
修改ini文件中的配置:max_allowed_packet = 16M
參考文檔:http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chapter/