精华内容
下载资源
问答
  • navicat for mysql 如何设置字段唯一

    万次阅读 2018-04-08 19:00:25
    建立了一个数据表,其中一个字段不是主键,但在存数据的时候又不想让它有重复的值。若建表是用create table{****}命令,可以设置字段的属性如:字段名 not null unique即可。我建表用的是Navicat,该方法下记录。 ...

    建立了一个数据表,其中一个字段不是主键,但在存数据的时候又不想让它有重复的值。若建表是用create table{****}命令,可以设置字段的属性如:字段名  not null unique即可。我建表用的是Navicat,该方法下记录。

    首先,在Navicat中打开需要设置的表,再点击左上方的“索引”,出现图2的界面

    将字段、索引类型进行填写即可,另外两行在保存时回自动生成。


    展开全文
  • MySQL 处理重复数据有些 MySQL 数据表中可能...防止表中出现重复数据你可以在 MySQL 数据表中设置指定的字段为PRIMARY KEY(主键)或者UNIQUE(唯一)索引来保证数据的唯一性。让我们尝试一个实例:下表中无索引及主键...

    MySQL 处理重复数据

    有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。

    本章节我们将为大家介绍如何防止数据表出现重复数据及如何删除数据表中的重复数据。

    防止表中出现重复数据

    你可以在 MySQL 数据表中设置指定的字段为PRIMARY KEY(主键)

    或者UNIQUE(唯一)索引来保证数据的唯一性。

    让我们尝试一个实例:下表中无索引及主键,所以该表允许出现多条重复记录。

    CREATE TABLE person_tbl

    (

    first_name CHAR(20),

    last_name CHAR(20),

    sex CHAR(10)

    );

    如果你想设置表中字段 first_name,last_name 数据不能重复,你可以设置双主键模式来设置数据的唯一性,

    如果你设置了双主键,那么那个键的默认值不能为 NULL,可设置为 NOT NULL。如下所示:

    CREATE TABLE person_tbl

    (

    first_name CHAR(20) NOT NULL,

    last_name CHAR(20) NOT NULL,

    sex CHAR(10),

    PRIMARY KEY (last_name, first_name)

    );

    如果我们设置了唯一索引,那么在插入重复数据时,SQL 语句将无法执行成功,并抛出错。

    INSERT IGNORE INTO 与 INSERT INTO 的区别就是 INSERT IGNORE INTO 会忽略数据库中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。

    以下实例使用了 INSERT IGNORE INTO,执行后不会出错,也不会向数据表中插入重复数据:

    mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)

    -> VALUES( 'Jay', 'Thomas');

    Query OK, 1 row affected (0.00 sec)

    mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)

    -> VALUES( 'Jay', 'Thomas');

    Query OK, 0 rows affected (0.00 sec)

    INSERT IGNORE INTO 当插入数据时,在设置了记录的唯一性后,如果插入重复数据,将不返回错误,只以警告形式返回。

    而 REPLACE INTO 如果存在 primary 或 unique 相同的记录,则先删除掉。再插入新记录。

    另一种设置数据的唯一性方法是添加一个 UNIQUE 索引,如下所示:

    CREATE TABLE person_tbl

    (

    first_name CHAR(20) NOT NULL,

    last_name CHAR(20) NOT NULL,

    sex CHAR(10),

    UNIQUE (last_name, first_name)

    );

    统计重复数据

    以下我们将统计表中 first_name 和 last_name的重复记录数:

    mysql> SELECT COUNT(*) as repetitions, last_name, first_name

    -> FROM person_tbl

    -> GROUP BY last_name, first_name

    -> HAVING repetitions > 1;

    以上查询语句将返回 person_tbl 表中重复的记录数。

    一般情况下,查询重复的值,请执行以下操作:

    确定哪一列包含的值可能会重复。

    在列选择列表使用COUNT(*)列出的那些列。

    在GROUP BY子句中列出的列。

    HAVING子句设置重复数大于1。

    过滤重复数据

    如果你需要读取不重复的数据可以在 SELECT 语句中使用 DISTINCT 关键字来过滤重复数据。

    mysql> SELECT DISTINCT last_name, first_name

    -> FROM person_tbl;

    你也可以使用 GROUP BY 来读取数据表中不重复的数据:

    mysql> SELECT last_name, first_name

    -> FROM person_tbl

    -> GROUP BY (last_name, first_name);

    删除重复数据

    如果你想删除数据表中的重复数据,你可以使用以下的SQL语句:

    mysql> CREATE TABLE tmp SELECT last_name, first_name, sex FROM person_tbl GROUP BY (last_name, first_name, sex);

    mysql> DROP TABLE person_tbl;

    mysql> ALTER TABLE tmp RENAME TO person_tbl;

    当然你也可以在数据表中添加 INDEX(索引) 和 PRIMAY KEY(主键)这种简单的方法来删除表中的重复记录。方法如下:

    mysql> ALTER IGNORE TABLE person_tbl

    -> ADD PRIMARY KEY (last_name, first_name);

    展开全文
  • MySQL 处理重复数据有些 MySQL 数据表中可能...防止表中出现重复数据你可以在MySQL数据表中设置指定的字段为PRIMARY KEY(主键) 或者UNIQUE(唯一)索引来保证数据的唯一性。让我们尝试一个实例:下表中无索引及主键,...

    MySQL 处理重复数据

    有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。

    本章节我们将为大家介绍如何防止数据表出现重复数据及如何删除数据表中的重复数据。

    防止表中出现重复数据

    你可以在MySQL数据表中设置指定的字段为PRIMARY KEY(主键) 或者UNIQUE(唯一)索引来保证数据的唯一性。

    让我们尝试一个实例:下表中无索引及主键,所以该表允许出现多条重复记录。

    CREATE TABLE person_tbl

    (

    first_name CHAR(20),

    last_name CHAR(20),

    sex CHAR(10)

    );

    如果你想设置表中字段first_name,last_name数据不能重复,你可以设置双主键模式来设置数据的唯一性, 如果你设置了双主键,那么那个键的默认值不能为NULL,可设置为NOT NULL。如下所示:

    CREATE TABLE person_tbl

    (

    first_name CHAR(20) NOT NULL,

    last_name CHAR(20) NOT NULL,

    sex CHAR(10),

    PRIMARY KEY (last_name, first_name)

    );

    如果我们设置了唯一索引,那么在插入重复数据时,SQL语句将无法执行成功,并抛出错。

    INSERT IGNORE INTO与INSERT INTO的区别就是INSERT IGNORE会忽略数据库中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。这样就可以保留数据库中已经存在数据, 达到在间隙中插入数据的目的。

    以下实例使用了INSERT IGNORE INTO,执行后不会出错,也不会向数据表中插入重复数据:

    mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)

    -> VALUES( 'Jay', 'Thomas');

    Query OK, 1 row affected (0.00 sec)

    mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)

    -> VALUES( 'Jay', 'Thomas');

    Query OK, 0 rows affected (0.00 sec)

    INSERT IGNORE INTO当插入数据时,在设置了记录的唯一性后,如果插入重复数据,将不返回错误,只以警告形式返回。 而REPLACE INTO into如果存在primary 或 unique相同的记录,则先删除掉。再插入新记录。

    另一种设置数据的唯一性方法是添加一个UNIQUE索引,如下所示:

    CREATE TABLE person_tbl

    (

    first_name CHAR(20) NOT NULL,

    last_name CHAR(20) NOT NULL,

    sex CHAR(10)

    UNIQUE (last_name, first_name)

    );

    统计重复数据

    以下我们将统计表中 first_name 和 last_name的重复记录数:

    mysql> SELECT COUNT(*) as repetitions, last_name, first_name

    -> FROM person_tbl

    -> GROUP BY last_name, first_name

    -> HAVING repetitions > 1;

    以上查询语句将返回 person_tbl 表中重复的记录数。 一般情况下,查询重复的值,请执行以下操作:

    确定哪一列包含的值可能会重复。

    在列选择列表使用COUNT(*)列出的那些列。

    在GROUP BY子句中列出的列。

    HAVING子句设置重复数大于1。

    过滤重复数据

    如果你需要读取不重复的数据可以在 SELECT 语句中使用 DISTINCT 关键字来过滤重复数据。

    mysql> SELECT DISTINCT last_name, first_name

    -> FROM person_tbl

    -> ORDER BY last_name;

    你也可以使用 GROUP BY 来读取数据表中不重复的数据:

    mysql> SELECT last_name, first_name

    -> FROM person_tbl

    -> GROUP BY (last_name, first_name);

    删除重复数据

    如果你想删除数据表中的重复数据,你可以使用以下的SQL语句:

    mysql> CREATE TABLE tmp SELECT last_name, first_name, sex

    -> FROM person_tbl;

    -> GROUP BY (last_name, first_name);

    mysql> DROP TABLE person_tbl;

    mysql> ALTER TABLE tmp RENAME TO person_tbl;

    当然你也可以在数据表中添加 INDEX(索引) 和 PRIMAY KEY(主键)这种简单的方法来删除表中的重复记录。方法如下:

    mysql> ALTER IGNORE TABLE person_tbl

    -> ADD PRIMARY KEY (last_name, first_name);

    展开全文
  • MySQL中很重要的是要设置好主键,主键不能重复,而且主键的重要性在于可以区分外键,在一个数据表中主键只能是唯一的,那么如何设置主键呢?主键没有着明确的概念定义,其是索引的一种,并且是唯一性索引的一种,且...

    MySQL中很重要的是要设置好主键,主键不能重复,而且主键的重要性在于可以区分外键,在一个数据表中主键只能是唯一的,那么如何设置主键呢?

    主键没有着明确的概念定义,其是索引的一种,并且是唯一性索引的一种,且必须定义为“PRIMARYKEY”,主键不能重复,一个表只能有一个主键。

    f190988eaa78a3063f03699d6c94263e.png

    1、声明主键的方法:

    您可以在创建表的时候就为表加上主键,如:

    CREATETABLEtbl_name([字段描述省略...],PRIMARYKEY(index_col_name));

    也可以更新表结构时为表加上主键,如:

    ALTERTABLEtbl_nameADDPRIMARYKEY(index_col_name,…);

    /*

    创建一个qq表,将qq_id设为主键,且没有对其进行NOTNULl约束

    */

    createtableqq(

    qq_idint(10),

    nick_namevarchar(255)notnull,

    primarykey(qq_id))

    /*

    插入一条数据,将qq号设为10000(咱也幻想一下),昵称设为"simaopig"

    */

    INSERTINTOqq(qq_id,nick_name)

    VALUES(

    '10000','simaopig');

    2、示例

    主键被认为是NOTNULL和UNIQUE约束最好的结合。如果这些列没有被明确地定义为NOTNULL,MySQL会隐含地定义这些列。

    3、主键也是索引:

    刚才已经说了,主键其实也是索引,甚至在MySQL的术语里面“键”就等于“索引”,所以“外键”一定要先设为“索引”。所以主键也应该和索引一样,既可以作用于单独的字段,又可以作用于多个字段。

    举个简的例子吧,我住3单元,501室,我叫小小子,那么只有3单元501室才能在本小区表里面唯一确定我家。因为2单元,501室住着的可能也是个小小子,所以只有两个字段才能唯一确定我,也就是说可以二者组合作为主键。组合的主键,每个列都会隐含定义NOTNULL约束,且其二者加在一起被定义了UNIQUE惟一约束。

    /*

    创建防火墙表,将host和port组合设为主键,注意我没有将port设NOTNULL约束

    */

    createtablefirewall(

    hostvarchar(11)notnull,

    portsmallint(4),

    Accessenum('deny','allow')notnull,

    primarykey(host,port))

    /*

    插入一条新的记录,没有啥问题

    1row(s)inserted.

    */

    INSERTINTOfirewall(

    host,

    port,

    access)

    VALUES(

    '202.65.3.87','21','deny');

    展开全文
  • 在数据库设计中设置主键的字段是不会重复的、唯一的,如果其他字段也需要保持唯一性应该如何设置呢?比如一个保存用户信息的表里要保证每条记录的手机号都不同。这时候就需要对该字段设置唯一性。 设置唯一性后的...
  • mysql 唯一索引UNIQUE一般用于不重复数据字段了我们经常会在数据表中的id设置为唯一索引UNIQUE,下面我来介绍如何在mysql中使用唯一索引UNIQUE吧。创建唯一索引的目的不是为了提高访问速度,而只是为了避免数据出现...
  • 有些 MySQL 数据表中...一、防止表中出现重复数据你可以在MySQL数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。让我们尝试一个实例:下表中无索引及主键,所以该表允许出...
  • 即插入数据时,如果数据存在,则忽略此次插入,前提条件是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条数据时,MySQL数据库会首先检索已数据(也就是idx_username索引),如果存在,则忽略...
  • 有些 MySQL 数据表中可能...防止表中出现重复数据你可以在 MySQL 数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。让我们尝试一个实例:下表中无索引及主键,所以该表允许出...
  • 表的外键是另一表的主键, 外键可以有重复的, 可以是空值 该字段没有重复值,但可以有一个空值 作用: 用来保证数据完整性 用来和其他表建立联系用的 是提高查询排序的速度 个数: 主键只能有一个 一个表可以有...
  • 如何建立一个带条件的唯一索引

    千次阅读 2016-08-23 16:59:13
    问题描述:数据库表中a,b,c三个字段,a是自增主键,c是状态,只有0,1两种可能,默认为1,b是名称。...将b,c设置联合唯一索引,在将状态改为0的时候,将b的名称按a_b的格式改掉,这样就能保证b,c联合
  • 主键外键索引定义:唯一标识一条记录,不能有重复的,不允许为空表的外键是另一表的主键,外键可以有重复的,可以是空值该字段没有重复值,但可以有一个空值作用:用来保证数据完整性用来和其他表建立联系用的是提高...
  • 表的外键是另一表的主键, 外键可以有重复的, 可以是空值 该字段没有重复值,但可以有一个空值 作用: 用来保证数据完整性 用来和其他表建立联系用的 是提高查询排序的速度 个数: 主键只能有一个 ...
  • 主键外键索引定义:唯一标识一条记录,不能有重复的,不允许为空表的外键是另一表的主键,外键可以有重复的,可以是空值该字段没有重复值,但可以有一个空值作用:用来保证数据完整性用来和其他表建立联系用的是提高...
  • 主键外键索引定义:唯一标识一条记录,不能有重复的,不允许为空表的外键是另一表的主键,外键可以有重复的,可以是空值该字段没有重复值,但可以有一个空值作用:用来保证数据完整性用来和其他表建立联系用的是提高...
  • 表的外键是另一表的主键,外键可以有重复的,可以是空值 该字段没有重复值,但可以有一个空值 作用: 用来保证数据完整性 用来和其他表建立联系用的 是提高查询排序的速度 个数: 主键只能有一个 一个...
  • mysql 唯一索引UNIQUE一般用于不重复数据字段了我们经常会在数据表中的id设置为唯一索引UNIQUE,下面我来介绍如何在mysql中使用唯一索引UNIQUE吧。创建唯一索引的目的不是为了提高访问速度,而只是为了避免数据出现...
  • MySQL中的唯一索引的简单学习教程mysql 唯一索引UNIQUE一般用于不重复数据字段了我们经常会在数据表中的id设置为唯一索引UNIQUE,下面我来介绍如何在mysql中使用唯一索引UNIQUE吧。创建唯一索引的目的不是为了提高...
  • mysql 唯一索引UNIQUE一般用于不重复数据字段了我们经常会在数据表中的id设置为唯一索引UNIQUE,下面我来介绍如何在mysql中使用唯一索引UNIQUE吧。 创建唯一索引的目的不是为了提高访问速度,而只是为了避免数据出现...
  • MySQL 处理重复数据sMySQL 处理重复数据有些 MySQL 数据表中可能存在重复的...防止表中出现重复数据你可以在MySQL数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。让我们尝...
  • 有些 MySQL 数据表中...防止表中出现重复数据 你可以在MySQL数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。 让我们尝试一个实例:下表中无索引及主键,所以该表允许...
  • 防止表中出现重复数据你可以在 MySQL 数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。让我们尝试一个实例:下表中无索引及主键,所以该表允许出现多条...
  • MySQL 处理重复数据

    2020-12-16 16:38:00
    你可以在 MySQL 数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。 让我们尝试一个实例:下表中无索引及主键,所以该表允许出现多条重复记录。 CREATE TABLE person_...
  • 防止表中出现重复数据你可以在 MySQL 数据表中设置指定的字段为PRIMARY KEY(主键)或者UNIQUE(唯一)索引来保证数据的唯一性。让我们尝试一个实例:下表中无索引及主键,所以该表允许出现多条重复记录...
  • MySQL 处理重复数据有些 MySQL 数据表中可能...防止表中出现重复数据你可以在 MySQL 数据表中设置指定的字段为PRIMARY KEY(主键) 或者UNIQUE(唯一)索引来保证数据的唯一性。让我们尝试一个实例:下表中无索引及主...
  • MySQL 处理重复数据有些 MySQL 数据表中可能...防止表中出现重复数据你可以在 MySQL 数据表中设置指定的字段为PRIMARY KEY(主键) 或者UNIQUE(唯一)索引来保证数据的唯一性。让我们尝试一个实例:下表中无索引及主...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 125
精华内容 50
关键字:

如何设置字段有重复索引