oracle学习总结------ CRUD操作(create/retrleve/update/delete

来源:互联网 发布:域名排名 编辑:程序博客网 时间:2024/05/29 05:54
 1、INSERT 语句
     --- 语法:
         INSERT INTO table_name(columnName1,columnName2,columnName3..) values (columnNameValue1,columnNameValue2,columnNameValue3..)
     ?注解:
        |---插入数据的类型与字段的数据类型相同
        |---数据的大小应在列的规定范围内
        |---在values后加入的位置必须与列的排列位置一致
        |---字符和日期类型应包含在单引号中。
        |---插入空值,不指定域
        |---如果给表的每一列添加值,可以不带列名。


 2、UPDATE语句
     ---语法:
      update table_name set column_name = exper [column_name = exper...]
   where 条件
    
     ?注解:
        |---SET字句指示哪些列值需要修改


3、DELETE语句
      ---语法
        DELETE from table_nmae where 条件;


      ?注解:
       |---如果不使用where字句,将删除表中所有数据
       |---delete数据不能删除某列的值,如果将删除某列的值,则需要使用update语句。
       |---delete语句仅是删除表的数据,但不删除表本身,drop语句删除表本身
       |---truncate table table_name 删除表中的所有记录,但表结构还在。操作速度快,不可回滚。


4、SELECT语句
     ---语法:
       SELECT [DISTINCT] *|{column1,column2,column3,....}
         FROM table_name
   


      ?注解:
        |---尽量返回较少的列,不要轻易使用*
        |---nvl()函数用于处理null的问题,基本用法nvl(comm,o)
        |---||在查询时,如果希望把多列拼接起来,作为一列返回


      面试题:希望删除用户,同时保留该用户的数据对象
              |-(1)锁定该用户
                 alter user scott account lock;
              |-(2)这时该用户不能登陆数据库,但是system用户依然可以使用它的数据                  
                对象
               |-(3)解锁命令
                   alter user scott account unlock;    




查找数据:
 数据库的作用:存储数据,管理数据
 表是粗存储数据的媒介
 管理数据:insert uodate delete select(仅对视图和表有作用)
 删除数据:delete drop truncate
   delete:清楚数据
   drop:三种的清除
   truncate:清楚数据和空间
 


 插入数据的语法:
   insert into 表名(字段序列)values (字段序列的对应的值);
   注:该字段必须包含非空字段
   insert into 表名 values(所有字段)


  更改数据的语法
  
  uodate 表名 set 字段一= 字段值,字段二= 字段值,字段n= 字段值;
  注意:不带where语句修改的是整张表。


 查询语句的语法:                
   大小写区分问题:oracle引号里面大小写区分,引号外面大小写不区分。
   原因:oracle引擎中,所有引号外面的都转换为大写在执行


   注:oracle可以用双引号用来防止转译
   单表查询:
   where用于筛选


  集合操作:
   minus差集
    例:(select * from emp where sal > 2000)
       minus
       (select * from emp where deptno = 20);
  
   intersect交集
         例:(select * from emp where sal > 2000)
             intersect
            (select * from emp where deptno = 20);




   union(去重)/union all(不去重);
          例:(select * from emp where sal > 2000)
             union
            (select * from emp where deptno = 20);
                
   distinct去除重复


   模糊查询:
   like   _代表单个字符
          %代表任意个字符


       例:
       select * from emp where to_char(hiredate,'yyyy')like'%81';


   不等于  != <> 
        例:
        select * from emp where sal != 3000;
        select * from  emp where sal <> 3000;




   between ..and..语句
        select * from emp where sal between 1500 and 3000;
   


   not between ...and ..语句
        select * from emp where sal not between 1500 and 3000 or sal is null;
 




   order by 语句 
       -- 默认为升序,降序 后面加desc 
     select * from emp  order by sal;


   gruop by 语句


      select ename deptno avg(sal) from  emp group by(ename,deptno);
      !group by 后面根的字段必须包含所有的单值字段(不是集合函数列)


   having字句:
    select ename deptno avg(sal) from  emp group by(ename,deptno) having avg(sal) > 1500;










  ?将空值转化为非空值:
    nvl(参数一,参数二) 如果参数一为空返回参数二,如果为空则返回参数一


  ?为字段取别名


   select emg as leader_emno from emp;
 
 !一般情况下别名为单个字符
 !不能为预定义字符
 !查询关键字顺序:select * from * where * group by * having * order by *;
在Oracle中having子句必须有分组才能使用,
所以建议放在group by后面,order by前面。
 


 虚拟列:表里不存在的列(该列通常为计算得出的或处理的列)
0 0
原创粉丝点击