mysql修改表结构例子_mysql修改表结构方法实例详解

本文实例讲述了mysql修改表结构方法。分享给大家供大家参考。具体如下:

mysql修改表结构使用ALTER TABLE语句,下面就为您详细介绍mysql修改表结构的语句写法,希望对您学习mysql修改表结构方面能有所帮助。 ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...]

alter_specification:

ADD [COLUMN] create_definition [FIRST | AFTER column_name ]

or ADD INDEX [index_name] (index_col_name,...)

or ADD PRIMARY KEY (index_col_name,...)

or ADD UNIQUE [index_name] (index_col_name,...)

or ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}

or CHANGE [COLUMN] old_col_name create_definition

or MODIFY [COLUMN] create_definition

or DROP [COLUMN] col_name

or DROP PRIMARY KEY

or DROP INDEX index_name

or RENAME [AS] new_tbl_name

or table_options

ALTER TABLE允许你修改一个现有表的结构。例如,你可以增加或删除列、创造或消去索引、改变现有列的类型、或重新命名列或表本身。你也能改变表的注释和表的类型。

如果你使用ALTER TABLE修改一个列说明但是DESCRIBE tbl_name显示你的列并没有被修改,这可能是MySQL因为在7.7.1 隐含的列说明改变中描述的原因之一而忽略了你的修改。例如,如果你试图将一个VARCHAR改为CHAR,MySQL将仍然使用VARCHAR,如果表包 含其他变长的列。

ALTER TABLE通过制作原来表的一个临时副本来工作。修改在副本上施行,然后原来的表被删除并且重新命名一个新的。这样做使得所有的修改自动地转向到新表,没 有任何失败的修改。当ALTER TABLE正在执行时,原来的桌可被其他客户读取。更新和写入表被延迟到新表准备好了为止。

为了使用ALTER TABLE,你需要在表上的select、insert、delete、update、create和drop的权限。

IGNORE是MySQL对ANSI SQL92 的一个扩充,如果在新表中的唯一键上有重复,它控制ALTER TABLE如何工作。如果IGNORE没被指定,副本被放弃并且恢复原状。如果IGNORE被指定,那么对唯一键有重复的行,只有使用第一行;其余被删除。

你可以在单个ALTER TABLE语句中发出多个ADD、ALTER、DROP和CHANGE子句。这是MySQL对ANSI SQL92的一个扩充,SQL92在每个ALTER TABLE语句中只允许一个子句。

CHANGE col_name、DROP col_name和DROP INDEX是MySQL对 ANSI SQL92 的扩充。

MODIFY是 Oracle 对ALTER TABLE的扩充。

可选的词COLUMN是一个纯粹的噪音且可以省略。

如果你使用ALTER TABLE tbl_name RENAME AS new_name而没有任何其他选项,MySQL简单地重命名对应于表tbl_name的文件。没有必要创建临时表。

create_definition子句使用CREATE TABLE相同的ADD和CHANGE语法。注意语法包括列名字,不只列类型。

你可以使用CHANGE old_col_name create_definition子句重命名一个列。为了这样做,指定旧的和新的列名字和列当前有的类型。例如,重命名一个INTEGER列,从a到b,你可以这样做:

复制代码 代码如下:mysql> ALTER TABLE t1 CHANGE a b INTEGER;

如果你想要改变列的类型而非名字,就算他们是一样的,CHANGE语法仍然需要2个列名。例如:

复制代码 代码如下:mysql> ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;

然而,在MySQL3.22.16a,你也可以使用MODIFY来改变列的类型而不是重命名它:

复制代码 代码如下:mysql> ALTER TABLE t1 MODIFY b BIGINT NOT NULL;

如果你使用CHANGE或MODIFY缩短一个列,一个索引存在于该列的部分(例如,如果你有一个VARCHAR列的头10个字符的索引),你不能使列短于被索引的字符数目。

当你使用CHANGE或MODIFY改变一个列类型时,MySQL尽可能试图很好地变换数据到新类型。

在MySQL3.22或以后,你能使用FIRST或ADD ... AFTER col_name在一个表的行内在一个特定的位置增加列。缺省是增加到最后一列。

ALTER COLUMN为列指定新的缺省值或删除老的缺省值。如果老的缺省值被删除且列可以是NULL,新缺省值是NULL。如果列不能是NULL,MySQL赋予一个缺省值。缺省值赋值在7.7 CREATE TABLE句法中描述。

DROP INDEX删除一个索引。这是MySQL对 ANSI SQL92 的一个扩充。

如果列从一张表中被丢弃,列也从他们是组成部分的任何索引中被删除。如果组成一个索引的所有列被丢弃,该索引也被丢弃。

