1、ALTER 對於列的應用:

change 和modify 都可以修改表的定義,不同的是change 后面需要寫兩次列名,不方便。 但是change 的優點是可以修改列名稱,modify 則不能

(1)更改列名

格式:CHANGE old_col_name new_col_name column_definition,保留old和new列名,列名:a —->b 列類型

ALTER TABLE t1 CHANGE a b INTEGER;

(2)更改列類型,不改列名,保留old和new的列名,即使一樣

ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;

(3)更改列類型,不改列名。 不保留old列名。

ALTER TABLE t1 MODIFY b BIGINT NOT NULL;

2、SQL 語句主要可以划分為以下3 個類別。

(1)DDL(Data Definition Languages)語句:數據定義語言,這些語句定義了不同的數據段、數據庫、表、列、索引等數據庫對象的定義。常用的語句關鍵字主要包括create、drop、alter等。

(2)DML(Data Manipulation Language)語句:數據操縱語句,用於添加、刪除、更新和查詢數據庫記錄,並檢查數據完整性,常用的語句關鍵字主要包括insert、delete、udpate 和select 等。

(3)DCL(Data Control Language)語句:數據控制語句,用於控制不同數據段直接的許可和訪問級別的語句。這些語句定義了數據庫、表、字段、用戶的訪問權限和安全級別。主要的語句關鍵字包括grant、revoke 等。

3、對於小數的表示,MySQL 分為兩種方式:浮點數和定點數。浮點數包括float(單精度)和double(雙精度),而定點數則只有decimal 一種表示。定點數在MySQL 內部以字符串形式存放,比浮點數更精確,適合用來表示貨幣等精度高的數據。

4、MySQL 中有多種數據類型可以用於日期和時間的表示:

(1)、如果要用來表示年月日,通常用DATE 來表示。

(2)、如果要用來表示年月日時分秒,通常用DATETIME 表示。

(3)、如果只用來表示時分秒,通常用TIME 來表示。

(4)、如果需要經常插入或者更新日期為當前系統時間,則通常使用TIMESTAMP 來表示。TIMESTAMP 值返回后顯示為“YYYY-MM-DD HH:MM:SS”格式的字符串,顯示寬度固定為19 個字符。如果想要獲得數字值,應在TIMESTAMP 列添加+0。

(5)、如果只是表示年份,可以用YEAR 來表示,它比DATE 占用更少的空間。YEAR 有2 位或4 位格式的年。默認是4 位格式。在4 位格式中,允許的值是1901~2155 和0000。在2 位格式中,允許的值是70~69,表示從1970~2069 年。MySQL 以YYYY 格式顯示YEAR

值。

5、MySQL只給表中的第一個TIMESTAMP字段設置默認值為系統日期,如果有第二個TIMESTAMP類型,則默認值設置為0值,即為:

`id1` timestamp NOT NULL default CURRENT_TIMESTAMP,

`id2` timestamp NOT NULL default '0000-00-00 00:00:00',

但是在設定timestamp默認值的時候不能設定為0000-00-00 00:00:00,原因:timestamp類型取值范圍:1970-01-01 00:00:00 到 2037-12-31 23:59:59

6、CHAR 和VARCHAR 很類似,都用來保存MySQL 中較短的字符串。二者的主要區別在於存儲方式的不同:CHAR 列的長度固定為創建表時聲明的長度,長度可以為從0~255 的任何值;而VARCHAR 列中的值為可變長字符串,長度可以指定為0~255(5.0.3 以前)或者65535(5.0.3以后)之間的值。在檢索的時候,CHAR 列刪除了尾部的空格,而VARCHAR 則保留這些空格。

7、注意NULL 不能用於“=”比較。

8、CANCAT(S1,S2,…Sn)函數:把傳入的參數連接成為一個字符串。任何字符串與NULL 進行連接的結果都將是NULL。

mysql> select concat('aaa','bbb','ccc') ,concat('aaa',null);
+---------------------------+--------------------+
| concat('aaa','bbb','ccc') | concat('aaa',null) |
+---------------------------+--------------------+
| aaabbbccc | NULL |
+---------------------------+--------------------+
1 row in set (0.05 sec)

9、LEFT(str,x)和 RIGHT(str,x)函數:分別返回字符串最左邊的x 個字符和最右邊的x 個字符。

如果第二個參數是NULL,那么將不返回任何字符串。

mysql> SELECT LEFT('beijing2008',7),LEFT('beijing',null),RIGHT('beijing2008',4);
+-----------------------+----------------------+------------------------+
| LEFT('beijing2008',7) | LEFT('beijing',null) | RIGHT('beijing2008',4) |
+-----------------------+----------------------+------------------------+
| beijing | | 2008 |
+-----------------------+----------------------+------------------------+
1 row in set (0.00 sec)

10、STRCMP(s1,s2)函數:比較字符串s1 和s2 的ASCII 碼值的大小。如果s1 比s2 小,那么返回-1;

如果s1 與s2 相等,那么返回0;如果s1 比s2 大,那么返回1。