oracle印象之基础

    oracle 基础知识
   oracle的核心是表,表中的列使用的常见的数据类型如下:
    oracle数据类型
   ① char(length)存储固定长度的字符串,参数length指定字符串长度,如果存储的字符串小于length,则用空格填充。  默认为1,最大不能超过2000字节。
   ② varchar2(length) 存储不定长度的字符串,length指定字符串的最大长度,最大不能超过4000字节。
   ③ number(p,s)即可以存储浮点数,也可以存储整数, p表示数字的最大位数,默认38位,s表示小数点的位数。
   ④ date 存储日期和时间。(存储纪元,4位年,月,日,时,分,秒。从公元前4712年1月1日到公元后4712年12月31日)
   ⑤timestamp 不但存储年月日,时分秒,以及秒后6位,还包含时区。
   ⑥CLOB 存储大的文本,比如存储XML文档。
   ⑦BLOB 存储二进制对象,比如声音、图像、视频等。
   
   oracle CURD(增删改查);
   增 (建表):
   
    oracle 用create来创建表,比如新建一张学生表:
     create table STUDENT
     (
       stu_NO varchar2(7) not null primary key,-- 学号
       stu_name varchar2(20) not null,--姓名
       stu_gender varchar2(200) not null,---性别
       stu_age number(2) not null,---年龄
       stu_seat number(3) not null,---座位
       enrolldate date,---入学时间
       stu_address varchar2(200) default '地址不详',---家庭住址
       classNo varchar(2) not null---班号
     );
   在建表的过程中,可以在create table的时候就指定表的约束,例如:
     create table STUDENT
     (
       stu_NO varchar2(7) not null,-- 学号
       stu_name varchar2(20) not null,--姓名
       stu_gender varchar2(200) not null,---性别
       stu_age number(2) not null,---年龄
       stu_seat number(3) not null,---座位
       enrolldate date,---入学时间
       stu_address varchar2(200) default '地址不详',---家庭住址
       classNo varchar(2) not null---班号
       constraint primary  key(stu_NO)
     );
    也可以单独用语句来指定,比如:
   alter table STUDENT add CONSTRAINT PK_STUDENT primary key(stu_NO);
    /
    alter table STUDENT add CONSTRAINT CK_STUDENT_STU_GENDER check (stu_gender='男' or stu_gender='女');
    /
    alter table STUDENT add CONSTRAINT CK_STUDENT_STU_AGE check (Stu_age >0 and stu_age <100);
    /
    alter table STUDENT add constraint UN_STU_NAME unique(stu_name);
 增(插入数据):
       在oracle 中 用insert命令来完成数据插入,
    语法为:INSERT INTO 表名(列1,列2,... )values(值1,值2,...);
    其中,列名可以省略,则表示向所有列插入。且值得数量和顺序应该与列的数量和顺序一一对应。
    例如:
     insert into STUDENT (stu_no,stu_name,stu_gender,stu_age,stu_seat,enrolldate,stu_address,classNO)
     values ('1','令狐冲','男','28','13',to_date('2015-07-22 15:19:02','YYYY-MM-DD HH24:MI:SS'),'华山','05');
    其中,oracle的日期是国际化的,不同的地域安装的数据库,它的日期格式可能是不一样的,为了程序方便插入,可以用to_date函数格式化日期后再输入。
    
    在oracle中,insert命令还可以将一个结果集一次性的插入到一张表中,如:
    insert into student2 select * from student;
    当然,这里要求结果集中每一列的属性需要和插入表列的属性一致。
    
    删:
       在oracle中,用delete命令来完成数据的删除,
       语法为: delete from 表名 where 条件
      还可以用truncate命令,一次性把表中的所有数据删除。语法为:truncate table 表名。
      delete和truncate命令的区别:
        truncate是DDL命令,删除后不能恢复。而delete是DML语句,删除后,可以通过日志文件恢复。
        如果一张表的数据比较多,用truncate比delete速度要快。
    改:
     在oracle中,用update命令来实现数据的修改
      语法为: update 表名 set 列=需要修改的值 where 条件
      例如:
      update student set stu_address='思过崖' where stu_name='令狐冲';
      如果需要修改表的属性,则需要用alter命令,语法为: alter table 表名 modify 列名 属性;
      如:
      alter table student modify stu_gender varchar(200);
    查:
    在oracle中,用select命令来实现数据查询,
     语句为: select 列名 (as 别名) from表名 where 条件 order  by ASC (desc);
     也可以根据结果集来创建表,语法为: create table 表名 as select 列名 (as 别名) from 表名;
     如:
       create table student2 as select * from student;
    上面只是一般查询语句,当然还有一些高级的查询,
        ① 去重,在oracle中可以用distinct命令来去除重复的数据。语法为:select distinct 列名 from 表名 where条件;
         例如:
      select distinct stu_name from student where stu_age>20;
        ② null 操作
         在oracle中, 空值不等于0或者空格,是指未赋值,未知或者不可用的值。在sql语句中可以用 is null 或者 is not null 来判断空值。
        ③ 在where条件语句中可以用 in 、between...and..、like 来进行条件查询。
        IN: 指定值来查询,如:select * from student where classNO in ('1','3','5'); 当然也有 not in 语句;
        between...and... 在某一个区域来查询,如:select * from student where stu_age between 10 and 20;
        like 模糊匹配查询。如:select * from student where stu_name like '%冲%';
        ④连接查询
          内连接:inner join... on ...
       select * from A a, B b where a.id = b.id;            
       select * from A a inner join B  b on a.id = b.id;    
 
          左外连接 left (out) join ... on... 左边的表全部展示
      select * from A a left join B b on a.id = b.id;            
      select * from A a , B b where a.id = b.id(+);
          右外连接 right (out)join... on....右边的表全部展示
      select * from A a right join B b on a.id = b.id;            
      select * from A a , B b where a.id(+) = b.id;
          全连接  full join ... on ....左右表全展示      
     select * from A a full join B b on a.id = b.id;


          
          
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值