zoukankan      html  css  js  c++  java
  • oracle的表操作

          oracle的表操作

    表操作案例:

          原始表   

    学生表:

    create table students(

      studentId  number,

      name   varchar2(64),

      sex     nvarchar2(1),

      birthday  date,

      fellowship number(10,2),

      resume clob

    );

    班级表:

    create table class_(

      id number,

      name varchar2(32)

    );

         表管理

    //添加一个新的字段

     alter table 表名 add (新的列名 列名的数据类型);

    //修改字段的类型

     alter table 表名

     modify  (columnname dataType);

    //删除一个字段

     alter table 表名

     drop column(column)

    //给表修改名字

    rename 旧表的名字 to 新的名字

      实际操作

     1.给学生表添加班级编号

          alter table students add (classId number);

    2.把学生姓名 变成  varchar2(30)

      alter table students modify(name varchar2(30));

    3.删除学生表的 fellowship 字段

      alter table students drop column fellowship;

    4.把学生表名student 改成stu

      rename student to stu;

    5.删除stu

      drop table stu 

     

        表管理(crud)

      insert语句

        语法:

        INSERT  INTO  table [(column[, column…])]  VALUES (value[ , value…]);

        限制:

     

          (1)插入的数据应与字段的数据类型相同。

      (2)数据的大小应在规定的范围内,例如:不能将一个长度为

        80的字符串加入到长度为40的列中。

          (3) 在values中列出的数据位置必须与被加入的列排列位置相对应。

          (4) 字符类型与日期类型包含在单引号中。

          (5)插入空值,不指定或insert into value(null);

      拓展:

     

          如何一次添加多条数据?

          在sql server 中 可以通过 insert into table

                                    select  字段值列表  union

                                    select  字段值列表  union

                                   select  字段值列表

          但数据库之间存在差异:

              oracle:

              

                        方法1:

                                        insert into 表名

                                                 select       字段值列表  from dual

                                                 union

                                                   select       字段值列表  from dual

                                方法2:

                                         insert  all  into  表名

                          values(字段值列表)  into 表名

                                               values(字段值列表)  into 表名

                                   select  1  from  dual

             

      update语句  

        语法:

           UPDATE  table  SET  column_name = expression[ , column_name = expression …]

             [WHERE where_definition]

        拓展:

           oracle怎么判断字段为空?

           字段值 = null;    --条件没成立

           字段值 is null;    --成功

           

      delete语句

           语法:

               DELETE FROM table [WHERE where_definition]

          删除的几种方法比较:

      

           delete from 表名:

        删除所有记录,表结构还在,写日志,可以恢复,数据慢

             drop  table  表名:

                                  删除表的结构和数据

                 truncate table 表名:

                                  删除表中的所有记录,表结构还在,不写日志,无法找到删

                   除的记录,速度快

          --------------------------------------

          实现原理:在删除数据前,保存节点(savepoint xx),在删除之后,可以通过

        回滚(rollback xx)之前节点恢复数据

         

      select语句

         语法:

             SELECT [distinct] * | {column1,column2,column3…}

               FROM table  [WHERE where_definition]

                    ---------------------------------

                       distinct:过滤掉重复的数据

       where子句:

          如何比较日期?

          查询入职日期在1980-1-1之后的员工

          select * from emp where hiredate > ‘’1980-1-1”;  --失败

          证明:日期类型不能与字符串类型比较

          解决:

                       select * from emp where to_char( hiredate,’yyyy-mm-dd’) > ‘’1980-1-1”;

               在数值之间比较的两种方法:

              方法1:select * from emp where sal > 1000 and sal < 2000;

              方法2:  select * from emp where between 1000 and 2000;

       like运算符:

           %:表示任意0到多个字符

           _ : 表示任意单个字符

     

           案例:

             1.查询首字符为S的员工姓名和工资

                                select ename,sal from emp where ename like ‘S%’;

             2.查询第三个字符为大写的O的所有员工的姓名和工资

                        select ename,sal from emp shere ename  like ‘__O%’;

     

      in 的使用:

         查询员工号是7499,7521,7832的员工?

       (1) select * from emp where empNo = 7499 or empNo = 7521 or empNo =7832

       (2) select * from emp where empNo in (7499,7521,7832);

      

           

       拓展: 

     

            sal:工资  comm:奖金

        1.  查询雇员的年工资:

           select  sal * 13 +nvl(comm,0)*13   from emp;

           -----------------------------------------

      说明:当奖金为NULL时,它与任意数运输最终都会是NULL,

        这样不仅没有求到工资和,而且还没有了基本工资。

            解决:nvl,oracle提供的函数,当comm为空时,用0代替,如果

                                 不是的,原数还原

      

           2.  ||的使用

                          需求:将多列拼接起来作为一列处理

                          例子:

                                 select ename || '是一个' || job from emp;

               截图:

                    

  • 相关阅读:
    170120、java 如何在pdf中生成表格
    170119、100亿数据1万属性数据架构设计
    170118、快速失败Vs安全失败(Java迭代器附示例)
    170117、spring解决乱码
    170116、centos6.4下nginx和ftp搭建图片服务器
    170113、CentOs6.4中安装和配置vsftp简明教程
    linux nginx完全卸载
    DevOps 的技术栈与工具链
    git与pycharm结合使用
    JMeter和JMeterPlugin的下载安装
  • 原文地址:https://www.cnblogs.com/w-gao/p/7280995.html
Copyright © 2011-2022 走看看