Time of Update: 2017-01-18
當我們輸入不管大小寫都能查詢到資料,例如:輸入 aaa 或者aaA ,AAA都能查詢同樣的結果,說明查詢條件對大小寫不敏感。解決方案一:於是懷疑Mysql的問題。做個實驗:直接使用用戶端用sql查詢資料庫。 發現的確是大小不敏感 。通過查詢資料發現需要設定collate(校對) 。 collate規則: *_bin: 表示的是binary case sensitive collation,也就是說是區分大小寫 *_cs: case sensitive
Time of Update: 2017-01-18
刪除和更新操作的開銷往往比插入高,所以一個好的設計需要減少對資料庫的更新和刪除操作。3.1更新操作資料庫的更新操作會帶來一連串的“效應”:更新操作需要記錄日誌(以便錯誤時復原);更新可變長欄位(如,varchar類型)會帶來資料實體儲存體的變化(記錄的移動);更新索引欄位會導致索引重建;更新主鍵會導致資料重組等。這一切不但會造成更新操作本身效率低,而且由於磁片片段的產生會造成以後查詢效能的降低。為了應對這一情況,有兩種策略:一、減少更新次數,把多個欄位的更新寫到同一個語句裡;二、避免更新。這兩種
Time of Update: 2017-01-18
如果2張表的欄位一致,並且希望插入全部資料,可以用這種方法: Code: 複製代碼 代碼如下: INSERT INTO 目標表 SELECT * FROM 來源表; 比如要將 articles 表插入到 newArticles 表中,則是: 複製代碼 代碼如下: INSERT INTO newArticles SELECT * FROM articles; 如果只希望匯入指定欄位,可以用這種方法: 複製代碼 代碼如下: INSERT INTO 目標表 (欄位1, 欄位2, ...)
Time of Update: 2017-01-18
第一步——安裝MySQL 到http://dev.mysql.com/downloads/ 下載這個伺服器、MySQL GUI工具和MySQL ODBC驅動。你可以選擇的伺服器有:5.0, 5.1或6.0。然後安裝它們。 安裝過程中的注意事項: 你的防火牆應該設定為允許通過3306連接埠串連。 將MySQL作為一個服務來運行(可以選擇命令列方式)。 MySQL安裝預設username/login = root和server = localhost。
Time of Update: 2017-01-18
複製代碼 代碼如下:DELIMITER $$ CREATE FUNCTION `t_girl` . `func_rand_string` ( f_num tinyint unsigned , f_type tinyint unsigned ) RETURNS varchar ( 32) BEGIN -- Translate the number to letter. -- No 1 stands for string only. -- No 2 stands for number only. -
Time of Update: 2017-01-18
批量替換的具體文法是: 複製代碼 代碼如下: UPDATE 表名 SET 指定欄位 = replace(指定欄位, '要替換的字串', '想要的字串') WHERE 條件; 如果你想把 article 表中 ID 小於5000的記錄,content 欄位中“解決”替換成“解放”,那麼文法就是: 複製代碼 代碼如下: UPDATE article SET content = replace(content, '解決', '解放') WHERE ID<5000; 是不是很方便 :)
Time of Update: 2017-01-18
目錄 1. 字元集的選擇 1 2. 主鍵 1 3. 外鍵 2 4. 索引 2 4.1. 以下情況適合於建立索引 2 4.2. 以下的情況下不適合建立索引 3 4.3. 聯合索引 3 4.4. 索引長度 4 5. 特殊欄位 4 5.1. 冗餘欄位 4 5.2. 分割欄位 4 5.3. BLOB和CLOB 5 6. 特殊 5 6.1. 表格分割 5 6.2. 使用非事務表類型 5 1. 字元集的選擇 如果確認全部是中文,不會使用多語言以及中文無法表示的字元,那麼GBK是首選。
Time of Update: 2017-01-18
解決方案如下: 1、先刪除mysql服務 控制台->管理工具->服務,先停止mysql服務 開始->運行->輸入cmd->sc delete mysql 服務刪除 2、修改my.ini 如果沒將其建立(以下設定可以參考http://hi.baidu.com/chuyanwu/blog/item/98142a2e7d448d564ec2262c.html一般這個設定都不會錯誤) [mysqld] # set basedir to your installation
Time of Update: 2017-01-18
一. PHP對串連資料庫的步驟: 1 與資料庫建立串連: $conn = mysql_connect("localhost:3306","username","pass"); 三個參數:第一個是資料庫伺服器主機名稱及連接埠localhost:3306,如果主機名稱或連接埠預設將使用php.ini中設定的值,後面兩個分別為串連資料庫伺服器的使用者名稱和口令,同樣預設為php.ini中設定的值。 2 提交查詢語句: a. 使用函數mysql_select_db()來選擇要訪問的資料庫 eg:
Time of Update: 2017-01-18
MySQL是支援在單個查詢字串中指定多語句執行的,使用方法是給連結指定參數: 複製代碼 代碼如下: //連結時設定 mysql_real_connect( ..., CLIENT_MULTI_STATEMENTS ); //或者 //中途指定 mysql_set_server_option( mysql, MYSQL_OPTION_MULTI_STATEMENTS_ON ); //mysql是串連的名稱 當使用執行多語句功能後,一定要讀完整個resault集,否則會出現錯誤:Commands
Time of Update: 2017-01-18
mysql>prompt \u@\h(\d) \r:\m:\s> \u:串連使用者 \h:串連主機 \d:串連資料庫 \r:\m:\s:顯示目前時間 mysql>prompt \u@\h(\d) \r:\m:\s> root@localhost(mysql) 08:55:21> status -------------- mysql Ver 14.14 Distrib 5.1.33, for Win32 (ia32) Connection id: 2
Time of Update: 2017-01-18
1、執行個體 複製代碼 代碼如下:DELIMITER // DROP PROCEDURE IF EXISTS `test`.`p_getvalue` // CREATE DEFINER=`root`@`localhost` PROCEDURE `p_getvalue`( in id varchar(20),out s varchar(20) ) begin if (length(id)=11) then select 'A_B_C_D' into s; elseif(length(id)=8)
Time of Update: 2017-01-18
使用方法,在select語句前加上explain就可以了: 如:explain select * from test1 EXPLAIN列的解釋: table:顯示這一行的資料是關於哪張表的 type:這是重要的列,顯示串連使用了何種類型。從最好到最差的連線類型為const、eq_reg、ref、range、indexhe和ALL possible_keys:顯示可能應用在這張表中的索引。如果為空白,沒有可能的索引。可以為相關的域從WHERE語句中選擇一個合適的語句 key:
Time of Update: 2017-01-18
可將如下語句 query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576 存放到/etc/my.cnf檔案的[mysqld]下 然後重啟mysql資料庫 service mysqld restart 就會啟動mysql的緩衝機制Query Cache。 在使用中,查詢快取會儲存一個 SELECT 查詢的文本與被傳送到用戶端的相應結果。
Time of Update: 2017-01-18
MySQL 的 SQL 語法調整主要都是使用 EXPLAIN , 但是這個並沒辦法知道詳細的 Ram(Memory)/CPU 等使用量. 於 MySQL 5.0.37 以上開始支援 MySQL Query Profiler, 可以查詢到此 SQL 會執行多少時間, 並看出 CPU/Memory 使用量, 執行過程中 System lock, Table lock 花多少時間等等. MySQL Query Profile 詳細介紹可見: Using the New MySQL Query
Time of Update: 2017-01-18
一、問題 要產生兩類資料: A類:兩位的 01 02 03 。。。09 10 11。。。19 20 21 。。。98 99 另一類B類:三位的 100 101 102 。。。110 111 112。。。998 999 二、解決辦法 1、建表 複製代碼 代碼如下: CREATE TABLE `test`.`ta` ( `a` varchar(45) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 2、建立預存程序 複製代碼 代碼如下:
Time of Update: 2017-01-18
1、將Int 轉為varchar經常用 concat函數,比如concat(8,'0') 得到字串 '80' 2、將varchar 轉為Int 用 cast(a as signed) a為varchar類型的字串 總結:類型轉換和SQL Server一樣,就是型別參數有點點不同 : CAST(xxx AS 類型) , CONVERT(xxx,類型) 可用的類型 二進位,同帶binary首碼的效果 : BINARY 字元型,可帶參數 : CHAR() 日期 : DATE 時間: TIME
Time of Update: 2017-01-18
實體記憶體越大,設定就越大.預設為2402,調到512-1024最佳 innodb_additional_mem_pool_size=4M 預設為2M innodb_flush_log_at_trx_commit=1 (設定為0就是等到innodb_log_buffer_size列隊滿後再統一儲存,預設為1) innodb_log_buffer_size=2M 預設為1M innodb_thread_concurrency=8 你的伺服器CPU有幾個就設定為幾,建議用預設一般為8
Time of Update: 2017-01-18
如 現有字串 "[]aseabcd[12345]ddxabcdsx[]",要截取"abcd[" 和 "abcd["之後的第一個 "]" 之間的內容 "12345",當然當中的內容長度不是固定的,可以是"123456" 或者其他字串。 他問我的時候,我第一反應就是想的indexOf,後來查了下 發現mysql中沒有indexOf 而是 locate。 經過半個多小時的嘗試,最好幫他實現了這個效果。 複製代碼 代碼如下: CREATE PROCEDURE sp_str ( IN p_str
Time of Update: 2017-01-18
廢話不多了,直接貼代碼了一查詢數值型資料:SELECT * FROM tb_name WHERE sum > 100; 查詢謂詞:>,=,<,<>,!=,!>,!<,=>,=<二查詢字串 SELECT * FROM tb_stu WHERE sname = '小劉' SELECT * FROM tb_stu WHERE sname like '劉%' SELECT * FROM tb_stu WHERE sname like