SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体的,主要特点包括:
(1)综合统一,语言风格统一。
(2)高度非过程化,只要提“做会么”,而无须指明“怎么做”
(3)面向集合的操作方式
(4)以同一种语法结构提供两种使用方式(自含式语言、嵌入式语言)
(5)易学易用
SQL的数据定义功能包含定义表、定义视图和定义索引。
Oracle的完整性:
(1)实体完整性(主码)
(2)参照完整性(外码)
(3)用户自定义完整性,NOT NULL(列值非空)、UNIQUE(列值唯一)、CHECK语句(检查列值是否满足一个bool表达式)
索引
建立或删除索引由DBA或建立表的人负责完成。系统在存取数据时会自动选择合适的索引作存储路径,用户不必也不能选择索引。SQL中建立索引的一般格式:
create [unique] [cluster] index <索引名>
on <表名> (<列名> [<次序>][,<列名> [<次序>]]...)
unique:表明此索引的每一个索引值只对应唯一的数据记录
cluster:指索引项的顺序与表中记录的物理顺序一致,因此一个表只能有一个聚簇索引,SQL通过聚簇索引排序。
次序:可选asc(升序)或desc,缺省asc
主码unique索引由DBMS完成,索引一经建立,就由系统使用和维护它。在SQL中,索引没有个性,只有删除重新定义。删除索引时,系统会同时在数据字典中删除有关该索引的描述,数据字典的作用是存放数据定义。
集函数只能用于select、having,where子名与having的区别在于作用的对象不同,where子句作用于基本表或视图,而having短语作用于组,选择满足条件的组。
嵌套查询:在一个查询中嵌套另一个查询块的查询。子查询的select语句中不能使用order by子名,order by子名只能对最终查询结果排序。
SQL中数据的更新包括插入数据、修改数据和删除数据。
insert into <table> [(属性列[,属性列]...)]
values (常量[,常量]...)
into子名中没有出现的属性列,新记录在这些列上将取空值,
update <table>
set 列名=表达式 [,列名=表达式]...
[where子句]
功能是满足where子名条件的元组,用set的值取代相应属性列的值。
delete from <table>
[where 子句]
功能是指满足where子名的条件的所有元组删除,但表的定义仍在字典中。
数据操作(值):insert、delete、update
结构操作(型):create、alter、drop
grant 权限 [,权限]...
[on 对象类型 对象名]
to 用户 [,用户]
[with grant option]
如果指定了with grant option子名,则获得某种权限的用户还可以把这种权限再授予其他用户。
revoke 权限 [,权限]...
[on 对象类型 对象名]
to 用户 [,用户]
收回权限的操作会级联下去。
最后欢迎大家访问我的个人网站: 1024s