Mysql基础之 ALTER命令

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: 0mysql> 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)

原文地址:https://www.cnblogs.com/FengGeBlog/p/9771646.html

时间: 2024-10-09 05:45:41

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

Mysql基础知识----常用命令

一.连接MYSQL. 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL. 首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码. 如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql> 2.连接到远程主机上的MYSQL.假设远程主机的IP为:

MySql之ALTER命令用法详细解读

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文详细解读了MySql语法中Alter命令的用法,这是一个用法比较多的语法,而且功能还是很强大的. USE learning;(自己要提前建好) CREATE TABLE student(id INT NOT NULL, name CHAR(10) NOT NULL, class INT NOT NULL, age INT ); 来看看新建好的表 一.删除,添加或修改表字段 删除表字段 如

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

本文详细解读了MySql语法中Alter命令的用法,这是一个用法比较多的语法,而且功能还是很强大的. USE learning;(自己要提前建好) CREATE TABLE student(id INT NOT NULL, name CHAR(10) NOT NULL, class INT NOT NULL, age INT ); 来看看新建好的表 一.删除,添加或修改表字段 删除表字段 如下命令使用了 ALTER 命令及 DROP 子句来删除以上创建表的 age字段: ALTER TABLE

MySql基础知识命令总结一

数据库的引入和概念 数据保存到内存: 优点: 1)读写非常快 缺点: 1)程序关闭导致数据丢失 数据保存到文件: 优点: 1)数据可以永久保存 缺点: 1)频繁地IO操作,效率不高! 2)数据管理不方便.例如查询某个数据需要全部读取出来,再匹配. 数据保存到数据库软件: 优点: 1)数据永久保存下来 2)数据管理非常方便.(例如查询非常快速和方便) 数据库,俗称数据的仓库.方便管理数据的软件(或程序). 市面上常见的数据库 Oracle,甲骨文公司的产品. 当前最流行应用最广泛的数据库软件.和j

MySQL 基础常用命令

一.启动与关闭 1.1 Linux下启动mysql 的命令: a. rpm包安装:service mysqld start b. 源码包安装:/usr/local/mysql/bin/mysqld_safe --user=mysql & 1.2 Linux下重启mysql 的命令: a. rpm包安装:service mysqld restart b. 源码包安装: 先关闭mysql /usr/local/mysql/bin/mysqladmin -uroot -p shutdown 再启动my

Linux运维常用的 MySQL基础命令

MySQL基础命令 ------------- 创建MySQL库,授权. >create database mysqldb character set utf8; >grant all privileges on mysqldb.* to 'mysqluser'@'localhost' identified by 'mysqlpasswd'; >flush privileges; 创建了mysqldb数据库,创建mysqluser用户,并授权mysqldb的所有权限.__________

雷林鹏分享:MySQL ALTER命令

当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令. 开始本章教程前让我们先创建一张表,表名为:testalter_tbl. [email protected]# mysql -u root -p password; Enter password:******* mysql> use CODERCTO; Database changed mysql> create table testalter_tbl -> ( -> i INT, -> c

linux下mysql数据库基础及客户端命令详解

1.mysql数据库存储引擎: SHOW ENGINES;   #查看mysql支持的存储引擎 常见有如下两个存储引擎: MyISAM:每表三个文件: .frm: 表结构 .MYD:表数据 .MYI:表索引 InnoDB:默认所有表共享一个表空间文件: 建议:每表一个独立的表空间文件:默认此功能没有打开 .frm: 表结构 .ibd: 表空间,包含表数据和表索引 .opt: 字符集和字符排序规则 打开InnoDB每表创建独立的表空间文件功能办法: vim /etc/my.cnf   #新增如下一

MySQL基础实战

一.数据库基础: DBMS:数据库管理系统(Database Management System) RDBMS:关系数据库管理系统(Relational Database Management System) C/S:通过专有协议 关系模型:表(行,列),二维关系 范式:第一范式,第二范式,第三范式: 关系运算: 选择 投影 数据库:表,索引,视图(虚表) SQL:结构化查询语言 DDL:数据定义语言 DML:数据操作语言 编程接口: 自行定义存储过程 自行定义存储函数 触发器: 时间调度器:类