ORACLE
常用的
SQL
语法和数据对象

.
数据控制语句
(DML)
部分
1.INSERT
(
往数据表里插入记录的语句
)
INSERT INTO
表名
(
字段名
1,
字段名
2, ……) VALUES (

1,

2, ……);
INSERT INTO
表名
(
字段名
1,
字段名
2, ……)
SELECT (
字段名
1,
字段名
2, ……) FROM
另外的表名
;
字符串类型的字段值必须用单引号括起来
,
例如
: ’GOOD DAY’
如果字段值里包含单引号

需要进行字符串转换
,
我们把它替换成两个单引号
''.
字符串类型的字段值超过定义的长度会出错
,
最好在插入前进行长度校验
.
日期字段的字段值可以用当前数据库的系统时间
SYSDATE,
精确到秒
或者用字符串转换成日期型函数
TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)
TO_DATE()
还有很多种日期格式
,
可以参看
ORACLE DOC.

-

-
日 小时
:
分钟
:
秒 的格式
YYYY-MM-DD HH24:MI:SS
INSERT
时最大可操作的字符串长度小于等于
4000
个单字节
,
如果要插入更长的字符串
,
请考虑字段用
CLOB
类型
,
方法借用
ORACLE
里自带的
DBMS_LOB
程序包
.
INSERT
时如果要用到从
1
开始自动增长的序列号
,
应该先建立一个序列号
CREATE SEQUENCE
序列号的名称
(
最好是表名
+
序列号标记
) INCREMENT BY 1
START
WITH
1
MAXVALUE
99999
CYCLE
NOCACHE;
其中最大的值按字段的长度来定
,
如果定义的自动增长的序列号
NUMBER(6) ,
最大值为
999999
INSERT
语句插入这个字段值为
:
序列号的名称
.NEXTVAL
2.DELETE
(
删除数据表里记录的语句
)
DELETE FROM
表名
WHERE
条件
;
注意:删除记录并不能释放
ORACLE
里被占用的数据块表空间
.
它只把那些被删除的数据块标成
unused.
如果确实要删除一个大表里的全部记录
,
可以用
TRUNCATE
命令
,
它可以释放占用的数据块表空间
TRUNCATE TABLE
表名
;
此操作不可回退
.
3.UPDATE
(
修改数据表里记录的语句
)
UPDATE
表名
SET
字段名
1=

1,
字段名
2=

2, …… WHERE
条件
;
如果修改的值
N
没有赋值或定义时
,
将把原来的记录内容清为
NULL,
最好在修改前进行非空校验
;

N
超过定义的长度会出错
,
最好在插入前进行长度校验
..
注意事项
:
A.
以上
SQL
语句对表都加上了行级锁
,
确认完成后
,
必须加上事物处理结束的命令
COMMIT
才能正式生效
,
否则改变不一定写入数据库里
.
如果想撤回这些操作
,
可以用命令
ROLLBACK
复原
.
B.
在运行
INSERT, DELETE

UPDATE
语句前最好估算一下可能操作的记录范围
,
应该把它限定在较小
(
一万条记录
)
范围内
,.
否则
ORACLE
处理这个事物用到很大的回退段
.
程序响应慢甚至失去响应
.
如果记录数上十万以上这些操作
,
可以把这些
SQL
语句分段分次完成
,

其间加上
COMMIT
确认事物处理
.


.
数据定义
(DDL)
部分
1.CREATE (
创建表
,
索引
,
视图
,
同义词
,
过程
,
函数
,
数据库链接等
)
ORACLE
常用的字段类型有
CHAR
固定长度的字符串
VARCHAR2
可变长度的字符串
NUMBER(M,N)

数字型
M
是位数总长度
, N
是小数的长度
DATE
日期类型
创建表时要把较小的不为空的字段放在前面
,
可能为空的字段放在后面
创建表时可以用中文的字段名
,
但最好还是用英文的字段名
创建表时可以给字段加上默认值
,
例如
DEFAULT SYSDATE
这样每次插入和修改时
,
不用程序操作这个字段都能得到动作的时间
创建表时可以给字段加上约束条件
例如 不允许重复
UNIQUE,
关键字
PRIMARY KEY
2.ALTER

(
改变表
,
索引
,
视图等
)
改变表的名称
ALTER TABLE
表名
1
TO
表名
2;
在表的后面增加一个字段
ALTER TABLE
表名
ADD
字段名 字段名描述
;
修改表里字段的定义描述
ALTER TABLE
表名
MODIFY
字段名 字段名描述
;
给表里的字段加上约束条件
ALTER TABLE
表名
ADD CONSTRAINT
约束名
PRIMARY KEY (
字段名
);
ALTER TABLE
表名
ADD CONSTRAINT
约束名
UNIQUE (
字段名
);
把表放在或取出数据库的内存区
ALTER TABLE
表名
CACHE;
ALTER TABLE
表名
NOCACHE;
3.DROP
(
删除表
,
索引
,
视图
,
同义词
,
过程
,
函数
,
数据库链接等
)
删除表和它所有的约束条件
DROP TABLE
表名
CASCADE CONSTRAINTS;
4.TRUNCATE (
清空表里的所有记录
,
保留表的结构
)
TRUNCATE
表名
;

