5.1 創(chuàng)建表
語法:
USE `新字段`;
CREATE TABLE 表名(
列名1 數(shù)據(jù)類型 是否可以為NULL 數(shù)據(jù)約束,
列名2 數(shù)據(jù)類型 是否可以為NULL 數(shù)據(jù)約束,
列名3 數(shù)據(jù)類型 是否可以為NULL 數(shù)據(jù)約束,
……
列名n 數(shù)據(jù)類型 是否可以為NULL 數(shù)據(jù)約束,
PRIMARY KEY (主鍵子段)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
示例:
USE `johnny_college`;
CREATE TABLE `Student`(
`StudentID` INT NOT NULL AUTO_INCREMENT,
`StudentName` VARCHAR(25) NOT NULL,
`Cellphone` VARCHAR(11) NOT NULL UNIQUE,
`Description` VARCHAR(500) NULL,
`InUser` VARCHAR(15) NOT NULL DEFAULT '',
`InDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`LastEditUser` VARCHAR(15) NOT NULL DEFAULT '',
`LastEditDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`StudentID`)
) ENGINE=INNODB DEFAULT CHARSET=UTF8;
設(shè)置存儲引擎為InnoDB,InnoDB是MySQL上提供外鍵約束的數(shù)據(jù)存儲引擎懊渡,除了提供事物處理外踏兜,還支持行鎖贰谣,能增加并發(fā)讀的用戶數(shù)量并提高性能,不會增加鎖的數(shù)量薛闪。
5.2 修改表
5.2.1 修改表名
語法:
ALTER TABLE `原表名` RENAME `新表名`;
示例:
ALTER TABLE `table_test` RENAME `table_test1`;
說明:
該命令不常用辛馆。
5.2.2 增加字段
語法:
ALTER TABLE `表名` ADD `新字段` 字段類型 是否可以為NULL;
示例:
ALTER TABLE `college` ADD `description` VARCHAR(100) NULL;
ALTER TABLE `college` ADD `description` VARCHAR(100) NOT NULL;
說明:
該命令在實際項目中會經(jīng)常使用。當(dāng)需要為一張表新增一個字段時,該字段可以為NULL也可以不為NULL(即NOT NULL)昙篙,但在實際項目中腊状,如果這張表已經(jīng)在使用并且已經(jīng)有業(yè)務(wù)數(shù)據(jù)時,此時若需要新增字段苔可,為保證數(shù)據(jù)的完整性缴挖,新增的字段一般允許為NULL。
5.2.3 調(diào)整字段順序
語法:
ALTER TABLE `表名` MODIFY COLUMN `字段名` 字段類型 AFTER `字段名`;
示例:
ALTER TABLE `college` MODIFY COLUMN `description` VARCHAR(100) AFTER `collegeFoundedTime`;
說明:
該命令也較為常用焚辅,因為當(dāng)一張增加一個新的字段時映屋,新字段一般位于表的所有字段最后面,當(dāng)查看字段的時候不夠直觀同蜻,所以棚点,為了查看表子段的直觀性,通常在增加字段后湾蔓,需要調(diào)整新字段在表中的順序瘫析。
需要注意的是,字段的類型不能改變默责。
5.2.4 刪除字段
語法:
ALTER TABLE `表名` DROP COLUMN `表名`;
示例:
ALTER TABLE `college` DROP COLUMN `description1`;
說明:
該命令很少使用颁股。因為當(dāng)一張表已經(jīng)在產(chǎn)品中使用并且已經(jīng)有了一部分業(yè)務(wù)數(shù)據(jù)時,不可能輕易刪除任何一個字段傻丝。
5.2.5 修改字段類型
語法:
ALTER TABLE `表名` MODIFY COLUMN `字段名` 字段類型;
示例:
ALTER TABLE `college` MODIFY COLUMN `description` VARCHAR(500);
說明:
雖然從語法上可以修改字段的類型,比如從字符型類型修改為數(shù)值類型诉儒,但在實際項目中葡缰,為了數(shù)據(jù)的正確性,從來不會這么做忱反,一般僅會修改字符類型的長度泛释,而且只是增加長度。
5.3 刪除表
語法:
DROP TABLE `表名`;
示例:
DROP TABLE `college1`;
說明:
該命令在實際項目中温算,當(dāng)產(chǎn)品上線后怜校,幾乎不會用到。因為不可能將正式環(huán)境的表刪除注竿,那么就把正式的表的數(shù)據(jù)也刪除了茄茁,這是不可以的。
5.4 操作表的約束
5.4.1. 設(shè)置非空約束
關(guān)鍵字:
NULL
NOT NULL
示例:
說明:
設(shè)置有些字段為NOT NULL巩割,其目的是為了保證表中的數(shù)據(jù)是完整的裙顽,有意義的。
5.4.2. 設(shè)置自增約束
關(guān)鍵字:
AUTO_INCREMENT
示例:
說明:
設(shè)置自增約束的字段宣谈,在插入數(shù)據(jù)時愈犹,不用為該字段插入數(shù)據(jù),該字段會的值會進行自增(+1)闻丑,并將自增后的結(jié)果作為該字段的值漩怎。
一般會將表的主鍵字段設(shè)置為自增字段勋颖。
5.4.3. 設(shè)置主鍵約束
關(guān)鍵字:
PRIMARY KEY (主鍵字段)
示例:
說明:
為表設(shè)置主鍵的目的,是為了使表中每一行的數(shù)據(jù)都能被唯一的標識勋锤。
5.4.4. 設(shè)置唯一約束
關(guān)鍵字:
UNIQUE
示例:
說明:
使用唯一約束饭玲,其目的也是為了數(shù)據(jù)表中某些字段數(shù)據(jù)是正確且有意義的,比如在一張表中怪得,對于不同人的手機號碼是不能重復(fù)的咱枉,這樣,數(shù)據(jù)才有實際的意義徒恋。
5.4.5. 設(shè)置默認值約束
關(guān)鍵字
DEFAULT
示例:
說明:
設(shè)置默認值蚕断,是為了在插入數(shù)據(jù)時,如果沒有給某個字段插入對應(yīng)的值入挣,該字段使用什么值作為默認值亿乳,以保證數(shù)據(jù)表中數(shù)據(jù)的完整性。