PLSQL 基础数据类型
1.DCML概念
DDL:用来定义和管理数据库中的对象
CREAT TABLE /创建表/
ALTER TABLE /修改表的属性/
DROP TABLE /删除表/
DML:用来操作数据库中的对象和数据,是T-SQL中最常用的部分。
SELECT /从一个表或多个表中检索数据/
DELETE /从表中删除数据/
INSERT /向一个表中添加数据/
UPDATE /修改表中已有的数据/
DCL:用来控制用户对数据库对象操作的权限。
GRANT /授予权限/
REVOKE /回收所授予的权限/
2.Oracle 数据类型
1.1 字符数据类型
- CHAR 数据类型存储字母数字值,列长度可以是 1 到 2000 个字节。
- VARCHAR2 存储字母数字值,大小在1至4000个字节范围内。
- LONG 存储可变长度字符数据,最多能存储 2GB。
1.2 二进制数据类型
- RAW 数据类型用于存储二进制数据,最多能存储 2000 字节。
- LONG RAW 数据类型用于存储可变长度的二进制数据,最多能存储 2 GB。
1.3 LOB 称为“大对象”数据类型,用于存储大文本、图像、视频剪辑和声音剪辑等非结构化数据
- LOB 数据类型可存储最大 4GB 的数据
- BLOB 将大型二进制对象存储在数据库中
- CLOB 将大型字符数据存储在数据库中
- NCLOB 存储大型UNICODE字符数据
- BFILE 将大型二进制对象存储在操作系统文件中
2.PLSQL 数据类型
2.1 标量类型:提供表示表中一行的记录类型
- 数字
BINARY_INTEGER:存储有符号整数,所需存储空间少于NUMBER类型值。
NUMBER:存储整数、实数和浮点数。
PLS_INTEGER:存储有符号整数,可使算术计算快速而有效。
-
字符
-
布尔型
用于存储逻辑值(TRUE、FALSE和NULL)
不能向数据库中插入BOOLEAN数据
不能将列值保存到BOOLEAN变量中
只能对BOOLEAN变量执行逻辑操作
- 日期时间
DATE
TIMESTAMP 可以用于时间运算
2.2 LOB类型:存储非结构化数据块
- BFILE
- BLOB
- CLOB
- NCLOB
SET SERVEROUTPUT ON
DECLARE
clob_var CLOB;
amount INTEGER;
offset INTEGER;
output_var VARCHAR2(100);
BEGIN
SELECT chapter_text INTO clob_var FROM my_book_text WHERE chapter_id=5;
amount := 24; -- 要读取的字符数
offset := 1; -- 起始位置
DBMS_LOB.READ(clob_var, amount, offset, output_var);
DBMS_OUTPUT.PUT_LINE(output_var);
END;
2.3 属性类型:提供表示表中一行的记录类型
%TYPE 引用变量和数据库列的数据类型
%ROWTYPE 提供表示表中一行的记录类型
2.4 变量赋值
定义用户变量
SQL>DEFINE deptname = sales;
显示变量:
SQL>DEFINE deptname;
DEFINE deptname = "sales" (CHAR)
释放变量:
UNDEFINE deptname;
当使用DEFINE命令来定义一个包含空格的变量时,要用单引号将该变量括起来。
SQL>SELECT *
FROM dept
WHERE dname = UPPER('&deptname');
使用赋值语句 :=
使用 SELECT INTO 语句
2.5 替换变量
使用带有一个&号的变量值来提示用户输入一个值.
SET VERIFY ON
SQL> SELECT empno, ename, sal, deptno
FROM emp
WHERE empno = &employee_num;
Enter value for employee_num: 7369
使用 SET VERIFY 命令:显示用某个具体值替换变量名之前和之后的命令文本
old 3: WHERE empno = &employee_num
new 3: WHERE empno = 7369
使用单引号标志替换变量中的日期和字串值
SELECT ename, deptno, sal*12
FROM emp
WHERE job='&job_title';
使用带有两个&的变量可以使得该变量可以重复使用,而不必在每次使用时提醒用户输入.
SELECT empno, ename, job, &&column_name
FROM emp
ORDER BY &column_name;
Enter value for column_name: deptno