第二章 錯誤點練習和答案

2021-08-21 20:28:29 字數 3987 閱讀 8591

1、外來鍵約束建立的時候遇到問題以及相關的解決辦法(要求有錯誤截圖)

問題:emp表中deptno設定了外來鍵約束,當dept表中沒有50部門時,往emp表插入deptno=50的一組資料,會報如上錯誤。

解決辦法:

先往dept表中插入部門編號為50的資料

insert into dept values(50,』cleck』,』beijing』);

然後再在emp表中插入資料

insert into emp (empno,ename,deptno) values (7940,』dwa』,50);

問題:deptno設定了外來鍵約束,deptno=10的資訊兩個表中都有,當刪除父表中deptno=10的資訊時會報如上錯誤。

解決辦法:先刪除子表emp中deptno=10的資訊。

問題:刪除deptno主鍵時,由於deptno被emp外來鍵引用,會報如上錯誤

解決辦法:先刪除emp表中的外來鍵約束,再來刪除dept表的主鍵約束

問題:當所需關聯的表中資料沒有建主鍵約束的時候,設定外來鍵約束會報如上錯誤。

解決辦法:先在關聯表中建立主鍵約束,再建立外來鍵約束。

2、怎樣得到乙個字串中字母a的個數?寫出乙個方法即可

select length(『addsaad』)-length(replace(『addsaad』,』a』,」)) from dual;

3、怎麼把這樣乙個表

year month amount

1991 1 1.1

1991 2 1.2

1991 3 1.3

1991 4 1.4

1992 1 2.1

1992 2 2.2

1992 3 2.3

1992 4 2.4

查成這樣乙個結果

year m1 m2 m3 m4

1991 1.1 1.2 1.3 1.4

1992 2.1 2.2 2.3 2.4

create table time (year number(4),month number(2),amount number);

select * from time;

insert into time values(1991,1,1.1);

insert into time values(1991,2,1.2);

insert into time values(1991,3,1.3);

insert into time values(1991,4,1.4);

insert into time values(1992,1,2.1);

insert into time values(1992,2,2.2);

insert into time values(1992,3,2.3);

insert into time values(1992,4,2.4);

select year,

sum(decode(month,1,amount,0)) m1,

sum(decode(month,2,amount,0)) m2,

sum(decode(month,3,amount,0)) m3,

sum(decode(month,4,amount,0)) m4

from time group by year;

–各種工作在各個部門的人數是多少

job 10 20 30 總計

sales 1 3 1 5

select

job,

sum(decode(deptno,10,1,0)) 「10」,

sum(decode(deptno,20,1,0)) 「20」,

sum(decode(deptno,30,1,0)) 「30」,

sum(decode(deptno,10,0,20,0,30,0,1))其他部門,

count(*) total

from emp

group by job

4.有一張表,裡面有2個字段:課程名稱,成績。

其中有3條記錄分別表示語文70分,數學80分,英語58分,

請用一條sql語句查詢出這三條記錄並按以下條件顯示出來:

大於或等於80表示優秀,大於或等於60表示及格,小於60分表示不及格。

顯示格式:

語文 數學 英語

及格 優秀 不及格

create table table1 (cname varchar2(10),score number(3));

select * from table1;

insert into table1 values(『語文』,70);

insert into table1 values(『數學』,80);

insert into table1 values(『英語』,58);

select max(case when cname=』語文』 and score>=80 then 『優秀』

when cname=』語文』 and score>=60 then 『及格』

when cname=』語文』 and score<60 then 『不及格』

else null end) 語文,

max(case when cname=』數學』 and score>=80 then 『優秀』

when cname=』數學』 and score>=60 then 『及格』

when cname=』數學』 and score<60 then 『不及格』

else null end) 數學,

max(case when cname=』英語』 and score>=80 then 『優秀』

when cname=』英語』 and score>=60 then 『及格』

when cname=』英語』 and score<60 then 『不及格』

else null end) 英語

from table1;

select max(case

when cname =』語文』 and score >=80 then 『優秀』

when cname =』語文』 and score >=60 then 『及格』

when cname =』語文』 and score <60 then 『不及格』

end) 語文,

max( case

when cname =』數學』 and score >=80 then 『優秀』

when cname =』數學』 and score >=60 then 『及格』

when cname =』數學』 and score <60 then 『不及格』

end) 數學,

max( case

when cname=』英語』 then

case when score>=80 then 『優秀』

when score>=60 then 『及格』

when score<60 then 『不及格』

end

end) 英語

from table1;

5、乙個日期判斷的sql語句請取出tab5表中日期(sendtime欄位)為當天的所有記錄?

select * from tab5 where to_char(sendtime,』yyyymmdd』)=to_char(sysdate,』yyyymmdd』)

6、顯示員工表中資料資訊,要求每四條資料為一頁,顯示第三頁的資料資訊

select * from (

select ename,sal,deptno,

ceil(rownum/4) page

from emp) where page=3;

select * from

(select e.*,rownum r from emp e

where rownum<=4*3)

where r>(3-1)*4;

python核心程式設計第二章練習答案

迴圈和操作符 自己定義乙個列表的較簡單,下面的答案是使用者自己輸入列表 方法一sb 後來發現這種方法只能處理0 9的數字 方法二 但是這種只能每次輸入乙個數字 1 print 1 取五個數的和 n2 取五個數的平均值 nx 退出 option input please input your opti...

AC 第二章答案

2 1 將pad的值改為0即可,其他不做任何變動。2 2 將pad分解為行空白數與列空白數,因此在對行進行計數和對列進行計數時將分別進行,不會發生衝突。2 3 源 include include using std cin using std endl using std cout using st...

第二章 練習。

1.正因子問題。include include int main printf d count return 0 注意 if if 如果是 if n i 0 count if i n i count 會比正確結果多一。可以用以下程式檢驗,看中間結果。include include int main ...