`

mysql 数据表的修改

 
阅读更多

添加单列 

  ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST|AFTER col_name]

 

mysql> show columns from user;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | smallint(6) | NO   | PRI | NULL    | auto_increment |
| username | varchar(20) | YES  |     | NULL    |                |
| pid      | smallint(6) | YES  | MUL | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
3 rows in set
mysql> describe user;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | smallint(6) | NO   | PRI | NULL    | auto_increment |
| username | varchar(20) | YES  |     | NULL    |                |
| pid      | smallint(6) | YES  | MUL | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
3 rows in set

 添加一列

 

mysql> 	alter table user add userno varchar(20) not null;
Database changed
mysql> describe user;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | smallint(6) | NO   | PRI | NULL    | auto_increment |
| username | varchar(20) | YES  |     | NULL    |                |
| pid      | smallint(6) | YES  | MUL | NULL    |                |
| userno   | varchar(20) | NO   |     |         |                |
+----------+-------------+------+-----+---------+----------------+
4 rows in set

  age 到所有列前面

mysql> alter table user add age varchar(2) first;
Database changed
Records: 1  Duplicates: 0  Warnings: 0
mysql> describe user;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| age      | varchar(2)  | YES  |     | NULL    |                |
| id       | smallint(6) | NO   | PRI | NULL    | auto_increment |
| username | varchar(20) | YES  |     | NULL    |                |
| pid      | smallint(6) | YES  | MUL | NULL    |                |
| userno   | varchar(20) | NO   |     |         |                |
+----------+-------------+------+-----+---------+----------------+
5 rows in set

  sex 到username后面

 

mysql> alter table user add column sex char(1) after username;
Database changed
Records: 1  Duplicates: 0  Warnings: 0
mysql> describe user;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| age      | varchar(2)  | YES  |     | NULL    |                |
| id       | smallint(6) | NO   | PRI | NULL    | auto_increment |
| username | varchar(20) | YES  |     | NULL    |                |
| sex      | char(1)     | YES  |     | NULL    |                |
| pid      | smallint(6) | YES  | MUL | NULL    |                |
| userno   | varchar(20) | NO   |     |         |                |
+----------+-------------+------+-----+---------+----------------+
6 rows in set

   添加多列 缺点就是只能放在最后面,不能排在某字段的前面或后面

 

mysql> alter table user 
add column(a1 varchar(1),a2 varchar(2));
Database changed
Records: 1  Duplicates: 0  Warnings: 0
mysql> describe user;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| age      | varchar(2)  | YES  |     | NULL    |                |
| id       | smallint(6) | NO   | PRI | NULL    | auto_increment |
| username | varchar(20) | YES  |     | NULL    |                |
| sex      | char(1)     | YES  |     | NULL    |                |
| pid      | smallint(6) | YES  | MUL | NULL    |                |
| userno   | varchar(20) | NO   |     |         |                |
| a1       | varchar(1)  | YES  |     | NULL    |                |
| a2       | varchar(2)  | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+

 删除一列

 

mysql> alter table user drop a1;
Database changed
Records: 1  Duplicates: 0  Warnings: 0

 删除多列用逗号隔开

mysql> alter table user drop sex,drop age;
Database changed

修改列

 

mysql> alter table user modify id int after pid;
Database changed
Records: 0  Duplicates: 0  Warnings: 0
mysql> show columns from user;
+----------+---------------------+------+-----+---------+-------+
| Field    | Type                | Null | Key | Default | Extra |
+----------+---------------------+------+-----+---------+-------+
| username | varchar(20)         | YES  |     | NULL    |       |
| pid      | smallint(6)         | YES  |     | NULL    |       |
| id       | int(11)             | YES  |     | NULL    |       |
| age      | tinyint(3) unsigned | NO   |     |         |       |
+----------+---------------------+------+-----+---------+-------+
4 rows in set

  修改表名用rename 

  法一 

mysql> alter table user rename deploy;
Database changed
mysql> show tables;
+--------------+
| Tables_in_t1 |
+--------------+
| deploy       |
| dept         |
| pet          |
+--------------+
3 rows in set

 用 rename to

mysql> rename table deploy to user;
Database changed
mysql> show tables;
+--------------+
| Tables_in_t1 |
+--------------+
| dept         |
| pet          |
| user         |
+--------------+
3 rows in set

 

 

 

添加主键约束

  

mysql> create table user(
    -> id smallInt,
    -> username varchar(20));
Database changed
mysql> alter table user add constraint pk_user_id primary key(id);
Database changed
Records: 0  Duplicates: 0  Warnings: 0
mysql> show create  table user;
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user  | CREATE TABLE `user` (
  `id` smallint(6) NOT NULL default '0',
  `username` varchar(20) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
  添加唯一约束

 

 

mysql> alter table user add unique(username);
Database changed
Records: 0  Duplicates: 0  Warnings: 0
mysql> describe user;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | smallint(6) | NO   | PRI | 0       |       |
| username | varchar(20) | YES  | UNI | NULL    |       |
+----------+-------------+------+-----+---------+-------+
2 rows in set
 添加外键约束

 

  

mysql> alter table user add foreign key(pid) references dept(id);
Database changed
Records: 0  Duplicates: 0  Warnings: 0
mysql> show columns from user;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | smallint(6) | NO   | PRI | 0       |       |
| username | varchar(20) | YES  | UNI | NULL    |       |
| pid      | smallint(6) | YES  | MUL | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set
 添加默认约束

 

  
mysql> alter table user alter age set default 10;
Database changed
 删除默认约束
  
mysql> alter table user alter age drop default;
Database changed
 删除主键约束
  
mysql> alter table user drop primary key;
Database changed
Records: 0  Duplicates: 0  Warnings: 0
 删除唯一约束
  
mysql> show index from user;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| user  |          0 | username |            1 | username    | A         |           0 | NULL     | NULL   | YES  | BTREE      |         |
| user  |          1 | pid      |            1 | pid         | A         |           0 | NULL     | NULL   | YES  | BTREE      |         |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
2 rows in set
mysql> alter table user drop index username;
Database changed
 删除外键约束
  
mysql> show create table user;
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                                                                                             |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user  | CREATE TABLE `user` (
  `id` smallint(6) NOT NULL default '0',
  `username` varchar(20) default NULL,
  `pid` smallint(6) default NULL,
  `age` tinyint(3) unsigned NOT NULL,
  KEY `pid` (`pid`),
  CONSTRAINT `user_ibfk_1` FOREIGN KEY (`pid`) REFERENCES `dept` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set

mysql> alter table user drop foreign key user_ibfk_1;
Database changed
Records: 0  Duplicates: 0  Warnings: 0
 生成外键的时候会有索引,所以这里要把索引也删除掉
  
mysql> show create table user;
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                     |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user  | CREATE TABLE `user` (
  `id` smallint(6) NOT NULL default '0',
  `username` varchar(20) default NULL,
  `pid` smallint(6) default NULL,
  `age` tinyint(3) unsigned NOT NULL,
  KEY `pid` (`pid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set

