zoukankan      html  css  js  c++  java
  • 玩玩数据库(三)--对表的结构进行更改

    现在,我们先看看我们的表都有些什么字段。

    键入:desc student;

    显示:

    +----------+-------------+------+-----+---------+-------+
    | Field    | Type        | Null | Key | Default | Extra |
    +----------+-------------+------+-----+---------+-------+
    | id       | int(12)     | YES  |     | NULL    |       |
    | name     | varchar(50) | YES  |     | NULL    |       |
    | birthday | varchar(20) | YES  |     | NULL    |       |
    | content  | varchar(50) | YES  |     | NULL    |       |
    +----------+-------------+------+-----+---------+-------+
    4 rows in set (0.00 sec)

    好的,显示我们的student表里有id name birthday content字段,现在,我们想插入一个新字段isLogin来表示是否已经注册。

    键入:alter table tbname add column 列名 类型;

    eg:alter table student add column isLogin enum('Y','N');

    我们看看表的结构变化:键入 desc student;

    显示:+----------+---------------+------+-----+---------+-------+
    | Field    | Type          | Null | Key | Default | Extra |
    +----------+---------------+------+-----+---------+-------+
    | id       | int(12)       | YES  |     | NULL    |       |
    | name     | varchar(50)   | YES  |     | NULL    |       |
    | birthday | varchar(20)   | YES  |     | NULL    |       |
    | content  | varchar(50)   | YES  |     | NULL    |       |
    | isLogin  | enum('Y','N') | YES  |     | NULL    |       |
    +----------+---------------+------+-----+---------+-------+
    可以看到,isLogin已经插入到表中。


    但是我又想在名字后面插入一个性别字段,怎么办?

    键入:alter table tbname add column 列名 类型 after 要跟随的列名;

    eg:alter table student add column sex enum('M','F') after name;

    再查看表的结构:

    +----------+---------------+------+-----+---------+-------+
    | Field    | Type          | Null | Key | Default | Extra |
    +----------+---------------+------+-----+---------+-------+
    | id       | int(12)       | YES  |     | NULL    |       |
    | name     | varchar(50)   | YES  |     | NULL    |       |
    | sex      | enum('M','F') | YES  |     | NULL    |       |
    | birthday | varchar(20)   | YES  |     | NULL    |       |
    | content  | varchar(50)   | YES  |     | NULL    |       |
    | isLogin  | enum('Y','N') | YES  |     | NULL    |       |
    +----------+---------------+------+-----+---------+-------+
    可以看见,sex已经插入到name的后面(爆菊了= =lll)

    现在,我们忽然觉得,这个isLogin貌似没什么用处啊...要不删掉它吧~

    键入:alter table tbname drop 列名;

    eg:alter table student drop isLogin;

    显示:

    +----------+---------------+------+-----+---------+-------+
    | Field    | Type          | Null | Key | Default | Extra |
    +----------+---------------+------+-----+---------+-------+
    | id       | int(12)       | YES  |     | NULL    |       |
    | name     | varchar(50)   | YES  |     | NULL    |       |
    | sex      | enum('M','F') | YES  |     | NULL    |       |
    | birthday | varchar(20)   | YES  |     | NULL    |       |
    | content  | varchar(50)   | YES  |     | NULL    |       |
    +----------+---------------+------+-----+---------+-------+
    哈哈,isLogin没有咯。

    我们发现,content字段貌似有点词不达意啊,,貌似叫extra更贴切些,那么我们就...

    键入:alter table tbname change 更改前的列名 更改后的列名 类型;

    eg:alter table student change content extra varchar(30);

    之后查询会显示:

    +----------+---------------+------+-----+---------+-------+
    | Field    | Type          | Null | Key | Default | Extra |
    +----------+---------------+------+-----+---------+-------+
    | id       | int(12)       | YES  |     | NULL    |       |
    | name     | varchar(50)   | YES  |     | NULL    |       |
    | sex      | enum('M','F') | YES  |     | NULL    |       |
    | birthday | varchar(20)   | YES  |     | NULL    |       |
    | extra    | varchar(30)   | YES  |     | NULL    |       |
    +----------+---------------+------+-----+---------+-------+

    content更改为extra了!

    另外,字段参数也是可以改滴!

    键入:alter table tbname modify 要改的字段名 更改后的类型;

    eg:alter table student modify extra char(50);

    显示:

    +----------+---------------+------+-----+---------+-------+
    | Field    | Type          | Null | Key | Default | Extra |
    +----------+---------------+------+-----+---------+-------+
    | id       | int(12)       | YES  |     | NULL    |       |
    | name     | varchar(50)   | YES  |     | NULL    |       |
    | sex      | enum('M','F') | YES  |     | NULL    |       |
    | birthday | varchar(20)   | YES  |     | NULL    |       |
    | extra    | char(50)      | YES  |     | NULL    |       |
    +----------+---------------+------+-----+---------+-------+
    这样,extra由原先的varchar(30)改为char(50)了。

    此外,表的名称也是可以改的,不过这里我就不作演示了,给出指令大家自己尝试一下。

    键入:alter table 要更改的tbname rename 修改后的tbname;

    eg:alter table student rename user;

    效果就是student表被更名为user。

    好的,复习一下;

    添加字段:alter table tbname add column 列名 类型;

    删除字段:alter table tbname drop 列名;

    修改字段名:alter table tbname change 要修改的列名 修改后的列名 类型;

    修改字段数据类型:alter table tbname modify 要修改的列名 类型;

    修改表名:alter table 要修改的tbname rename 修改后的tbname;

    下一节,我们再来一点更复杂的操作吧~

  • 相关阅读:
    一道编程题: 在1~n之间选择若干个数,使其和为m
    关于raft算法
    程序员算法基础——动态规划
    c++中两个类互相引用的问题
    c++ 之模板进阶
    jmeter分布式操作-远程启动功能探索
    linux下安装不同版本的jdk
    Jmeter插件监控服务器性能
    测试开发面试-技术持续累积
    python:Jpype安装和使用
  • 原文地址:https://www.cnblogs.com/Rapheal/p/3676822.html
Copyright © 2011-2022 走看看