精华内容
下载资源
问答
  • MySql交换两行记录通过update语句交换两行记录唯一的属性现有表student,定义如下。CREATE TABLE `student` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `date` datetime DEFAULT NULL, PRIMARY KEY (`Id`), KEY ...

    MySql通过update语句交换两行记录非唯一的属性

    现有表student,定义如下。

    CREATE TABLE `student` (
      `Id` int(11) NOT NULL AUTO_INCREMENT,
      `date` datetime DEFAULT NULL,
      PRIMARY KEY (`Id`),
      KEY `id_date` (`date`)
    ) ENGINE=InnoDB AUTO_INCREMENT=11002 DEFAULT CHARSET=latin1;
    
    
    Id  date    
    2   2015-08-26 00:20:32
    4   2018-08-26 00:20:32

    现在希望将Id=2,Id=4的两条记录中的date进行交换,接着执行下面的查询。

    SELECT * FROM 
    student AS S1
    JOIN student AS S2 ON
    S1.id = 4 AND S2.Id = 2
    OR 
    S1.id = 2 AND S2.Id = 4;

    执行后得到结果。

    id        date          id1  date1
    4   2016-08-26 00:20:32 2   2015-08-26 00:20:32
    2   2015-08-26 00:20:32 4   2016-08-26 00:20:32

    可以看到要完成交换,只需要将左表和右中的date进行交换,就可以完成两条记录中的date属性值的交换。

    查询mysql 手册update定义。

    UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] …
    [WHERE where_condition]
    [ORDER BY …]
    [LIMIT row_count]

    table_reference table_references and where_condition are specified as
    described in Section 13.2.9, “SELECT Syntax”.

    可以看到table_reference与select中的描述一致,因此在update中可以使用join。

    接着将上面的select 改写为update。

    UPDATE
    student AS S1
    JOIN student AS S2 ON (
    S1.id = 4 AND S2.Id = 2
    OR 
    S1.id = 2 AND S2.Id = 4
    )
    SET S1.date = S2.date;

    执行后id = 2,id = 4的两条记录中的完成交换。

    上述update语句还可以改写为下面的形式。

    UPDATE
    student AS S1
    JOIN student AS S2 ON
    (S1.id = 4 AND S2.Id = 2)
    SET
    S1.date = S2.date,
    S2.date = S1.date;

    注意如果所交换的属性加了唯一索引,那么交换无法完成。

    参考

    1.一条sql交换两行记录http://www.microshell.com/database/sql/swap-values-in-2-rows-sql/

    2.一条sql交换两行记录http://stackoverflow.com/questions/4517219/how-to-update-swap-values-of-two-rows-with-single-query

    3.mysql update语法 https://dev.mysql.com/doc/refman/5.6/en/update.html

    展开全文
  • MySql通过update语句交换两行记录唯一的属性现有表student,定义如下。CREATE TABLE `student` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `date` datetime DEFAULT NULL, PRIMARY KEY (`Id`), KEY `id_date` (`date...

    MySql通过update语句交换两行记录非唯一的属性

    现有表student,定义如下。

    CREATE TABLE `student` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `date` datetime DEFAULT NULL, PRIMARY KEY (`Id`), KEY `id_date` (`date`) ) ENGINE=InnoDB AUTO_INCREMENT=11002 DEFAULT CHARSET=latin1;

    Id date

    2 2015-08-26 00:20:32

    4 2018-08-26 00:20:32

    现在希望将Id=2,Id=4的两条记录中的date进行交换,接着执行下面的查询。

    SELECT * FROM student AS S1 JOIN student AS S2 ON S1.id = 4 AND S2.Id = 2 OR S1.id = 2 AND S2.Id = 4;

    执行后得到结果。

    id date id1 date1

    4 2016-08-26 00:20:32 2 2015-08-26 00:20:32

    2 2015-08-26 00:20:32 4 2016-08-26 00:20:32

    可以看到要完成交换,只需要将左表和右中的date进行交换,就可以完成两条记录中的date属性值的交换。

    查询mysql 手册update定义。

    UPDATE [LOW_PRIORITY] [IGNORE] table_reference

    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] …

    [WHERE where_condition]

    [ORDER BY …]

    [LIMIT row_count]

    table_reference table_references and where_condition are specified as

    described in Section 13.2.9, “SELECT Syntax”.

    可以看到table_reference与select中的描述一致,因此在update中可以使用join。

    接着将上面的select 改写为update。

    UPDATE student AS S1 JOIN student AS S2 ON ( S1.id = 4 AND S2.Id = 2 OR S1.id = 2 AND S2.Id = 4 ) SET S1.date = S2.date;

    执行后id = 2,id = 4的两条记录中的完成交换。

    上述update语句还可以改写为下面的形式。

    UPDATE student AS S1 JOIN student AS S2 ON (S1.id = 4 AND S2.Id = 2) SET S1.date = S2.date, S2.date = S1.date;

    注意如果所交换的属性加了唯一索引,那么交换无法完成。

    参考

    展开全文
  • <p>I'm working on a simple application written in golang, using <a href="https://github.com/HouzuoGuo/tiedot" rel="nofollow">tiedot</a> as NoSQL database engine. I need to store some users in the ...
  • 例如身份证号码应该每一行的记录不一样,需要具有唯一性。唯一键的本质与主键差不多,唯一键允许字段为空,而且可以多个字段为空,因此空字段不参与唯一性的比较。也就是说可以插入多个空字段。增加唯一键增加唯一键...

    MySQL列属性 之 唯一键

    唯一键

    唯一键:每张表往往有多个字段需要具有唯一性,数据不能重复,但是在每张表中,只能有一个主键,因此 唯一键就是用来解决表中多个字段需要具有唯一性的问题。

    例如身份证号码应该每一行的记录不一样,需要具有唯一性。

    唯一键的本质与主键差不多,唯一键允许字段为空,而且可以多个字段为空,因此空字段不参与唯一性的比较。也就是说可以插入多个空字段。

    增加唯一键

    增加唯一键的方法和主键类似,有 3 种方法,分别为:

    第一种:在创建表的时候,字段后面直接添加unique或者unique key关键字

    -- 增加唯一键

    create table my_unique(

    number char(10) unique comment '学号',

    name varchar(20) not null

    )charset utf8;

    43fcdffeaae884b9b20c922c32e9e23e.png

    第 2 种:在所有字段之后,增加unique key(字段列表),可以设置复合唯一键

    -- 测试唯一键

    create table my_unique2(

    number char(10) not null,

    name varchar(20) not null,

    unique key(number)

    )charset utf8;

    4031f30eaa4e1e993ef3400210b990f7.png

    观察上图,咱们可能会发现一个问题,那就是: 咱们设置的唯一键UNI,怎么变成了主键PRI啊?这是由于当唯一键满足非空条件的时候,其性质就和主键一样啦,因此在表中显示为PRI. 当然,在咱们执行如下 SQL 语句的时候,其就会表现出真正的性质:

    -- 查看表创建语句

    show create table my_unique2;

    df6eda02fd5907cdc868feb33bcf6aab.png

    第 3 种:在创建表之后,增加唯一键

    -- 创建未设置唯一键的表

    create table my_unique3(

    id int primary key auto_increment,

    number char(10) not null,

    name varchar(20) not null

    )charset utf8;

    65dd16d9fa1fe362b6de1bd2fafcaf08.png

    如上图所示,表my_unique3未设置唯一键。接下来,执行如下 SQL 语句,进行测试:

    -- 增加唯一键

    alter table my_unique3 add unique key(number);

    d3b82345c8edd23adbf59241a6b21616.png

    如上图所示,咱们已经成功向表中增加唯一键啦!

    唯一键约束:允许多个值为空

    唯一键与主键本质相同,区别在于: 唯一键允许字段值为空,并且允许多个空值存在。

    -- 测试唯一键约束

    insert into my_unique values(null,'Charies');

    insert into my_unique values(null,'Guo');

    3269596959b092dc554766096a6a7055.png

    更新唯一键 & 删除唯一键

    在表中,更新唯一键的时候,可以不用先删除唯一键,因为表的唯一键允许有多个。

    删除唯一键的语法为:

    基本语法:alter table + 表名 + drop index + 索引名字;

    在这里,唯一键默认使用字段名作为索引名。

    -- 删除唯一键

    alter table my_unique3 drop index number;

    dc78a6df0768e263b4701d53a938510e.png

    如上图所示,显然咱们已经成功删除表中的唯一键啦!

    温馨提示:符号+表示连接的意思。

    展开全文
  • 为了不使数据重复,为每一个字段添加auto_increment属性,auto_incremen需要与组件一起使用;创建一个数据表,id 和 AUTO_INCREMENT PRIMARY KEY,自动增值和关键字一起使用,注意,AUTO_INCREMENT必须和组件...

    为了不使数据重复,为每一个字段添加auto_increment属性,

    auto_incremen需要与组件一起使用;


    创建一个数据表,id 和 AUTO_INCREMENT PRIMARY KEY,自动增值和关键字一起使用,

    注意,AUTO_INCREMENT必须和组件PRIMARY KEY一起使用,而PRIMARY KEY可以不和AUTO_INCREMENT一起使用

    mysql> CREATE TABLE tb3(

        -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        -> username VARCHAR(30) NOT NULL
        -> );

    Query OK, 0 rows affected (0.28 sec)

    查看数据表的结构

    mysql> SHOW COLUMNS FROM tb3;
    +----------+----------------------+------+-----+---------+----------------+
    | Field    | Type                 | Null | Key | Default | Extra          |
    +----------+----------------------+------+-----+---------+----------------+
    | id       | smallint(5) unsigned | NO   | PRI | NULL    | auto_increment |
    | username | varchar(30)          | NO   |     | NULL    |                |
    +----------+----------------------+------+-----+---------+----------------+

    2 rows in set (0.00 sec)

    插入值后,

    mysql> INSERT tb3(username) VALUES('jin');

    Query OK, 1 row affected (0.05 sec)

    查看字段,发现id自动增值

    mysql> SELECT * FROM tb3;
    +----+----------+
    | id | username |
    +----+----------+
    |  1 | tom      |
    |  2 | wang     |
    |  3 | jin      |
    +----+----------+
    3 rows in set (0.00 sec)


    mysql>



    唯一约束





    默认约束

    当插入的记录没有赋值时,则指导工赋值


    插入字段

    insert tb6(username) values('tom')l


    发现sex自动赋值

    展开全文
  • 为了避免输入重复的数据信息,用户可以通过设置字段的记录唯一性来定义其具体内容。实现唯一性的方法主要有以下3种 1、用健实现 2、创建唯一索引 3、用序列生成唯一索引 健能够唯一区分数据表中的每个记录的属性...
  • 双击打开实体,在idntifier标签页中可看到默认主键的唯一约束,在其下方添加一条记录,然后双击该记录,打开约束设置窗口 在该窗口attitude标签页中选择一个字段或多个字段,组成唯一约束。 转载于:...
  • 主键:能够唯一表示一个记录的一个字段或者多个字段组合 特点: 1.含有主键表叫做主键表 2.主键通常都是整数,不建议使用字符串当主键(如果主键是用于集群式服务,才可以考虑用字符串当主键) 3.主键值通常都...
  • 数据库:管理数据仓库,其...图1 数据表字段包括主键、联合主键、外键、其他字段主键:能够唯一标识记录的字段。只要能够唯一标识记录的字段都可以作主键,所以主键存在一个选择问题。我们要选择不可更改能够...
  • 目前的计算机仍然只能识别0和1,但是由于近10年内虚拟机以及大量建立在虚拟机之上的程序语言如雨后春笋般出现并蓬勃发展,将我们编写的程序编译成二进制本地机器码(Native Code)已不再是唯一的选择,越来越多的...
  • 可以通过hash.hexdigest()生成唯一键,通过唯一键做数据更新,不会插入重复的记录 from hashlib import md5 _id = md5("{};{}".format("属性一","属性二").encode('utf-8')).hexdigest() ...
  • 通过 可以定位到唯一的项目,解决了名称冲突的问题。 表示一组远程maven仓库的基本属性,因为在本地搭建了一个maven仓库所以需要将标签值改掉,、这两个标签表示使用的jar包有稳定版与开发版之分,标签为true表示我...
  • 在mysql中一共有6个属性:null,默认值,列描述,主键,唯一键和自动增长Null属性NULL属性:代表字段为空如果对应的值为YES表示该字段可以为NULL 注意:1、 在设计表的时候,尽量不要让数据为空2、 Mysql的记录长度...
  • 对象引用Bookmark 属性

    千次阅读 2013-07-21 21:09:42
     返回唯一标识recordset对象中当前记录的标签,或者将recordset对象的当前记录设置为由有效书签所标识的记录。返回值为变体类型。  说明  bookmark属性可保存当前记录的位置并随时返回到该记录。书签只能在支持...
  • 如下图所示,需要在主表编辑页面,设置子表的唯一属性为只读 二、实现目标 1.问题 因为是主从表,所以我们需要通过js渲染形式实现这个目标 2.HTML主要代码 //判断是否是编辑页面,如果是,那么设置code属性为...
  • 为了避免输入重复的数据信息,用户可以通过设置字段的记录唯一性来定义其具体内容。实现唯一性的方法主要有以下3种 1、用健实现 2、创建唯一索引 3、用序列生成唯一索引 健能够唯一区分数据表中的每个记录的属性...
  • 每行记录的属性,是原子,拆到不可拆为止。===>例如:一个人籍贯,可以拆分为,省,市,县,乡,村第二范式===>每行记录的非主属性(非主键属性),都完全依赖主属性(主键)。===>每行数据都能唯一区分...
  • 1.插入记录 INSERT [INTO] tb_name [(col_name,……)] VALUES(val,……);...3.MYSQL空值与非空 NULL 字段值可以为空,NOT NULL 字段值禁止为空,在创建表时候,作为属性值加在后面,默认为NULL4.MYSQL自动编号 ...
  • jquery中,在设置多个radio的唯一选中时,prop与attr表现不同。次啊面代码中如果将prop换为attr,则页面所有checkbox在取消选中后,都不能再次选中; 原因: 对于HTML元素本身就带有固有属性,在处理时,使用...
  • 数据库字段属性

    2020-08-13 15:27:26
    2.3 数据库的字段属性 unsigned : 无符号的整数 声明了该列不能声明为负数’ zerfill ...通常用来设计唯一的主键 ~ index必须是整数类型 可以自定义设计主键自增的起始值和步长 非空 null not null ...
  • Vuex中mutations属性

    2020-05-28 21:57:08
    Mutation中文翻译是“突变”,在Vuex中,它是store对象一个属性,mutations被用于更新store中所存放所有状态。关于mutations,有以下几点需要注意 更改 Vuex store 中状态的唯一方法是提交 mutation。 ...
  • 一、讲解 首先说明 键字=码字,所以 主键=主码=主关键字,候选键=候选码=候选关键字... ... 1、码=超键:能够唯一标识一条记录的属性属性集。 标识性:一个数据表所有记录都具有不同超键 非空性:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,226
精华内容 890
关键字:

唯一的记录属性