MySQL GUI CLIENT

http://www.programmer-club.com/pc2020v5/forum/ShowSameTitleN.asp?board_pc2020=mysql&id=1337&szKeyword=mssql

看到很多網友常常發問連接 MySQL 的介面或程式,小弟剛好有些心得提供給大家參考!

一、MySQL官方提供的程式
MySQL Center Control 已是MySQL早期的管理程式,除非你只用 3.xx版,不然建議大家可以換成 MySQL Administrator和MySQL Query Browser。Administrator是以管理MySQL為主要功能,而Query Browser則是操作資料(記錄)為主要功能。
註:有看到網友發文說Query Browser只能Select而無法Insert,其實這樣的說法是不對的;Select,Insert,Update和Delete都行,甚至直接下指令建立資料庫或資料表都可以。

二、For Windows的 MySQL CLient端程式
在眾出的Cient端程式中,個人覺得 以
1. EMS SQL Manager 2005 For MySQL Lite http://sqlmanager.net/en/products/mysql/manager
2.SQLyog http://www.webyog.com
3.aqua data studio http://www.aquafold.com/
這 三支程式最令人激賞,除了皆提供免費的版本可以使用以外,EMS的畫面最優,SQLyog則是提供加值的功能(例如可以將 A伺服器中的 db_a資料庫,直接重製至 B伺服器中的 db_b資料庫);而 ADS則是同時提供連結多種資料庫取勝(Oracle,Informix,Mysql, MSSQL 2000/2005, Sybase,DB2, PostgreSQL,ODBC,JDBC..);這三支程式的操作方式不一而足,不再一一贅述,大夥可以挑一個在做為自己的最愛,不過,小弟比較花心, 我…有三個最愛。

三、UTF8無法正確顯示的問題
MySQL自4.1開始對 UTF8 支援火力大開,而且,若考慮到繁簡日後的維護問題,也建議用 UTF8 編碼,不過,這樣一來就產生一個問題,若你在DOS模式用 mysql 這支client程式,select 出來的文字會變成亂碼(其實資料庫中的內容是正確的,只是顯示上有問題);
剛剛介紹的三支程式中,
1.EMS和SQLyog在處理 UTF8文字會有問題,不相容,雖然在 sqlyog的論壇看到sqlyog支援utf8,但個人試了多次,select及insert都有問題;
2.ADS可以正常SELECT, INSERT,但,本身的程式畫面中文有些不相容,不過,還算可以接受;
3.而融合度最讚的則是 MySQL官方的MySQL Query Browser,可惜,在輸入SQL語法的窗格中,一遇到中文字會有一點點小秀逗。
如果不考慮windows程式,也可以試試 phpMyAdmin,至於那一個比較好,就要大家自己取捨囉!

結語,以上只是個人在使用上的一些粗淺經驗,也許有更佳的選擇因小弟的寡聞而不知,若有先進先知者,還望不吝指教。

MySQL的大小寫敏感性

在 MySQL 中,資料庫和表對就於那些目錄下的目錄和文件。因而,操作系統的敏感性決定資料庫和表命名的大小寫敏感。這就意味著資料庫和表名在 Windows 中是大小寫不敏感的,而在大多數類型的 Unix 系統中是大小寫敏感的。一個特例是 Mac OS X,當預設的 HFS+ 文件系統使用時。然而 Mac OS X 還支援 UFS 卷,那些在 Mac OS X 是大小寫敏感的就如他們在任一 Unix 上一樣。查看章節 1.8.3 MySQL 對 ANSI SQL92 的擴展

注意:盡管在 Windows 中資料庫與表名是忽略大小寫的,你不應該在同一個查詢中使用不同的大小寫來參照一個給定的資料庫和表。下面的查詢將不能工作,因為它以 my_tableMY_TABLE 參照一個表:

mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;

列名與列的別名在所有的情況下均是忽略大小寫的。

表的別名是區分大小寫的。下面的查詢將不能工作,因為它用 aA 參照別名:

mysql> SELECT col_name FROM tbl_name AS a
->                 WHERE a.col_name = 1 OR A.col_name = 2;

如果記憶資料庫和表名的字母大小寫有困難,建議採用一個一致一約定,例如總是以小寫字母建立資料庫和表。

避免這個問題的另一個辦法就是以 -O lower_case_table_names=1 參數啟動 mysqld。預設地在 Windows 中這個選項為 1 ,在 Unix 中為 0。

如果 lower_case_table_names 為 1 ,MySQL 將在儲存與尋找時將所有的表名轉換為小寫字線。(從 MySQL 4.0.2 開始,這個選項同樣適用於資料庫名。) 注意,當你變更這個選項時,你必須在啟動 mysqld 前首先將老的表名轉換為小寫字母。

