Mysql数据表操作
创建表
语法
CREATE TABLE [IF NOT EXISTS] 表名 (
字段名1 列类型 [属性] [索引],
字段名2 列类型 [属性] [索引],
字段名3 列类型 [属性] [索引],
……
) [表类型] [表字符集]
实践
CREATE TABLE IF NOT EXISTS users(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(8) NOT NULL DEFAULT '' COLLATE utf8mb4_bin COMMENT '用户名',
userpass CHAR(32) NOT NULL DEFAULT '',
mobile CHAR(11) NOT NULL DEFAULT '' UNIQUE,
sex ENUM('男','女','未知') DEFAULT '未知' ,
birth DATE NOT NULL,
INDEX username(username)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
注意:主键是特殊的唯一索引,一个表只能有一个主键
查看表结构
语法
DESC 表明
实践
清空表
语法
TRUNCATE 表名
实践
mysql> TRUNCATE users;
Query OK, 0 rows affected (0.01 sec)
查看表
语法
SHOW TABLES;
删除表
语法
DROP TABLE IF EXISTS 表名
实践
mysql> DROP TABLE IF EXISTS users_copy1;
Query OK, 0 rows affected (0.01 sec)
修改表
语法
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
实践
添加新字段
-- 新字段在最后一位 mysql> ALTER TABLE users ADD add_time INT(10) UNSIGNED NOT NULL DEFAULT 0; Query OK, 0 rows affected (0.01 sec) -- 新字段在某项后 mysql> ALTER TABLE users ADD email VARCHAR(128) NOT NULL DEFAULT '' AFTER userpass; Query OK, 0 rows affected (0.03 sec) -- 新字段在第一位
mysql> -- 新增字段
mysql> ALTER TABLE users ADD column age TINYINT(3) NOT NULL DEFAULT 0 AFTER id;
Query OK, 0 rows affected (0.14 sec)
Records: 0 Duplicates: 0 Warnings: 0
修改字段
ALTER TABLE users MODIFY email VARCHAR(64) NOT NULL DEFAULT '';
Query OK, 0 rows affected (0.05 sec)
mysql> ALTER TABLE users CHANGE telno mobile CHAR(64) NOT NULL DEFAULT '';
Query OK, 0 rows affected (0.03 sec)
删除字段
mysql> ALTER TABLE users DROP first_col;
Query OK, 0 rows affected (0.02 sec)
添加索引名称
mysql> ALTER TABLE users ADD INDEX (email);
Query OK, 0 rows affected (0.01 sec)
删除索引
mysql> ALTER TABLE users DROP INDEX email;
Query OK, 0 rows affected (0.02 sec)
新建唯一索引
mysql> ALTER TABLE users DROP INDEX users_username;
Query OK, 0 rows affected (0.01 sec)
mysql> ALTER TABLE users ADD UNIQUE (username);
Query OK, 0 rows affected (0.02 sec)
修改表名
mysql> ALTER TABLE users RENAME user;
Query OK, 0 rows affected (0.01 sec)
删除主键
-- 删除主键
ALTER TABLE users MODIFY id INT(10) NOT NULL,DROP PRIMARY KEY;