您的位置:首页 > 数据库 > Oracle

Oracle基础(二)---操作命令

2015-06-29 19:27 489 查看
接上篇博客介绍Oracle基本概要,下面将介绍数据库的操作指令。

Sql*plus常用命令

连接命令

1、 conn[ect]

用法 conn用户名/密码@网路服务名[as sysdba/sysoper] 当用特权用户身份连接时,必须带上as sysdba或者是as sysoper

文件操作命令

1、start 和@

运行sql脚本 案例sql >@ d:\a.sql或者sql>start d:\a.sql

2、 edit

该命令可以编辑制定的sql脚本 Sql>edit d:\a.sql

3、spool

该命令可以将sql*plus屏幕上的内容输出到指定文件中去,案例:slq>spool d:\b.sql 并输入sql>spool off

显示和设置环境变量

可以用来控制输入的各种格式,set show 如果希望永久的保存相关设置,可以去修改glogin.sql脚本

1、 linesize 设置显示行的宽度,默认是80个字符

Sql>show linesize

Sql>set linesize 90

Pagesize 设置每页显示的行数目,默认是14 Set pagesize 8

2、创建用户

Create user 一般具有dba的权限才可以使用

Sql>create user xiaoming identified bym123 名字以字母开头

3、 修改密码 自己密码 sql >password 用户名 System 可以修改

4、删除用户 自己删自己不可,drop user ;如何删除的用户,已经创建了表,那么需要在删除时带一个参数cascade

5、用户管理

为新用户添加登录权限:连接 sql>conn 用户名

赋权限 sql>grant connect to xiaoming

权限:系统权限,用户对数据库的相关权限,登录,修改密码等; 对象权限用户对其他用户的数据对象访问的权限。

角色:自定义角色;预定义角色;Dba角色

Resourse 任意在表空间建表