(如果使用 –defaults-file=…\my.cnf 參數來讀取指定的配置檔案啟動 mysqld 的話,你需要在配置檔案的 [mysqld] 區段下增加一行 lower_case_table_names=1)

db2轉mysql

這兩個資料庫還真的是不好轉,
db2的UI介面搞到讓人看不懂,而msqyl雖有Migration Toolkit的工具,
支援很多種資料庫,但恰巧就是沒db2,
本想使用mssql來做匯入/匯出的動作,但又連不到mysql,
看來,只能用mssql來做中介,
從db2–>mssql這串順利OK,
但從mssql–>mysql不知為什麼msqyl Migration Toolkit出了問題,
就是creat不了table,害我只好上網找,
好險,mssql–>mysql的轉換工具還算蠻多的….

SQL研究

[CREATE PROCEDURE] (Transact-SQL)

ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHT/tsqlref9/html/afe3d86d-c9ab-44e4-b74d-4e3dbd9cc58c.htm

[TRUNCATE TABLE] (Transact-SQL)

ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHT/tsqlref9/html/3d544eed-3993-4055-983d-ea334f8c5c58.htm
從資料表中移除所有資料列,且不記錄個別資料列的刪除動作。TRUNCATE TABLE 功能和不含 WHERE 子句的 DELETE 陳述式相同;不過,TRUNCATE TABLE 比較快,使用的系統資源和交易記錄資源也比較少。
相較於 DELETE 陳述式,TRUNCATE TABLE 的優點如下:

  • 使用的交易記錄空間較少。
  • DELETE 陳述式每次會移除一個資料列,在交易記錄中,每個刪除的資料列都會記錄一個項目。TRUNCATE TABLE 會取消配置用來儲存資料表資料的資料頁,以移除資料,交易記錄只會記錄頁面的取消配置。
  • 通常會使用較少鎖定。
  • 當利用資料列鎖定來執行 DELETE 陳述式時,會鎖定資料表中的每個資料列,以便進行刪除。TRUNCATE TABLE 一律會鎖定資料表和頁面,但不會鎖定每個資料列。
  • 零頁面會保留在資料表中,沒有例外。
  • 在執行 DELETE 陳述式之後,資料表仍可以包含空白頁。例如,當沒有至少一項獨佔 (LCK_M_X) 資料表鎖定時,無法取消配置堆積中的空白頁。如果刪除作業並未使用資料表鎖定,資料表 (堆積) 會包含許多空白頁。對於索引,刪除作業可能會留下空白頁,不過,背景清除處理序很快就會取消配置這些頁面。

TRUNCATE TABLE 會移除資料表中的所有資料列,但會保留資料表結構及其資料行、條件約束、索引等。若要移除資料表的資料之外,還要移除資料表定義,請使用 DROP TABLE 陳述式。
如果資料表包含識別資料行,這個資料行的計數器會重設為定義給這個資料行的初始值。如果未定義任何初始值,就會使用預設值 1。若要識別計數器,請改用 DELETE。

SQL SERVER 2005的服務

http://msdn2.microsoft.com/zh-tw/library/ms166352.aspx

[Integration Services]
企業資料轉換和資料整合方案,可讓您用來擷取、轉換和合併不同來源的資料,並將資料移到單一或多個目的地。

[FullText Search]
SQL Server 包含針對 SQL Server 資料表中一般以字元為主的資料發出全文檢索查詢的功能。全文檢索查詢可以包含單字和片語,或多種格式的單字或片語。

[Analysis Services]
提供用於商務智慧應用程式的線上分析處理 (OLAP) 和資料採礦功能。Analysis Services 支援 OLAP,可讓您設計、建立和管理多維度結構,其中包含從其他資料來源 (例如關聯式資料庫) 彙總而成的資料。針對資料採礦應用程式,Analysis Services 可讓您使用各種廣泛的產業標準資料採礦演算法,設計、建立和視覺化從其他資料來源建構而成的資料採礦模型。

[Brower]
提供 SQL Server 連接資訊給用戶端電腦。

[Agent]
執行作業、監視 SQL Server 和引發警示,並且允許某些管理工作的自動化。

[Database Engine]
提供資料的儲存、處理和控制存取以及快速交易處理。

200

Group by + Order by

SELECT select_list
FROM table_source
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]

使用GROUP BY搭配aggregate function

select number,max(name)
from student
group by number
order by number

使用[GROUP BY]後,再用[ORDER BY],能拿你select_list的欄位來排序,
如要使用
aggregate function,則須設定別名

select number,max(name) as X1
from student
group by number
order by X1

RAND (Transact-SQL)

在SQL SERVER取亂數的方式:

ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHT/tsqlref9/html/363c84d6-b9fa-49ba-9a75-e44f27535ff6.htm

範例: 

DECLARE @counter smallint
SET @counter = 1
WHILE @counter < 5
BEGIN
SELECT RAND() Random_Number
SET @counter = @counter + 1
END
GO