數據庫學習筆記

同時出現了where,group by,having,order by的時候,執行順序和編寫順序:mysql

完成一個複雜的查詢語句,需求以下: 
按由高到低的順序顯示我的平均分在70分以上的學生姓名和平均分,爲了儘量地提升平均分,在計算平均分前不包括分數在60分如下的成績,而且也不計算賤人(jr)的成績。 分析: 
1.要求顯示學生姓名和平均分 
所以肯定第1步select s_name,avg(score) from student 
2.計算平均分前不包括分數在60分如下的成績,而且也不計算賤人(jr)的成績 
所以肯定第2步 where score>=60 and s_name!=’jr’ sql

3.顯示我的平均分 
相同名字的學生(同一個學生)考了多門科目數據庫

所以按姓名分組 肯定第3步 group by s_name oracle

4.顯示我的平均分在70分以上 
所以肯定第4步 having avg(s_score)>=70 app

5.按由高到低的順序 
所以肯定第5步 order by avg(s_score) descoop

總結:1>sql語句寫的時候having子句必須跟在group by子句以後,在order by子句以前。spa

   2>利用group by子句根據某字段進行分組,該字段必定要出如今select語句裏。code

   3>每查詢一條主線都會到子查詢全部的結果去比對。blog

 

 

oracle查詢時間段:

select * from mytable where to_char(install_date,'YYYYMMDD') > '20050101';
select * from mytable where install_date  > to_date('2005-01-01','yyyy-mm-dd');  

oracle like運用

app_key like CONCAT('%',CONCAT(#{appKey},'%'))

 

oracle數據庫使用plsqldev遷移數據:ip

數據量較大的時候,直接運行sql腳本會卡死,需打開命令窗口,把sql腳本放在某個目錄下(例如e盤中room.sql),

須要注意的是若是insert中的的內容有特殊字符的話(例如&等),

首先執行命令 set define off,而後才能insert成功,不然會報錯,

接着執行@@e:\room.sql

 

 

數據庫join:

  得出的結論是:條件放在on與放在where後面的做用是不同的。on對中間結果進行篩選(我的更傾向於中間運算),
再由where對最終結果進行篩選。(on子句在where子句以前)
  inner join和left join不同,inner join左邊或右邊的結果爲空,該行記錄就不顯示了。
而left join會以左邊的表爲保留表,就算右邊的結果爲空,該行仍然顯示。
 

遊標的使用:

declare
--類型定義
cursor c_job is
select room_id,multiple
from multiple_log 
where id in (select max(id) from multiple_log group by room_id);
--定義一個遊標變量c_row c_job%ROWTYPE ,該類型爲遊標c_job中的一行數據類型
c_row c_job%rowtype;
begin
for c_row in c_job loop
dbms_output.put_line(c_row.room_id||'-'||c_row.multiple);
update user_count u set u.multiple = c_row.multiple 
where u.room_id = c_row.room_id ;
end loop;
end;

  

mysql  timestamp  datetime 默認設置

在建立新記錄的時候把這個字段設置爲當前時間,但之後修改時,再也不刷新它

TIMESTAMP DEFAULT CURRENT_TIMESTAMP

在建立新記錄的時候把這個字段設置爲0(能夠隨意設置),之後修改時刷新它 
TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

在建立新記錄和修改現有記錄的時候都對這個數據列刷新
TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

在建立新記錄的時候把這個字段設置爲給定值,之後修改時刷新它

TIMESTAMP DEFAULT ‘yyyy-mm-dd hh:mm:ss’ ON UPDATE CURRENT_TIMESTAMP

 

 

相關文章
相關標籤/搜索