• 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;

               截图:

                    

  • 相关阅读:
    NBUT 1120 Reimu's Teleport (线段树)
    NBUT 1119 Patchouli's Books (STL应用)
    NBUT 1118 Marisa's Affair (排序统计,水)
    NBUT 1117 Kotiya's Incantation(字符输入处理)
    NBUT 1115 Cirno's Trick (水)
    NBUT 1114 Alice's Puppets(排序统计,水)
    188 Best Time to Buy and Sell Stock IV 买卖股票的最佳时机 IV
    187 Repeated DNA Sequences 重复的DNA序列
    179 Largest Number 把数组排成最大的数
    174 Dungeon Game 地下城游戏
  • 原文地址:https://www.cnblogs.com/w-gao/p/7280995.html
Copyright © 2020-2023  润新知