建表 sql>create table test(userID varchar2(30)

对象权限分类:Select,insert,update ,delete .alll ,createindex

授权:Grant select on emp to xiaoming

Sql>conn xiaoming /m1234

Sql>select * from scott.emp;

希望用户具有所有权限:Grant all on emp to xiaoming

收回权限:Revoke select on emp from xiaoming

对权限的维护,权限的传递

如果是对象权限,加入with grand option例如: Grant select on emp to xiaoming with grantoption

创建用户

Sql>create user xiaohong identified bym123

Sql>grant connect on xiaohong

Sql>conn xiaoming /m123

Sql>grant select on scott.emp toxiaohong

如果是系统权限

Grant connet to xiaoming with admin option

xiaoming 可以将权限下分到另一个人

使用 profile管理用户口令(是口令限制,资源限制的命令集合)

1、 账户锁定

登录次数的限定

Sql> create profile
lock_account()规则名称 limistfailed_login_attempts 3 password_lock_time 2(天);

Sql>alter user teaprofile lock_account;

2、 给用户解锁

Sql>alter user tea account unlock;

3、终止口令

Dba身份 Sql>create profile myprofile limitpassword_life_time10 password_grace_time2;

每10天修改密码。2天的延迟

Sql>alter user tea profile myprofile.

口令历史:不能使用以前的密码:

建立profile:Sql>createprofile password_historylimitpassword_life_time
10password_grace _time2password_reuse_time 10 注释:Password_reuse_time
10天后可以重复

4、删除profile

Sql>drop profilepassword_history[cascade](级联)

Oracle表的管理

1、数据类型

字符型: Char 定长 最大2000字符

Varchar2(20) 变长,最大4000字符

Clob(character large object)字符型大对象 最大4G

数字类型

Number 范围-0的-38次方,到10的38次方

Number(5,2)表示一个小数位有5位有效数,2位小数 范围-999.99-999.99

Number(5)表示一个五位整数 -99999-99999

日期类型

Date 包含年月日和时分秒 Timestamp 扩展

图片:Blob 二进制数据,可以存放图片、声音 4g

2、建表:

Sql> create table users (usernamechar(200),

Sql>create table classes(classId

Sql> dec

3、添加字段

Sql>alter table student add(classidnumber(2));

4、修改

Sql>alter table student modify(xmvarchar(30));

5、删除

Sql>alter table student drop column sal;

6、修改变名称

Sql>rename student to stu;

7、删除表

Sql>drop table student ;

8、添加数据

Insert into student values(‘A001’,’张三‘);默认时间格式 dd-mon-yy 09-6月-99

修改日期的默认格式 alter session setnls_date_fomart=’yyyy-mm-dd’

修改后添加数据

Insert into student values(‘a002’,’mike’,’男’,‘1905-05-06‘);

9、插入部分字段

Insert into student(xh,xm,sex)values(‘A003’,’john’,’女”);

10、插入空值

Insert into student (xh,xm,sex,birthday)values(‘a004’,’mat’,’男’,null)

11、改一个字段

Update student set sex=’女“

12、保存点:Sql> savapoint aa;Sql>rollback to aa;回滚

13、删除数据

Delete from student

删除所有记录,表结构还在,写日志,可以恢复,速度慢

Drop table student 删除表的结构和数据

Delete from student where xh=‘a001’; 删除一条数据

Truncate table student;

删除表中的所有记录,表结构还在,不谢日志,无法找回,速度快

14、查看表结构:Sql>desc dept

Oracle查询

1、如何取消重复行

Select distinct deptno, job from emp;

2、复制

Sql>nstert into users(userid,username,userpss) select * from users

3、使用算数表达式

4、使用列的别名:Select ename “姓名” ,en fromemp;别名

Sql> select name from emp

5、如何处理null

使用nvl(comm,0)如果comm是空值则用0来表示

6、如何连接字符串(||)

Select ename || ‘is a’|| job form emp;

7、使用where、

Sql> select ename,sal from emp wheresal>3000; sal>=2000 and sal|<=2500

8、使用 like

Select ename,sal from emp where emp whereename like ’_ _o%’

9、在where条件中使用in

Select *from emp where empno in(11,234,456);

10、使用is null 的操作符

Select * from emp where mgr is null;

11、使用逻辑操作符:使用order by,使用列的别名排序

12、分页查询

Group by 用于对查询结果分组统计

Having 子句用于限制分组显示结果

13、多表查询

按部门排序

Sql>select?,?,?,from empa1,dept a2 where a1.deptno= a2.deptno order by a.deptno;

如果是group by 字段必须包含在查询的字段里面

14、自连接:是指在同一张表的链接查询

Select worker.name.boss.name from emp worker, emp boss where worker.mgr = boss.empno workere.name =‘frode’;

15、单行子查询

Select *from emp where deptno =(select…); 数据在执行sql是从左到右执行

16、多行子查询

Select ename,sal,dept from emp wheresal>all(select sal form emp where deptno =30);

任一:Select ename,sal,dept from emp wheresal>any(select sal form emp where deptno =30);

17、多列子查询

Select * from emp where (deptno,job)=(selectdeptno,job from emp where name=’’);

18、分页查询

右子查询过来

Select a1.* ,rownum rn from(select * from emp) al;

一共有三种方式

1. rownum 分页

select * from emp

select * from (Select a1.* ,rownum rn from (select * from emp) alwhere rownum<=10) where rn>6;

2. 显示rownum

Select al.* ,rownum rn form emp

19、建表并将其他表数据导入到新表

Create table mytable (id,name ,sal,job,deptno) as select empno,ename,sal ,job ,deptbo from emp;

20、合并查询

1 union 取得两个结果集的并集,自动去掉重复行。

Select ename,sal ,job from emp wheresal>2500 union select ename ,sal,job from emp where job =’manager’;

2 union all 同Union ,但不取消重复行,而且不会排序

Select ename,sal ,job from emp wheresal>2500 union all select ename ,sal,job from emp where job =’manager’;

3 minus合并查询

获得两个结果集的差集,只显示存在第一个集合中,而不存在第二集合中的数据

Select ename,sal ,job from emp wheresal>2500 minus select ename ,sal,job from emp where job =’manager’;

Orale视图

特点:不占磁盘;不能添加索引;使用视图可以简化
复杂查询;提高安全性;

创建视图
Create view
视图名 as select
语句[with read only]
创建或修改视图
Create or replaceview
视图名 as select
语句[withread only]
删除视图
Drop view
视图名

以上是基本的操作命令,一开始觉得挺多的,但是后来觉着这些东西跟SQL Server的SQL语句一样。所以学习的东西就少了很多。不过这些东西挺多的,所以就懒下别记了,什么时候用什么再回来看看,孰能生巧,这些命令特别是数据库的查询,如何写,将影响到数据的查询性能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: