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