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; |
|