關聯課件: 3子項目三 - SQL的數據定義語言(點擊在線預覽)
3.3.3.2 數據定義語言(Create/Alter/Drop
1.CREATE/SHOW/USE語句
CREATE語句可以用來創建新的數據庫和表。SHOW語句用來顯示當前所有數據庫或當前數據庫下的所有表。
根據本章前面(miàn)講過(guò)的方法,打開(kāi)命令提示符界面(miàn),輸入用戶名密碼登錄到MySQL控制台。登錄到控制台後(hòu)光标前面(miàn)顯示“mysql>”,在光标處可以直接輸入SQL語句來操作數據庫。下來來創建一個student的數據庫。輸入以下命令并回車。
mysql> CREATE DATABASE student;
SQL語句可以用大寫,也可以用小寫,還(hái)可以大小寫混合。本語句執行後(hòu)會輸出:
Query OK, 1 row affected (0.08 sec)
這(zhè)說明語句執行成(chéng)功。一個名爲student的數據庫已經(jīng)被創建成(chéng)功。這(zhè)時可以用以下命令來查看數據庫是否已經(jīng)被創建。
mysql> SHOW DATABASES;
輸入命令後(hòu)回車,列出當前所有數據庫。
mysql> show databases;
--------------------
| Database |
--------------------
| information_schema |
| mysql |
| student |
| test |
--------------------
4 rows in set (0.13 sec)
可以看到,student數據庫已經(jīng)創建成(chéng)功(information_schema、mysql、test三個數據庫均爲MySQL安裝時自動創建的原始數據庫)。
繼續用CREATE語句在student數據庫中創建一個表info。這(zhè)個表用來存儲學(xué)生基本信息,一共有3個字段,分别是姓名(name)、性别(sex)、年齡(age)。這(zhè)3個字段對(duì)應的數據類型分别爲CHAR、CHAR、TINYINT,長(cháng)度分别限制在20字節、2字節、2字節以内。
在student數據庫中創建表之前,需要首先打開(kāi)這(zhè)個數據庫:
mysql> USE student;
此語句用USE命令選定一個要操作的數據庫。執行後(hòu)顯示“Database changed”,表示數據庫已經(jīng)打開(kāi)。
然後(hòu)輸入以下語句并回車:
mysql> CREATE TABLE info (name CHAR(20), sex CHAR(2), age TINYINT(2));
注意每條SQL語句輸入完畢後(hòu)最後(hòu)要輸入“;”,表示輸入完成(chéng)。否則不論輸入多少個回車此語句都(dōu)不會執行,直到遇到分号結尾(也有極個别語句可以不加分号)。
語句執行完畢後(hòu)顯示“Query OK, 0 rows affected (0.14 sec)”。表示語句執行成(chéng)功。這(zhè)時候表info已經(jīng)創建成(chéng)功。可以使用以下命令來查看student數據中現有的表。
mysql> SHOW TABLES;
執行後(hòu)顯示:
-------------------
| Tables_in_student |
-------------------
| info |
-------------------
1 row in set (0.00 sec)
這(zhè)時可以看到info表确實已經(jīng)創建到了student數據庫中。
2.ALTER語句
ALTER語句用來修改一個表的定義,也就是說修改表自身。如修改表的名字,修改表中某個字段的名字、屬性、類型等(也可以用于修改數據庫的部分屬性)。看下面(miàn)的例子:
mysql> ALTER TABLE info CHANGE name xingming CHAR (20);
本語句將(jiāng)表info的name字段名修改爲xingming,類型和長(cháng)度不變。又如:
mysql> ALTER TABLE info ADD addr CHAR (50);
本語句在info表中又增加了一個名爲addr,類型char,長(cháng)度爲50的新字段。
mysql> ALTER TABLE info DROP addr;
本語句删除了表info中的addr字段。
3.DROP語句
DROP語句用來删除一個數據庫或者一個表。如果是删除一個數據庫,那麼(me)這(zhè)個數據庫下的所有表也將(jiāng)被删除。例如:
mysql> DROP DATABSE D1;
删除名爲D1的數據庫。
mysql> DROP TABLE tbl1;
删除名爲tbl1的表(删除前需要先打開(kāi)數據庫)。
域的完整性:用Check來實現約束,在數據庫設計工具中,對(duì)字段的取值範圍進(jìn)行定義時,有一個Check按鈕,通 過(guò)它定義字段的值城。 參照完整性:用PK、FK、表級觸發(fā)器來實現。 用戶定義完整性:它是一些業務規則,用存儲過(guò)程和觸發(fā)器來實現。
防止數據庫設計打補丁的方法是“三少原則” (1) 一個數據庫中表的個數越少越好(hǎo)。隻有表的個數少了,才能(néng)說明系統的E--R圖少而精,去掉了重複的多餘的 實體,形成(chéng)了對(duì)客觀世界的高度抽象,進(jìn)行了系統的數據集成(chéng),防止了打補丁式的設計; (2) 一個表中組合主鍵的字段個數越少越好(hǎo)。因爲主鍵的作用,一是建主鍵索引,二是做爲子表的外鍵,所以組 合主鍵的字段個數少了,不僅節省了運行時間,而且節省了索引存儲空間; (3) 一個表中的字段個數越少越好(hǎo)。隻有字段的個數少了,才能(néng)說明在系統中不存在數據重複,且很少有數據冗 餘,更重要的是督促讀者學(xué)會“列變行”,這(zhè)樣就防止了將(jiāng)子表中的字段拉入到主表中去,在主表中留下許 多空餘的字段。所謂“列變行”,就是將(jiāng)主表中的一部分内容拉出去,另外單獨建一個子表。這(zhè)個方法很簡 單,有的人就是不習慣、不采納、不執行。
方法獨特,從中學(xué)到了很多。
對(duì)于數據定義語言講的非常的到位
這(zhè)麼(me)詳細,想學(xué)不會都(dōu)難
條理清晰,通俗易懂
DROP語句用來删除一個數據庫或者一個表。如果是删除一個數據庫,那麼(me)這(zhè)個數據庫下的所有表也將(jiāng)被删除。
這(zhè)麼(me)詳細,想學(xué)不會都(dōu)難
内容詳細易懂,感謝老師