SQL语言基础
SQL(structured query language,结构化查询语言),是一种数据库标准语言,其特点如下:
1.所有的数据都存储在关系表中。表由行和列组成,每一行包含一组数据,称为记录;列叫做字段,或者属性。
2.为了防止降低oracle读取记录的效率,这种语言被设计称为永远只允许操作者按查询条件来读取记录,而不是按照某种特定的顺序来取出记录。
3.它不的完整的计算机语言
SQL语言的类型
1.数据定义语言(data definition language,DDL)
这是一组sql命令,用于创建和定义数据库对象,并将这些对象的定义保存在数据字典中,数据定义语言完成的任务有:
·创建数据库对象
·删除数据库对象
·更改数据库对象
·为数据库对象授权
·回收已授权给数据库对象的权限
当用户执行ddl语句时,在每一条ddl语句执行之后,oracle都将提交当前的事物,这叫隐式提交,下面是部分ddl语句
DDL语句 功能
alter procedure 修改存储过程
alter table 修改表(增加列,重定义表列,更改存储分配)
anylyze 收集数据库对象的性能统计值并送入基于代价的 优化器
alter table add 在已有的表上添加约束
constraint
create table 创建表
create index 建立索引
drop index 删除索引
drop table 删除表
truncate 删除表中所有的行
grant 将权限或者角色授予用户或其他角色
revoke 从用户或数据库角色回收权限
❤ddl语句是自动提交的,执行完ddl语句后不能回滚
2.数据操纵语言(data manipulation language,dml)
dml是用户用来处理数据库中的数据内容的sql命令,下面是部分dml语句
DML语句 功能
insert 向表中添加数据
delete 从表中删除数据
update 更新表中的数据
select 从表或者视图中检索数据
commit 把事物所做的更改永久化(写入磁盘)
rollback 作废上次提交以来的所有更改
提交和回滚事物处理
事物:多个sql语句被当做单个工作单元来处理的机制。事物时最小的逻辑工作单元。事物具有下面的特点:
·一致性:同时进行查询或者更新不会发生冲突,其他用户不会看到发生了变化但尚未提交的数据
·可恢复性:当系统故障发生时,数据库会自动完全恢复为完成的事物
事物的提交用commit命令,回滚用rollback命令。如果在一个事物中,包含了ddl语句,那么在此ddl语句前后都要隐式的执行commit命令。
Rollback命令可以回滚事物,但是首先的有保存点:
savapoint sname ;
rollback sname ;
提交事物分3种
·显式提交
Commit ;
·隐式提交
一些sql命令的执行就是隐式提交,这些语句为:
alter , audit , commit , connect , create , disconnect , drop , exit , grant , noaudit , quit , revoke , rename
·自动提交
若把autocommit选项设置为on,则在插入、修改、删除语句执行后,系统将自动进行提交,格式:
set autocommit on ;开启自动提交
set autocommit off ;关闭自动提价
事物处理
事物是很多关系紧密的一系列sql命令的有机结合,共同组成一个工作单元;事物是最小的逻辑工作单元,oracle将以逻辑工作单元为单位保证数据的一致性,也就是将数据处理命令批量的提交给oracle数据库处理。
读写事物处理
默认状态下,当oracle为一个会话开始一个新的事物时,该事物是可读写的。通常,一个可读写的事物可以包含任何类型的sql语句,包括dml语句,如查询,更新,删除。也可以使用sql命令来现实声明一个事物为可读写事物,如下
set transaction read write ;
只读事物处理
只读事物只含有查询,即只读操作不以任何形式修改数据库。通过下面的命令来声明一个事物是只读的:
set transaction read only ;
此时,oracle为该事物保证了事物级别上的读一致,这意味着,即使其他事物对数据库进行修改并提交了工作,该事务的所有查询结果所反映的数据库数据与事物开始时保持一致