一.什么是數據庫的表?
在關系數據庫中,數據庫表是一系列二維數組的集合,用來代表和儲存數據對象之間的關系。它由縱向的列和橫向的行組成。數據表是數據庫中的最重要、最基本的操作對象,是數據存儲的基本單位。數據表被定義為列的集合,數據在表中是按照行和列的格式來存儲的。每一行代表一條唯一的記錄,每一列代表記錄中的一個域。例如一個有關作者信息的名為 authors 的表中,每個列包含的是所有作者的某個特定類型的信息,比如“姓氏”,而每行則包含了某個特定作者的所有信息:姓、名、住址等等。
二.創建數據表
1.創建數據表的MYSQL語句
在創建數據庫表之前,需要選定一個數據庫,在選定的數據庫中創建數據表,否則創建失敗。
USE 數據庫名稱;
CREATE TABELE 數據表名;
在創建好數據表之后,使用SQL語句進行查看,創建的數據表是否成功。
SHOW TABLES;(顯示某選定的數據庫中的所有的數據表名稱)
2.創建數據表的語法
CREATE TABLE 表名稱 (
字段1 數據類型 列級別的約束條件 (可以設定默認值),
字段2 數據類型 列級別的約束條件 (可以設定默認值),
......
)
示例:創建一個員工表 tb_emp,有id,name,deptId,salary等列。
USE wangfang;
mysql> CREATE TABLE tb_emp (
-> id INT(11),
-> name VARCHAR(25),
-> deptId INT(11),
-> salary FLOAT );
SHOW TABLES;
三.創建關於數據表的一些約束
1.主鍵 (PRIMARY KEY) 約束
主鍵又稱為主碼,是表中一列或者多列的組合。主鍵約束要求主鍵列的數據是唯一的,並且不能為空。主鍵能夠唯一的標識表中的一條記錄,可以結合外鍵來定義不同數據表之間的關系,並且可以加快數據庫查詢的速度。主鍵和記錄之間的關系是一一對應的,就像人和身份證一樣。主鍵分為:單字段主鍵和多字段聯合主鍵。
(1)單字段聯合主鍵
主鍵是由一個字段組成,定義單字段的方法有兩種:一是定義列的同時指定主鍵,一種是在定義完成后指定主鍵。
CREATE TABEL 表名 (
字段 數據類型 列級別約束條件 (指定默認值)
id INT PRIMARY KEY ,
......
)
CREATE TABEL 表名 (
字段 數據類型 列級別約束條件 (指定默認值)
id INT ,
PRIMARY KEY (id);
......
)
(2)多字段聯合主鍵
CREATE TABEL 表名 (
字段 數據類型 列級別約束條件 (指定默認值)
id INT PRIMARY KEY ,
name VARCHAR(25) ,
PRIMARY KEY (id,name);
......
)
2.外鍵約束
外鍵用來在兩個表的數據之間建立連接,可以是一列,也可以是多列。一個表可以有一個或者多個外鍵。外鍵對應的是參照的完整性,一個表的外鍵可以為空值,若是不為空值,那么每一個外鍵值必須等於另一個表中的主鍵的某個值。外鍵首先是一個表中的字段,可以不是本表的主鍵,但是一定要對應另一個表的主鍵。外鍵的作用是:保證數據引用的完整性。定義完成后,不能刪除有關聯性的行。
注意:建立外鍵的條件是,兩個表的存儲引擎要一致。
創建的語法規則:
CONSTRAINT 外鍵名稱 FOREIGN KEY 外鍵處的字段名 REFERENCES 主表的主鍵字段名
示例:
CREATE TABEL wang (
字段 數據類型 列級別約束條件 (指定默認值)
id_info INT PRIMARY KEY ,
name VARCHAR(25) ;
......
)
CREATE TABEL haha (
字段 數據類型 列級別約束條件 (指定默認值)
id INT PRIMARY KEY ,
name VARCHAR(25) ,
CONSTRAINT waijian FOREIGN KEY id REFERENCES wang(id_info) ;
......
)
3.非空 (NOT NULL) 約束
非空約束指的是:指定的字段不能為空。使用了非空約束的字段,在添加數據的時候,如果沒有指定數據的指定值,那么數據庫就會報錯。
CREATE TABEL 表名 (
字段 數據類型 列級別約束條件 (指定默認值)
id INT PRIMARY KEY NOT NULL;
......
)
4.唯一性 (UNIQUE) 約束
唯一性約束:要求該列唯一,允許為空,但是只能出現一個空值,唯一約束可以確保一列或者多列不出現重復的值。
CREATE TABEL 表名 (
字段 數據類型 列級別約束條件 (指定默認值)
id INT PRIMARY KEY UNIQUE,
......
)
CREATE TABEL 表名 (
字段 數據類型 列級別約束條件 (指定默認值)
id INT PRIMARY KEY ,
CONSTRAINT uniq UNIQUE(id) ;
......
)
5.默認 (DEFAULT) 約束
默認約束是指:給某一個字段設定默認的值,當用戶添加數據的時候,沒有給該字段添加相應的數據時,填入默認的值。比如說,一個理工科的學校,一般來說男生比女生要多,那么在存儲用戶信息的數據庫中,可以將性別這一欄設定默認值為:男
CREATE TABEL 表名 (
字段 數據類型 列級別約束條件 (指定默認值)
id INT PRIMARY KEY ,
sex CHAR(2) DEFAULT "m" ;
......
)
6.設置表的屬性自動增加
在數據庫應用中,經常希望在每次插入新紀錄時,系統能夠自動的生成字段的主鍵值。可以通過為表的主鍵添加 AUTO_INCREMENT 關鍵字來實現。默認的,在MySQL中AUTO_INCREMENT的初始值為1,每新增加一條記錄,字段的值自動加1.一個表只能有一個字段使用 AUTO_INCREMENT關鍵字,並且該字段必須為主鍵的一部分。
CREATE TABEL 表名 (
字段 數據類型 列級別約束條件 (指定默認值)
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(25) NOT NULL
......
)
四.查看表的結構
1.DESC(DESCRIBE)數據表的名稱 該SQL命令查看的是數據表的基本的結構
DESC 數據表的名稱
2.SHOW CREATE TABLE 數據表名稱 該SQL命令查看的是表的詳細的結構
SHOW CREATE TABLE 數據表的名稱 \G ; ##如果不添加 \G 參數的話,輸出的結果可能會很亂。添加該參數會利於查看
五.修改數據表
1.修改表的名稱
語法規則:ALTER TABLE 表名 RENAME 新表名 ;
2.修改表的字段的名稱
語法規則:ALTER TABEL 表名 CHANGE 舊字段名 新字段名 跟定義的時候的該字段的數據類型 ;
3.修改字段的數據類型
語法規則:ALTER TABLE 表名 MODIFY 字段名 新的數據類型 ;
4.添加字段
(1)添加新字段,添加的位置不定,默認添加到最后一個
語法規則:ALTER TABLE 表名 ADD 字段名 數據類型 列級別的約束條件 ;
(2)添加新的字段到第一個
語法規則:ALTER TABLE 表名 ADD 字段名 數據類型 列級別的約束條件 FIRST ;
(3)添加新的字段到指定的字段后面
語法結構:ALTER TABLE 表名 ADD 字段名 數據結構 列級別的約束條件 BEFORE 字段名 ;
5.修改字段的排列順序
語法結構:ALTER TABLE 表名 MODIFY 字段名 數據類型 FIRST|AFTER 字段名 ;
6.更改表的存儲引擎
語法結構:ALTER TABLE 表名 ENGINE=更改后的存儲引擎的名稱 ;
用於查看某表的存儲引擎的SQL語句是:SHOW CREATE TABLE 表名 ; ##在后面會有表的相應的存儲引擎
7.刪除外鍵的約束
語法結構:ALTER TABLE 表名 DROP FOREIGN KEY 外鍵名稱 ;
以上的操作是在創建外鍵
六.刪除數據表
1.刪除沒有關聯的數據表
語法結構:DROP TABLE 表名 ;
2.刪除有關聯的數據表
如果兩個表之間存在外鍵的連接,那么在刪除表的時候,就不可能最先刪除主表。
想要刪除的方法是:先刪除外鍵,再刪除數據表;先刪除子表,再刪除父表。