Oracle数据库操作精华:INSERT, EXISTS/NOT EXISTS及主键冲突处理

需积分: 50 6 下载量 50 浏览量 更新于2024-09-09 收藏 646KB PDF 举报
本文档主要针对Oracle数据库的常见操作语句进行了详细的总结,旨在帮助数据库初学者快速理解和掌握基础的SQL语法。主要内容包括: 1. 数据插入:介绍如何将table2中的所有数据插入到与之结构相同的table1中。使用`INSERT INTO`语句,如示例所示: ``` INSERT INTO table1 (column1, column2, column3, column4) SELECT * FROM table2; ``` 这个操作用于数据迁移或同步,确保数据一致性。 2. `EXISTS`和`NOT EXISTS`用法:这两个关键字在Oracle中用于条件查询。`EXISTS`用于判断子查询是否有结果,如果存在则执行主SQL,反之不执行;而`NOT EXISTS`则相反,子查询无结果时执行。它们提高了查询效率,特别是当主查询的数据量较大时,因为Oracle会在找到第一个匹配时停止子查询。 3. MySQL中主键冲突处理:在MySQL中,当尝试插入的数据违反唯一性约束(主键冲突)时,有几种处理策略: - `INSERT IGNORE`: 忽略主键冲突,不会修改现有记录,仅插入新的记录。 - `REPLACE INTO`: 先删除主键已存在的记录,然后再插入新的记录,实现替换操作。 - `INSERT INTO ON DUPLICATE KEY UPDATE`: 当插入遇到主键冲突时,使用此语句可以更新指定列的值,而不是直接插入或替换,这是一种更灵活的更新策略。 通过这些内容,读者可以了解到如何有效地在Oracle和MySQL数据库中执行常见的数据操作,以及如何处理可能出现的问题。这对于理解数据库的基本操作流程和优化查询性能至关重要。
2018-10-08 上传
一、 概念介绍: 数据库DATABASE、表TABLE、列COLUMN、行ROW、关键字PRIMARY KEY、索引INDEX 二、 数据类型: LONG RAM:超长大型数据(照片、图形、描述等不定长数据)。 DATE:包含日期和时间。 INTEGER:有符号全长二进制整数(31位精度)。 SMALLINT:有符号半长二进制整数(15位精度)。 DECIMAL (p[,q]): 有符号的封装了的十进制小数,最多有 p 位数,并假设有 q 位在小数点右边。 如果省略 q ,则认为是 0。 FLOAT:有符号双字浮点数。 CHAR(n): 长度为 n 的定长字符串。 VARCHAR(n): 最大长度为 n 的变长字符串。 CHAR (5) 和 VARCHAR2(5)的区别是 CHAR不足5位后面自动加上空格,VARCHAR2不加 三、 列的非空属性NOT NULL: 如果一个列具有非空属性,则在给该表增加、修改数据时必须保证该列有内容,否则会出错。 如果一个列允许为空,该列可以不放任何内容,即空值(在SQL中书写为NULL),空值不是空格。 如果一个列内容为空值,则该列不等于任何值(包括空值)。 例如:列SAGE1、SAGE2的内容为空,列SAGE3内容为20,则下面的逻辑表达式全部为NULL:SAGE1=SAGE2、SAGE1SAGE2、SAGE1=SAGE3、SAGE3>SAGE1。下面的逻辑表达式全部为真:SAGE1 IS NULL、SAGE3 IS NOT NULL。下列表达式全为空:sage1+100,sage2+sage3 四、 特殊约定: 1. 所有SQL语句以分号结束不是以回车换行结束。 2. 中扩号代表选项,就是其中的内容可有可无。 3. 下面讲的列名在很多情况下也可以是表达式。 4. 表名格式:[用户名.]表名,例如:user001.student,如果不注名用户,则说明是当前登陆的用户的表。 五、 建表或视图语句CREATE 格式: CREATE TABLE 表名 (列名 类型 长度 [NOT NULL], 列名 类型 长度 [NOT NULL], 列名 类型 长度 [NOT NULL], 列名 类型 长度 [NOT NULL], 列名 类型 长度 [NOT NULL]); CREATE VIEW 视图名 AS SELECT ……; CREATE TABLE 表名 AS SELECT ……; Create table as 经常在修改一个表前备份该表,而且运行速度很快且不用提交 例如:Select table a_student as select * from student; Create table as 还可以用来复制表结构 例如:假设有三个表