首页 > 代码库 > 整理的Oracle常用语句
整理的Oracle常用语句
3个默认用户
sys change_on install [as sysdba]
system manager
scott tiger
创建用户
create user 用户名 identified by 密码 defaul tablespace 表空间(Users) temporary tablespace 表空间(Temp) quota 整数 on 表空间(Users);--quota(限额) 临时表空间不能使用限额
修改密码
alter user scott identified by tiger;
删除用户
drop user 用户名 [cascade];--cascade表示删除用户所有对象
限制用户
使用下面的语句解锁scott: alter user scott account unlock;
解锁之后可能会要求你改密码:alter user scott identified by tiger;
用户加锁:alter user 用户名 account lock;
用户口令即刻失效:alter user 用户名 password expire;
系统权限
赋予权限
grant create session to lisi;创建会话
grant create table to lisi;可以创建表
grant unlimited tablespace to lisi;给表空间
grant connect to lisi;连接至数据库,并创建数据库对象
grant resource to lisi;允许用户使用数据库中的存储空间
grant create sequence to lisi;在当前模式中创建序列,此权限包含在CONNECT角色中
grant create session,create table,connect,resourse,create sequence to 数据库
撤销权限
revoke create session from lisi;
revoke create table from lisi;
revoke unlimited tablespace from lisi;
revoke create session,create table to 数据库
赋予公共权限
grant create session to public;
查找拥有的系统权限
select * from user_sys_privs;
赋予下一级用户修改所有表的权限
grant alter any table to lisi;
系统 权限传递
grant alter any table to lisi with admin option;--让李四拥有这个权限的管理员身份
创建表
CREATE TABLE martin.t_stu (
f_id char(3) NOT NULL Primary Key,
f_name char(8) NOT NULL ,
f_sex char(1) NOT NULL , f_birth date NULL , f_department char(5) NOT NULL
);
创建表
create table mytable (id int);
查看表结构
desc 表名
查看表拥有的约束
select table_name,constraint_name,constraint_type from user_constraints where table_name = ‘bbsusers‘;
删除约束
alter table bbsusers drop constraint ck_bbsusers_ugender;
更新/修改
update t_score set score = null where sid = 09001;
删除表
drop table 表名;
表的截断(截断表是将表中所有记录删除,但保留表结构)
truncate table 表名 或者 Delete from 表名
插入一行
insert into 表名[列名] values (,,,);
自动增长
create sequence bbsusers_usid minvalue 1 start with 1 increment by 1 cache 300;
删除序列的方法:drop sequence 序列名(bbsusers_usid );
对象权限
赋予
grant select on mytab to lisi;查询权限
grant update on mytab to lisi;更新权限
grant all on mytab to lisi;表的所有权限 插入、删除、更新和查询
撤销
revoke select on mytab from lisi;
revoke all on mytab from lisi;
删除表
drop user lisi cascade;
查找表格拥有的对象权限
select * from user_tab_privs;
对象权限传递
grant select on A to lisi with grant option;--将查询A的权限给lisi,同时让lisi拥有给别人角色
create role 角色名;--创建角色
grant 权限 to 角色名;--给角色赋权
grant 角色名 to 用户;--给用户赋予角色的权限
drop role 角色名;--删除角色
注:有些系统权限无法直接赋予角色
create table--只能给自己创建表 create any table--可以给任意一个用户创建表
alter any table--修改任意表 drop any table--删除任意表
没有的权限[alter table],[drop table]
表是属于某一用户的,角色不属于某一用户
查询A的权限
更新、添加 对象权限可以控制到列
grant update(name) on mytab to lisi;
grant insert(id) on mytab to lisi;
select * from user_col_privs;
注:查询和删除不能控制到列,至少操作一行
ddl dml dcl
数据库的三种验证机制
操作系统验证 sysdba,sysoper
密码文件验证 sysdba,sysoper
数据库验证
linux 下Oracle的启动过程
lsnrctl start
sqlplus sys/oracle as sysdba
startup
windows下Oracle的启动过程
lsnrctl start
oradim -starup -sid orcl
忘记Oracle的SYS用户密码
找到Oracle的安装目录,删除这个文件,删除之前最好备份一下D:\oracle\product\10.2.0\db_1\database\PWDorcl.ora
在cmd下输入 orapwd file=D:\oracle\product\10.2.0\db_1\database\PWDorcl.ora password=oracle entries=10 force=y/n
entries:指定能创建多少个特权用户,force:是否强制覆盖原来的密码
目录要一致,文件名必须要完全一致
利用现有的表创建表语法:
CREATE TABLE <new_table_name> AS SELECT column_names FROM <old_table_name>;
联接查询 查询出每天销售情况:销售日期、零件名称、价格以及零件的供应商及其所处城市
select seldate,f_pname,f_price,f_supname,f_supaddrfrom t_sells SE,t_supplier SU,t_part PA where SE.f_sid=SU.f_sid and SE.f_pid=PA.f_pid;
无条件联接(cross join)
select * from t_product cross join t_supplier; 也可以:select * from t_part,t_supplier;
条件联接(join)-[ inner ] join
例如我们可以联接t_part表和t_sells表以创建显示零件销售情况的结果集,在内联接中,结果集内不包含没有销售记录的零件,也不包含没有零件名的销售记录。
select f_pid,seldate,f_pname from t_product join t_sells on t_product.f_pid=t_sells.proid;
也可以:select f_pid,seldate,f_pname from t_product,t_sells where t_product.f_pid=t_sells.proid;
整理的Oracle常用语句