標籤:
初學MySQL,感覺SQL語句還是有點多,在此做一些MySQL的基礎筆記,以防忘記。
1. 串連資料庫: mysql -h hostname -u username -p
預設情況下是串連本地的資料庫,所以上面可以簡寫為:mysql -u root -p
2. 顯示資料庫:SHOW DATABASES;
3. 建立資料庫:CREATE DATABASE db1;
4. 刪除資料庫:DROP DATABASE db1;
4. 使用某一資料庫:USE db1;
5. 顯示該資料庫中所有的表:SHOW TABLES;
6. 建立表:CREATE TABLE <表名> (欄位 資料類型 [約束條件] [預設值/其他屬性] );
這裡講解常用的約束:
(1)主鍵約束,可以加快查詢速度,要求主鍵列的資料唯一且不為空白。一種是上面的設定方式,另為一種是在欄位的最後加上:PRIMARY KEY [欄位1,欄位2,...]
(2)外鍵約束,建立兩個資料表之間的連結,它是表中的一個欄位,對應另一個表的主鍵,其作用是保持資料的一致性與完整性。涉及的主表與從表概念:主表(父表):相關聯欄位中主鍵所在的那個表;從表(子表):相關聯欄位中外鍵所在的那個表。子表的外鍵必須關聯父表的主鍵,且關聯欄位的資料類型必須匹配。文法規則如下:CONSTRAINT <外鍵名> FOREIGN KEY [欄位1,欄位2,...] REFERENCES <主鍵名> [主鍵列1,主鍵列2,...]
(3)非空約束:指定欄位的值不為空白,文法:NOT NULL
(4)唯一性限制式:指明該列唯一,允許為空白,但只能有一個空值,它與主鍵的區別是:一個表只允許存在一個主鍵,且主鍵列不許為空白,而聲明UNIQUE的欄位可以有多個,且允許為空白。它使用與主鍵一樣,可以在資料類型後面加上,也可以在所有欄位後面加上 CONSTRAINT <約束名> UNIQUE (欄位名)
(5)預設約束:定義預設值,使用DEFAULT關鍵詞。
當然還有一個設定自動增加的屬性:AUTO_INCREMENT。一個表只允許有一個AUTO_INCREMENT,且它必須為主鍵的一部分。其欄位的資料類型可以為任意整數型別(TINYINT、SMALLIN、INT、BIGINT等)。
7. 查看錶結構:DESC tab1;
當需要查看建立表的詳細資料時,可以使用:SHOW CREATE TABLE tab1\G;
8. 修改表名:ALTER TABLE <舊錶名> RENAME <新表名>;
9. 修改欄位名:ALTER TABLE <表名> CHANGE <舊欄位名> <新欄位名> <新資料類型>;
10. 修改欄位的資料結構:ALTER TABLE <表名> MODIFY <欄位名> <資料類型>;
11. 添加欄位:ALTER TABLE <表名> ADD <新欄位名> <資料類型> [約束條件] [欄位位置屬性];
這裡的欄位位置屬性是指新添加的欄位在表中的順序,可以指定為表的第一列:FIRST,也可以指定在某一列的後面:AFTER line。當然也可以使用下面的語句修改欄位的排列位置。
12. 修改欄位的排列位置:LATER TABLE <表名> MODIFY <欄位1> <欄位1資料類型> FIRST | AFTER <欄位2>;
這裡還加上了欄位1資料類型,所以通過這種方法也可以修改欄位1的資料類型。
13. 刪除欄位:ALTER TABLE <表名> DROP <欄位名>;
14. 刪除外鍵約束:ALTER TABLE <表名> DROP FOREIGN KEY <外鍵約束名>;
外鍵約束關聯到其他的表,在這種情況下,如果直接刪除父表會失敗,所以可以先解除外部索引鍵關聯,再刪除主表。
15. 刪除表:DROP TABLE IF EXITS tab1;
MySQL學習筆記(一)