原文地址:http://m.blog.csdn.net/fgx_123456/article/details/77853547
看这条 sql:select sysdate(); 熟悉不!?虽然我不是很熟悉,但我确定我用过它,其实他是:select sysdate() from dual 的简写。
看一下mysql官方对这个表的解释吧(http://dev.mysql.com/doc/refman/5.0/en/select.html):
DUAL is purely for the convenience of people who require that all SELECT statements should have FROM and possibly other clauses. MySQL may ignore the clauses.
MySQL
does not require FROM DUAL if no tables are referenced.
官方的解释说:纯粹是为了满足select … from…这一习惯问题,mysql会忽略对该表的引用。
碰到了新问题就去网上搜集了一下,发现原来 dual 表的应用地方还不少。。。把我发现的三个应用地方都加上:
select express from dual #这条 sql 就类似上面的查看系统时间一样。把 express 替换成表达式或函数就行;
select express from dual where condition #这条 sql 只是对上面的一点扩展 加上一个 where 条件。其实这个 where 条件跟我们平时使用的 where 条件没什么区别。执行的时候
也是先判断 where 子句是否成立,满足然后再执行 select 中的 express,最后返回 express 执行的值;如果 where 子句不成立,则返回空。比如:select 1+1 from where
1=1,将返回 2 ;
第三个就是一条比较实用的 SQL 语句了!你否想过:插入数据时先判断一下这条 记录是否已存在这个问题!?也许很多时候为了解决这个问题,你会先 select 一下,根据他的
结果再决定是否继续写入数据库。但是用 dual 这个表,可以让你仅一条 SQL 就可以解决这个问题哦!
SQL 就是这样写的:
INSERT INTO table (primarykey, field1, field2, ...)
SELECT key, value1, value2, ...
FROM dual
WHERE not exists (select * from table where primarykey = key);
来个实际点的例子吧
INSERT INTO clients (client_id, client_name, client_type)
SELECT 10345, ’IBM’, ’advertising’
FROM dual
WHERE not exists (select * from clients where clients.client_id = 10345);
再来一个
insert into cdb_shop (uid,shop)
SELECT '2021','202298'
from dual
where not exists(SELECT * FROM cdb_shop WHERE uid = '2021');
“SELECT '2021','202298' ”就是values语句的变种,格式就这亲样写就对了。注意值的顺序要与inert语句中列的顺序相对应。
关键的地方是where语句,它的结果决定了是否执行insert语句。
相关推荐
请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。 下面的 SQL 在 “Persons” 表创建时在 “Id_P” 列创建 UNIQUE 约束: CREATE TABLE Persons ( Id_P int NOT NULL, LastName...
这里我们关注的是使用Shell脚本来实现MySQL从原表到历史表的数据迁移。这种自动化的方法可以帮助我们高效、准确地处理大量数据,同时减少人为错误。 首先,让我们深入理解`shell`脚本。Shell是Linux和Unix系统中的...
MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...
### 往数据库插入数据,相同的不插入 ...综上所述,通过上述分析我们可以清晰地理解如何实现在插入数据时避免重复的功能。同时,也探讨了一些可能的改进方案,以期在实际项目中更好地应用这些技术。
mysql通过触发器实现两个表的同步,需要了解的朋友可以看一下。 有两张表A和B,要求往A里面插入一条记录的同时要向B里面也插入一条记录,向B里面插入一条记录的同时也向A插入一条记录。两张表的结构不同,需要将...
我们可以按照分区的原则,向表里插入数据。每个分区有4条数据,查询结果正确。 分区删除 我们可以使用命令`alter table tuser drop partition p1;`删除第一个分区,分区内的数据也将被删除。 新建分区 我们可以...
其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4232009 > ...
location.sql文件可能包含了创建数据库表的SQL语句,以及可能的数据插入语句,用于一次性导入所有国家的数据到MySQL数据库中。开发者可以通过运行这个SQL文件来快速地在他们的环境中设置好这个全球国家数据表。 在...
MySQL 提供了多种方法来实现大批量数据插入,包括使用批量插入语句、使用 LOAD DATA 语句、使用 MySQL 的 Bulk Insert 机制等。 在 MySQL 中,使用批量插入语句可以大大提高数据插入的速度。批量插入语句的格式如下...
这个脚本实现了跨服务器增量同步mysql数据的功能,可以同步多个表。 在使用这个脚本的时候需要注意有修改的地方就是源表配置、目标表配置需要修改成自己的服务器和登录mysql数据库的用户名和密码。基础配置中需要...
6. **执行SQL**:使用`Statement`或`PreparedStatement`执行SQL语句,批量插入数据。为提高效率,可以使用批处理(batch processing),将多条SQL语句打包一起执行。 7. **错误处理**:在执行过程中捕获并处理可能...
1. 插入数据:使用`INSERT INTO`命令将数据插入到表中。 2. 删除数据:使用`DELETE FROM`命令删除满足特定条件的记录。 3. 修改数据:使用`UPDATE`命令更新表中已存在的记录。 五、表联系的创建与修改 1. 多对多...
本文实例讲述了MySQL 多表关联一对多查询实现取最新一条数据的方法。分享给大家供大家参考,具体如下: MySQL 多表关联一对多查询取最新的一条数据 遇到的问题 多表关联一对多查询取最新的一条数据,数据出现重复 ...
mysql 批量插入测试数据 ,可判断条件插入数据,随心所遇插入,do where 循环
在数据库管理中,经常需要进行数据迁移或者复制操作,特别是在MySQL这样的关系型数据库中,从一个表中查询数据并插入到另一个表是常见的数据处理任务。本篇文章将详细介绍如何使用SQL语句来实现这一过程。 首先,...
可能包含了创建表、插入数据或者更新表结构的语句。 综上所述,这个流程实现了一个数据实时流动的架构,从MySQL数据库中抽取数据,然后将数据同时发送到HDFS进行长期存储,以及通过Kafka进行实时处理和分发。这种...
在Python3中操作MySQL数据库并插入一条数据,然后获取并返回这条...通过上述步骤,可以完整地实现使用Python3插入MySQL数据库数据并获取插入数据的主键id的功能,这对于数据库编程和数据管理都是非常重要的操作技能。
在使用上述方法处理重复数据时,需要在表中定义相应的唯一键(主键或唯一索引),以便 MySQL 能够判断冲突并执行相应的操作。否则,MySQL 将无法判断冲突,导致数据插入失败。 四、应用场景 处理重复数据的方法在...
5. **插入数据**:在MySQL数据库中,创建相应的表结构,然后使用`PreparedStatement`执行插入操作。如果需要批量插入,可以考虑使用`batchUpdate()`方法。 6. **错误处理**:在整个过程中,一定要捕获并处理可能...
4. 插入数据到Oracle,并确保主键值的连续性。 总的来说,MySQL到Oracle的数据同步是一项技术挑战,涉及数据库结构的比较、数据类型映射、事务管理等多个方面。在实际操作中,应充分考虑数据完整性、性能和系统的...