Chinaunix首页 | 论坛 | 博客
  • 博客访问: 68989
  • 博文数量: 31
  • 博客积分: 1440
  • 博客等级: 上尉
  • 技术积分: 355
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-20 14:33
文章分类

全部博文(31)

文章存档

2011年(3)

2009年(1)

2007年(7)

2006年(20)

我的朋友

分类:

2006-10-27 17:01:10

用户登录

Conn username/password as sysdba

 

察看所有表空间

Select * from v$tablespace;

 

删除表空间 但是表空间文件依然存放在磁盘上

Drop tablespace spacename;

如果表空间非空需要加参数来删除

SQL> drop tablespace ruiqing2 INCLUDING CONTENTS;

当用户默认的表空间被删除了,用户的操作会提示错误,找不到表空间.

 

创建表空间

>Create tablespace ruiqing

2 datafile ‘D:oracleoradataworld
uiqing.dbf’

3 size 20m;

 

创建用户

>create user rqz

2 identified by "world"

3 default tablespace ruiqing;

 

给用户授权

给用户登录权限

>grant connect to rqz;

授权用户无限制使用默认的表空间

>grant unlimited tablespace to rqz;

授权用户察看所有表

>grant select any table to rqz;

授权用户使用系统资源

>grant resource to rqz;

 

修改用户属性 , 这里给用户更改了表空间, 用户对原本表空间的授权在更改的表空间相同

SQL> alter user rqz

  2  identified by "123"

  3  default tablespace ruiqing2

  4  ;

用户自己可以更改密码, 但是不能更改默认表空间,需要用system用户

 

察看表空间中所有的表

>select * from tab;

 

使用rqz用户来登录操作ruiqing表空间

创建表

SQL> create table temp(

  2  tmpno number(5),

  3  tmpname char(10),

  4  tmpjob varchar(20));

 

察看表中的内容

SQL> select * from temp;

 

向表中插入数据

SQL> insert into temp

2         values (002,'df','programmer');

注意 不是value,而是values,对于字符要用单引号

 

删除表

SQL>drop table temp;

 

删除用户 , 删除用户时同时会删除由用户创建的表 system用户才有权利删除用户

Drop user rqz;

 

临时表 dual

SQL> select 999*999 from dual;

 

查询系统时间

SQL> select sysdate from dual;

 

改变时间显示格式

SQL> alter session

  2  set nls_date_format='dd-mm-yyyy hh24:mi:ss';

 

 

 

 

SQL语句

数据类型

char定长字符类型  

number 数值(位数,小数点后的位数)

varchar2 varchar 变长字符类型

date 时间类型

 

察看表的结构

SQL> desc temp;

 

char varchar2的区别

SQL> insert into temp

2         values (003,'rui','rui');

SQL> select length(tmpname),length(tmpjob) from temp where

  2  tmpno=3;

 

LENGTH(TMPNAME) LENGTH(TMPJOB)

--------------- --------------

10                                                               3

 

修改表结构

给表增加一列

SQL> alter table temp

2         add time date;

修改表中列的数据类型

比如修改字符长度 定长或者变长

SQL> alter table temp

  2  modify tmpname varchar2(20)

  3  ;

删除表中的列

SQL> alter table temp

  2  drop column time

  3  ;

 

查询:  使用scott/tiger用户试验

更改屏幕输出

SQL> set linesize 100

SQL> set pagesize 24

 

使用子查询

SQL> select max(sal) from emp;  但是这条语句只显示最高的工资数,而不显示其他信息 使用子查询

SQL> select * from emp

2         where sal = (select max(sal) from emp);

 

使用别名

SQL> select sal as 薪水 , ename 名字 from emp;

SQL> select empno 编号, ename 姓名, sal 工资 from emp;

注意 输入中文的时候 标点符号 必须使用英文标点符号

 

使用函数

SQL> select sal 基本工资,comm 奖金,sal+nvl(comm,0) as 实际薪水 from emp;

nvl 可以带一个或两个参数  两个参数时 第二个参数表示把空值转换成0

SQL> select sal 基本工资,comm 奖金,sal+nvl2(comm,1,0) as 实际薪水 from emp;

nvl2 可以带三个参数 comm. 非空则转换为1  空值则转换为0

使用between

SQL> select * from emp where sal between 1000 and 2000;

 

模糊匹配like

 

对查询结果分组

就像查询有多少组    枚举类型 ,并可以统计每组有多少记录

SQL> select job from emp group by job;

SQL> select job,count(job) from emp group by job;

使用分组和子查询进行归类排序

SQL> select * from emp

2         where job in (select job from emp group by job);

 

对分组后的数据进行过滤having

对分组后的数据进行取舍 不使用where而是用having

如查询人数少于4的工作

SQL> select job from emp

  2  group by job

  3  having count(job)<4;

 

排序 order by

工资由少到多排序

SQL> select * from emp

2         order by sal;

由多到少则加上参数desc , 默认参数是asc 从小到大排序

SQL> select * from emp order by sal asc;

SQL> select * from emp order by sal desc;

 

使用伪列 rownum

SQL> select rownum,empno,ename,sal from emp;

显示前5

SQL> select * from emp where rownum<6;

无法使用rownum显示后N

 

物理地址 rowid

SQL> select rowid,ename,sal from emp;

 

多表查询

SQL>select * from emp,dept where emp.deptno=dept.deptno;

显示有重复

SQL> select dept.deptno,emp.ename,emp.sal from emp,dept

  2  where emp.deptno=dept.deptno;

阅读(594) | 评论(0) | 转发(0) |
0

上一篇:RAID学习

下一篇:HACMP原理

给主人留下些什么吧!~~