Oracle的相关操作
创建用户:
sqlplus /nolog 连接Oracle
conn username/password; 登录用户
创建用户:
CREATE USER username
IDENTIFIED BY password
DEFAULT TABLESPACE tablespacename
TEMPORARY TABLESPACE tablespacename
QUOTA size ON tablespacename;//磁盘限额
create user c##test_user
identified by oracle
default tablespace users
temporary tablespace temp;
查看用户信息:
查看用户信息:
dba_users
user_objects
desc dba_users;
desc user_objects;
select * from dba_users;
select * from user_objects;
修改用户:
修改用户:
修改密码
Alter user 用户名 identified by newpwd
password
用户锁定与解锁
Alter user username account lock
Alter user username account unlock
分配表空间配额
Alter user username quota size on tablespace
删除用户:
删除用户:
drop user username [cascade]
(1)如果用户方案中包括任何对象,在删除用户时,必须加上cascade短语。
(2)如果用户当前正与Oracle服务器连接,则不能删除。
(3)只有管理员才能删除用户
授权:
Grant 系统权限 to user
Grant 对象权限 on 数据对象 to user
grant create session to xiaoming
grant select on emp to xiaoming
Oracle创建视图
create view操作语法
CREATE [OR REPLACE] VIEW view_name [(column_aliases)] AS
defining-query
[WITH READ ONLY]
[WITH CHECK OPTION]
* OR REPLACE - OR REPLACE选项取代了现有视图的定义。如果已授予该视图的各种权限,则非常方便。因为当使用DROP VIEW和CREATE VIEW来更改视图的定义时,Oracle会删除视图特权,这可能不是您想要的。 为了避免这种情况,可以使用保留视图特权的CREATE OR REPLACE子句。
* FORCE - 通常,基于现有的表创建一个新的视图。 但是,有时可能希望根据稍后创建的表创建视图,或者在创建视图时没有足够的权限访问表。在这些情况下,可以使用FORCE选项。
* column_aliases - 通常,从定义查询的选择列表派生的视图的列名称。 但是,定义查询的列名可能包含不能用于视图定义的函数或表达式。要解决这个问题,有两个选择:
* 使用符合定义查询的SELECT子句中的命名规则的列别名。
* 为CREATE VIEW和AS子句之间的视图列显式指定列别名。
* AS defining-query - 定义的查询是一个SELECT语句,它定义了视图的列和行。
* WITH READ ONLY - WITH READ ONLY子句防止底层表通过视图进行更改。(只读)
* WITH CHECK OPTION - WITH CHECK OPTION子句保护视图免受对基础表的任何更改,这些更改将生成未包含在定义查询中的行。
CREATE VIEW employee_yos (employee_id, full_name, yos) AS
SELECT
employee_id,
first_name || ' ' || last_name,
FLOOR( months_between( CURRENT_DATE, hire_date )/ 12 )
FROM
employees;
CREATE OR REPLACE VIEW customer_credits(
customer_id,
name,
credit
) AS
SELECT
customer_id,
name,
credit_limit
FROM
customers WITH READ ONLY;
CREATE OR REPLACE VIEW backlogs AS
SELECT
product_name,
EXTRACT(
YEAR
FROM
order_date
) YEAR,
SUM( quantity * unit_price ) amount
FROM
orders
INNER JOIN order_items
USING(order_id)
INNER JOIN products
USING(product_id)
WHERE
status = 'Pending'
GROUP BY
EXTRACT(
YEAR
FROM
order_date
),
product_name;
Oracle创建存储过程
语法
可以使用“CREATE PROCEDURE”语句来创建存储过程,基本语法“CREATE [OR REPLACE] PROCEDURE 过程名 [参数列表] IS [...] BEGIN ... END [过程名];”。
CREATE [OR REPLACE] PROCEDURE 过程名 [ (参数 [,参数]) ]
IS
[declaration_section]
BEGIN
executable_section
[EXCEPTION
exception_section]
END [过程名];
IN:这是一个默认参数,它将值传递给子程序。
OUT:必须指定,它向调用者返回一个值。
IN OUT:必须指定,它将初始值传递给子程序并将更新的值返回给调用者。
create or replace procedure "INSERTUSER"
(id IN NUMBER,
name IN VARCHAR2)
is
begin
insert into user values(id,name);
end;
BEGIN
insertuser(101,'Maxsu');
dbms_output.put_line('record inserted successfully');
END;