zoukankan      html  css  js  c++  java
  • mysql多字段唯一索引

    项目中需要用到联合唯一索引:

    例如:有以下需求:每个人每一天只有可能产生一条记录:处了程序约定之外,数据库本身也可以设定:

    例如:user表中有userID,userName两个字段,如果不希望有2条一模一样的记录,需要给user表添加多个字段的联合唯一索引:

    alter table user add nuique index(user_id,user_name);

    例如:

    alter table user_daily_money_info add unique index agd(user_account_id,game_id,daily_date);

     

    alter table user_daily_money_info add unique key agdkey(user_account_id,game_id,daily_date);

    这样如果向表中添加相同记录的时候,会返回一下错误信息:


    2还有一种情况就是,我们需要为以前的表 创建这个索引,有可能以前的数据中存在重复的记录 那怎么办呢?

     

    alter ignore table user add unique index(user_id,user_name);
    它会删除重复的记录(别怕,会保留一条),然后建立唯一索引,高效而且人性化.


     

    查看索引  show index from 数据库表名
    alter table 数据库add index 索引名称(数据库字段名称)
    PRIMARY KEY(主键索引)
    ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 
    UNIQUE(唯一索引)
    ALTER TABLE `table_name` ADD UNIQUE (`column`) 

    INDEX(普通索引)
    mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )

    FULLTEXT(全文索引)
    ALTER TABLE `table_name` ADD FULLTEXT ( `column` )

    多列索引
    ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
    1.普通索引。
    这是最基本的索引,它没有任何限制。它有以下几种创建方式:
    (1)创建索引:CREATE INDEX indexName ON  tableName(tableColumns(length));如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是  BLOB 和 TEXT 类型,必须指定length,下同。
    (2)修改表结构:ALTER tableName ADD INDEX [indexName] ON (tableColumns(length)) 
    (3)创建表的时候直接指定:CREATE TABLE tableName ( [...], INDEX [indexName] (tableColumns(length)) ;

    2.唯一索引。
    它与前面的”普通索引”类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
    (1)创建索引:CREATE UNIQUE INDEX indexName ON tableName(tableColumns(length))
    (2)修改表结构:ALTER tableName ADD UNIQUE [indexName] ON (tableColumns(length))
    (3)创建表的时候直接指定:CREATE TABLE tableName ( [...], UNIQUE [indexName] (tableColumns(length));

    3.主键索引
    它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引:CREATE TABLE testIndex(i_testID INT  NOT NULL AUTO_INCREMENT,vc_Name VARCHAR(16) NOT NULL,PRIMARY  KEY(i_testID)); 当然也可以用ALTER命令。

  • 相关阅读:
    caffe常用层: batchNorm层和scale层
    简述configure、pkg-config、pkg_config_path三者的关系
    python删除list中元素的三种方法
    Leetcode 872. Leaf-Similar Trees
    Leetcode 508. Most Frequent Subtree Sum
    Leetcode 572. Subtree of Another Tree
    Leetcode 894. All Possible Full Binary Trees
    Leetcode 814. Binary Tree Pruning
    Leetcode 557. Reverse Words in a String III
    python 多维list声明时的小问题
  • 原文地址:https://www.cnblogs.com/snake23/p/9378565.html
Copyright © 2011-2022 走看看