### Oracle从入门到精通 #### 一、Oracle 数据类型 在 Oracle 数据库中,不同的数据类型用于存储不同类型的数据。理解这些数据类型对于有效地设计数据库结构至关重要。 - **数值型**: `NUMBER` 类型是最常见的数值类型,它可以表示整数和浮点数。`NUMBER` 的精度最高可达 38 位。例如: - `NUMBER(4)` 表示一个最大为 4 位的整数。 - `NUMBER(5, 2)` 表示一个最大为 5 位数的数字,其中包含最多 2 位小数。 - **字符类型**: - `CHAR`: 最多可以存放 2000 个字符。`NCHAR` 可以存放最多 1000 个字符。 - `CHAR(30)` 如果实际只存放了 3 个字符,则会用空格填充剩余位置至 30 个字符。 - `VARCHAR2`: 最多可以存放 4000 个字符。`NVARCHAR2` 可以存放最多 2000 个字符。 - `VARCHAR2(30)` 如果实际只存放了 3 个字符,则只会分配 3 个字符的空间。 - **日期型**: - `DATE`: 存储日期和时间数据,默认格式为 `DD-MON-RR`。 - `TIMESTAMP`: 存储精确到毫秒的时间戳数据。 - **大数据类型**: - `BLOB`: 用于存储二进制大对象,如图像、视频等。 - `CLOB`: 用于存储字符大对象,如长文本数据。 #### 二、Oracle 语言与表操作 Oracle 支持 SQL 语言,用于创建、查询、更新和管理数据库。以下是一些基本操作: - **创建表**: ```sql CREATE TABLE 表名 ( 字段名 数据类型 [约束], PRIMARY KEY (字段), FOREIGN KEY (字段) REFERENCES 主表(字段) ); ``` 或者使用 `ALTER TABLE` 添加外键约束: ```sql ALTER TABLE 表名 ADD CONSTRAINT 名称 FOREIGN KEY (字段) REFERENCES 主表(字段); ``` - **批量插入数据**: Oracle 支持使用 `INSERT ALL` 语句来批量插入多行数据。与 MySQL 不同的是,Oracle 使用 `INTO 表名 VALUES` 的语法。例如: ```sql INSERT ALL INTO 表名 (字段名1, 字段名2) VALUES (值1, 值2) INTO 表名 (字段名1, 字段名2) VALUES (值3, 值4) SELECT 6 FROM DUAL; ``` - **设置回滚点**: ```sql SAVEPOINT 回滚点名; ``` - **回滚到指定点**: ```sql ROLLBACK TO 回滚点名; ``` - **截断表**: ```sql TRUNCATE TABLE 表名; ``` #### 三、Oracle 约束 Oracle 支持多种类型的约束,用于确保数据的一致性和完整性: - **主键** (`PRIMARY KEY`):唯一标识表中每一行记录的字段。 - **外键** (`FOREIGN KEY`):引用另一个表中的主键,用于维护表间关系。 - **唯一性** (`UNIQUE`):确保列中的值是唯一的。 - **非空** (`NOT NULL`):确保列中不允许出现空值。 - **默认值** (`DEFAULT`):如果没有提供值,则自动填充默认值。 #### 四、Oracle 查询 - **运算符**: - `+`, `-`, `*`, `/`, `%`, `=`, `!=`, `IN`, `NOT IN`, `BETWEEN`, `IS NULL`, `IS NOT NULL`, `NULLS LAST`, `NULLS FIRST` - **全局函数**: - `NVL(字段名, 指定值)`:如果字段为 `NULL`,则返回指定值;否则返回字段本身。 - `DECODE(字段名, 值1, 翻译值1, 值2, 翻译值2, 其他值)`:根据字段值返回相应的翻译值。 - **模糊查询**: - 使用 `LIKE` 和通配符 `%` 和 `_` 进行模糊匹配。 - **多表连接查询**: - **内连接** (`INNER JOIN`): 返回两个表中满足连接条件的所有记录。 - **全外连接** (`FULL OUTER JOIN`): 返回两个表中所有记录,无论是否满足连接条件。 - **左外连接** (`LEFT OUTER JOIN`): 返回左表中的所有记录以及右表中符合条件的记录。 - **右外连接** (`RIGHT OUTER JOIN`): 返回右表中的所有记录以及左表中符合条件的记录。 - **子查询**: - Oracle 支持在查询中嵌套其他查询。 - **分组函数**: - 使用 `GROUP BY` 对结果集按照一个或多个列进行分组,并结合聚合函数如 `MAX`, `MIN`, `AVG`, `SUM`, `COUNT` 来汇总数据。 #### 五、Oracle 常用函数 - **字符函数**: - `UPPER(字段名)`:将字段值转换为全部大写字母。 - `LOWER(字段名)`:将字段值转换为全部小写字母。 - `INITCAP(字段名)`:将字段值的首字母大写。 - `CONCAT(字段名, 字段名)`:连接两个字符串。在 Oracle 中,也可以使用 `||` 符号来连接字符串。 - `SUBSTR(字段名, 开始位置, 长度)`:从指定位置开始截取字符串。 - `LENGTH(字段名)`:返回字符串长度。 - `REPLACE(字段名, 旧字符串, 新字符串)`:替换字符串中的部分字符。 - `TRIM(字段名)`:删除字符串两端的空白字符。 - **数值函数**: - `ROUND()`:四舍五入。 - `TRUNC()`:截取数字的小数部分,不进行四舍五入。 - `MOD(分子, 分母)`:求余数。 - **日期函数**: - `SYSDATE`:返回当前系统日期。 - `CURRENT_TIMESTAMP`:返回当前系统的详细日期和时间。 - `MONTHS_BETWEEN(日期1, 日期2)`:计算两个日期之间的月份数。 - `NEXT_DAY(日期, 'weekday')`:返回给定日期后最近的一个指定工作日的日期。 - `LAST_DAY(日期)`:返回给定日期所在月份的最后一天。 - **日期格式参数**: - `D`: 一周中的星期几。 - `DAY`: 天的名字,使用空格填充到 9 个字符。 - `DD`: 月中的第几天。 - `DDD`: 年中的第几天。 - `DY`: 天的简写名。 - `IW`: ISO 标准的年中的第几周。 - `IYYY`: ISO 标准的四位年份。 - `YYYY`: 四位年份。 - `YYY`, `YY`, `Y`: 年份的最后三位,两位,一位。 - `HH`: 小时,按 12 小时计。 - `HH24`: 小时,按 24 小时计。 - `MI`: 分钟。 - `SS`: 秒。 - `MM`: 月份。 - `Mon`: 月份的简写。 - `Month`: 月份的全名。 - `W`: 该月的第几个星期。 - **日期操作**: - 给定日期加上特定时间段,例如: ```sql SELECT ADD_MONTHS(SYSDATE, 24) AS "两年后的日期" FROM DUAL; ``` 通过以上内容的学习,您将能够掌握 Oracle 数据库的基础知识,包括数据类型、表的操作、查询语句、约束以及常用函数等。这对于管理和维护 Oracle 数据库非常有用。



















剩余11页未读,继续阅读


- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 【微信小程序源码】仿找事吧.zip
- 【微信小程序源码】仿网易云音乐.zip
- 【微信小程序源码】仿微信DEMO.zip
- 【微信小程序源码】仿知乎.zip
- 【微信小程序源码】仿知乎日报.zip
- 【微信小程序源码】仿知乎日报客户端.zip
- 【微信小程序源码】仿中国当代艺术社交平台artand.zip
- 【微信小程序源码】飞机大战.zip
- 【微信小程序源码】分答小程序.zip
- 【微信小程序源码】服装供销商城小程序.zip
- 【微信小程序源码】富文本解析,折线图,MD5,bluebird.zip
- 【微信小程序源码】疯狂吃月饼(node+mysql).zip
- 【微信小程序源码】高端城市好天气.zip
- 【微信小程序源码】构架师技能图谱.zip
- 【微信小程序源码】高的地图实时天气.zip
- 【微信小程序源码】高仿苹果计算器.zip


