1.用户管理
(1)建立用户(数据库验证)
CREATE USER smith
IDENTIFIED BY smith_pwd
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 5m ON users;
(2)修改用户
ALTER USER smith
QUOTA 0 ON SYSTEM;
(3)删除用户
DROP USER smith;
DROP USER smith CASCADE;
(4)显示用户信息
DBA_USERS
DBA_TS_QUOTAS
2.系统权限
系统权限
作用
CREATE SESSION
连接到数据库
CREATE TABLE
建表
CREATE TABLESPACE
建立表空间
CREATE VIEW
建立视图
CREATE SEQUENCE
建立序列
CREATE USER
建立用户
系统权限是指执行特定类型SQL命令的权利,用于控制用户可以执行的一个或一类数据库操作。(新建用户没有任何权限)
(1)授予系统权限
GRANT CREATE SESSION,CREATE TABLE
TO smith;
GRANT CREATE SESSION TO smith
WITH ADMIN OPTION;
选项:ADMIN OPTION 使该用户具有转授系统权限的权限。
(2)显示系统权限
查看所有系统权限:
system_privilege_map
显示用户所具有的系统权限:
dba_sys_privis
显示当前用户所具有的系统权限:
user_sys_privis
......
1.用户管理
(1)建立用户(数据库验证)
CREATE USER smith
IDENTIFIED BY smith_pwd
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 5m ON users;
(2)修改用户
ALTER USER smith
QUOTA 0 ON SYSTEM;
(3)删除用户
DROP USER smith;
DROP USER smith CASCADE;
(4)显示用户信息
DBA_USERS
DBA_TS_QUOTAS
2.系统权限
系统权限
作用
CREATE SESSION
连接到数据库
CREATE TABLE
建表
CREATE TABLESPACE
建立表空间
CREATE VIEW
建立视图
CREATE SEQUENCE
建立序列
CREATE USER
建立用户
系统权限是指执行特定类型SQL命令的权利,用于控制用户可以执行的一个或一类数据库操作。(新建用户没有任何权限)
(1)授予系统权限
GRANT CREATE SESSION,CREATE TABLE
TO smith;
GRANT CREATE SESSION TO smith
WITH ADMIN OPTION;
选项:ADMIN OPTION 使该用户具有转授系统权限的权限。
(2)显示系统权限
查看所有系统权限:
system_privilege_map
显示用户所具有的系统权限:
dba_sys_privis
显示当前用户所具有的系统权限:
user_sys_privis
......
1. 定义游标定义
游标语句的核心是定义了一个游标标识名,并把游标标识名和一个查询语句关联起来。DECLARE语句用于声明游标,它通过SELECT查询定义游标存储的数据集合。语句格式为:
DECLARE 游标名称 [INSENSITIVE] [SCROLL]
CURSOR FOR select语句
[FOR{READ ONLY|UPDATE[OF 列名字表]}]
参数说明:
INSENSITIVE选项:说明所定义的游标使用SELECT语句查询结果的拷贝,对游标的操作都基于该拷贝进行。因此,这期间对游标基本表的数据修改不能反映到游标中。这种游标也不允许通过它修改基本表的数据。
SCROLL选项:指定该游标可用所有的游标数据定位方法提取数据,游标定位方法包括PRIOR、FIRST、LAST、ABSOLUTE n 和RELATIVE n 选项。
Select语句:为标准的SELECT查询语句,其查询结果为游标的数据集合,构成游标数据集合的一个或多个表称作游标的基表。
在游标声明语句中,有下列条件之一时,系统自动把游标定义为INSENSITIVE游标:
SELECT语句中使用了DISTINCT、UNION、 GROUP BY或HAVING等关键字;
任一个游标基表中不存在唯一索引。
其他
READ ONLY选项:说明定义只读游标。
UPDATE [OF 列名字表]选项:定义游标可修改的列。如果使用OF 列名字表选项,说明 ......
oracle 同义词 synonym 为数据库对象建立同义词后,当dba对数据库对象(table,view,序列)做了一个简单改动之后,如名字或者结构改变,则不需要重新更改并编译应用.在数据库字典中有定义,不需要进行任何存储.
oracle别名alias,With as 生成一个临时表,对于复杂的数据查询,可以减少资源消耗、提高性能。9i引入。
with alias as (sql_statement) select * from alias
PHP code:
Connected to Oracle9i Enterprise Edition Release 9.2.0.1.0
Connected as scott
SQL>
SQL> WITH emp AS (SELECT * from dept)
2 SELECT * from emp
3 ;
DEPTNO DNAME LOC
------ -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30  ......
oracle 同义词 synonym 为数据库对象建立同义词后,当dba对数据库对象(table,view,序列)做了一个简单改动之后,如名字或者结构改变,则不需要重新更改并编译应用.在数据库字典中有定义,不需要进行任何存储.
oracle别名alias,With as 生成一个临时表,对于复杂的数据查询,可以减少资源消耗、提高性能。9i引入。
with alias as (sql_statement) select * from alias
PHP code:
Connected to Oracle9i Enterprise Edition Release 9.2.0.1.0
Connected as scott
SQL>
SQL> WITH emp AS (SELECT * from dept)
2 SELECT * from emp
3 ;
DEPTNO DNAME LOC
------ -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30  ......
DBO是每个数据库的默认用户,具有所有者权限,即DbOwner
通过用DBO作为所有者来定义对象,能够使数据库中的任何用户引用而不必提供所有者名称。
比如:你以User1登录进去并建表Table,而未指定DBO,
当用户User2登进去想访问Table时就得知道这个Table是你User1建立的,要写上User1.Table,如果他不知道是你建的,则访问会有问题。
如果你建表时把所有者指给了Dbo,则别的用户进来时写上Dbo.Table就行了,不必知道User1。
不光表是如此,视图等等数据库对象建立时也要如此才算是好。
建表、存储过程、视图等数据库对象时,其对应的所有者是创建它的用户。则除了该用户其他登录用户要引用这些东东时,都要加上前缀,很是麻烦。而且,程序因此易出错,你查来查去问题确出在这,浪费你时间。 ......
问:怎样在一个UPDATE语句中使用表B的三个列更新表A中的三个列?
答:对这个问题,您可以使用强大的关系代数。本页中的代码说明了如何组合使用from子句和JOIN操作,以达到用其他表中数据更新指定列的目的。在设计关系表达式时,您需要决定是否需要单一行匹配多个行(一对多关系),或者需要多个行匹配被联接表中的单一行以更新所有行(多对一关系)。
在一对多关系中,SQL Server始终使用它找到的最后一行更新数据。但是,您无法控制最后一行所在的位置。在多处理器的计算机上,查询可能是同步进行的,相同的查询最后一行的位置可能会不同。因此,Microsoft建议尽量不要使用一对多关系。
如果待更新的表与from子句中的表相同,并且from子句只包含对该表的一个引用,别名可能未被指定。如果待更新的表在from子句中出现了多次,只有该表的一个引用可以省略表的别名,对该表的所有其他引用必须包含一个表别名。
USE tempdb
GO
CREATE TABLE #t1 (c1 int NOT NULL, c2 char(5), c3 char(5),
c4 char(5))
GO
CREATE TABLE #t2 (c1 int NOT NULL, c2 char(5), c3 char(5),
c4 char(5))
GO
--数据赋值
INSERT #t1 values (1,'hello','there',' ......
问:怎样在一个UPDATE语句中使用表B的三个列更新表A中的三个列?
答:对这个问题,您可以使用强大的关系代数。本页中的代码说明了如何组合使用from子句和JOIN操作,以达到用其他表中数据更新指定列的目的。在设计关系表达式时,您需要决定是否需要单一行匹配多个行(一对多关系),或者需要多个行匹配被联接表中的单一行以更新所有行(多对一关系)。
在一对多关系中,SQL Server始终使用它找到的最后一行更新数据。但是,您无法控制最后一行所在的位置。在多处理器的计算机上,查询可能是同步进行的,相同的查询最后一行的位置可能会不同。因此,Microsoft建议尽量不要使用一对多关系。
如果待更新的表与from子句中的表相同,并且from子句只包含对该表的一个引用,别名可能未被指定。如果待更新的表在from子句中出现了多次,只有该表的一个引用可以省略表的别名,对该表的所有其他引用必须包含一个表别名。
USE tempdb
GO
CREATE TABLE #t1 (c1 int NOT NULL, c2 char(5), c3 char(5),
c4 char(5))
GO
CREATE TABLE #t2 (c1 int NOT NULL, c2 char(5), c3 char(5),
c4 char(5))
GO
--数据赋值
INSERT #t1 values (1,'hello','there',' ......