DROP PRIMARY KEY丢弃主索引。如果这样的索引不存在,它丢弃表中第一个UNIQUE索引。(如果没有明确地指定PRIMARY KEY,MySQL标记第一个UNIQUE键为PRIMARY KEY。)

用 C API 函数mysql_info(),你能找出多少记录被拷贝, 和(当使用IGNORE时)由于唯一键值的重复多少记录被删除。

FOREIGN KEY、CHECK和REFERENCES子句实际上不做任何事情,他们的句法仅仅提供兼容性,使得更容易地从其他SQL服务器移植代码并且运行借助引用来创建表的应用程序。见5.4 MySQL缺少的功能。

这里是一个例子,显示了一些ALTER TABLE用法。我们以一个如下创建的表t1开始:

复制代码 代码如下:mysql> CREATE TABLE t1 (a INTEGER,b CHAR(10));

重命名表,从t1到t2:

复制代码 代码如下:mysql> ALTER TABLE t1 RENAME t2;

为了改变列a,从INTEGER改为TINYINT NOT NULL(名字一样),并且改变列b,从CHAR(10)改为CHAR(20),同时重命名它,从b改为c:

复制代码 代码如下:mysql> ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);

增加一个新TIMESTAMP列,名为d:

复制代码 代码如下:mysql> ALTER TABLE t2 ADD d TIMESTAMP;

在列d上增加一个索引,并且使列a为主键:

复制代码 代码如下:mysql> ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);

删出列c:

复制代码 代码如下:mysql> ALTER TABLE t2 DROP COLUMN c;

增加一个新的AUTO_INCREMENT整数列,命名为c:

复制代码 代码如下:mysql> ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD INDEX (c);

注意,我们索引了c,因为AUTO_INCREMENT柱必须被索引,并且另外我们声明c为NOT NULL,因为索引了的列不能是NULL。

当你增加一个AUTO_INCREMENT列时,自动地用顺序数字填入列值。

希望本文所述对大家的MySQL数据库程序设计有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519456.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于Paxos 幽灵复现问题的看法

由于郁白之前写的关于Multi-Paxos 的文章流传非常广, 原文提出了一个叫"幽灵复现" 的问题, 认为这个是一个很诡异的问题, 后续和很多人交流关于一致性协议的时候, 也经常会提起这个问题, 但是其实这个问题我认为就是常见的"第三态"问题加了一层包装而已. …

idea spring boot 修改 html,js 等不用重启即时生效

1、【File】-【Settings】-【Build,Execution,Deplyment】-【Compiler】,选中打勾 Build project automatically 2、 组合键:ShiftCtrlAlt/,选择 Registry ,选中打勾 compiler.automake.allow.when.app.running” 3、找到你要运…

MySQL中update修改数据与原数据相同会再次执行吗

背景 本文主要测试MySQL执行update语句时,针对与原数据(即未修改)相同的update语句会在MySQL内部重新执行吗? 测试环境 MySQL5.7.25Centos 7.4 binlog_format为ROW 参数 rootlocalhost : (none) 04:53:15> show variables…

继续增援武汉,紫光及新华三集团对火神山和雷神山医院捐赠设备!

继续驰援!紫光及旗下新华三继火神山医院后再向雷神山医院捐赠全套网络及安全设备 为进一步加大对武汉新型冠状病毒肺炎疫情防控工作的支持,紫光集团以及旗下新华三集团1月27日决定在对武汉火神山医院捐赠网络通信与信息安全设备以及确保设备实施工作的基…

mysql php pdo_php PDO mysql写法

php PDO写法连接mysql;写法一:$db"mysql:hostlocalhost;dbnamesql" ; //连接数据,地址localhost;数据库名称sql;$username"root"; //数据库登录账号;$password"root&q…

通过asm动态构造class文件

<!--动态生成class文件--><dependency><groupId>asm</groupId><artifactId>asm</artifactId><version>3.3.1</version></dependency>工具类 package com.gblfy.chapter2;import java.util.ArrayList; import java.util…

阿里巴巴微服务开源项目盘点(持续更新)

大前端、微服务、数据库、更多精彩&#xff0c;尽在开发者分会场 【Apache Dubbo】 Apache Dubbo 是一款高性能、轻量级的开源Java RPC框架&#xff0c;是国内影响力最大、使用最广泛的开源服务框架之一&#xff0c;它提供了三大核心能力&#xff1a;面向接口的远程方法调用&…

100行Python代码理解深度学习关键概念:从头构建恶性肿瘤检测网络

