當一個函式庫建立好,接下來就需要建立表格了。建表不關要知道語法,還需要知道列類型、以及索引等。下面只講建表的語法,關於列類型等就不陳述了。
建表
建表語法:
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 欄位名<建表語句> [FISRT|ALTER 列名]
#修改字段: ALTER TABLE 表名change|modify 列表<建表語句> 注意: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;
ALTER TABLE users MODIFY userpass CHAR(64) NOT NULL DEFAULT '' COMMENT '用户登录密码';
ALTER TABLE users CHANGE userpass `auth` char(32) NOT NULL DEFAULT '';
ALTER TABLE users ADD INDEX eamil(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);
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中文網其他相關文章!