修改表的结构(ALTER)


修改表的结构操作,有下面几种。

1、修改列名   
2、修改表的名字
3、修改列的类型
4、增加某列
5、删除某列

相似的语法:alter table TableName xxx(操作)

一、修改列名

①、语法:

         ALTER TABLE TABLENAME CHANGE 原列名  想改成的列名 列类型;

②、示例:


1、查看原表的结构

        
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mysql> desc MyTable;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| stuname | varchar(10) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
1 row in set (0.01 sec)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


2、修改某一列想改的列名
        

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mysql> alter table MyTable change stuname sname varchar(10);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

3、查看结果


        
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mysql> desc MyTable;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| sname | varchar(10) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
1 row in set (0.01 sec)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

二、修改表的名字

①、基本语法:

    修改表的名字的方法有两种:
    1、ALTER TABLE TABLENAME RENAME NEWTABLENAME;
    2、RENAME TABLE TABLENAME TO NEWTABLENAME;


②、示例


     1、查看表的原名字,假如我们要更改FirTable_COPY 为 FCS


        
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| FirTable       |
| FirTable_COPY  |
| FirTable_COPY2 |
| FirstTable     |
| MT             |
+----------------+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

扫描二维码关注公众号,回复: 3691332 查看本文章


      2、运用第一种方法修改


        
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mysql> alter table FirTable_COPY rename FC;
Query OK, 0 rows affected (2.22 sec)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


3、查看结果

       
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| FC             |
| FirTable       |
| FirTable_COPY2 |
| FirstTable     |
| MT             |
+----------------+
5 rows in set (0.00 sec)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


4、发现手残打错了,运用第二种方法修改(当然也可以进行用第一种办法)

        
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mysql> rename table FC to FCS;
Query OK, 0 rows affected (0.04 sec)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


5、查看结果

        
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| FCS            |
| FirTable       |
| FirTable_COPY2 |
| FirstTable     |
| MT             |
+----------------+
5 rows in set (0.00 sec)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


三、修改列的类型

①、基本语法:
        

         ALTER TABLE TABLENAME MODIFY 列名 想改的类型

②、示例:

        1、查看原表格的结构,假如要改变sno的int变成varchar(13)


        
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mysql> desc FCS;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| sno   | int(11)     | YES  |     | NULL    |       |
| sname | varchar(10) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


2、修改语句

        
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mysql> ALTER TABLE FCS MODIFY sno varchar(13);
Query OK, 0 rows affected (0.15 sec)
Records: 0  Duplicates: 0  Warnings: 0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    

3、查看结果

        
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mysql> desc FCS;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| sno   | varchar(13) | YES  |     | NULL    |       |
| sname | varchar(10) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.03 sec)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

四、增加列


①、语法:

           ALTER TABLE TABLENAME ADD 列名 类型;


②、示例:

1、原来表的结构是如下情况:

        
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mysql> desc MyTable;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| stuname | varchar(10) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
1 row in set (0.01 sec)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2、进行增加操作

       

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mysql> alter table MyTable add stuNum long;
Query OK, 0 rows affected (0.15 sec)
Records: 0  Duplicates: 0  Warnings: 0

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


3、完成之后的操作

        
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mysql> desc MyTable;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| stuname | varchar(10) | YES  |     | NULL    |       |
| stuNum  | mediumtext  | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


③、常见错误:

       1、添加了相同名字的列

        
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mysql> alter table MyTable add stuNum long;
ERROR 1060 (42S21): Duplicate column name 'stuNum'
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


        2、同时添加了很多个列

        
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mysql> alter table MyTable add stuName  varchar(10), stuCount varchar(16);

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 'stuCount varchar(16)' at line 1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


      3、修改没有权限操作的库的表
      这里以information_schema为例

        
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mysql> alter table INNODB_FT_CONFIG add count int;
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'information_schema'

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

五、删除某列

①、语法:ALTER TABLE TABLENAME   DROP 列名

②、示例:

1、MyTable的原始状态

        
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mysql> desc MyTable;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| stuname | varchar(10) | YES  |     | NULL    |       |
| stuNum  | mediumtext  | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


2、删除的语句


        
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mysql> ALTER TABLE MyTable DROP stuNum;
Query OK, 0 rows affected (0.15 sec)
Records: 0  Duplicates: 0  Warnings: 0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

3、操作后MyTable的结构


        
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mysql> desc MyTable;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| stuname | varchar(10) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
1 row in set (0.01 sec)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


 

猜你喜欢

转载自blog.csdn.net/qq_41201816/article/details/83052480