Mysql 增加主键或者修改主键的sql语句操作

 更新时间:2021年02月07日 10:26:27   作者:橙子AQA  
这篇文章主要介绍了Mysql 增加主键或者修改主键的sql语句操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

添加表字段

alter table table1 add transactor varchar(10) not Null;
alter table table1 add id int unsigned not Null auto_increment primary key

修改某个表的字段类型及指定为空或非空

alter table 表名称 change 字段名称 字段名称 字段类型 [是否允许非空];

alter table 表名称 modify 字段名称 字段类型 [是否允许非空];

alter table 表名称 modify 字段名称 字段类型 [是否允许非空];

修改某个表的字段名称及指定为空或非空

alter table 表名称 change 字段原名称 字段新名称 字段类型 [是否允许非空

删除某一字段

ALTER TABLE mytable DROP 字段 名;

添加唯一键

ALTER TABLE `test2` ADD UNIQUE ( `userid`)

修改主键

ALTER TABLE `test2` DROP PRIMARY KEY ,ADD PRIMARY KEY ( `id` )

增加索引

ALTER TABLE `test2` ADD INDEX ( `id` )
ALTER TABLE `category ` MODIFY COLUMN `id` int(11) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (`id`);

修改主键的sql语句块如下

mailbox 表新增字段

DROP PROCEDURE IF EXISTS mailbox_column_update;
CREATE PROCEDURE mailbox_column_update() BEGIN
 -- 新增删除标志列
 IF NOT EXISTS(SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='cbs' AND table_name='mailbox' AND COLUMN_NAME='delete_flag') THEN
   ALTER TABLE mailbox ADD delete_flag int DEFAULT 2 NOT NULL;
 END IF;
 -- 新增删除日期列
 IF NOT EXISTS(SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='cbs' AND table_name='mailbox' AND COLUMN_NAME='delete_date') THEN
   ALTER TABLE mailbox ADD delete_date int DEFAULT 0 NOT NULL;
 END IF;
 -- 如果存在字段account_mail,则修改字段长度
 IF EXISTS(SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='cbs' AND table_name='mailbox' AND COLUMN_NAME='email_account')
 THEN
  alter table mailbox modify column email_account varchar(320);
 END IF;
 -- 如果不存在主键列,则设置双主键
 IF ((SELECT count(*) FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA ='cbs' AND table_name='mailbox' AND CONSTRAINT_NAME ='PRIMARY' AND (COLUMN_NAME ='email_account' OR COLUMN_NAME = 'company_id'))=0)THEN
    ALTER TABLE mailbox ADD primary key (company_id,email_account);
 -- 如果只存在一个主键列
 ELSEIF ((SELECT count(*) FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA ='cbs' AND table_name='mailbox' AND CONSTRAINT_NAME ='PRIMARY' AND (COLUMN_NAME ='email_account' OR COLUMN_NAME = 'company_id'))<2)THEN
    ALTER TABLE mailbox DROP PRIMARY KEY,ADD primary key (company_id,email_account);
 END IF;
  
END;
CALL mailbox_column_update();
DROP PROCEDURE IF EXISTS mailbox_column_update;

补充:mysql 修改主键自增,新增联合主键

ALTER TABLE `onduty_history`
MODIFY COLUMN `id` int(11) NOT NULL AUTO_INCREMENT FIRST ,
MODIFY COLUMN `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `id`,
MODIFY COLUMN `onduty_date` datetime NOT NULL AFTER `name`,
ADD UNIQUE KEY (`id`),
ADD PRIMARY KEY (`name`, `onduty_date`);

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • 详解MySQL主从复制及读写分离

    详解MySQL主从复制及读写分离

    这篇文章主要介绍了详解MySQL主从复制及读写分离,文中有非常详细的代码示例,对正在学习mysql的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-05-05
  • mysql筛选GROUP BY多个字段组合时的用法分享

    mysql筛选GROUP BY多个字段组合时的用法分享

    mysql筛选GROUP BY多个字段组合时的用法分享,需要的朋友可以参考下。
    2011-04-04
  • mysql 8.0.19 winx64.zip安装教程

    mysql 8.0.19 winx64.zip安装教程

    这篇文章主要为大家详细介绍了mysql 8.0.19 winx64.zip安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • 如何解决mysql表输入中文出现问号的问题

    如何解决mysql表输入中文出现问号的问题

    这篇文章主要介绍了如何解决mysql表输入中文出现问号的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • MySQL常见优化方案汇总

    MySQL常见优化方案汇总

    mysql数据库是中小微企业常用的一种数据化管理工具,它具有轻便,简洁,免费等特点。今天通过本文给大家介绍MySQL常见优化方案汇总,感兴趣的朋友一起看看吧
    2022-01-01
  • 一步步教你MySQL查询优化分析教程

    一步步教你MySQL查询优化分析教程

    这篇文章主要给大家介绍了关于MySQL查询优化分析的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-11-11
  • mysql查询当前时间的前几分钟、几小时、几天以及几月的数据示例代码

    mysql查询当前时间的前几分钟、几小时、几天以及几月的数据示例代码

    今天花了些时间整理了下MySQL中分别查找当天、昨天、近一周、近一个月等等时间段数据的代码,给大家分享下,这篇文章主要给大家介绍了关于如何利用mysql查询当前时间的前几分钟、几小时、几天以及几月的数据,需要的朋友可以参考下
    2024-01-01
  • MySQL binlog日志清理的方案分享

    MySQL binlog日志清理的方案分享

    Binlog日志非常重要,但是占用的磁盘空间也很大,我们也需要定期的去清理二进制日志,在MySQL数据库中,提供了自动清理Binlog日志的参数,本文给大家详细介绍了MySQL binlog日志清理方案,需要的朋友可以参考下
    2024-01-01
  • 如何解决mysql重装失败方法介绍

    如何解决mysql重装失败方法介绍

    相信大家使用MySQL都有过重装的经历,要是重装MySQL基本都是在最后一步通不过,除非重装操作系统,究其原因就是系统里的注册表没有删除干净
    2012-11-11
  • 使用Python的Django框架中的压缩组件Django Compressor

    使用Python的Django框架中的压缩组件Django Compressor

    这篇文章主要介绍了使用Python的Django框架中的压缩组件Django Compressor,这个工具主要用于实现js/css的压缩,需要的朋友可以参考下
    2015-05-05

最新评论