• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

MySQL中惯用的修改表的命令

mysql 搞代码 7年前 (2018-06-04) 135次浏览 已收录 0个评论

mysql中常用的修改表的命令

    在数据库操作中,个人觉得使用得最多的就是查询,然后就是对表的修改操作了,尤其是当数据库的设计工作没有做好时.下面就MySQL中一些常用的修改表的操作进行总结:

    为了方便后面的说明,先创建一个表,创建语句如下:

Create Table member(

    id Int(3),

    name Varchar(8),

    pass Varchar(25)

);


1.向表member中增加一个新列email,MySQL语句如下:

  Alter Table member Add email Varchar(50) Not Null;

  Describe member;

+——-+————-+——+—–+———+——-+
| Field | Type        | Null | Key | Default | Extra |
+——-+————-+——+—–+———+——-+
| id    | int(3)      | YES  |     | NULL    |       |
| name  | varchar(8)  | YES  |     | NULL    |       |
| pass  | varchar(8)  | YES  |     | NULL    |       |
| email | varchar(50) | NO   |     | NULL    |       |
+——-+————-+——+—–+———+——-+
4 rows in set (0.00 sec)


2.向表member中添加一个新的主键id,MySQL语句如下:

  Alter Table member Add Primary Key(id);

  Describe member;

+——-+————-+——+—–+———+——-+
| Field | Type        | Null | Key | Default | Extra |
+——-+————-+——+—–+———+——-+
| id    | int(3)      | NO   | PRI | 0       |       |
| name  | varchar(8)  | YES  |     | NULL    |       |
| pass  | varchar(8)  | YES  |     | NULL    |       |
| email | varchar(50) | NO   |     | NULL    |       |
+——-+————-+——+—–+———+——-+
4 rows in set (0.00 sec)


3.修改已存在字段id的名字和类型,MySQL语句如下:

  Alter Table member Change id mid Int(8) Auto_Increment Unique;

  Describe member;

+——-+————-+——+—–+———+—————-+
| Field | Type        | Null | Key | Default | Extra          |
+——-+————-+——+—–+———+—————-+
| mid   | int(8)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(8)  | YES  |     | NULL    |                |
| pass  | varchar(8)  | YES  |     | NULL    |                |
| email | varchar(50) | NO   |     | NULL    |                |
+——-+————-+——+—–+———+—————-+
4 rows in set (0.00 sec)

说明:修改字段类型时,MySQL中也可以将Change更改为Modify,两者的区别在于:Change要求在修改表时指定旧的的新的字段名,而Modify则只是修改相应字段的类型,但不更改该字段的名字.如下所示:

  Alter Table member Change id id Int(8) Auto_Increment Unique;

  Alter Table member Modify id Int(8) Auto_Increment Unique;


4.删除字段键pass,MySQL语句如下:

  Alter Table member Drop pass;

  Describe member;

+——-+————-+——+—–+———+—————-+
| Field | Type        | Null | Key | Default | Extra          |
+——-+————-+——+—–+———+—————-+
| mid   | int(8)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(8)  | YES  |     | NULL    |                |
| email | varchar(50) | NO   |     | NULL    |                |
+——-+————-+——+—–+———+—————-+
3 rows in set (0.00 sec)


5.将表member重新命名为memb,使用MySQL语句如下:

  Alter Table member Rename To memb


6.可以使用Alter Table命令的First和After子句控制字段的位置,在mid字段后增加一个status字段的MySQL语句如下:

  Alter Table memb Add status Int(2) After mid;

  Describe memb;

+——–+————-+——+—–+———+—————-+
| Field  | Type        | Null | Key | Default | Extra          |
+——–+————-+——+—–+———+—————-+
| mid    | int(8)      | NO   | PRI | NULL    | auto_increment |
| status | int(2)      | YES  |     | NULL    |                |
| name   | varchar(8)  | YES  |     | NULL    |                |
| email  | varchar(50) | NO   |     | NULL    |                |
+——–+————-+——+—–+———+—————-+
4 rows in set (0.00 sec)


7.使用Set Default和Drop Default子句为一个字段设置及删除默认值,将status的默认值设为1的MySQL语句如下:

  Alter Table memb Alter status Set Default 1;

  Describe memb;
+——–+————-+——+—–+———+—————-+
| Field  | Type        | Null | Key | Default | Extra          |
+——–+————-+——+—–+———+—————-+
| mid    | int(8)      | NO   | PRI | NULL    | auto_increment |
| status | int(2)      | YES  |     | 1       |                |
| name   | varchar(8)  | YES  |     | NULL    |                |
| email  | varchar(50) | NO   |     | NULL    |                |
+——–+————-+——+—–+———+—————-+
4 rows in set (0.01 sec)


8.使用Add Foreign Key子句向表添加外键参照.由于前面仅创建了一张表,故无法给出修改后的结果.假设还有一张表book,则可使用以下MySQL语句将book中的字段id作为一个外键加到gememb中:

  Alter Table memb Add Foreign Key(bookId) References book(id);


9.在Alter Table命令中包含Add Index或者Drop Index子句添加或者删除索引.


10.在Alter Table命令中指定一个新的Type子句来更改表类型.将表memb改为InnoDB类型的MySQL语句如下:

  Alter Table memb Type = InnDB;


11.向一个表添加Unique键,如果这个包含重复的值,则可以通过包含Ignore从句来从表中删除在那个键上具有重复的所有记录,只保留第一条记录.将表memb中的字段email设为Unique,对email重复出现的只保留第一个记录的MySQL语句如下:

  Alter Ignore Table memb Modify email Varchar(50) Not Null Unique;

  Describe memb:

+——–+————-+——+—–+———+—————-+
| Field  | Type        | Null | Key | Default | Extra          |
+——–+————-+——+—–+———+—————-+
| mid    | int(8)      | NO   | PRI | NULL    | auto_increment |
| status | int(2)      | YES  |     | 1       |                |
| name   | varchar(8)  | YES  |     | NULL    |                |
| email  | varchar(50) | NO   | UNI | NULL    |                |
+——–+————-+——+—–+———+—————-+
4 rows in set (0.00 sec)

1 楼 halk 2009-03-17  
pass Varchar(25),
———最后的逗号应该去掉,否则报错
2 楼 halk 2009-03-17  
Alter Table memb Alter status Default 1;
—————————–应该是Alter Table memb Alter status set Default 1;

MySQL Server 5.1 Navacat 8.0

3 楼 zhanger 2009-03-17  
谢谢halk
已经改过来了

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:MySQL中惯用的修改表的命令

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址