1. sql(Structured Query Language)是关系型数据库的基本操作语言。
包括数据库查询 (Data Query), 数据操纵 (Data Manipulation),数据定义 (Data Definition)和数据控制 (Data Control)。
数据库查询 (Data Query):用于检索数据,也就是select语句。
数据操纵 (Data Manipulation Language DML):用于改变数据,包括insert,update和delete。DML不会自动提交事物。
事物控制语句 (Transactional Control Language TCL):用于维护数据的一致性,包括commit, rollback和savepoint;其中savepoint语句用于设置保存点,以恢复部分数据的更改。
数据定义 (Data Definition Language DDL):用于建立,修改和删除数据对象。create,alter和 drop;DDL语句会自动提交事物。
数据控制 (Data Control Language DCL):用于分配和收回权限,包括grant和revoke。DCL也会自动提交事物。
2.sql语句规则
sql语句的关键子不区分大小写;对象名和列名不区分大小写。
3.pl/sql 是oracle在标准sql基础上的扩展,允许定义变量和常量,允许过程语言结构(条件分支和循环)允许异常处理。
4.distinct 作用是要查询的所有数据,而不仅仅是紧跟它后面的那列。
selecte distinct a,b from table; --返回数据的条件是a相等且b必须相等distinct 可否放在列的中间那?
5.NVL(expr1,expr2)
如果expr1是null,则返回expr2,否则返回expr1,expr1和expr2可以是任意数据类型,但两者必须匹配。
NVL2(expr1,expr2,expr3)
如果expr1不是null则返回expr2,否则返回expr3。expr1可以是任意数据类型,而expr2和expr2可以是除LONG之外的其它类型。但是三者数据类型必须一致。
6.插入数据
不使用列插入单行数据: 必须提供所有列的数据,数据的顺序与列的顺序一致。
insert into emp values(1,'gaci','man');
使用列插入单行数据: 对于未出现的列,默认值为null
insert into emp(id,name,sex) values(1,'gaci','man');
使用只查询插入数据:-- 将表emp2的数据全部复制到emp1里面
insert into emp1(id,name,sex) select id,name,sex from emp2;
insert /*+APPEND*/into emp1(id,name,sex) select id,name,sex from emp2;
/*+APPEND*/表示直接装载方式,主要用于操作大批量数据
delete 删除表中的所有数据时,不会释放表所占用的空间;但是可以回退(roll back)
truncate 不仅删除表的数据,而其释放其空间;不可以回退。
7. 事务控制语句
事务用于确保数据库的一致性,有一组相关的DML语句组成。事务确保该组DML语句所执行的操作要么全部执行成功,要么全部取消。
事务主要有insert,update,delete和selete ... for update 组成,当执行这些语句时事务开始;当执行commit货rollback的时候事务结束。
锁
当执行事务操作时,oracle会在被操作的表上家上锁,以防止其它用户改变表结构;同时会在被操作的行上加上锁,以防止其它事务在相应的行上执行DML操作。
当执行commit语句之后,会确认事务变化(更新数据等), 结束事务,删除保存点,释放锁。
当执行DDl语句时会自动提交事物,create , alter,drop 等。
当执行DCL语句Grant,revoke等
当退化出sql/plus,pl/sql等
回退事务
保存点(savepoint)--是事务中的一点,用于取消部分事务。
设置保存点:savepoint a;
回退保存点:rollback to a ; -- 会取消a和面的操作
取消全部事务:rollback;
只读事务(会话级别的) set transaction read only;
只允许执行查询操作,不允许执行任何DML操作。尽管其它用户会话可能提交新事务,但只读事务不会取得新的数据变化,可以确保用户取得特定时间点的数据信息。
顺序事务 set transaction isolation level serializable;
只读事务可以使用户取得特定时间点的数据信息,但是该用户在只读事务期间不能执行dml操作。而顺序事务则可以这样。
数据分组
数据分组通过使用group by字句,分组函数和having字句共同实现。group by指定要分组的列,分组函数用于统计结果,having用户限制分组显示结果。
分组函数
只能出现在选择列表,order by 和 having字句中,不能出现在where和group by字句中
除了count(*)函数外,其它分组函数都会忽略null行
当执行select语句时,如果选择列表同时包括列,表达式和分组函数,那么这些列和表达式必须出现在group by字句中。
脏数据---未提交事务
--查询带有下划线的名字
select name from emp where name like '%a_%' ESCAPE 'a' -- a为转义字符
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com