.
查询语句
(SELECT)
部分
SELECT
字段名
1,
字段名
2, …… FROM
表名
1, [
表名
2, ……] WHERE
条件
;
字段名可以带入函数
例如
:
COUNT(*), MIN(
字段名
),
MAX(
字段名
),
AVG(
字段名
), DISTINCT(
字段名
),
TO_CHAR(DATE
字段名
,'YYYY-MM-DD HH24:MI:SS')
NVL(EXPR1, EXPR2)
函数
解释
:
IF EXPR1=NULL
RETURN EXPR2
ELSE
RETURN EXPR1
DECODE(AA

V1

R1

V2

R2....)
函数
解释
:
IF AA=V1 THEN RETURN R1
IF AA=V2 THEN RETURN R2
..…
ELSE
RETURN NULL
LPAD(char1,n,char2)
函数
解释
:
字符
char1
按制定的位数
n
显示,不足的位数用
char2
字符串替换左边的空位
字段名之间可以进行算术运算
例如
:
(
字段名
1*
字段名
1)/3
查询语句可以嵌套
例如
: SELECT …… FROM
(SELECT …… FROM
表名
1, [
表名
2, ……] WHERE
条件
) WHERE
条件
2;
两个查询语句的结果可以做集合操作
例如
:
并集
UNION(
去掉重复记录
),
并集
UNION ALL(
不去掉重复记录
),
差集
MINUS,
交集
INTERSECT
分组查询
SELECT
字段名
1,
字段名
2, …… FROM
表名
1, [
表名
2, ……] GROUP BY
字段名
1
[HAVING
条件
] ;
两个以上表之间的连接查询
SELECT
字段名
1,
字段名
2, …… FROM
表名
1, [
表名
2, ……] WHERE

表名
1.
字段名
=
表名
2.
字段名
[ AND ……] ;
SELECT
字段名
1,
字段名
2, …… FROM
表名
1, [
表名
2, ……] WHERE
表名
1.
字段名
=
表名
2.
字段名
(+) [ AND ……] ;

(+)
号的字段位置自动补空值
查询结果集的排序操作
,
默认的排序是升序
ASC,
降序是
DESC
SELECT
字段名
1,
字段名
2, …… FROM
表名
1, [
表名
2, ……]
ORDER BY
字段名
1,
字段名
2 DESC;
字符串模糊比较的方法
INSTR(
字段名
, ‘
字符串
’)>0
字段名
LIKE

字符串
%’
[‘%
字符串
%’]
每个表都有一个隐含的字段
ROWID,
它标记着记录的唯一性
.

.ORACLE
里常用的数据对象
(SCHEMA)
1.
索引
(INDEX)
CREATE INDEX
索引名
ON
表名
(
字段
1, [
字段
2, ……] );
ALTER INDEX
索引名
REBUILD;
一个表的索引最好不要超过三个
(
特殊的大表除外
),
最好用单字段索引
,
结合
SQL
语句的分析执行情况
,
也可以建立多字段的组合索引和基于函数的索引
ORACLE8.1.7
字符串可以索引的最大长度为
1578
单字节
ORACLE8.0.6
字符串可以索引的最大长度为
758
单字节
ORACLE DOC
上说字符串最大可以建索引的长度约是
:
数据块的大小
(db_block_size)*40%
2.
视图
(VIEW)
CREATE VIEW
视图名
AS SELECT …. FROM …..;
ALTER VIEW
视图名
COMPILE;
视图仅是一个
SQL
查询语句
,
它可以把表之间复杂的关系简洁化
.
3.
同义词
(SYNONMY)
CREATE SYNONYM
同义词名
FOR
表名
;
CREATE SYNONYM
同义词名
FOR
表名
@
数据库链接名
;
4.
数据库链接
(DATABASE LINK)
CREATE DATABASE LINK
数据库链接名
CONNECT TO
用户名
IDENTIFIED BY
密码
USING ‘
数据库连接字符串
’;
数据库连接字符串可以用
NET8 EASY CONFIG
或者直接修改
TNSNAMES.ORA
里定义
.
数据库参数
global_name=true
时要求数据库链接名称跟远端数据库名称一样
数据库全局名称可以用以下命令查出
SELECT * FROM GLOBAL_NAME;
查询远端数据库里的表
SELECT …… FROM
表名
@
数据库链接名
;

.
权限管理
(DCL)
语句
1.GRANT

赋于权限
常用的系统权限集合有以下三个
:
CONNECT(
基本的连接
), RESOURCE(
程序开发
), DBA(
数据库管理
)
常用的数据对象权限有以下五个
:
ALL
ON
数据对象名
,

SELECT ON
数据对象名
,

UPDATE ON
数据对象名
,
DELETE

