zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    Homestead 安装其它的PHP版本
    Angular调用父Scope的函数
    检测到在集成的托管管道模式下不适用的ASP.NET设置
    IE8不能保存cookie,造成response.redirect死循环的原因
    IE浏览器“自定义安全级别”不能设置的原因
    测试sql server服务是否配置正确
    Sql Server Express 2005提示"failed to generate a user instance of sql server "
    cordova使用Gradle构建下载maven太慢,使用阿里云镜像
    使用Cordova编译Android平台程序提示:Could not reserve enough space for 2097152KB object heap
    Angular动态编译Html
  • 原文地址:https://www.cnblogs.com/Java-125/p/9151077.html
Copyright © 2011-2022 走看看