• Oracle数据库学习(一)


    SQL语言是通用的数据库语言

    SQL命令可分为数据定义语言、数据操纵语言、事务控制语言和数据控制语言

    Oracle支持的数据类型包括字符、数值、日期时间、RAW和LOB等

    伪列:ROWID、ROWNUM

    数据完整性:实体完整性、域完整性、引用完整性、自定义完整性

    1、选择无重复的行,使用distinct关键字

         select  distinct  sclass  from  student;

    2、给列指定别名

         select  cid  as 课程号,cname  as  课程名 from course;

    3、对查询结果进行排序   order by  排序字段  排序方式

         select  * from score where sid='10011'  order  by  score  desc;

    4、模糊查询:字段  like  匹配表达式

          %:0个或多个字符

           _:任意单个字符

           select  * from  student  where  sname like '张%';

    5、利用现有的表创建表

         create  table <new_table_name>  as  select column_names  from  <old_table_name>;

         例如:create  table  stubak  as  select * from student;

                   create  table  stuclass  as  select  *  from  student  where  sclass=1;

                   create  table  stuemp   as   select  *  from  student   where  1=2;

    联接查询(多表)

         交叉联接(cross join)

         select  列名列表  from T1  cross  join  T2;

          一个交叉联接(cross join)接收两个分别有N行和M行的表T1和T2,然后返回一个包含交叉乘积N×M条记录的联接表

         例如:知道学生与课程有多少可能的组合:select *  from student  cross join course;

                    也可以不适用join:select  *  from student,course;

          内联接(等值联接)

          例如:查询学生总体学习情况:学生姓名,课程名,成绩

                     select  sname,cname,score  from  t_student  join  t_score  on                t_student.sid=t_score.sid  join  t_course  on t_course.cid=t_score.cid;

          或者:select sname,cname,score  from  t_student,t_score,t_coure where  t_student.sid=t_score.sid  and  t_coure.cid=t_score.cid; 

          外联接

           例如:内联接查询教师和课程的对应情况

                      select  * from  teacher  join teachcourse  on  teacher.tid=teachcourse.tid;

                     查看所有教师的工作分配情况,即没有课程的教师也要出现在查询结果中,此时就用外联接

                    select  *  from  teacher  full  join  teachcourse  on  teacher.tid=teachcourse.tid;

           左外联接left

           右外联接right

           全联接

    分组聚合

         SQL中提供得聚合函数  Min、Max、Sum、Avg、Count

         对记录分组通过关键字group  by 实现

          select sid, max(score) as maxscore, min(score) as minscore, sum(score) as totalscore, avg(score) as avgscore from t_score group by sid;

     Having子句

         Having子句主要用于聚合查询中,在group之后过滤那些不符合条件的组

          例如:平均成绩超过75的学生的学号和平均成绩

              select  sid,avg(score)  as avgscore  from  t_score  group  by  sid  having  avg(score)>=75;

    子查询

          例如:查询比大山老师年龄大的教师的信息

          select * from  teacher  where  tage > (select  tage  from  teacher  where  tname='大山');

          [not]in子查询   适用于子查询中返回多个值时的情况

          select  列名  from  表名  where  列名  [not] in (子查询)

          例如:查询所有已经安排教师上课的课程信息

                     select  *  from  course  where  cid  in  (select  cid  from  teachcourse);

           exists子查询:存在查询,子查询不返回任何结果,只产生逻辑真或逻辑假

           select  列名  from  表名  where  [not] eaists (子查询)

           例如:查询所有已经安排教师上课的课程信息

                     select  *  from  course  where  exists  (select  *  from  teachcourse where teachcourse.cid=course.cid);

           在from里面的子查询

           当子查询返回一个结果集时,那么它就相当于一个普通的表,所以,在from子句我们同样可以使用子查询

            在成绩表中查询出所有学生的最高平均分

             select max(avgscore) from (select avg(score) as avgscore from t_score group by sid);

           分页查询:rownum伪列

           select * from (select rownum as num,sid,sname,ssex,sclass from t_student) where num>=11 and num<=20;

  • 相关阅读:
    odoo API装饰器one、model、multi的区别
    odoo配置界面设置字段默认值
    redhat_6.5下载地址
    常用在线工具链接
    odoo开发环境搭建(四):python开发工具IDE pycharm配置
    odoo开发环境搭建(三):安装odoo依赖的python包
    odoo开发环境搭建(二):安装Ubuntu 17虚拟机
    odoo开发环境搭建(一):安装VMware Workstation
    火狐浏览器网页截屏插件
    copy代码的时候,如何去掉代码前边的编号
  • 原文地址:https://www.cnblogs.com/Java-125/p/9151077.html
Copyright © 2020-2023  润新知