在构建乳腺癌预测神经网络过程中&#xff0c;我们主要分为3大部分&#xff1a; 1.用Python从零开始创建一个神经网络&#xff0c;并使用梯度下降算法训练模型。 2.在该神经网络中使用威斯康星乳腺癌数据集&#xff0c;根据9种不同的特征&#xff0c;预测肿瘤是良性还是恶性的…

开发者在行动!中国防疫开源项目登上 GitHub TOP 榜

用开发者们的方式支援这场没有硝烟的战争&#xff01;整理 | 唐小引出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;截止北京时间 1 月 28 日下午 15:47&#xff0c;全国确诊新型冠状病毒的数字已经到达了 4586 例&#xff0c;疑似高达 6973 例&#xff0c;医护人员…

mysql 主从备份 主服务器配置_同一服务器配置Mysql主从备份

因为是在同一服务器上配置并且没有使用虚拟机&#xff0c;所以在网上找资料是找到的写的不全&#xff0c;写的好的又没百度到&#xff0c;你说配置难么其实也跟学自行车一样&#xff01;准备环境Windows10主库 Mysql 5.6.21从库 Mysql 5.6.28一般情况从库是要比主库版本高的&am…

jdk8 Metaspace 调优

https://blog.csdn.net/bolg_hero/article/details/78189621

自动化测试|录制回放效果差异检测

概述 回归测试是指修改了旧代码后&#xff0c;重新进行测试以确认修改没有引入新的错误或导致其他的代码出现错误。传统的自动化回归测试需要手动编写脚本获得页面元素的视图树&#xff0c;与原有的元素视图树进行比对。当功能进行频繁迭代时&#xff0c;测试同学维护这些视图…

为什么我学了6个月Python,还是找不到工作?

在知乎上有一个特别火的问题&#xff1a;为什么学了Python&#xff0c;我还是找不到工作&#xff1f;有人说Python语言不行&#xff0c;有人说中国Python根本就没公司用。在大家群嘲的背后&#xff0c;我们来分析一下&#xff1a;为什么大家都不看好Python&#xff1f;学Python…

阿里工程师养了只“二哈”,专治讨厌的骚扰电话

前几天的3.15晚会上曝光了利用智能机器人&#xff0c;一天打4万个骚扰电话&#xff0c;从而赚取利润的黑色产业链。 阿里的工程师恼了&#xff0c;技术是用来让人们生活变美好的&#xff0c;不是被利用来走向阴暗的。 机器人的问题交给机器人&#xff01; 工程师们用业余时间…

excel按条件查询mysql_Excel中实现多条件查找的15种方法

如下图所示&#xff0c;根据第9行的产品和型号&#xff0c;从上面表中查找“销售数量”&#xff0c;结果如C10所示1、SUM函数公式{SUM((A2:A6A9)*(B2:B6B9)*C2:C6)}公式简介&#xff1a;使用(条件)*(条件)因为每行符合条件的为0&#xff0c;不符合的为1&#xff0c;所以只有条件…

JVM调优_堆内存溢出和非堆内存溢出

文章目录1. pom2. MemoryController3. User 对象4. 动态生成class文件工具类5. 启动项目6. 测试连接7. 异常信息1. pom <!--动态生成class文件--><dependency><groupId>asm</groupId><artifactId>asm</artifactId><version>3.3.1<…

使用split_size优化的ODPS SQL的场景

使用split_size优化的ODPS SQL的场景 首先有两个大背景需要说明如下&#xff1a; 说明1&#xff1a;split_size&#xff0c;设定一个map的最大数据输入量&#xff0c;单位M&#xff0c;默认256M。用户可以通过控制这个变量&#xff0c;从而达到对map端输入的控制。设置语句&am…

「今天沾一口野味,明天地府相会!」AI如何抗击「野味肺炎」

河南信阳七星鹏社区宣&#xff08;来源&#xff1a;微博-在信阳&#xff09;整理 | 阿司匹林出品 | CSDN云计算「今天沾一口野味&#xff0c;明天地府相会&#xff01;」这是本次在抗战「野味肺炎」一线中表现突出的河南人民打出的标语。为什么本次疫情被称为「野味肺炎」&…

mysql操作库命令_MYSQL数据库------操作命令笔记

一、数据库连接* 连接数据库命令(前提需要安装mysq )&#xff1a;mysql -h hostIp -u userName -pPassWord二、数据库操作* 查看所有数据库&#xff1a;show databases;* 选中数据库use databaseName ;* 创建数据库create database databaseName;* 删除数据库drop databaseName…

如何自动导出内存映像文件?

内存溢出自动导出&#xff1a; -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath./测试&#xff1a; http://localhost/heap-Xmx32M -Xms32M -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath./