zoukankan      html  css  js  c++  java
  • 修改数据表

    1.修改表名

    mysql> show tables;
    +----------------+
    | Tables_in_test |
    +----------------+
    | cf             |
    | dept01         |
    | tb_dept2       |
    | tb_emp         |
    | tb_emp3        |
    | tb_emp6        |
    | tb_emp7        |
    | tb_emp8        |
    | test02         |
    +----------------+
    9 rows in set (0.00 sec)
    
    mysql> alter table tb_emp8 rename to ladykiller;
    Query OK, 0 rows affected (0.05 sec)
    
    mysql> show tables;
    +----------------+
    | Tables_in_test |
    +----------------+
    | cf             |
    | dept01         |
    | ladykiller     |
    | tb_dept2       |
    | tb_emp         |
    | tb_emp3        |
    | tb_emp6        |
    | tb_emp7        |
    | test02         |
    +----------------+
    9 rows in set (0.00 sec)
    View Code

    2.修改表中数据类型

    mysql> show tables;
    +----------------+
    | Tables_in_test |
    +----------------+
    | cf             |
    | dept01         |
    | ladykiller     |
    | tb_dept2       |
    | tb_emp         |
    | tb_emp3        |
    | tb_emp6        |
    | tb_emp7        |
    | test02         |
    +----------------+
    9 rows in set (0.00 sec)
    
    mysql> desc dept01;
    +----------+-------------+------+-----+---------+-------+
    | Field    | Type        | Null | Key | Default | Extra |
    +----------+-------------+------+-----+---------+-------+
    | id       | int(11)     | NO   | PRI | NULL    |       |
    | name     | varchar(22) | NO   |     | NULL    |       |
    | location | varchar(50) | YES  |     | NULL    |       |
    +----------+-------------+------+-----+---------+-------+
    3 rows in set (0.00 sec)
    
    mysql> alter table dept01 modify location int;
    Query OK, 0 rows affected (0.25 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> desc dept01;
    +----------+-------------+------+-----+---------+-------+
    | Field    | Type        | Null | Key | Default | Extra |
    +----------+-------------+------+-----+---------+-------+
    | id       | int(11)     | NO   | PRI | NULL    |       |
    | name     | varchar(22) | NO   |     | NULL    |       |
    | location | int(11)     | YES  |     | NULL    |       |
    +----------+-------------+------+-----+---------+-------+
    3 rows in set (0.00 sec)
    View Code

    如果要改变的数据类型转换有误,则会出现

    mysql> 
    mysql> show tables;
    +----------------+
    | Tables_in_test |
    +----------------+
    | cf             |
    | dept01         |
    | ladykiller     |
    | tb_dept2       |
    | tb_emp         |
    | tb_emp3        |
    | tb_emp6        |
    | tb_emp7        |
    | test02         |
    +----------------+
    9 rows in set (0.00 sec)
    
    mysql> desc tb_emp
        -> ;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id    | int(11)     | YES  |     | NULL    |       |
    | name  | varchar(25) | YES  |     | NULL    |       |
    | tept  | varchar(25) | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    3 rows in set (0.00 sec)
    
    mysql> select * from tb_emp;
    Empty set (0.00 sec)
    
    mysql> insert into tb_emp values (1,'first','qinghua'),(2,'second','beida'),(3,'thirld',45);
    Query OK, 3 rows affected (0.02 sec)
    Records: 3  Duplicates: 0  Warnings: 0
    
    mysql> alter table tb_emp modify tept int;
    ERROR 1366 (HY000): Incorrect integer value: 'qinghua' for column 'tept' at row 1
    View Code

    所以说,数据类型需要转换正确

    mysql> show tables;
    +----------------+
    | Tables_in_test |
    +----------------+
    | cf             |
    | dept01         |
    | ladykiller     |
    | tb_dept2       |
    | tb_emp         |
    | tb_emp3        |
    | tb_emp6        |
    | tb_emp7        |
    | test02         |
    +----------------+
    9 rows in set (0.00 sec)
    
    mysql> desc tb_emp
        -> ;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id    | int(11)     | YES  |     | NULL    |       |
    | name  | varchar(25) | YES  |     | NULL    |       |
    | tept  | varchar(25) | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    3 rows in set (0.00 sec)
    
    mysql> insert into tb_emp values (1,'a',10),(2,'b',20),(3,'c',30);
    Query OK, 3 rows affected (0.01 sec)
    Records: 3  Duplicates: 0  Warnings: 0
    
    mysql> alter table tb_emp modify tept int;
    Query OK, 3 rows affected (0.27 sec)
    Records: 3  Duplicates: 0  Warnings: 0
    
    mysql> select * from tb_emp;
    +------+------+------+
    | id   | name | tept |
    +------+------+------+
    |    1 | a    |   10 |
    |    2 | b    |   20 |
    |    3 | c    |   30 |
    +------+------+------+
    3 rows in set (0.00 sec)
    
    mysql> 
    View Code

    3.修改字段名

    alter table  tb_emp change idd op varchar(20);
    语法规则
    
    alter table 表名 change 旧字段名 新字段名 新数据类型
    
    新数据类型不为空 并且遵循数据优先级规则
    user-defined data types (highest)
    sql_variant
    xml
    datetimeoffset
    datetime2
    datetime
    smalldatetime
    date
    time
    float
    real
    decimal
    money
    smallmoney
    bigint
    int
    smallint
    tinyint
    bit
    ntext
    text
    image
    timestamp
    uniqueidentifier
    nvarchar (including nvarchar(max) )
    nchar
    varchar (including varchar(max) )
    char
    varbinary (including varbinary(max) )
    binary (lowest)
    View Code

    4.添加字段

    mysql> show tables;
    +----------------+
    | Tables_in_test |
    +----------------+
    | cf             |
    | dept01         |
    | ladykiller     |
    | tb_dept2       |
    | tb_emp         |
    | tb_emp3        |
    | tb_emp6        |
    | tb_emp7        |
    | test02         |
    +----------------+
    9 rows in set (0.00 sec)
    
    mysql> desc tb_emp;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | op    | varchar(20) | YES  |     | NULL    |       |
    | name  | varchar(25) | YES  |     | NULL    |       |
    | tept  | int(11)     | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    3 rows in set (0.01 sec)
    
    mysql> alter table tb_emp add sky int first;
    Query OK, 0 rows affected (0.17 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> alter table tb_emp add kkk  int not null unique  after name;
    ERROR 1062 (23000): Duplicate entry '0' for key 'kkk'
    mysql> alter table tb_emp add kkk  int  unique  after name;
    Query OK, 0 rows affected (0.24 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> select * from tb_emp;
    +------+------+------+------+------+
    | sky  | op   | name | kkk  | tept |
    +------+------+------+------+------+
    | NULL | 1    | a    | NULL |   10 |
    | NULL | 2    | b    | NULL |   20 |
    | NULL | 3    | c    | NULL |   30 |
    +------+------+------+------+------+
    3 rows in set (0.00 sec)
    View Code

    5.删除字段

    mysql> select * from tb_emp;
    +------+------+------+------+------+
    | sky  | op   | name | kkk  | tept |
    +------+------+------+------+------+
    | NULL | 1    | a    | NULL |   10 |
    | NULL | 2    | b    | NULL |   20 |
    | NULL | 3    | c    | NULL |   30 |
    +------+------+------+------+------+
    3 rows in set (0.00 sec)
    
    mysql> alter table tb_emp drop sky
        -> ;
    Query OK, 0 rows affected (0.23 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> alter table tb_emp drop kkk,tept;
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'tept' at line 1
    mysql> desc tb_emp;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | op    | varchar(20) | YES  |     | NULL    |       |
    | name  | varchar(25) | YES  |     | NULL    |       |
    | kkk   | int(11)     | YES  | UNI | NULL    |       |
    | tept  | int(11)     | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    4 rows in set (0.00 sec)
    View Code

    6.修改字段的排列位置

    mysql> desc tb_emp;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | op    | varchar(20) | YES  |     | NULL    |       |
    | name  | varchar(25) | YES  |     | NULL    |       |
    | kkk   | int(11)     | YES  | UNI | NULL    |       |
    | tept  | int(11)     | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    4 rows in set (0.00 sec)
    
    mysql> alter table tb_emp modify name varchar(25) first;
    Query OK, 0 rows affected (0.76 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> alter table tb_emp modify  kkk varchar(25) after op;
    Query OK, 3 rows affected (0.32 sec)
    Records: 3  Duplicates: 0  Warnings: 0
    
    mysql> desc tb_emp;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | name  | varchar(25) | YES  |     | NULL    |       |
    | op    | varchar(20) | YES  |     | NULL    |       |
    | kkk   | varchar(25) | YES  | UNI | NULL    |       |
    | tept  | int(11)     | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    4 rows in set (0.00 sec)
    View Code

    7.更改表的存储引擎

    语法
    alter table 表名 ENGINE=引擎
    
    mysql> show create table tb_emp;
    +--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table  | Create Table                                                                                                                                                                                                                   |
    +--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | tb_emp | CREATE TABLE `tb_emp` (
      `name` varchar(25) DEFAULT NULL,
      `op` varchar(20) DEFAULT NULL,
      `kkk` varchar(25) DEFAULT NULL,
      `tept` int(11) DEFAULT NULL,
      UNIQUE KEY `kkk` (`kkk`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
    +--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    mysql> 
    mysql> alter table tb_emp engine=MyISAM;
    Query OK, 3 rows affected (0.53 sec)
    Records: 3  Duplicates: 0  Warnings: 0
    
    mysql> show create table tb_emp;
    +--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table  | Create Table                                                                                                                                                                                                                   |
    +--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | tb_emp | CREATE TABLE `tb_emp` (
      `name` varchar(25) DEFAULT NULL,
      `op` varchar(20) DEFAULT NULL,
      `kkk` varchar(25) DEFAULT NULL,
      `tept` int(11) DEFAULT NULL,
      UNIQUE KEY `kkk` (`kkk`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
    +--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    View Code

    8.删除外键约束

    语法
    alter table 表名 drop foreign key 外键名称
    
    
    
    mysql> create table tb_emp9
        -> (
        -> id int primary key,
        -> constraint haha foreign key(id) references tb_emp3(id));
    Query OK, 0 rows affected (0.10 sec)
    
    mysql> desc tb_emp9;
    +-------+---------+------+-----+---------+-------+
    | Field | Type    | Null | Key | Default | Extra |
    +-------+---------+------+-----+---------+-------+
    | id    | int(11) | NO   | PRI | NULL    |       |
    +-------+---------+------+-----+---------+-------+
    1 row in set (0.00 sec)
    
    mysql> show create table tb_emp9;
    +---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table   | Create Table                                                                                                                                                                      |
    +---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | tb_emp9 | CREATE TABLE `tb_emp9` (
      `id` int(11) NOT NULL,
      PRIMARY KEY (`id`),
      CONSTRAINT `haha` FOREIGN KEY (`id`) REFERENCES `tb_emp3` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
    +---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    mysql> alter table tb_emp9 drop foreign key haha;
    Query OK, 0 rows affected (0.03 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> show create table tb_emp9;
    +---------+---------------------------------------------------------------------------------------------------------------+
    | Table   | Create Table                                                                                                  |
    +---------+---------------------------------------------------------------------------------------------------------------+
    | tb_emp9 | CREATE TABLE `tb_emp9` (
      `id` int(11) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
    +---------+---------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    View Code

    9.删除表

    从表可以直接删除
    mysql> create table tb_emp10 ( id int primary key, constraint haha foreign key(id) references tb_emp3(id));;
    Query OK, 0 rows affected (0.26 sec)
    
    mysql> drop table tb_emp10;
    Query OK, 0 rows affected (0.04 sec)
    
    
    主表的话,可以先删除从表再删除主表
    如果需要保留从表,需要将外键关系解除即可
    View Code
    RUSH B
  • 相关阅读:
    python相关软件安装流程图解————————pycharm安装——————pycharm-professional-2018.3.1
    爬虫——python——百度地图经纬度查询——经纬度查看地点地名——利用百度API获取地名经纬度——爬取所有的中国地址
    博客园自定义美化——博客园公告功能(公告栏圆形时钟)——博客园公告栏圆形时钟功能
    博客园自定义美化——博客园页脚功能(底部简介关注打赏)——博客园文章个性签名功能
    博客园自定义美化——博客园页首功能(右侧悬浮打赏)——右侧添加悬浮打赏功能
    Django项目:CMDB(服务器硬件资产自动采集系统)--12--08CMDB采集硬件数据日志记录
    Django项目:CMDB(服务器硬件资产自动采集系统)--11--07CMDB文件模式测试采集硬件数据
    centos 安装gitlab
    vscode 配置
    mssql下调用dll
  • 原文地址:https://www.cnblogs.com/tangsonghuai/p/11002437.html
Copyright © 2011-2022 走看看