1. 程式人生 > >Mysql增加主鍵或者修改主鍵的sql語句

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;