Oracle表的管理

                                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取差集。

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蟹道人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值