ALTER命令

  作用:当我们修改数据库的列属性、列名称、表名等,要使用ALTER命令

  教程:

  1、首先是我们创建一个数据库以及一张表

mysql> create table exercise(
-> id int,
-> name varchar(15)
-> );

    1.1、查看表结构

mysql> SHOW COLUMnS FROM exercise;  或者使用  DESC erercise;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(15) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

  删除、添加、修改表字段

  1、删除一个字段,比如id

mysql> ALTER TABLE exercise drop id;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC exercise;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name | varchar(15) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
1 row in set (0.00 sec)

  2、添加字段

    2.1、添加一个字段,比如id_new

mysql> ALTER TABLE exercise ADD COLUMN id_new int;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC exercise;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| name | varchar(15) | YES | | NULL | |
| id_new | int(11) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

    2.2、将新添加的字段设置为第一列

mysql> ALTER TABLE exercise ADD COLUMN sex varchar(1) FIRST;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC exercise;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| sex | varchar(1) | YES | | NULL | |
| name | varchar(15) | YES | | NULL | |
| id_new | int(11) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

    2.3、在某个列之后添加新的字段,比如在name列后添加

mysql> ALTER TABLE exercise ADD COLUMN address char(50) AFTER name;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC exercise;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| sex | varchar(1) | YES | | NULL | |
| name | varchar(15) | YES | | NULL | |
| address | char(50) | YES | | NULL | |
| id_new | int(11) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

  总结:添加字段,只有FIRST和AFTER关键字两个

  3、修改一个字段属性及名称

    3.1、修改列属性

      使用modify修改列属性

mysql> ALTER TABLE exercise modify id_new int(4);  #将原来的int(11)修改为int(4)
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC exercise;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| name | varchar(15) | YES | | NULL | |
| id_new | int(4) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

      使用change修改列属性

mysql> ALTER TABLE exercise CHANGE id_new id_new int(8);
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC exercise;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| name | varchar(15) | YES | | NULL | |
| id_new | int(8) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

    总结:modify和change的区别:修改列属性时,使用change比较麻烦,要写两次列名称,而使用modify只需要写一次列名称就可以了。

    3.2、修改列名字

mysql> ALTER TABLE exercise CHANGE id_new id_new_new;
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 '' at line 1
mysql> ALTER TABLE exercise CHANGE id_new id_new_new int(8);
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC exercise;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
 +------------+-------------+------+-----+---------+-------+
 | name | varchar(15) | YES | | NULL | |
 | id_new_new | int(8) | YES | | NULL | |
 +------------+-------------+------+-----+---------+-------+
 2 rows in set (0.00 sec)

    总结:修改列名称需要使用CHANGE,而MODIFY不能修改列的名称。如果要同时修改名称和属性还是CHANGE。使用CHANGE后面要跟上旧列、新列的名称,以及列属性。因此修改名称前先查看列属性。

    一句话:字段名称CHANGE;字段属性MODIFY。即名称又属性还是CHANGE

  4、修改表名称

mysql> ALTER TABLE exercise rename exercise_new;
Query OK, 0 rows affected (0.01 sec) mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| exercise_new |
+----------------+
1 row in set (0.00 sec)

  5、ALTER 修改字段的默认值

  我们往往在建表的时候给某个列的属性上面设置默认值,比如“DEFAULT NULL”等等。如何修改默认值呢?首先来查看所有列的默认值

mysql> SHOW COLUMNS FROM exercise;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| sex | varchar(1) | YES | | NULL | |
| name | varchar(15) | YES | | NULL | |
| address | char(50) | YES | | NULL | |
| id_new | int(11) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

  基本所有的列默认值DEFAULT都是NULL,现在我们指定“sex”列默认值是“M”

mysql> ALTER TABLE exercise ALTER sex SET DEFAULT 'M';
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

  查看一下:

mysql> SHOW COLUMNS FROM exercise;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| sex | varchar(1) | YES | | M | |
| name | varchar(15) | YES | | NULL | |
| address | char(50) | YES | | NULL | |
| id_new | int(11) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

  尝试删除表中一个列的默认值

mysql> ALTER TABLE exercise ALTER sex drop DEFAULT;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0

  再来查看一下:

mysql> SHOW COLUMNS FROM exercise;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| sex | varchar(1) | YES | | NULL | |
| name | varchar(15) | YES | | NULL | |
| address | char(50) | YES | | NULL | |
| id_new | int(11) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

