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

  1. 添加新字段 ALTER TABLE 表名 ADD 字段名 <建表语句> [FISRT|ALTER 列名]
  2. 修改字段 ALTER TABLE 表名 change|modify 列表 <建表语句> 注意:modify与change的区别,modify只能修改列类型,change除了修改列类型外还能改列名称。
  3. 删除字段 … DROP 列名
  4. 添加索引名称 … ADD INDEX [INDEX_NAME] (index_col1,index_col2,…)
  5. 删除索引 …DROP INDEX INDEX_NAME
  6. 删除主键 … DROP PRIMARY KEY
  7. 添加主键 … ADD PRIMARY KEY (INDEX_COL1,INDEX_COL2,…)
  8. 添加唯一索引 … ADD UNIQUE [index_name] (index_col1,index_col2,…)
  9. 修改表名 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;