mysql> alter table user drop index pid;
Database changed
Records: 0  Duplicates: 0  Warnings: 0
mysql> show columns from user;
+----------+---------------------+------+-----+---------+-------+
| Field    | Type                | Null | Key | Default | Extra |
+----------+---------------------+------+-----+---------+-------+
| id       | smallint(6)         | NO   |     | 0       |       |
| username | varchar(20)         | YES  |     | NULL    |       |
| pid      | smallint(6)         | YES  |     | NULL    |       |
| age      | tinyint(3) unsigned | NO   |     |         |       |
+----------+---------------------+------+-----+---------+-------+
4 rows in set

mysql> show create table user;
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user  | CREATE TABLE `user` (
  `id` smallint(6) NOT NULL default '0',
  `username` varchar(20) default NULL,
  `pid` smallint(6) default NULL,
  `age` tinyint(3) unsigned NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set
 
分享到:
评论

相关推荐

    在Linux中修改MySQL数据文件存放位置

    Linux 中修改 MySQL 数据文件存放位置 概述 在 Linux 中,MySQL 数据文件的存放位置默认在 `/var/lib/mysql` 目录下。但是,在某些情况下,我们可能需要将数据文件存放位置修改到其他目录下。这篇文章将会指导您...

    mysql数据表直接生成word文档数据字典

    MySQL数据表直接生成Word文档数据字典是一种便捷的方法,它帮助数据库管理员和开发人员快速整理并记录数据库结构信息。在数据库设计和维护过程中,数据字典是至关重要的,它提供了关于数据库模式、字段、类型、约束...

    修改MySQL数据存储位置

    ### 修改MySQL数据存储位置 #### 知识点一:为何要修改MySQL数据存储位置 在IT运维工作中,经常需要对数据库进行维护管理。当数据库的数据量逐渐增大时,可能会遇到服务器磁盘空间不足的问题,尤其是在操作系统...

    mysql数据库实验报告 数据表的操作

    通过实际操作,我们将掌握如何创建和修改表结构,设置表约束,以及处理表数据的插入、删除和修改。此外,还将学习如何建立表之间的联系,这对于构建复杂的数据库系统至关重要。 一、数据库操作 1. 创建数据库:使用...

    mySQL数据表调用客户端

    MySQL数据表调用客户端是一种非常实用的工具,主要用于管理和操作MySQL数据库中的数据表。这个工具提供了用户友好的界面,使得数据库的建立、查看以及管理变得简单易行,无需消耗额外的系统资源。在本篇文章中,我们...

    C#操作Mysql创建数据库,数据表,增、删、改数据

    本教程将详细介绍如何使用C#与Mysql进行交互,包括创建数据库、数据表以及执行基本的CRUD(Create、Read、Update、Delete)操作。 首先,我们需要在C#项目中引入Mysql的数据提供者——`MySql.Data.dll`。这个库允许...

    shell脚本实现mysql从原表到历史表数据迁移

    总的来说,这个Shell脚本是数据库管理员和运维人员的一个实用工具,它简化了MySQL数据迁移的过程,提高了工作效率,同时保持了数据的完整性。正确理解和使用此类脚本,对于管理和维护复杂数据库环境至关重要。

    mysql-oracle数据同步

    本文将深入探讨MySQL到Oracle的数据同步过程,以及如何在同步过程中修改MySQL数据表的标识。 首先,我们要理解MySQL和Oracle是两种不同的关系型数据库管理系统(RDBMS)。MySQL以其开源、轻量级、高效的特点被广泛...

    MySQL修改表结构.doc

    在MySQL数据库中,修改表结构是一项常见的操作,用于适应数据模型的变化或优化表的设计。本文主要探讨了如何在已有数据的情况下安全地修改表的字段类型、约束条件、字段位置以及字段名称,同时强调了在执行这些操作...

    Thingsboard修改为Mysql数据

    它原生支持使用PostgreSQL作为其数据库系统,但用户可以根据需求将其修改为使用MySQL。在本文中,我们将深入探讨如何将Thingsboard的默认数据库从PostgreSQL更换为MySQL,以便更好地适应你的IT环境。 首先,你需要...

    mysql 修改数据文件位置

    在MySQL数据库系统中,数据文件通常位于安装目录下的data子目录中,包含了数据库表的数据以及日志文件等重要信息。然而,在某些情况下,为了优化存储、备份或满足特定的系统需求,我们可能需要修改这些数据文件的...

    datax数据从hive导入mysql数据缺失解决

    在使用 DataX 将数据从 Hive 表导入 MySQL 表的过程中,遇到了数据缺失的问题。具体表现为,在某些特定条件下(如数据块大小超过 256M 时),导入到 MySQL 的数据量少于预期。 #### 现象分析 根据观察发现,当数据...

    mysql数据维护

    - 如果需要修改数据,请确保修改后的数据符合 MySQL 表结构的要求。 2. **使用 Navicat 进行数据导入**: - 返回 Navicat 软件,找到之前导出数据的表(`user_`)。 - 右键点击该表,选择“导入”选项。 - 选择...

    MySQL数据管理工具

    MySQL数据管理工具是数据库管理员和开发人员用于交互式管理MySQL数据库的重要工具。这些工具提供了图形化的用户界面,使得创建、编辑、查询和管理数据库变得更加直观和高效。在本篇文章中,我们将深入探讨MySQL数据...

    特别有用的MySQL数据实时同步到ES轻松配置手册

    5. **测试和验证**:插入测试数据到 MySQL 表,预览变化并验证是否正确捕获。通过装载组件的预览功能和 ES 的数据预览来检查同步效果,特别是对于大型对象(LOB)数据。 6. **启动同步**:最后,点击工具栏的【启动...

    修改mysql版本为5.7

    - `datadir` 设置为 MySQL 数据目录的路径,例如 `datadir=D:\phpStudy7\MySQL\data`。 **第四步:更新系统环境变量** - 打开“控制面板”->“系统和安全”->“系统”,点击左侧的“高级系统设置”。 - 在“高级...

    跨服务器增量同步mysql表数据的shell实现

    这个脚本实现了跨服务器增量同步mysql数据的功能,可以同步多个表。 在使用这个脚本的时候需要注意有修改的地方就是源表配置、目标表配置需要修改成自己的服务器和登录mysql数据库的用户名和密码。基础配置中需要...

Global site tag (gtag.js) - Google Analytics