精华内容
下载资源
问答
  • GO 解决方案1: 对于这个问题,大家的第一个想法可能是:在Caption这个字段上面加一个唯一键不就可以了吗?好,我们按着这个思路做下去,先创建唯一索引。 代码如下: CREATE UNIQUE NONCLUSTERED INDEX un_test_tb ...
  • 出现这样的问题是由于你保存数据时数据库中已经有了相同的数据,而ACCESS中表建立的约束或者主键不允许出现重复的记录。因此会报错。

    出现这样的问题是由于你保存数据时数据库中已经有了相同的数据,而ACCESS中表建立的约束或者主键不允许出现重复的记录。因此会报错。

    展开全文
  • mysql多字段唯一索引

    千次阅读 2018-07-27 16:58:00
    项目中需要用到联合...例如:user表中有userID,userName两个字段,如果不希望有2条一模一样的记录,需要给user表添加多个字段的联合唯一索引: alter table user add nuique index(user_id,user_name); 例如: alte...

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

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

    例如: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命令。

    转载于:https://www.cnblogs.com/snake23/p/9378565.html

    展开全文
  • 解决思路二对数据库(MySQL)某张表去重,首先确定你的业务是否允许重复,不允许你重复的话可以建立唯一索引和联合唯一索引来保证记录不重复,但如果出现了重复记录,怎么办?请看下文。情况一:对一个字段查找重复...

    问题场景

    当系统没有处理好并发操作的情况下,操作人员同时操作一张表的情况下,数据库有可能被插入相同记录,这些会带来隐藏的bug。

    解决思路一

    解决并发操作的冲突。

    解决思路二

    对数据库(MySQL)某张表去重,首先确定你的业务是否允许重复,不允许你重复的话可以建立唯一索引和联合唯一索引来保证记录不重复,但如果出现了重复记录,怎么办?请看下文。

    情况一:对一个字段查找重复记录

    表数据:这里写图片描述
    a. 首先根据sample_code字段找到重复记录

    SELECT * FROM tb_table WHERE sample_code IN(
    SELECT sample_code FROM tb_table GROUP BY sample_code HAVING COUNT(sample_code) > 1
    );

    这里写图片描述
    b. 删除重复记录,只保留id字段值最大的记录

    delete from tb_table where id not in (select maxid from (select max(id) as maxid from tb_table group by sample_code) b);

    使用select语句查看结果如下图:
    这里写图片描述

    情况二:对多个字段查找重复记录(这里以2个为例)

    表数据:
    这里写图片描述
    a. 首先根据name和code字段找到重复记录

    SELECT * from (SELECT *, CONCAT(name,code) as nameAndCode from tb_table) t WHERE t.nameAndCode in 
    (
        SELECT nameAndCode from (SELECT CONCAT(name,code) as nameAndCode from tb_table) tt GROUP BY nameAndCode HAVING count(nameAndCode) > 1
    )

    这里写图片描述
    b. 删除重复记录,只保留id字段值最大的记录

    DELETE from tb_table WHERE id not in 
    (
        SELECT maxid from (SELECT MAX(id) as maxid, CONCAT(name,code) as nameAndCode from tb_table GROUP BY nameAndCode) t
    )

    使用select语句查看结果如下图:
    这里写图片描述

    展开全文
  • 一。约束条件 作用控制如何给字段赋值 NULL | key | default | extra 是否允许赋null 键值 默认值 额外... null(允许为空) not(不允许为空) key(索引类型) default(设置默认值,缺省为null) crea...

    一。约束条件  作用控制如何给字段赋值

    NULL       |                  key      |     default   |    extra

    是否允许赋null值      键值            默认值        额外设置

     null(允许为空)   not(不允许为空) key(索引类型)   default(设置默认值,缺省为null)

    create    table   t7(name   char (15)   not    null,   (不允许为空)

     class       char(7)   default      "nsd1804",            (设置默认值缺省为null)

    age     tinyint(2)   not    null   default     19,

    sex    enum("boy","girl")  not  null    default   "boy");   (enum给定值中选择一个)set(给定值中选择一个或多个)

    desc    t7;

     

    insert   into    t7(name)values("bob");(定义name的值为bob)

    insert  into    t7    values("bob2","nsd1803",21,"girl");   (表结构对应的值)

    insert into     t7   values("null",null,22,"boy");  

    insert  into    t7  values("jim",null,22,"boy");       

    insert  into  t7  values("",null,31,"boy");(姓名为空字符也算一个值,)

    select   *  from  t7;

     

     

    create    table  t8(name char(15)  not  null  default  "",

    class   char(7)   default   "nsd1804",

    age     tinyint(2)   not  null  default  19,

    sex   enum ("boy","girl")  not   null  default  "boy");

    insert   into   t8(class,age,sex)values("nsd1802",45,"boy");

    select  *  from  t8;

    二,修改表结构 :对已经创建的表的结构做修改:

    添加新字段    :格式用法:alter  table   表名    add    字段名      类型(宽度)    约束条件;可加after字段名;或者first;

    add

    alter  table   db2.t8

    add    email   varchar(50)  default   "student@tedu.cn",

    add   qq      char(11);

    desc   t8;

    select     *   from   t8;

    可加after字段名(在指定字段后面);或者first;(在所有字段前面)

    alter  table   db2.t8

    add   stu_num   char(9)   first,  (表结构在所有字段最前面)

    add   likes    set("eat","sleeps","game","film")  after   sex;    (字段likes在指定字段sex后面)

    删除已有字段:alter    table   db2.t8    drop    email; 

    删除多个:alter  table   db2.t8   drop   email,   drop   qq;

    desc   t8;

    select   *  from   t8;

       修改已有字段类型 :       格式:alter   table   表名    modify   字段名    l类型(宽度)   约束条件;     可加可加after字段名;或者first;

    modify

    *修改字段类型时,若新的类型与字段已经存储数据冲突,不允许修改。

    不修改的部分要原样写一遍,否则alter   table  t8  modify   stu_num   varchar(9);就是还原。

    alter   table  t8  modify   stu_num   varchar(9);(不修改的写一遍)

    alter    table   t8  modify

    sex   enum('boy','girl',"no")  not  null   default   "boy";(修改性别为boy)

    desc  t8;

    (改变位置)

    alter   table   t8    modify    sex   enum('boy','girl',"no")   not   null   default   "boy"  after  name;(sex性别默认值为boy,在表结构字段name后面)

    select   *    from   t8;

        修改字段名    :   格式:alter   table    表名  change    源字段名    新字段名    类型(宽度)   约束条件;

    change

       alter   table   t8   change   stu_num   stu_id   varchar(9);(把字段stu_num  改名为stu_id)

    select  *   from    t8;

    修改表 : 格式;alter  table  表名   rename  新表名;

    rename  

    alter    table   t8   rename   stuinfo ;(把表名t8改为stuinfo)

    show    tables;

    select    *   from   stuinfo;

    三,MYSQL键值   (重点)    约束如何给字段赋值。

    普通索引  index   唯一索引:unique   全文索引:fulltext     主键:primary   key      外键:  foreign    key

    索引介绍:给字段值排序的树型结构,类似与“书的目录”

    索引优点:方便查找加快查询数据的速度

    索引缺点:1.占用存储空间   2.减慢写入数据的速度

    使用索引

    使用规则

    查看、  desc   表 ;   key    ---MUL

               show    index   from    表;

    创建:   把已有表的字段设置为index字段

    desc   stuinfo;

    show   index   from     stuinfo\G;(查看索引)

        create    index   aaa  on    stuinfo(name);    (设置为index字段,创建索引,把字段name设为索引,索引名为aaa,)

                                   (索引名)      (表名)

    desc     stuinfo;

    show    index    from   stuinfo\G;(查看索引)

    删除: Iindex

    drop    index    aaa   on     stuinfo;(删除索引)

    desc    stuinfo;

    show    index     from     stuinfo\G;

    创建表时指定index字段

    create    table   t9(name    char(15)   not    null   default   "",(指定name的默认值为空字符)

    class    char(7)   default    "nsd1804",(指定class的默认值为nsd1804)

    age    tinyint(2)   not     null    default     19,(指定age默认值为19)

    sex     enum("boy","girl")    not    null   default    "boy",(指定sex默认值为boy)

    index(name),index(class));(把name,class,设为索引字段)

    desc    t9;

    show   index   from    t9\G;(查看t9表的索引)

     

    四,primary  key  主键

    限制如何给字段赋值  

    primary key   使用规则(不能为空,不能重复)

    建表时创建主键  字段

    create  table  t10(stu_id  char(9)   primary  key,(把stu_id字段设为主键)

    name   char(10),

    age   int(2));

     

        两种方法

    create   table   t11(stu_id  char(9),

    name   char(10),

    age     int(2),

    primary   key(stu_id));(把字段stu_id设为主键)

    desc   t10;

    desc   t11;

    inset    into    t10    values("nsd180401","lucy",21);

    inset   into     t10    values("nsd180401","bob",21);

    inset  into     t10     values(null,"lucy",21);

      

    删除主键

    alter    table    t10    drop    primary  key;(删除主键)

    desc    t10;

    insert     into      t10    values("nsd1804","lucy",21);

    insert    into       t10    values(null,"lucy",21);

    select   *    from    t10;

    在已有表里创建主键字段

    delete  from    t10;(有重复值先删除表记录才能设主键)

    alter   table    t10    add     primary     key(stu_id);(创建主键添加到t10表里把字段stu_id设为主键)

    desc   t10;

    创建复合主键:表中的多个字段一起做主键,赋值时,主键字段的值不能重复。

    create  table   t12(name   char(15),

    class char(7),

    pay    enum("yes","no"),

    primary  key(name,class));

    insert   into   t12   values("bob","nsd1804","yes");

    insert   into    t12   values("bob","nsd1804","no");       (复合主键的值不能同时重复)

    insert    into    t12    values("bob",nsd1805","yes");

    insert    into    t12    values("bob","nsd1805","no");

    删除复合主键:

    alter   table    t12    drop    primary   key;(删除复合主键)

    insert   into     t12    values("bob","nsd1805","no");(没有主键可以重复)

    select   *   from    t12;

    主键同常和auto_increment连用  让字段的值自动增长。

    primary  数值必须有才能创建

    向表中插入记录时 不给自动增长的字段赋值, 字段的值是如何获得的呢,用当前字段最大的值+1  后把结果做当前新记录字段的值

    案:create  database db3;

         use  db3 

         create table  t1(id  int(2)  primary key auto_ increment,(把字段id设为主键自动增长)

       name  char(15)  not null,

       age  tinyint(2)  unsigned  default  19,

       pay  float(7,2)  default   26800);

       insert  into  t1(name,age,pay) values("tom",21,18000);

      insert  into  t1(name,age,pay) values("lucy",23,18800);(给对应字段赋值)

      insert  into  t1  values(7,"jerry",23,18800);

      insert  into  t1 (name,age,pay) values("alice",33,18800);

      insert  into  t1 values(null,"jerry2",23,18800);

    删除自动增长:

    alter  table  t2  change  id id int;(删除自动增长)

    外键:让当前表字段的值,在另一个表字段值范围里选择。

    外键的使用:1,表的储存引擎必须是innodb,字段类型必须一致,被参照字段必须是索引类型的一种,通常是主键primary key

    格式:

     create table yginfo(yg_id  int(2) primary key auto_increment,(把yginfo表的字段yg_id设为主键自定增长)

    name char(15))engine=innodb;(把字段name设为innodb引擎,支持回滚)

    insert into yginfo(name)values("bob");

    insert into yginfo(name)values("bob");

    insert into yginfo(name)values("lucy");

    select * from yginfo;

    创建外键:

    格式:foreign key(表a的字段名)

              references表b(字段名)

            on delete

          on  update

     

    create  table  gztab(gz_id int(2),(表gztab,字段gz_id)

    pay float(7,2),   float(小数类型)                                      cascade:层叠

    foreign key(gz_id) references yginfo(yg_id)  on delete cascade on update cascade)engine=innodb;(创建外键,把yginfo表里内容作为gztab表的参照表)

    select * from gztab;

    desc gztab;

    show create table gztab;

     

    insert into gztab values(1,50000);(表1gztab发工资测试,以表2为参照)

    insert into gztab values(2,25000);

    insert into gztab values(3,35000);

    insert into gztab values(4,60000);  如果没有编号者不能成立

    同步更新

    update yginfo set yg_id=7 where yg_id=2;(修改表yginfo的字段yg_id的id)

    select  * from yginfo;

    select * from gztab;

    同步删除

    delete from yginfo where yg_id=3;(删除yginfo表的字段yg_id的id)

    select * from yginfo;

    select * from gztab;

       字段值不允许重复和赋null值

    alter table gztab add primary key(gz_id);(加主键可以不为空,不重复)

    删除外键:

    show create table gztab;(查看gztab表的外键)

    alter table gztab drop foreign key  gztab_ibfk_1;(删除gztab表的外键)

    show create table gztab;

    alter   table  t8  modify   stu_num   varchar(9);                  注:通常是先删除外键才能删除主键索引)

    数据库管理
    NSD DB 基础
    DAY02内容
    上午
    09:00 ~ 09:30 作业讲解和回顾
    09:30 ~ 10:20 约束条件
    10:30 ~ 11:20 修改表结构
    11:30 ~ 12:00
    14:00 ~ 14:50
    下午
    15:00 ~ 15:50
    MySQL 键值
    16:10 ~ 17:00
    17:10 ~ 18:00
    总结和答疑约束条件约束条件
    • Null 允许为空,默认设置
    • NOT NULL 不允许为空




    索引类型
    • Key
    • Default 设置默认值,缺省为 NULL约束条件(续 1 )



    解修改表结构
    修改表结构
    修改表结构
    语法结构
    添加新字段
    修改字段类型
    修改字段名
    删除字段
    修改表名修改表结构语法结构
    • 基本用法
    – ALTER TABLE 表名 执行动作 ;




    Add
    Modify
    Change
    Drop
    Rename
    添加字段
    修改字段类型
    修改字段名
    删除字段
    修改表名添加新字段
    • 基本用法




    – ALTER TABLE 表名
    – ADD 字段名 类型 ( 宽度 ) 约束条件 ;
    可加 AFTER 字段名 ;
    或者 FIRST;修改字段类型
    • 基本用法




    – ALTER TABLE 表名
    – modify 字段名 类型 ( 宽度 ) 约束条件 ;
    可加 AFTER 字段名 ;
    或者 FIRST;修改字段名
    • 基本用法




    – ALTER TABLE 表名
    – change 源字段名 新字段名 类型 ( 宽度 ) 约束条件
    ;
    当跟新类型和约束条件时,也可修改字段类型删除字段
    • 基本用法




    – ALTER TABLE 表名
    – drop 字段名 ;
    表中有多条记录时,所有列此字段的值都删除了修改表名
    • 基本用法




    – ALTER TABLE 表名
    – Rename 新表名;
    表对应的文件名,也会改变案例 1 :修改表结构
    • 表的字段修改




    – 添加字段
    – 修改字段名
    – 修改字段类型
    – 删除字段MySQL 键值
    MySQL 索引概述
    索引介绍
    索引优缺点
    MySQL 键值
    键值类型
    MySQL 键值类型
    INDEX 普通索引
    primary key 主键
    foreign key 外键MySQL 索引概述索引介绍
    • 索引是什么?




    – 索引是对记录集的多个字段进行排序的方法。
    – 类似于书的目录
    – 索引类型包括 :Btree 、 B+tree 、 hash索引优缺点
    • 索引优点




    – 通过创建唯一性索引,可以保证数据库表中每一行数
    据的唯一性
    – 可以加快数据的检索速度
    • 索引缺点
    – 当对表中的数据进行增加、删除和修改的时候,索引
    也要动态的维护,降低了数据的维护速度
    – 索引需要占物理空间键值类型
    • INDEX :普通索引
    • UNIQUE :唯一索引




    • FULLTEXT :全文索引
    • PRIMARY KEY :主键
    • FOREIGN KEY :外键MySQL 键值类型INDEX 普通索引
    • 使用说明




    – 一个表中可以有多个 INDEX 字段
    – 字段的值允许有重复,切可以赋 NULL 值
    – 经常把做查询条件的字段设置为 INDEX 字段
    – INDEX 字段的 KEY 标志是 MULINDEX 普通索引(续 1 )
    • 建表的时候指定索引字段
    – INDEX( 字段 1), INDEX( 字段 2) .. ..



    解INDEX 普通索引(续 2 )
    • 在已有的表中设置 INDEX 字段
    – CREATE INDEX 索引名 ON 表名 ( 字段名 );




    • 删除指定表的索引字段
    – DROP INDEX 索引名
    ON 表名 ;INDEX 普通索引(续 3 )
    • 查看表的索引信息
    – SHOW INDEX FROM 表名 ;




    使用 B 树算法primary key 主键
    • 注意事项




    – 一个表中只能有一个 primary key 字段
    – 对应的字段值不允许有重复,且不允许赋 NULL 值
    – 如果有多个字段都作为 PRIMARY KEY ,称为复合主
    键,必须一起创建。
    – 主键字段的 KEY 标志是 PRI
    – 通常与 AUTO_INCREMENT 连用
    – 经常把表中能够唯一标识记录的字段设置为主键字段
    [ 记录编号字段 ]primary key 主键(续 1 )
    • 建表的时候指定主键字段
    – PRIMARY KEY( 字段名 )



    解primary key 主键(续 2 )
    • 在已有的表中设置 PRIMARY KEY 字段
    – ALTER TABLE 表名 ADD PRIMARY KEY( 字段名 );




    • 移除表中的 PRIMARY KEY 字段
    – ALTER TABLE 表名 DROP PRIMARY KEY;
    移除主键前,如果有自增属性,必须先去掉foreign key 外键
    • 什么是外键?




    – 让当前表字段的值在另一个表中字段值的范围内选择

    • 使用外键的条件
    – 表的存储引擎必须是 innodb
    – 字段类型要一致
    – 被参照字段必须要是索引类型的一种 (primary key)foreign key 外键(续 1 )
    • 基本用法




    – FOREIGN KEY( 表 A 的字段名 )
    References 表 B( 字段名 )
    ON UPDATE CASCADE
    ON DELETE CASCADEforeign key 外键(续 2 )
    • 删除外键字段
    – ALTER TABLE 表名 DROP FOREIGN KEY 约束名 ;




    外键约束名称MySQL 索引创建与删除
    1. 普通索引、唯一索引、主键索引的创建 / 删除
    2. 自增主键索引的创建 / 删除




    3. 建立员工表 yg 、工资表 gz ,并设置外键实现同步
    更新与同步删除总结和答疑
    primary key
    问题现象 1
    故障分析及排除
    问题现象 2
    故障分析及排除
    总结和答疑
    foreign key
    问题现象 1
    故障分析及排除
    问题现象 2
    故障分析及排除primary key问题现象 1
    • 把已有表中的字段设置为主键报错
    – 报错:




    Duplicate entry '2' for key 'PRIMARY'
    mysql> select * from t1;
    | 2 | jerry |
    | 2 | bob |
    +------+-------+
    4 rows in set (0.01 sec)
    mysql>
    mysql> alter table t1 add primary key(id);
    ERROR 1062 (23000): Duplicate entry '2' for key 'PRIMARY'故障分析及排除
    • 原因分析
    – 不符合主键使用规则,主键字段的值不允许重复




    • 解决办法
    – 修改字段的重复值
    mysql> update t1 set id=4 where name="jerry";
    .. ..
    mysql> alter table t1 add primary key(id);
    .. ..问题现象 2
    • 删除表中主键字段报错
    – 报错: ERROR 1075 (42000):




    mysql> desc t2;
    +-------+----------+------+-----+---------+----------------+
    | Field | Type | Null | Key | Default | Extra
    |
    +-------+----------+------+-----+---------+----------------+
    | id
    | int(2)
    | NO | PRI | NULL | auto_increment |
    | name | char(10) | YES | | NULL |
    |
    +-------+----------+------+-----+---------+----------------+
    mysql> alter table t2 drop primary key;
    ERROR 1075 (42000): Incorrect table definition; there can be only
    one auto column and it must be defined as a key故障分析及排除
    • 原因分析:
    – 有自动增长属性的字段必须作为主键,不允许删除




    • 解决办法:
    – 去掉字段的自动增长属性,再删除主键
    mysql> alter table t2 modify id int(2) not null;
    .. ..
    mysql> alter table t2 drop primary key;
    .. ..foreign key问题现象 1
    • 创建外键失败
    – 报错: ERROR 1215 (HY000): Cannot .. ..




    mysql> desc t2 ;
    +-------+----------+------+-----+---------+-------+
    | id | int(2) | NO | | NULL |
    |
    | name | char(10) | YES | | NULL |
    |
    +-------+----------+------+-----+---------+-------+
    mysql> create table t3(
    -> id int(2),
    -> pay float(7,5),
    -> foreign key(id) references t2(id)
    -> );
    ERROR 1215 (HY000): Cannot add foreign key constraint故障分析及排除
    • 原因分析:




    – 不符合外键使用规则。
    – 被参考字段必须是 key 值中的一种。
    • 解决办法:
    – 给被参考字段设置 key 值
    mysql> create index id on t2(id);
    mysql> create table t3( id int(2), pay float(7,5), foreign key(id)
    references t2(id) );
    .. ..问题现象 2
    • 删除表中字段失败
    – 报错: Cannot delete or update a parent row .......




    mysql> drop table t2;
    ERROR 1217 (23000): Cannot delete or update a parent row: a
    foreign key constraint fails
    mysql> alter table t2 drop id;
    ERROR 1553 (HY000): Cannot drop index 'id': needed in a foreign
    key constraint故障分析及排除
    • 原因分析
    – 被参考的表、表的字段不允许被删除




    • 解决办法
    – 删除其他表对待删除表或字段的参考
    mysql> alter table t3 drop foreign key t3_ibfk_1;
    .. ..
    mysql> alter table t2 drop id;
    .. ..

     

    展开全文
  • 数据库字段属性和索引

    千次阅读 2019-07-05 23:30:25
    主键:primary key ,主要的键,一张表只能有一个字段可以使用对应的键,用来唯一的约束该字段里面的数据,不能重复,这种称之为主键。 1.增加主键 SQL操作中有多种方式可以给表增加主键:大体分为三种 方案1:在...
  • 用phpmyadmin查看你的数据库,设置为主键、选择唯一索引,是否允许重复与数据类型无关。   关键字UNIQUE把它定义为一个 唯一索引. 唯一性索引 和“普通索引”基本相同,但有一个区别:索引列的所有都只能出现...
  • 语法: UNIQUE KEY `test` (`xref_key`,`xref_dbname`) ... 上述语法检查xref_key与xref_dbname的组合是否是唯一,可以设定多个字段的组合。其中,test是索引表中的字段名称。  该方法适合用来解决多个字段
  • 检查自己的sql语句,为那些频繁在where子句中出现字段建立索引。 3,尝试建立复合索引来进一步提高系统性能。修改复合索引将消耗更长时间,同时,复合索引也占磁盘空间。 4,对于小型的表,建立索引可能会影响...
  • 高级冗余不是字段重复出现,而是字段的派生出现。   〖例4〗:商品中的“单价、数量、金额”三个字段,“金额”就是由“单价”乘以“数量”派生出来的,它就是冗余,   而且是一种高级冗余。冗余的...
  • 做一个报价表,商品名作为主键,希望可以与其他表构成关系,但一个商品名可能重复存在两次报价,又不想增加字段第一次报价第二次报价的,应该怎么处理?
  • 数据库的索引 1. 如果不建立索引,那么查询都需要全表扫描;如果建立了索引,则数据库会保存一个索引文件通常是特殊的结构比如b树,这样查询起来不需要全表扫描,一下子能够找到满足要求的记录。 2. 一般是对...
  • 主键索引: 主键索引不可以为空 ... 被索引的数据列允许包含重复 唯一索引: 被索引的数据列不允许包含重复 以下内容转载自:https://blog.csdn.net/qq_41618510/article/details/...
  • oracle的索引字段可以设置为空?

    千次阅读 2017-03-08 15:39:13
    答案是肯定的; 可以建,就是有点不合理; 索引是告诉你有什么,并不会告诉你没有什么; 如果少数几条null无所谓,如果很多null/很多重复值索引的意义就打折扣了
  • NULL 索引(一)

    万次阅读 2012-04-08 13:22:16
    NULL是关系数据库系统布尔型(true,false,unknown)中比较特殊类型的一种,通常称为...正是基于这样一个特性,对于NULL列上的B树索引导致了is null/is not null不走索引的情形,下面描述了NULL索引以及索
  • MongoDB 唯一索引

    万次阅读 2016-12-22 17:02:58
    MongoDB支持的索引种类很多,诸如单键索引...唯一索引用于确保索引字段不存储重复,即强制索引字段的唯一性。缺省情况下,MongoDB的_id字段在创建集合的时候会自动创建一个唯一索引。本文主要描述唯一索引的用法。
  • mysql给表格字段设置唯一性索引

    千次阅读 2019-01-15 10:43:27
    navicat还能设置组合形式的唯一性索引,如下图中的sid和week两个字段不能同时出现重复 主键和唯一性索引  1.主键一定是唯一性索引,唯一性索引并不一定就是主键; 2.一个表中可以有多个唯一性索引,但...
  • 7.4.3-elasticsearch索引字段类型参数

    千次阅读 2020-05-30 11:38:21
    该参数只是以下参数: 类型 说明 docs 仅对文档编号建立索引,可以回答’这个词是否在这个字段当中存在’的问题 freqs 对文档编号和分词频率建立索引,分词频率用于计算分词相关度分数(分词重复次数越多,其分数将越高)...
  • 索引

    2021-03-18 23:25:30
    索引 1、什么是索引 MySQL官方对索引的定义为:索引Index是帮助...普通索引是MySQL中的基本索引类型,允许在定义索引的列中插入重复值和空值。 唯一索引索引列的必须唯一,但允许空值。如果是组合索引,则列的值得
  • 往mysql的表中批量插入数据,要求是:如果没有重复的记录就是正常插入数据,如果有重复的那就把这条表中原有记录的某个字段值,加上需要插入数据的对应字段值; 我这里判断数据充重不重复是根据记录中orderAccount...
  • MYSQL中,如果某个字段有一些重复值,如何在去掉重复值的同时给该字段添加唯一索引呢? 请看下面SQL语句 alter ignore table cats_temp add UNIQUE index(cid,name); 亲身试验成功,供大家参考。
  • @[toc](MySQL数据库唯一性设置(unique index)) 在数据库设计中设置主键...设置唯一性后的字段,在数据库层面保证了该字段不会出现相同的。下面说一下唯一性的设置方法: mysql命令行操作 1、建表时加 CREATE ...
  • 关系型数据库索引类型

    千次阅读 2016-09-18 21:46:45
    2.候选索引:和主索引类似,它的也 不允许在指定的字段或表达式中重复。一个表中可以有多个 候选索引。 3.唯一索引:唯一索引允许关键字取重复。当有重复值 出现时,索引文件只保存重复值的第1次出现。提供...
  • 我本来是建了两张表,各自都有 wind_code, date 两列索引,其它的字段不相同。现在为了数据更新方便点,我希望将两张表的字段拼接起来,最后还只保留两列索引。 假设两张表的名称是stock_est 和 stock_mf ,  ...
  •  一张person表,有id和name的两个字段,id是唯一的不允许重复,id相同则认为是重复的记录。 二、解决  select id from group by id having count(*) > 1  按照id分组并计数,某个id号那一组的数量超过1条则...
  • 关于外键索引触发器名称重复

    千次阅读 2014-01-24 10:06:38
     普通索引:单表中的名称不可以重复,但是不同表中的索引可以重复,这是因为,其表索引对象,数据库默认前面加上表的信息然后才是索引名称  唯一键:单表和不同表都不可以重复,只要是在同一数据库中如果唯一键...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 115,638
精华内容 46,255
关键字:

允许出现重复字段值的索引是