当前位置: 首页 > 编程笔记 >

mysql unique key在查询中的使用与相关问题

燕正卿
2023-03-14
本文向大家介绍mysql unique key在查询中的使用与相关问题,包括了mysql unique key在查询中的使用与相关问题的使用技巧和注意事项,需要的朋友参考一下

1、建表语句:

CREATE TABLE `employees` (
 `emp_no` int(11) NOT NULL,
 `birth_date` date NOT NULL,
 `first_name` varchar(14) NOT NULL,
 `last_name` varchar(16) NOT NULL,
 `gender` char(1) NOT NULL,
 `hire_date` date NOT NULL,
 PRIMARY KEY (`emp_no`),
 UNIQUE KEY `idxunique_first_name_gender` (`first_name`,`gender`),
 UNIQUE KEY `uniq_idx_firstname` (`first_name`,`gender`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

2、添加unique key:

-- 添加unique索引
alter table employees add constraint idxunique_first_name_gender unique(first_name, gender);

3、查询测试语句:

-- 包含索引所有字段,且顺序和索引一致
select * from employees where first_name='Chirstian' and gender='M';
-- key列值:idxunique_first_name_gender
-- 包含索引所有字段,但顺序和索引不一致
select * from employees where gender='M' and first_name='Chirstian';
-- key列值:idxunique_first_name_gender
-- 包含索引第一个字段
select * from employees where first_name='Chirstian';
-- key列值:idxunique_first_name_gender
-- 包含索引的非第一个字段
select * from employees where gender='M';
-- key列值:NULL

4、在查询时,如果where条件里面只有unique key里面的列(部分或者全部)且列值类型为const。如果要使用unique key,where里面必须得有建立unique key时的第一列,其他列随意。

一个与mysql unique key相关的问题

xxx_tab的user_id是unique key, 来看看伪代码:

get user_id=10000 from xxx_tab;
if exist 
{
  return ok
}
ret = insert user_id=10000
if ret ok 
{
  return ok
}
return not_ok

问题: 为什么最后结果是not_ok ?

提示: 分布式影响

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小牛知识库的支持。如果你想了解更多相关内容请查看下面相关链接

 类似资料:
  • 问题内容: 即使它有性能问题,我是否也可以知道相关子查询的用途? 问题答案: 好吧,首先它没有性能问题。就是这样,鉴于硬件和数据库结构的性能限制,它将尽可能地执行。 至于它的作用,它只是表达特定逻辑条件的一种方式。

  • 问题内容: 我很好奇为何应该比更快地执行。 当比尔·卡尔文提出一个要点时,我正在回答一个问题。当您使用它时,它使用相关子查询(依赖子查询),而IN()仅使用子查询。 解释显示,并且两者都使用了一个依赖子查询,并且都只使用了一个子查询..所以我很好奇关联子查询如何比子查询更快? 我以前使用过EXISTS,它的执行速度比IN快,这就是我感到困惑的原因。 这是带有说明的SQLFIDDLE 一些问题 在上

  • 我希望通过登录搜索员工列表,并使用扩展的DAO接口: 在我的服务层中,我用

  • 问题内容: 我有两个表:表A和表B 表A和表B都有列。 表A和表B都有列。 表A的一列也称为。 检查条件: 如果表A“键” =恒定,则从表A检索RowId。 从中获取这些行ID,并检查这些行的字段是否>具有相同rowId的表B的> ModifiedAT字段。 Table没有重复的RowId,而Table具有。 我自己尝试的方法: 注意:另外,令我感到惊讶的是,如果我将硬编码值替换为“ 1”,它会起

  • 本文向大家介绍Android中NavigationView的使用与相关问题解决,包括了Android中NavigationView的使用与相关问题解决的使用技巧和注意事项,需要的朋友参考一下 一、基本使用 1. NavigationView 在 design 库中,添加依赖(最新的是 23.2.0); 2. 然后在 DrawerLayout 布局中添加 NavigationView ; 其中需要注

  • 本文向大家介绍SQL语句中‘相关子查询’与‘非相关子查询’有什么区别?相关面试题,主要包含被问及SQL语句中‘相关子查询’与‘非相关子查询’有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 (1)非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。 (2)相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。 因此非相关子查询比相关子查

  • 问题内容: 我已经升级了系统,并为正在使用的Web应用程序安装了带有PHP的MySql 5.7.9。我有一个动态创建的查询,当在旧版本的MySql中运行时,它运行良好。自升级到5.7以来,出现此错误: SELECT列表的表达式#1不在GROUP BY子句中,并且包含未聚合的列’support_desk.mod_users_groups.group_id’,该列在功能上不依赖于GROUP BY子句中

  • 问题内容: 我已经升级了系统,并为正在使用的Web应用程序安装了带有PHP的MySql 5.7.9。我有一个动态创建的查询,当在旧版本的MySql中运行时,它运行良好。自升级到5.7以来,出现此错误: SELECT列表的表达式#1不在GROUP BY子句中,并且包含未聚合的列’support_desk.mod_users_groups.group_id’,该列在功能上不依赖于GROUP BY子句中