Oracle數據庫學習(一)

SQL語言是通用的數據庫語言數據庫

SQL命令可分爲數據定義語言、數據操縱語言、事務控制語言和數據控制語言函數

Oracle支持的數據類型包括字符、數值、日期時間、RAW和LOB等學習

僞列:ROWID、ROWNUM排序

數據完整性:實體完整性、域完整性、引用完整性、自定義完整性事務

一、選擇無重複的行,使用distinct關鍵字ci

     select  distinct  sclass  from  student;table

二、給列指定別名class

     select  cid  as 課程號,cname  as  課程名 from course;select

三、對查詢結果進行排序   order by  排序字段  排序方式分頁

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

四、模糊查詢:字段  like  匹配表達式

      %:0個或多個字符

       _:任意單個字符

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

五、利用現有的表建立表

     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;

相關文章
相關標籤/搜索