ORACLE 習題之一
習題一:
表結構:
1、 表名:g_cardapply
欄位(欄位名/型別/長度):
applyno varchar2(8);//申請單號(關鍵字)
applydate date; //申請日期
state varchar2(2);//申請狀態
2、 表名:g_cardapplydetail
欄位(欄位名/型別/長度):
applyno varchar8;//申請單號(關鍵字)
name varchar30;//申請人姓名
idcard varchar18;//申請人身份證號
state varchar2;//申請狀態
其中,兩個表的關聯欄位為申請單號。
題目:
1、查詢身份證號碼為440401430103082的申請日期
2、查詢同一個身份證號碼有兩條以上記錄的身份證號碼及記錄個數
3、將身份證號碼為440401430103082的記錄在兩個表中的申請狀態均改為07
4、刪除cardapplydetail表中所有姓李的記錄
建表語句:
SQL>create table g_cardapply(
applyno varchar2(8) primary key,
applydate date not null,
state varchar2(2)
);
SQL> create table g_cardapplydetail(
2 applyno varchar2(8) primary key,
3 name varchar2(30) not null,
4 idcard varchar2(18) not null,
5 state varchar2(2) not null,
6 constraint FK_CARDAPPLY_DETAIL FOREIGN KEY (applyno) references g_cardapply(applyno)
7 );
解題思路:
1.給的是表g_cardapplydetail中的idcard,要的是表g_cardapply中的apllydate,這是跨表操作,必須關聯。
有兩種方法:
a:
select a.applydate
from g_cardapply a
inner join g_cardapplydetail b
on a.applyno=b.applyno
where b.idcard='440401430103082';
b:
用子查詢(效率比較低)
select applydate
from g_cardapply
where applyno in
(
select applyno
from g_cardapplydetail
where idcard='440401430103082'
);
2.給的是idcard要的是idcard及記錄,只在一張表中操作即可。這有統計的操作,必然涉及到分組。分組時,只有被分組的欄位和被聚合函式修飾的欄位才能出現在select後面。因為是虛表,所以不能用where,必須用having。
select idcard,count(*)
from g_cardapplydetail
group by idcard
having count(*)>=2;
3.這是跨表修改,因為關聯只能用來查詢,所以只能用子查詢來修改(刪除也是修改,子查詢是個萬金油,但查詢效率低)。
沒有一條語句能夠修改兩張表,所以要分兩條語句完成。
update g_cardapplydetail set state='07' where idcard='440401430103082';
update g_cardapply
set state='07'
where applyno in (
select applyno
from g_cardapplydetail
where idcard='440401430103082'
);
4.這道題考的是模糊查詢,%可以表示多個字元,_(下劃線)代表一個字元。
delete from g_cardapplydetail
where name like '李%'
相關文章
- SQL經典練習題48道之一(1-10)SQL
- Oracle for Windows安裝和配置之一OracleWindows
- Oracle Haip無法啟動問題學習OracleAI
- MySQL學習筆記之一MySql筆記
- Machine Learning(機器學習)之一Mac機器學習
- Elasticsearch聚合學習之一:基本操作Elasticsearch
- jackson學習之一:基本資訊
- oracle資料庫事務transaction鎖lock模式思考之一Oracle資料庫模式
- JUnit5學習之一:基本操作
- 從零開始學 Oracle 練習題答案(9-10)Oracle
- Oracle trigger問題Oracle
- FFmpeg學習之一(FFmpeg原始碼編譯)原始碼編譯
- Linux運維工程師面試題之一Linux運維工程師面試題
- oracle ocp 19c考題,科目082考試題-Oracle NetOracle
- Oracle練習詳解Oracle
- Oracle學習路線Oracle
- Oracle學習總結Oracle
- web安全機制問題詳解之一:XSSWeb
- 習題練習題-第二題
- 【Oracle】Oracle wrong result一則(優化器問題)Oracle優化
- oracle學習筆記《一》Oracle筆記
- 【REDO】Oracle redo undo 學習Oracle Redo
- Oracle學習、進階資料合集(含教程、筆記、題庫下載與學習方法分享)Oracle筆記
- 數字人粒子系統學習筆記之一筆記
- 演算法學習之一:3SUM變體演算法
- docker 學習之一 裝MySQL 供遠端使用 LinuxDockerMySqlLinux
- git實用複習篇之一步到位!Git
- hive學習筆記之一:基本資料型別Hive筆記資料型別
- Oracle dblink監聽問題Oracle
- OGG-Oracle 11.2.0.1 ->19.3 pdb 使用Ogg 同步版本相關問題學習整理Oracle
- 統計學習方法c++實現之一 感知機
- Flutter筆記——幀繪製系列之一(原始碼學習)Flutter筆記原始碼
- 系統學習iOS動畫之一:檢視動畫iOS動畫
- 大資料框架之一——Hadoop學習第四天大資料框架Hadoop
- 最全SpringBoot學習教程,程式設計師必學之一Spring Boot程式設計師
- Python學習系列之一: python相關環境的搭建Python
- LeetCode3三部曲之一:解題思路LeetCode
- oracle語句練習--初級Oracle
- Oracle EBS基礎學習:Oracle EBS啟用診斷功能Oracle