當一個函式庫建立好,接下來就需要建立表格了。建表不關要知道語法,還需要知道列類型、以及索引等。下面只講建表的語法,關於列類型等就不陳述了。
建表
建表語法:
CREATE TABLE [IF NOT EXISTS] 表名 ( 字段名1 列类型 [属性] [索引], 字段名2 列类型 [属性] [索引], 字段名3 列类型 [属性] [索引], ...... ) [表类型] [表字符集]
這裡有個注意點,欄位名稱不要和mysql的關鍵字一致,如果真要這麼做的話,需要在字段名前後加上`符號,這個符號是在tab鍵的上面。
現在我們來建立一個user表,欄位有:使用者ID、使用者名稱、使用者密碼、手機號碼、性別、生日。
create table if not exists users( user_id int(10) unsigned auto_increment primary key, username varchar(16) not null default '' collate utf8mb4_bin comment '用户名', userpass char(32) not null collate utf8mb4_bin default '', mobile char(11) not null default '' unique, gender enum('未知', '男', '女') default '未知', birth date not null default '1900-01-01', index username(username) ) engine=innodb default charset utf8mb4 collate utf8mb4_general_ci;
通常,我們都會為每個表建立以唯一標識字段,這裡即user_id,方便以後的操作。這裡username及userpass欄位都設定了collate,這是因為,這兩個欄位和其他不一樣,他們是區分大小寫的。另外,我們給該表建立了兩個索引,分別是mobile欄位以及username欄位。為mobile設定的是唯一索引,表示手機號碼不可以重複。給username建立一般索引,是為了加速透過username來找出的速度。
查看表格及表格結構
表建立完了後,我們想看看是不是真的建立成功了。可以透過show tables來查看目前庫下所有表。
mysql> show tables; +---------------+ | Tables_in_job | +---------------+ | users | +---------------+ 1 row in set
該表確實生成成功了,但如果想看看表裡有哪些字段及屬性呢,那麼可以透過desc 表名來查看。
已清空及刪除表
#注意:刪除表是一個危險操作,謹慎操作!
刪除表格語法:DROP TABLE [IF EXISTS] 表格名稱
這裡就不做示範了。
清空表語法:TRUNCATE 表名
這裡和大家重點講下,透過truncate users和透過delete from users的差別。
truncate 相當於先將表格給刪除,然後再重新建立該表。表裡所有數據都重置了。
而delete只是刪除表的數據,表的一些屬性信息,如自增id不會被重置。
修改表
#最後,我們來看看修改表是如何來做到的。把它放最後,是因為他的文法最繁雜,是表格操作中難度最大的一部分。它的語法如下:
ALTER TABLE 数据表名 alter_spec[,alter_spec] ... table options
我把常用操作做了整理,常見的語法及功能如下:
新增欄位: ALTER TABLE 表名ADD 欄位名d1b29fdb464d56b7b3d73817f5909721 [FISRT|ALTER 列名]
#修改字段: ALTER TABLE 表名change|modify 列表d1b29fdb464d56b7b3d73817f5909721 注意:modify與change的差別,modify只能修改列類型,change除了修改列類型外還能改列名稱。
刪除欄位: ... DROP 欄位名稱
# 新增索引名稱: ... ADD INDEX [INDEX_NAME] (index_col1,index_col2, ...)
刪除索引: ...DROP INDEX INDEX_NAME
# 刪除主鍵: ... DROP PRIMARY KEY
# 新增主鍵: ... ADD PRIMARY KEY (INDEX_COL1,INDEX_COL2,...)
新增唯一索引: ... ADD UNIQUE [index_name] (index_col1,index_col2,...)
修改表名: RENAME newName
我們來實踐看看
##首先,新增欄位email,將它放在userpass後面。 ###ALTER TABLE users ADD email VARCHAR(255) NOT NULL DEFAULT '' AFTER userpass;###修改userpass,將長度改為64位元###
ALTER TABLE users MODIFY userpass CHAR(64) NOT NULL DEFAULT '' COMMENT '用户登录密码';###修改userpass改為auth###
ALTER TABLE users CHANGE userpass `auth` char(32) NOT NULL DEFAULT '';###給email新增普通索引###
ALTER TABLE users ADD INDEX eamil(email);###刪除email索引###
ALTER TABLE users DROP INDEX eamil;###刪除唯一索引,和刪除普通索引一樣###
ALTER TABLE users DROP INDEX mobile;###新增唯一索引###
ALTER TABLE users ADD UNIQUE mobile(mobile); 或 ALTER TABLE users ADD UNIQUE (mobile);###刪除主鍵,刪除前需要先將aoto_increment刪除才能刪除;###
ALTER TABLE users MODIFY user_id INT(10) NOT NULL; ALTER TABLE users DROP PRIMARY KEY;###添加主鍵###
ALTER TABLE users ADD PRIMARY KEY (user_id);###上面只是講述了表格操作的一些語法,關於列類型以及索引等,大家有興趣的話可以翻閱相關資料。 ###
以上是MYSQL表操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!