### Oracle SQL基础宝典系列1知识点详解 #### 第1章 编写基本的SQL SELECT语句 ##### 1.1 SQL的起源和分类 - **起源**:SQL(Structured Query Language,结构化查询语言)是一种专门用于管理和操作数据库的标准计算机语言。它起源于20世纪70年代初期,在IBM的研究实验室中首次被开发出来。最初的设计目的是为了提供一种统一的方式来访问关系型数据库管理系统。 - **分类**:SQL可以分为几大类: - **数据定义语言(DDL)**:用于创建、修改或删除数据库对象(如表、索引、视图等)。 - **数据操纵语言(DML)**:用于添加、读取、更新和删除数据库中的数据。 - **数据查询语言(DQL)**:主要指SELECT语句,用于从数据库中检索数据。 - **数据控制语言(DCL)**:用于管理用户权限和对数据库资源的访问。 ##### 1.3 SQL SELECT语句的功能 - **功能概述**:SELECT语句是SQL中最常用的数据查询语言,用于从一个或多个表中选取数据。它不仅可以获取单个记录,还可以通过组合其他SQL关键字来执行复杂的查询任务。 - **基本语法**:`SELECT column1, column2, ... FROM table_name;` - `column1, column2, ...` 表示要选择的列。 - `table_name` 表示数据所在的表。 ##### 1.4 基本SELECT语句 - **选择所有列**:使用 `SELECT * FROM table_name;` 可以选择表中的所有列。 - **选择指定的列**:例如,`SELECT column1, column2 FROM table_name;` 只选择指定的列。 - **SQL语句的编辑**:在编写SQL语句时,通常会在IDE或文本编辑器中进行。可以利用注释、缩进等技巧来提高代码的可读性。 - **列标题默认属性**:当从表中选择列时,结果集中的列名默认为表中的列名。 - **算术表达式**:可以在SELECT语句中使用算术运算符(如+、-、*、/)来进行简单的数学计算。 - **定义空值**:在SQL中,空值表示未知或未定义的值。可以使用 `IS NULL` 和 `IS NOT NULL` 来判断某列是否为空。 - **定义列别名**:可以通过 `AS` 关键字或者直接在列名后面加上空格和新名称来给列定义别名。 - **连字运算符**:使用 `||` 运算符可以将两个字符串连接起来。 - **文字字符串**:可以直接在SELECT语句中使用单引号(' ')包含的文字字符串。 - **相同的行**:如果数据表中有重复的行,可以使用 `DISTINCT` 关键字来返回唯一的行。 ##### 1.5 iSQL*Plus简介 - **iSQL*Plus概览**:iSQL*Plus是Oracle提供的一个命令行工具,用于执行SQL语句和脚本,并查看结果集。 - **SQL和iSQL*Plus交互作用**:通过iSQL*Plus,用户可以直接输入SQL语句并立即看到结果。它还支持一些特殊的命令,如 `@script.sql` 用于运行存储在文件中的SQL脚本。 #### 第2章 约束和排序 - **使用选择限定行**:通过在SELECT语句中添加 `WHERE` 子句来限定要选择的行。 - **条件中使用字符串和日期**:可以在 `WHERE` 子句中使用字符串和日期类型的值来过滤结果集。 - **比较条件**:可以使用比较运算符(如`=`、`<>`、`>`、`<`等)来比较值。 - **使用BETWEEN条件**:`BETWEEN` 用于选择某个范围内的值。 - **使用IN条件**:`IN` 用于列出可能的值集合。 - **使用LIKE条件**:`LIKE` 用于在WHERE子句中搜索列中的指定模式。 - **使用NULL/NOT NULL条件**:`IS NULL` 和 `IS NOT NULL` 用于检查值是否为空。 - **逻辑条件**:使用逻辑运算符(如 `AND`、`OR`)来组合多个条件。 - **优先规则**:在复杂的WHERE子句中,使用括号来改变运算符的优先级。 - **排序**:使用 `ORDER BY` 子句来对结果集进行排序。 - `ASC`(升序,默认)和 `DESC`(降序)来指定排序方向。 - 可以根据多个列进行排序。 #### 第3章 ORACLE SQL单行函数 - **SQL函数介绍**:Oracle提供了大量的内置函数来帮助处理数据。 - **SQL函数分类**:可以将SQL函数大致分为几类:字符函数、数字函数、日期函数等。 - **单行函数**:这类函数接收单个输入并返回单个输出。例如,`UPPER(column_name)` 返回大写的字符串。 - **字符函数** - **大小写处理函数**:如 `UPPER()` 和 `LOWER()`。 - **字符处理函数**:如 `TRIM()` 用于去除字符串两端的空白字符。 - **数字函数**:如 `ROUND()` 用于四舍五入。 - **日期函数**:如 `SYSDATE` 用于获取当前系统日期。 - **系统日期**:`SYSDATE` 函数返回数据库服务器的当前日期和时间。 - **用日期计算**:可以使用日期函数来进行日期之间的计算。 - **日期函数**:如 `ADD_MONTHS(date, num_months)` 用于增加或减少月份。 - **转换函数** - **隐式数据类型转换**:当数据类型不匹配时,Oracle会尝试自动转换数据类型。 - **显式数据类型转换**:使用 `TO_CHAR()`、`TO_DATE()` 和 `TO_NUMBER()` 显式地转换数据类型。 - **日期格式模板**:可以使用特定的格式模板来格式化日期。 - **时间格式模板**:类似地,也可以为时间定义格式模板。 - **数字格式模板**:使用 `TO_CHAR()` 函数时,可以指定数字格式模板来格式化数字。 - **嵌套函数**:可以将一个函数的结果作为另一个函数的参数,即嵌套使用函数。 - **条件表达式** - **CASE表达式**:类似于编程语言中的 `switch` 语句,用于基于不同的条件返回不同的结果。 - **DECODE函数**:提供了一种更简洁的方式来实现条件判断。 #### 第4章 从多表中查询数据 - **有效连接条件与笛卡儿积**:在进行表连接时,如果没有明确的连接条件,则会产生笛卡儿积(所有行的交叉组合)。 - **连接的类型**:包括内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN)。 - **表连接的原则**:在进行表连接时,应确保连接条件是有效的,避免不必要的数据冗余。 - **等值连接**:用于连接具有相同值的列。 - **列别名、表别名**:使用别名可以使SQL语句更加清晰易懂。 - **多于两个表的等值连接**:可以连接多个表来获取所需的信息。 - **非等值连接**:用于连接具有不完全相等值的列。 - **外连接**:包括左外连接、右外连接和全外连接,用于获取即使没有匹配项也要显示的行。 - **自连接**:用于在同一表的不同实例之间进行连接。 - **SQL1999连接语法介绍** - **交叉连接**:返回所有可能的行组合。 - **自然连接**:基于公共列进行连接。 - **ON子句**:用于指定连接条件。 #### 第5章 用组函数合计数据 - **组函数的概念**:组函数(也称为聚合函数)用于对一组值进行汇总,如求平均值、总和等。 - **组函数使用** - **使用AVG、SUM、MAX、MIN**:这些函数分别用于计算平均值、总和、最大值和最小值。 - **使用COUNT**:用于统计满足条件的行数。 - **使用DISTINCT关键字**:与COUNT结合使用时,只计数不同的值。 - **组函数与空值**:大多数组函数忽略NULL值。 - **GROUP BY子句**:用于按一个或多个列对结果集进行分组。 - **HAVING子句**:用于过滤GROUP BY子句产生的结果集。 - **嵌套组函数**:可以在一个GROUP BY子句中使用另一个组函数。 #### 第6章 子查询 - **子查询介绍**:子查询是在另一个查询内部的查询。它可以放在 `WHERE`、`HAVING` 或者 `FROM` 子句中。 - **使用子查询的原则**:子查询应返回与主查询兼容的结果集。 - **子查询分类**:包括单行子查询和多行子查询。 - **单行子查询**:返回单行结果的子查询。 - **单行子查询错误**:如果子查询返回多行结果而主查询期望单行,则会导致错误。 - **多行子查询**:返回多行结果的子查询。 #### 第7章 操纵数据 - **数据操纵语言**:包括INSERT、UPDATE和DELETE语句,用于添加、修改和删除数据。 - **INSERT插入数据的语法**:用于向表中添加新的行。 - **INSERT插入值的变化**:可以插入各种类型的数据。 - **插入特殊值**:如NULL或当前系统日期。 - **插入指定日期**:使用DATE类型的值。 - **插入可输入变量**:可以使用变量来动态地插入数据。 - **从另外一个表复制**:通过 `INSERT INTO table1 SELECT * FROM table2;` 来复制数据。 - **在INSERT语句中使用子查询**:可以从子查询的结果集中插入数据。 - **UPDATE更新数据的语法**:用于修改现有行的数据。 - **UPDATE更新的例子和问题** - **用子查询更新两列**:可以使用子查询的结果来更新表中的列。 以上就是《Oracle SQL基础宝典系列1》中的主要知识点概述,希望能帮助读者更好地理解和掌握Oracle SQL的基础知识。
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Java开发的日程管理FlexTime应用设计源码
- SM2258XT-BGA144-4BGA180-6L-R1019 三星KLUCG4J1CB B0B1颗粒开盘工具 , EC, 3A, 94, 43, A4, CA 七彩虹SL300这个固件有用
- GJB 5236-2004 军用软件质量度量
- 30天开发操作系统 第 8 天 - 鼠标控制与切换32模式
- spice vd interface接口
- 安装Git时遇到找不到`/dev/null`的问题
- 标量(scalar)、向量(vector)、矩阵(matrix)、数组(array)等概念的深入理解与运用
- 数值计算复习内容,涵盖多种方法,内容为gpt生成
- 标量(scalar)、向量(vector)、矩阵(matrix)、数组(array)等概念的深入理解与运用
- 网络综合项目实验12.19