ON
数据对象名
,
INSERT ON
数据对象名
,
ALTER
ON
数据对象名
GRANT CONNECT, RESOURCE TO
用户名
;
GRANT SELECT ON
表名
TO
用户名
;
GRANT SELECT, INSERT, DELETE ON
表名
TO
用户名
1,
用户名
2;
2.REVOKE
回收权限
REVOKE CONNECT, RESOURCE FROM
用户名
;
REVOKE SELECT ON
表名
FROM
用户名
;
REVOKE SELECT, INSERT, DELETE ON
表名
FROM
用户名
1,
用户名
2;

本文来自: 中国自学编程网(www.zxbc.cn) 详细出处参考:http://www.zxbc.cn/html/20071020/28290_3.html

ORACLE基础语法学习相关推荐

  1. Oracle PL/SQL基础语法学习13:比较运算符

    系列文章目录 Oracle PL/SQL基础语法学习12:短路求值 Oracle PL/SQL基础语法学习13:比较运算符 Oracle PL/SQL基础语法学习14:BOOLEAN表达式 文章目录 ...

  2. Python基础语法学习笔记

    Python基础语法学习笔记 想淘宝省钱看我简介,博客www.liangxin.name (一) 一.Print()函数 1.数字可以直接输出,无需加引号 只能理解数字,却读不懂文字.因为数字和数学运 ...

  3. 【C++学习之路】第二章——C++基础语法学习(1)之黑客攻击系统

    2 C++基础语法学习(1)之黑客攻击系统 遵循原则:从实战中学习知识 法律声明:本系统仅能攻击自己搭建的网站,作为学习使用,不会触犯法律 time:2020.01.20 author:姜海天 IDE ...

  4. Python基础语法学习6

    基础语法学习Day6 元组 1.元组就是不可变的列表 2.元组特有的一些方法和功能 (1)只有一个元素的元组:()中唯一的元素后需要添加逗号 (2)直接多个数据用逗号隔开表示的也是一个元组(元组的括号 ...

  5. Go基础语法学习总结

    Go基础语法学习总结 一.基础语法 1.常见数据类型 数据类型包括有:布尔类型.字符串类型.数字类型(整型.浮点型.复数等).派生类型(数组类型.slice 切片类型.map 集合类型.struct ...

  6. Oracle存储过程语法学习

    Oracle存储过程: 1.1 第一个存储过程 --创建存储过程 create or replace procedure proc1( p_para1 varchar2, p_para2 out va ...

  7. 【Day4 C语言基础语法学习-3】

    Day4 C语言基础语法学习-3 一 数组 1.1 数组的概念 1.2 一维数组 1.2.1 一维数组的定义 1.2.2 一维数组的性质 1.3 一维数组的初始化和遍历 1.4 冒泡排序法 二.二维数 ...

  8. 【Day3 C语言基础语法学习-2】

    Day3 C语言基础语法学习-2 一.输入输出函数 1.1 getchar()/putcgar() 1.1.1getchar() 1.1.2 putchar 1.2 gets()/puts() 1.2 ...

  9. Day5:Java基础语法学习6.9

    总目标:学会JAVA 本周目标:Java的入门知识(6.5--6.12) 今日目标:Java基础语法学习(1)6.9 注释 注释并不会被执行,是给我们写代码的人看的 Java中的注释有三种: 单行注释 ...

最新文章

  1. U盘中病毒,文件消失或不显示
  2. 【Machine Learning】决策树之ID3算法 (2)
  3. map:根据 value 找 key ?
  4. xlwt+xlrd配合使用修改excel表格
  5. python 函数进度条怎么_python输出结果刷新及进度条的实现操作
  6. python selenium ---键盘事件
  7. Scala模式匹配和类型系统
  8. Open Live Writer - TargetInvocationException
  9. 线性回归(二)---多元线性回归
  10. vue让元素固定_vue 监听dom元素的滚动事件 实现某元素吸顶或者固定位置显示
  11. Python并发编程之线程中的信息隔离(五)
  12. a better git log
  13. C++ 好的博客??
  14. 实现统计二叉树叶子节点个数的算法
  15. android验证数字字母和特殊字符,正则表达式必须包含字母数字和特殊字符
  16. JavaWeb:request.setAttribute()和session.setAttribute()的区别
  17. cocos creator 3D | 拇指投篮 | 3D项目入门实战
  18. 获取google Map API Key方法
  19. 山东理工大学ACM平台题答案关于C语言 2098 识别浮点常量问题
  20. python官网网址是什么意思_python官网是什么

热门文章

  1. 经典C语言程序100例之六三
  2. 根据名字预测性别——朴树贝叶斯分类器
  3. 13-19 Python Number、Python字符串、Python列表(List)、集合的基本操作、元组、字典Dicttionnary、日期和时间
  4. Java.util.Date类型的转化成为数据库中的Date类型。
  5. 处理字符串_9_合并多行到一行
  6. CentoS8 Mysql8 数据目录迁移
  7. noa格式转java_用IDEA查看反编译 - osc_1loi8uc4的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. 在centos6中安装2.4版本的HTTPd
  9. python 将ipv4的格式转换
  10. 机器学习算法在自动驾驶领域的应用大盘点!