分享

oracle笔记 之表的管理

 levinLee 2010-07-24
oracle表管理
表名和列的命名规则
1.必须以字母开头
2.长度不能超过30字符
3.不能使用Oracle的保留字
4.只能使用如下字符A-Z,a-z,0-9,$,#等
数据类型
字符型
char 定长,最大2000字符 (定长,假如长度没达到要求,用空格补全其余的位;不过查询效率最高)
varchar2变长,最大4000字符
clob(character large object) 字符型大对象,最大4G(超过4000字符)
数字型
number 可以表示整数、小数
例子:
number(5,2)表示一个小数有5位有效整数,2位小数
number(5)表示一个5位整数
日期类型
date  包含年月日和时分秒
timestamp 这是oracle9i对date数据类型的扩展(精度更高)
图片
blob 二进制数据,可以存放图片、声音,最大4G

表空间:

表创建:
表的修改:
添加一个字段
SQL> alter table student(表名) add(classid number(2));
修改字段的长度
SQL> alter table student modify(xm varchar2(30));
修改字段的类型或者名字(不能有数据)
SQL> alter table student modify(xm char(30));
删除一个字段
SQL> alter table student drop column sal(列名);
修改表的名字
SQL> rename student to stu;
删除表
SQL> drop table student;
表的查询(重点:多表查询,联合查询;oracle是区分数据大小写)
查看表结构
SQL> desc dept;
查询所有列
SQL> select * from dept;
查询指定列
SQL> select ename,sal,job,deptno from emp;
如何取消重复行
SQL> select distinct deptno,job from emp;
显示操作时间
SQL> set timing on;
使用算数表达式
SQL> select sal*12 "年工资",ename from emp;
关于处理null值(nvl函数)
nvl函数使用格式:nvl(字段名,0)
SQL> select sal*12+nvl(comm,0)*12,ename from emp;
连接字符串(||)
select ename || 'is a' || job from emp;
使用where子句
select ename,sal from emp where sal>3000;
select ename,hiredate from emp where hiredate>'1-1月-1982';
select ename,sal from emp where sal>=2000 and sal<=2500;
使用like操作符
% 表示任意0到多个字符
_ 表示任意单个字符
select ename,sal from emp where ename like 'S%';
select ename,sal from emp where ename like '___O%';
在where子句中使用in方法
select * from emp where empno in(123,456,234); //批量处理empno=123 or empno=456 ...
select * from emp where mgr is null;
使用逻辑操作符
select * from emp where (sal>500 or job='MANAGER') and ename like 'J%';
使用order by子句
select * from emp order by sal;//默认是从小到大排列,asc
select * from emp order by sal desc;//从大到小的排列
select * from emp order by deptno,sal desc;
select * from emp order by deptno,hiredate desc;
select ename,sal*12 "年薪" from emp order by "年薪" asc;
分页查询
oracle表复杂查询
 
添加数据
所有字段都插入
insert into student values('A001','张三','男','01-5月-1983',500,12);
oracle中默认的日期格式'DD-MON-YY'
DD 日子(天)
MON 月份
YY 2位的年
'09-6月-99'  表示  1999年6月9号
修改日期的默认格式
alter session set nls_date_format = 'yyyy-mm-dd';
插入部分字段
insert into student(xh,xm,sex) values('A003','Johm','女');
插入空值
insert into student(xh,xm,sex,birthday) values('A004','MARTIN','男',null);
查询空字段
select * from student where birthday is null; 正确查询方式(birthday is not null)
select * from student where birthday=null; 查询结果为空
select * from student where birthday=""; 报错,非法的零长度标识
修改一个字段
update student set sex='女' where xh='A001';
修改多个字段(多字段间用逗号隔开)
update student set sex='男',birthday='1980-04-01' where xh='A001';
修改含有null值的数据
update student set birthday='1983-06-17' where birthday is null;
修改SAL字段,数字减半
update student set sal=sal/2 where sex='男';
删除数据(表还在)
delete from student;
数据恢复
保存节点(oracle支持多个保存点)
……(插入数据);
savepoint a;
删除数据
delete from student;
回滚恢复
rollback to a;
设置保存点:savepoint a;
恢复保存点:rollback to a;
删除表的结构和数据
drop table student;
删除一条记录
delete from student where xh='A001';
删除所有记录(表结构还在,不写日志,无法找回删除的记录,速度快)
truncate table student;
删除所有记录(表结构还在,写日志,可以恢复记录,速度慢)
delete table student;
oracle清屏
SQL> clear screen;
SQL> clea scre;
 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约