Oracle表的管理
(1)字符型
char 定长 最大2000字符。 填写字符不够长时会自动补成空格。
varchar 变长 最大4000字符 。 可以节省空间。
查询操作时。char 比 varchar 效率高。
clob(character large object)最大4G
(2)数字型
number 范围 - 10的38次方到10的38次方。可以表示整数或者小数。
number(5,2)表示一个小数有5位有效数,2位小数。
number(5)表示一个5位数。
(3)日期类型 date 包括年月日时分秒。
(4)图片 blob 二进制数据 可以存放图片和声音等。 4G
建表-----学生表
sql>create table student (
xh number(4),
xm varchar(20),
sex char(2);
birthday date,
sal number(7,2)
);
添加一个字段: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;
举例:
插入语句:sql>insert into student (123,'xiaoming','男',‘11-10月-1992’,22222.55)
更改date的输入方式:sql>alter session set nls_date_format='yyyy-mm-dd';
插入部分字段:insert into student(column) values ();
插入空值:insert into student (xh,xm) values (201,null);
对于空值的查询方式是:select * from student where xm is null;
改一个字段:update student set sex = '女' where xm = '';
update student set sal=sal/2 where xm='';
修改多个字段:多个字段之间用逗号隔开 set sex='',sal=sal/2
删除数据并恢复的步骤:
第一步:sql>savepoint a; 建保存点,写日志。
第二步:sql>delete from student;
第三步:sql>roolback to a;
删除数据
delete from student;,表结构还在,写日志,可以恢复,速度慢。
drop table student;删除结构和数据
delete from student where.....
truncate table student;删除表中的所有记录,表结构还在,不写日志,不能恢复,速度极快。
Oracle表基本查询
(1)使用算术表达式。select sal*13+nvl(comm,0)*13,ename from emp;
nvl(comm,0)表示如果comm为空则让他等于0
(2)使用列的别名
select ename "姓名",sal*12 as "年收入" from emp;
(3)如何连接字符串(||)
select ename||'is a' || job from emp;
(4)关于日期作为条件的查询语句
select * from emp where hiredate>'1-1月-1982';
(5)使用where字句。
(6)使用like操作符 %表示任意0到多个字符。-表示任意单个字符。
(7)in的使用
(8)使用逻辑操作符号 or and
(9)使用order 字句desc代表降序,asc代表升序。
(10)使用列的别名排序(在列名不存在时非常有用)
select ename,(sal+nvl(comm,0))*12 as "年薪" from emp order by "年薪";
Oracle表的复杂查询
(1) 数据分组:max,min,avg,sum,count
(2) group by 和 having 字句
group by 用于对查询的结果分组统计。having字句用于限制分组显示结果。
对数据分组的总结:
(1)分组函数只能出现在选择列表、having、order by字句中
(2)如果select语句同时含有group by,having,order by.那么这就是他们的顺序。
(3)在选择列表中如果有列、表达式、和分组函数。那么这些列和表达式中必须有一个出现在group by子句中,否则错
Oracle 表的管理
1.自连接 :是指在同一张表上的链接查询。
2.子查询:指嵌入到其它sql与剧中的select语句也叫嵌套查询。
单行子查询,多行子查询。
在多行子查询中使用all,any操作符。
多列子查询:select * from emp where (deptno,job)=(select deptno,job from emp where ename='SMITH');
在from字句中使用子查询。说明:在from子句中使用子查询时,该子查询会被作为一个视图来对待。因此叫做内嵌式图
。当在from中使用子查询时 必须给子查询指定别名。
例:select a1.ename,a1.sal,a1.deptno,a2.avgsal from emp a1,(select deptno,avg(sal) avgsal from emp group
by deptno) a2 where a1.deptno=a2.deptno and a1.sal>a2.avgsal;
3.Oracle分页一共有三种方式
(1)rownum分页 ,显示rownum . select a1.*,rownum rn from (select * from emp) a1;
(2)显示6-10行的数据 select * from (select a1.*,rownum rn from (select * from emp) a1 where rownum<=10)
where rn>=6;
(3)几个查询变化:指定查询列,只需修改最里层的子查询。如何排序,只需修改最里层的子查询。
(4)用查询结果创建新表:create table mytable (id,name,sal) as select empno,ename,sal from emp;
4.合并查询
union 合并去掉重复行,union all 合并所有行。 intersect 取交集。 minus取差集。

被折叠的 条评论
为什么被折叠?