Mysql基础之 ALTER命令的更多相关文章

  1. MySQL基础2——常用命令

    注意:MySQL在centos中安装的是5.7版本的,编辑MySQL时会有个报错,需要执行: set @@global.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN ...

  2. MySql 基础知识-常用命令及sql语句

    一.常用mysql命令行命令 1,启动mysql服务 net start mysql.      停止mysql服务 net stop mysql 2,netstart -na|findstr 330 ...

  3. MySQL基础:show命令总结

    show命令 show命令可以提供关于数据库.表.列,或关于服务器的状态信息. 总结 # 显示二进制文件以及文件大小(需要开启二进制日志记录功能) SHOW {BINARY | MASTER} LOG ...

  4. MySql之ALTER命令用法详细解读(转)

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文详细解读了MySql语法中Alter命令的用法,这是一个用法比较多的语法,而且功能还是很强 ...

  5. Mysql学习总结(6)——MySql之ALTER命令用法详细解读

    MySql语法中Alter命令的用法,这是一个用法比较多的语法,而且功能还是很强大的. [sql] view plaincopy USE learning;(自己要提前建好) CREATE TABLE ...

  6. MySQL基础入门使用和命令的使用

    数据库了解 概念 数据库就是一种特殊的文件,其中存储着需要的数据 一个数据库可以有多张表 MySQL是一种关系型数据库 具有关联性数据的就是关系型数据库 MySQL是一种软件可以用来创建mysql数据 ...

  7. MySQL ALTER命令

    当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令. 开始本文教程前让我们先创建一张表,表名为:testalter_tbl. root@host# mysql -u r ...

  8. mysql 基础指令/命令

    1.连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root - ...

  9. MySQL 基础常用命令

    一.启动与关闭 1.1 Linux下启动mysql 的命令: a. rpm包安装:service mysqld start b. 源码包安装:/usr/local/mysql/bin/mysqld_s ...

随机推荐

  1. mysql创建表时,设置timestamp DEFAULT NULL报错1067 - Invalid default value for 'updated_at'

    问题背景: 线上的linux服务器上的mysql服务器中导出数据库的结构.想要在本地创建一个测试版本 导出后再本地mysql上运行却报错   1067 - Invalid default value ...

  2. vue 周期函数

    先简单说说vue中周期函数 beforeCreate(创建前) created(创建后) beforeMount(载入前) mounted(载入后) beforeUpdate(更新前) updated ...

  3. nodejs+nginx获取真实ip

    nodejs + nginx获取真实ip分为两部分: 第一.配置nginx: 第二.通过nodejs代码获取: 其他语言也是一样的,都是配置nginx之后,在http头里面获取“x-forwarded ...

  4. 2017 ACM/ICPC Asia Regional Qingdao Online解题报告(部分)

    HDU 6206 Apple 题意: 给出四个点的坐标(每个点的坐标值小于等于1,000,000,000,000),问最后一个点是否在前三个点组成的三角形的外接圆内,是输出Accept,否输出Reje ...

  5. IDEA创建简单SSM项目使用传统Jar包

    #IDEA SSM项目使用传统Jar包 创建项目 下一步,命名 下一步,创建完成 下一步,创建资源文件夹resources 页面概览 左侧目录树 演示如下 一些简单的说明 其中包之间的层次调用 ent ...

  6. 【Java并发编程】22、Exchanger源码解析(JDK1.7)

    Exchanger是双向的数据传输,2个线程在一个同步点,交换数据.先到的线程会等待第二个线程执行exchangeSynchronousQueue,是2个线程之间单向的数据传输,一个put,一个tak ...

  7. 【Tomcat】性能优化

    一.JVM优化 1.内存优化. 2.垃圾回收策略优化. 二.server.xml的connector优化(connector是与HTTP请求处理相关的容器,三个容器的初始化顺序为:Server-> ...

  8. Django Rest Framework之认证

    代码基本结构 url.py: from django.conf.urls import url, include from web.views.s1_api import TestView urlpa ...

  9. Python全栈学习_day001作业

    Day1作业及默写 1.简述变量命名规范 1. 必须以字母.数字.下划线命名,且不能以数字开头 2. 不能是python的关键字 3. 不能以中文或者拼音作为变量名 4. 命名格式推荐以驼峰式或者下划 ...

  10. 【CSS学习】--- overflow属性

    一.前言 在网页布局中,未处理的溢出元素绝对算得上是个“毒瘤”.因为如果一个“盒子”周围还有其它元素,而从这个盒子中溢出的元素会和盒子周围的元素发生层叠,并脱离了整个HTML元素,所以我们应当合理使用 ...