常用命令
进入登陆 sqlplus
(1) 给用户锁定 alter user scott account look;
给用户解锁 alter user scott account unlook;
(2) show user 显示当前用户名是什么
(3) 切换用户 conn ,例:conn用户名/密码
conn[ect] 用户名/密码@网络[as sysdba /assysoper]
(4) disc 用于断开和oracle的链接,但不退出sqlplus窗口
(5) exit 用户断开和oracle链接,同时退出sqlplus窗口
(6) passw[orcl] 用于修改用户密码
语法:password 用户名;
给自己修改密码,则可以不带用户名,给别人修改(前提sys,system)。
(7) set linesize 140; 设置行数为140。
(8) & 交互命令
(9) edit 命令 用于编辑脚本
(10) spool 将屏幕上的内容输出到指定文件中
sql>spool d:\b.sql 并输入 sql>spool off
用法:1.spool 文件路径2.执行操作 3.spoll off
(11) show parameter name 查看当前登录数据库的配置参数。
(12) select name from v$database; 查看当前数据库实例名
(13) exit 后,sqlplus /@实例名 assysdba; 链接到此实例
Sqlplus 命令
linesize
用于控制每行显示多少个字符,默认80个
用法:set linesize 字符数
pagesize
用于每页显示多少行
用法:set pagesize 每页显示的行数
Oracle 用户管理
需求:假设你是oracle管理员,需要给一人分配一个账号
1. 创建用户:基本语法(前提需要具备dba)
Create user 用户名 identified by 密码;
2. 给用户修改密码
给自己修改:password 用户名
给别人修改:alter user 用户名 identified by 新密码;
表空间
表存在的空间,一个表空间是指向具体的数据文件。
1. create usershunping identified by m123 //shunping将用数据据方式验证
default tablespace users //shunping的表会建在users表空间中
temporary tablespace temp //shunping临时表建在temp中
quota 3m on users; //定量数据最大为3m
刚创建的用户是没有权限的(需要dba给用户授权),连登陆都不行(要分配相应的权限)。
2. 如何给用户分配权限:
grant create session to xiaoming;
grant connect to 用户;
grant resource to 用户; 角色
给一个用户赋权限命令为grant,回收权限命令revoke
基本语法:
grant 权限/角色to 用户;
revoke 权限/角色from 用户;
3. 删除用户
当删除一个用户的时候,如果这个用户自己已经创建过数据对象,那么我们在删除用户的时候,需要加选项cascade,表示删除用户的同时,吧该用户创建的数据对象,一并删除。
语法:drop user 用户cascade;
4. 方案(schema)
小技巧:如果希望看到某个用户的方案有什么数据对象,可以用ql/sql developed。理解:当一个用户创建好后,如果该用户创建了任意一个数据对象,这时,我们的dbms就会创建一个对应的方案与该用户对应,并且该方案的名字和用户名一致。
‘方案’运用:
让xiaohong用户可以去查询scott的emp表。
1. 先用scott登陆,conn scott/tiger
2. 赋权限 grant select[delete|update|insert|all]on emp to 用户
注;如果有两张表同名,方案名.表名 scott.emp
Xiaohong 查询scott的emp表时,需要select * from scott.emp;
如何让得到权限的用户,把权限继续分配给其他用户?
系统权限:with admain option
对象权限:with grant option
问题:想办法将tea自己拥有的对scott.emp的权限转给stu
Scott—tea—stu[权限转移]
grant all on scott.emp to tea withgrant option;
5.使用profile文件对口令进行管理
需求:允许某个用户,最多尝试登陆3次,如果3次没有成功,则锁定两天,两天后才能重新登陆。
语法:创建---create profile 文件名 limit failed_login_attempts 3 password_look_time2;
分配---alter user 用户名 profile 文件名;
解锁---alter user 用户名 account unlock;
终止口令:
需求:设定一个账号密码,生命期最多为10天,宽限期为2天,到时必须设置新密码。
语法:create profile 文件名 limit password_life_time 10 password_grace_time 2;
分配和解锁和上面相同。
口令历史:
用户修改密码时,不能使用以前使用过的密码。
Create profile 文件名 limit password_life_time 10 password_grace_time 2password_reuse_time 1;
删除:profile
Drop profile 文件名;
5. oracle启动流程 windows
(1) lsnrctl start 启动监听
(2) oradim -startup -sid 数据库实例名
数据类型
(1) Char(size):如果存放数据的长度是固定的,则用char,为定长,最大为2000,存取速度快。
(2) Varchar2(size):数据不固定,则用varchar2 最大为4000
(3) Nchar(size):编码方式为unicode,一个汉字,占用nchar的一个字符空间,注:一个汉子占用char的两个字符空间。
(4) Nvarchar2(size):编码是unicode。
(5) Clob:字符型大对象。1.变长。2.最大8tb
(6) Blob:二进制数据。1.变长。2.最大8tb
(7) Number(p,s):例number(5,2)表示一个数有5位有效数,2位小数。变长
(8) Date:添加时候要使用默认格式:’dd-mm-yyyy’。
表的管理
(1) 添加一个新字段
alter table 表名 add(新的列名,数据类型);
(2) 修改字符类型
alter table 表名 modify(列名,数据类型);
(3) 删除一个字段
alter table 表名 drop column 列名;
(4) 给表修改名字
Rename 旧表名 to 新表名
(5) 查看表的结构:desc表名
(6) 查看数据的内容:dump(列名)
例:select name,dump(name) from 表名;
(7) 删除表:drop table 表名;
注意:1.字符和日期数据应包含在单引号中。
2.oracle中‘ ’ = null;
3.如果给表的每列都添加值,则可以不带列名。
Crud
Update
把所有学生的奖金都提高10%
写法:update students set fellowship = fellowship*1.1 where 1=1;
Update students set fellowship =fellowship*1.1;
注意:不写where与where1=1,意义相同,都是改变所有。
如果没有where子句,则更新所有行,(update和delete特别小心)
给一个学生(字段),奖学金设为null.
Updatestudents set fellowship = null wherer name = ‘ls’;
给奖学金为null的学生,设为10元
Updatestudents set fellowship = 10 where fellowship is null;
Delete
如果不使用where,将删除表中所有数据!!!
Delete语句不能删除某一列的值,如果要删除,则使用update
Selete
如何取消重复行:distinct
Selectdistinct 列1,列2 from emp;
Selectsal,joB,deptno from emP where EName = ‘SMITH’;
注:oracle的sql语句不分大小写,但是内容区分大小写。