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的轉換工具還算蠻多的….

GridView

GridView是2.0才有的新玩意,是MS推出來取代DataGrid的,
配合新的DataSource,要寫的CODE更少了,
以下是我在使用DataSource、GridView上遇到的問題
作法一:

如果GridView的DataSource是在程式中給gridview的,那排序跟換頁等程式都要自己撰寫,要在它的兩個事件中寫程式碼,我的做法是:
‘==========================
‘GridView 的換頁動作
‘==========================
Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView1.PageIndexChanging

Me.GridView1.PageIndex = e.NewPageIndex
BindGridView()

End Sub

‘==========================
‘GridView 的排序動作
‘==========================
Protected Sub GridView1_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles GridView1.Sorting
Dim strSort As String = ViewState(“sort”)

If Right(strSort, 4) = “desc” Then
ViewState(“sort”) = e.SortExpression
Else
ViewState(“sort”) = e.SortExpression + ” desc”
End If

BindGridView()

End Sub

作法二:

1. 還是拉一個SQLDataSource, 只連到資料庫, 並不做Select, update, insert, delete command的處理.
2. 並把Gridview的datasource只到這個SQLDataSource
3. 要異動Gridview的內容時, 將SQLDataSource.SelectCommand = SQL 指令, 重新做Gridview.DataBind()即可

相關參考:

http://phone.idv.tw/cs2/forums/thread/274.aspx

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。

心機重

例一:JACKY並沒有給他我們這群DIY成員的MSN,也可能是故意不給,
但她並沒有知難而退,各位看官能猜出她是如何取得我的MSN呢?
方法,由JACKY的BLOG的連結取得,並在我的BLOG留言,
我當然會好奇,這個人是誰,再由此說她是JACKY在大學時的朋友,
為什麼我會有他的MSN呢?主要是因為我有自己寫一套系統,在註冊時,
她就用MSN的MAIL做為帳號,我也好奇的把他加入,也因此,
我們這群的MSN她都有了,但她表示,她只是JACKY的朋友

例二:JACKY和她的關係不明,其他人也愛亂猜,
我也跟著瞎猜,她也就跟著一起演戲,
之後被爆開了,但她推說是JACKY不想讓別人知道,
原因,她不想結婚,所以不想讓JACKY造成困擾
我還有聽到其他的說法是因為JACKY先背叛她去追學姐

例三:如果愛裝傻不等於心機重,那愛裝傻+愛試探,請問等於什麼

例四:如果又恰巧是位女性,就可以用女生的武器-裝可憐&哭,
光這招,就可以讓兩位男性吵翻天了,
事後,女方完全沒責任