• 数据库操作语言


    一、基本知识

      1、Oracle服务器由两大部分组成:Oracle数据库和Oracle实例
         Oracle数据库:位于硬盘上实际存放数据的文件,以.DBF结束的文件
         Oracle实例:位于物理内存里的数据结构

      2、数据库中的语言:

         DML:数据库操作语言(selectinsertupdatedelete)
           DDL:数据库定义语言(create tablealter tabledrop tablecreate view)
           DCL:数据库控制语言(commit、rollback、grant、revoke)

    二、:数据库操作语言-select

      1、简单的查询:

        select * from 表名;                                                          --查询表的所有信息

        select 列名1,列名2,列名3... from 表名;                                --查询表的部分信息

        select e.ename 姓名, e.sexl 性别, e.age 年龄 from emp e;    --查询语句中别名的使用

      2、条件查询where

        select * from emp where deptno = 10;

        select * from emp where hiredate='09-6月 -81';                --正确,'09-6月 -81'为日期默认格式 DD-MON-RR

          对于日期有两种修改方式:

              a)修改系统默认日期格式:alter session set NLS_DATE_FORMAT='yyyy-mm-dd';
                  b)使用to_date:select * from emp where hiredate = to_date('1981-6-9', 'yyyy-mm-dd');
                to_date(要转换的内容, 格式)

      3、比较运算符

        a)、between ... and ... 在两个值之间(包含边界值),小值在前大值在后,可以作用于数字、日期
             select * from emp where sal between 1000 and 2000; --查询薪水1000-2000的员工:

        b)、[not] in(set) 
            select * from emp where deptno in (10, 20);   --查询10号和20号部门的员工:
              如果使用not in,那么括号里不能有null值

        c)、like

             模糊查询  % 代表零个或多个字符   _ 代表一个字符
             select * from emp where ename like 'S%';                                                      --查询以S开头的员工:
             select * from emp where ename like '____';                                                   --查询名字是4个字的员工

             select e.ename from emp e where e.ename not like '%R%' order by e.ename;  --显示不带有"R"的员工的姓名

      4、逻辑运算

          and:逻辑并
          or:逻辑或
          not:逻辑非

      5、排序

        --order by:排序(升序asc(默认);降序desc)

        order by 后面可以跟:列名、表达式、别名、序号

        如果后面的多列都按降序排,那么每列后面跟desc

        select e.ename,e.sal,e.hiredate from emp e order by e.ename;   ----(1)查询EMP表显示所有雇员名、工资、雇佣日期,并以雇员名的升序进行排序。

      6、单行函数:只对一行进行变换,每行返回一个结果。函数可以嵌套使用    

        字符函数:  

             lower:转为小写
             upper:转为大写
             initcap:每个单词的首字母大写
             concat:字符串连接
             substr:取子串
             length:字符数长度
             lengthb:字节数长度
             instr:在母串中返回子串的位置
             rpad:右填充
             lpad:左填充
             trim:去除首尾字条
             replace:替换      

        数字函数:     

             round:四舍五入
             trunc:截断
             mod:求余

         日期函数:

             在日期上加上或减去一个数字,结果仍为日期
             两日期相减,返回相关的天数
             用数字除以24来向日期中加上或减去小时
             sysdate:返回当前时间
             months_between(日期1, 日期2):按实际月份算出相关的月数
             add_months(日期, 1):在日期上加一个月
             next_day(开始的日期, '星期六'):从当前日期开始,下一个星期六
             last_day(日期):返回此日期中本月的最后一天
             round(日期, 'MONTH'):四舍五入到月
             trunc(日期, 'YEAR'):截断到年

      7、分组函数

        作用于一级数据,并对一级数据返回一个值。会自动去除空值再计算  avg(平均)、count(计数)、max(最大)min(最小)sum(求和)

         注意:

          a)不能在where子句中使用组函数,可以在having子句中使用组函数。尽量使用where       

          b)在组函数中使用nvl函数,使分组函数无法忽略空值

               select e.deptno,count(e.deptno) from emp e group by e.deptno having count(e.deptno) >=1; -- 列出至少有一个雇员的所有部门。 

       8、多表查询

         等值连接(内连接):
         不等值连接:
               外连接:

           当条件不满足时,仍然希望显示某些在结果中包含某些不成立的记录时,使用外连接
             左外连接:当连接条件不成立时,没有加号(+)的列的信息仍然显示,通常放在等号(=)的左边
             右外连接:当连接条件不成立时,没有加号(+)的列的信息仍然显示,通常放在等号(=)的右边
           自连接:会先产生笛卡尔积,再根据条件进行过滤记录。效率低

    三、数据库操作语言-insert

      格式:insert into 表名(column1,column2...)  values(value1  value2...)

        insert into person values(111, '张三', '男');

        insert into person( pname) values( '李四');

       注意:

        a)列名与值必须一一对应       

        b)如果列名涵盖了表里所有的列,那么列可以省略,但值必须与表里列的顺序一致  

          隐式方式:如果插入的数据中,列名只是表中的一部分,那么其他未指明的列的值为null  

                   显式方式:在values中指定空值

    四、数据库操作语言-update

      格式:

        update 表名 set column1 = value1 , column2 = value2,...   where ……

        update emp02  set comm=1000  where deptno=10;

    五、数据库操作语言-delete

       格式:delete from 表名 where condition
         清空表:

            a)delete from 表名;
            b)truncate 表名;

    六、Oracle中的事务:

       设置自动提交:

        SET AUTOCOMMIT ON/OFF; --oracle默认为关闭off

       事务开始标志:   

        DML语句(insert、update、delete)会自动开启事务  

      事务结束标志:   

        提示:

          显示提交:commit   

          隐式提交:使用DDL(create table...);正常退出时会自动提交   

        回滚:

           显式回滚:rollback  

           隐式回滚:宕机、非正常退出

      保存点的使用:可以让数据回滚至指定的地方   

         设置保存点:savepoint a;   

         回滚至保存点:rollback to savepoint a;

  • 相关阅读:
    HTTP协议--详解
    汇编语言前五章总结
    [转] vscode C/C++ 插件预定义环境变量(linux)
    C++小细节
    CC++ 如何确定一个变量的类型(恶心的指针)
    Ubuntu下安装tensorflow
    github 上不去
    应用层01-HTTP
    C++ 传递数组引用
    C++ 命令行窗口打印二叉树(图形)
  • 原文地址:https://www.cnblogs.com/czj-zhm/p/5837556.html
Copyright © 2020-2023  润新知