**学习使用的版本:oracle 11g**
用户名:dbsnmp
密码: dbsnmp
sys 默认密码 :manager 超级用户 最高权限,具有sysdba角色,有create database 权限
system 默认密码 :manager 操作员 sysoper角色 没有create database 权限
oracle 第三方操作工具 ps/sql developer
sys 登陆sqlplus 输入: sys as sysdba
创建用户 create user (sys权限)
create user username identified by password
例:create user blatar identified by a123
修改密码
sys(dba权限) :password username
删除用户(dba权限)如果被删除用户已经有表,删除时带一个参数:cascade(和表一起删除)
sys(dba权限):drop username
指定权限 grant
grant connect to username(系统权限)
收回权限 revoke
revoke select on tablename from username
权限包含:系统权限 对象权限
系统权限:用户对数据库的权限(140多种)
对象权限:用户对其他用户的数据对象的访问权限(25种)select update delete insert all(前四种)
数据对象:表,视图,存储过程,触发器,序列,同义词,函数,过程,包等等
角色:分为自定义角色和预定义角色(connect,dba,resource);
对象权限
grant select on tablename to username
权限的传递:
对象权限:grant select on tablename to username with grant option
系统权限:grant connect to username with admin option
如果收回对象权限,传递的权限一起回收
表属于用户
profile 用户口令操作(dba权限)
创建profile文件
create profile profileName limit failed_login_attempts 3 passord_lock_time 2(天)
使用约束
alter user username profile profileName
解锁
alter user username account unlock
终止口令,定期修改密码
create profile profileName limit password_life_time 10(天) passord_grace_time 2(天,宽限期)password_reuse_time 10(口令重用时间)
删除profile
drop profile profileName [cascade]
表的操作:
表名:
必须字母开头
长度不超过30个字符
不能使用oracle保留字
只能使用以下字符 A-Z,a-z,0-9,$,#
数据类型:
字符型:
char 定长,最大2000字符,查询速度快
varchar2 变长,最大4000字符,节省空间
clob 字符型大对象,最大4G
数字型:
number 范围-10^38--10^38
number(5,2) 5位,包含2位小数
number(5) 5位整数
日期类型:
date 年月日时分秒
timestamp
数据类型
blob 二进制数据 图片/声音,最大4G
修改日期默认格式
默认格式:DD-MON-YY 例 09-10月-99 表示 1999年10月9日
alert session set nls_date_format = 'yyyy-mm-dd’
查看表结构 desc(ribe)
打开显示操作时间的开关:set timing on/off
nvl函数 nvl(columnName,default)
日期比较 where date > '1-1月-1982' 使用固定格式
% 0到多个字符 _ 任意单个字符
??????命名规则
字段别名需要 "" 括起来
顺序 group by having order by
多行子查询 all any
多列子查询 where (column1,column2) in (select column1,column2 from where ...)
可以把子查询的结果作为一张字表,用别名来命名
oracle分页最常用的方式(共三种)
rownnum方式
1.rownum
select a1.*,rownum rn from (select * from tableName) a1
2.行号小于10
select a1.*,rownum rn from (select * from tableName) a1 where rownum <=10;
3.行号在6-10
select * from (select a1.*,rownum rn from (select * from tableName) a1 where rownum <=10) where rn >=6
4.指定查询列,只需修改最里层的查询
5.排序,只需修改最里面的语句
????
rowid方式,效率高
利用查询结果创建一张新表
create table newTable (column1,column2) as select column3,column4 from oldTable;
合并查询 union,union all ,minus,intersect