网站开发与维护考察试题,wordpress制作网站教程,wordpress扫码支付后才能看到图片,如何做后台管理员网站添加和删除列使用ADD向表中添加新列#xff0c;使用DROP删除现有列。DROP col_name是对标准SQL的MySQL扩展。若要在表行的特定位置添加列#xff0c;请使用FIRST col_name 或者 AFTER col_name。默认情况是添加到最后。如果表只包含一列#xff0c;则不能删除该列。如果您想…添加和删除列使用ADD向表中添加新列使用DROP删除现有列。DROP col_name是对标准SQL的MySQL扩展。若要在表行的特定位置添加列请使用FIRST col_name 或者 AFTER col_name。默认情况是添加到最后。如果表只包含一列则不能删除该列。如果您想要删除表请使用DROP TABLE语句。如果从表中删除列那么列也将从其所属的任何索引中删除。如果组成一个索引的所有列都被删除那么这个索引也会被删除。如果使用CHANGE或MODIFY缩短存在索引的列而结果列长度小于索引长度MySQL会自动缩短索引。对于ALTER TABLE ... ADD如果列具有使用非确定性函数的表达式默认值则语句可能会产生警告或错误。重命名、重新定义和重新排序列CHANGE、MODIFY、RENAME COLUMN 和 ALTER子句允许更改现有列的名称和定义。它们具有以下比较特征:●CHANGE:■ 可以重命名列并更改其定义。■ 具有比MODIFY、RENAME COLUMN更多的功能但以牺牲某些操作的便利性为代价。如果不重命名CHANGE 需要对列进行两次命名如果只重命名则需要重新指定列定义。■ 使用FIRST或AFTER可以对列重新排序。●MODIFY:■ 可以更改列定义但不能更改列的名称。■ 更改列定义而不重命名比 CHANGE 更方便。■ 使用FIRST或AFTER可以对列重新排序。●RENAME COLUMN:■ 可以更改列名但不能更改其定义。■ 在不更改列定义的情况下重命名列比CHANGE更方便。●ALTER:仅用于更改列的默认值。CHANGE是对标准SQL的MySQL扩展。MODIFY和RENAME COLUMN是用于Oracle兼容性的MySQL扩展。若要更改列名称和定义请使用CHANGE指定新旧名称和新定义。例如要将一个INT NOT NULL列从a重命名为b并更改其定义为使用BIGINT数据类型同时保留NOT NULL属性请这样做:若要更改列定义但不更改其名称请使用CHANGE或MODIFY。使用CHANGE语法需要两个列名因此必须两次指定相同的名称才能保持名称不变。例如要更改b列的定义可以这样做:MODIFY更方便在不改变名称的情况下改变定义因为它只需要列名一次:若要更改列名但不更改其定义请使用CHANGE或RENAME COLUMN。对于CHANGE语法需要列定义因此要保持定义不变必须重新指定列当前具有的定义。例如要将一个INT NOT NULL列从b重命名为a请这样做:RENAME COLUMN更方便在不改变定义的情况下更改名称因为它只需要新旧名称:通常不能将列重命名为表中已经存在的名称。但是有时情况并非如此比如交换名称或在循环中移动名称。如果一个表有名为a、b和c的列这些是有效的操作:对于使用CHANGE或MODIFY进行的列定义更改定义必须包括数据类型和应该应用于新列的所有属性而不是索引属性(如PRIMARY KEY 或 UNIQUE)。原始定义中出现但未为新定义指定的属性将不进行继承。假设一个列col1被定义为INT UNSIGNED DEFAULT 1 COMMENT ‘my column‘然后你按照如下方式修改该列只打算将INT改为BIGINT:该语句将数据类型从INT更改为BIGINT但也删除了UNSIGNED、DEFAULT和COMMENT属性。为了保留它们语句必须明确地包含它们:对于使用CHANGE或MODIFY更改数据类型MySQL尝试将现有的列值尽可能转换为新的类型。警告这种转换可能会导致数据的更改。例如如果缩短字符串列值可能会被截断。如果转换到新的数据类型会导致数据丢失为了防止操作成功请在使用ALTER TABLE之前启用严格SQL模式。如果使用CHANGE或MODIFY缩短存在索引的列而结果列长度小于索引长度MySQL会自动缩短索引。对于通过CHANGE或RENAME COLUMN重命名的列MySQL自动将这些引用重命名为重命名列:●引用旧列的索引包括不可见的索引和禁用的MyISAM索引。●引用旧列的外键。对于通过CHANGE或RENAME COLUMN重命名的列MySQL不会自动将这些引用重命名为重命名列:●引用重命名列的生成列和分区表达式。必须如同ALTER TABLE语句中一样使用CHANGE重新定义这些表达式。●引用重命名列的视图和存储程序。必须手动更改这些对象的定义以引用新的列名。若要对表中的列重新排序请在CHANGE或MODIFY操作中使用FIRST和AFTER。ALTER ... SET DEFAULT 或 ALTER ... DROP DEFAULT分别为列指定新的默认值或删除旧的默认值。如果旧的默认值被删除并且列可以为NULL那么新默认值为NULL。如果列不能为NULL, MySQL会分配一个默认值。主键和索引DROP PRIMARY KEY删除主键。如果没有主键就会发生错误。如果启用了sql_require_primary_key系统变量尝试删除主键会产生错误。如果在表中添加UNIQUE INDEX 或 PRIMARY KEYMySQL会将其存储在任何非唯一索引之前以便尽早检测重复键。DROP INDEX删除索引。这是对标准SQL的MySQL扩展。要确定索引名称请使用SHOW INDEX FROM tbl_name。有些存储引擎允许在创建索引时指定索引类型。index_type说明符的语法是USING type_name。首选位置在列列表之后。在以后的MySQL版本中将不再支持使用列列表之前的选项。index_option值指定索引的其他选项。USING就是这样一个选项。RENAME INDEX old_index_name TO new_index_name 重命名索引。这是对标准SQL的MySQL扩展。表的内容保持不变。old_index_name必须是表中未被ALTER TABLE语句删除的现有索引的名称。new_index_name是新的索引名在应用了更改之后它不能在结果表中索引名重复。两个索引名都不能是PRIMARY。如果在MyISAM表上使用ALTER TABLE那么将在单独的批处理中创建所有非惟一索引(如同REPAIR TABLE)。当有很多索引时这会使ALTER TABLE更快。对于MyISAM表可以显式地控制键更新。使用ALTER TABLE ... DISABLE KEYS告诉MySQL停止更新非唯一索引。然后使用ALTER TABLE ... ENABLE KEYS 来重新创建丢失的索引。MyISAM使用一种特殊的算法来实现这一点这种算法比逐个插入键要快得多因此在执行批量插入操作之前禁用键应该会有相当大的速度提高。使用ALTER TABLE ... DISABLE KEYS除了前面提到的权限外还需要INDEX权限。虽然禁用了非惟一索引但是对于SELECT和EXPLAIN等语句它们会被忽略否则它们将使用这些索引。在使用ALTER TABLE语句之后可能需要运行ANALYZE TABLE来更新索引基数信息。ALTER INDEX操作允许将索引变为可见或不可见。优化器不使用不可见索引。索引可见性的修改适用于主键以外的索引(显式或隐式)。该特性与存储引擎无关(支持任何引擎)。官方文档地址https://dev.mysql.com/doc/refman/8.0/en/alter-table.htmlMySQL的SQL语句 - 数据定义语句(6)- ALTER TABLE 语句 (3)标签兼容性 ble 视图 支持 就会 属性 命名 sql语句 mamicode本条技术文章来源于互联网如果无意侵犯您的权益请点击此处反馈版权投诉本文系统来源https://blog.51cto.com/15023289/2560867