国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Oracle - 在oracle 數據庫查詢的select 查詢字段中關聯其他表的方法

在oracle 數據庫查詢的select 查詢字段中關聯其他表的方法

2019-11-06 13:38oracle教程網 Oracle

在實際開發過程中,特別是在做數據查詢的時候,能夠根據動態生成的sql語句將查詢的結果轉化并返回到業務處理邏輯(或頁面展示出來)能大大的減輕業務邏輯的處理復雜度。

大部分情況下,這種動態生成的sql查詢語句寫法如下: 

復制代碼代碼如下:


select A表.字段1,A表.字段2,B表.字段返回,C表.字段返回 from A表 ,B表,C表 [where A表,B表,C表關聯及各自的條件語句] 


但是這個方法有一個缺點,那就是在動態的生成這個查詢語句的業務邏輯程序仍然很復雜。這里就介紹一個降低業務邏輯復雜度的查詢sql生成方式。其語法結構如下: 

復制代碼代碼如下:


select A表.字段1,A表.字段2,B表.字段,C表.字段 from A表 [where A表的條件語句] 


業務邏輯程序通過這種方式生成的sql語句時只需修改select的字段,而不需像通用方法那樣需要同時動態修改select字段,from的表,以及where 語句。這樣真個業務邏輯就能將生成sql語句的關注點由3+個減少為1個。下面就該方式實現舉例如下: 

首先,建立三個表,一個反應學生基本情況的信息表——student表,兩個存放學生相關信息的代碼表——sexCode表(性別代碼表),gradeCode(年紀代碼表),建表語句如下: 

復制代碼代碼如下:


-- Create table STUDENT 
create table STUDENT 

ID number, 
name nvarchar2(10), 
sex char(1), 
grade char(1), 
age number(2) 

tablespace SDMP 
storage 

initial 64K 
minextents 1 
maxextents unlimited 
); 
-- Add comments to the columns 
comment on column STUDENT.name 
is '學生姓名'; 
comment on column STUDENT.sex 
is '學生性別'; 
comment on column STUDENT.grade 
is '年級'; 
comment on column STUDENT.age 
is '年齡';

 

復制代碼代碼如下:


-- Create table SEXCODE 
create table SEXCODE 

DM char(1), 
MC nvarchar2(5) 

tablespace SDMP 
storage 

initial 64K 
minextents 1 
maxextents unlimited 
); 
-- Add comments to the columns 
comment on column SEXCODE.DM 
is '代碼'; 
comment on column SEXCODE.MC 
is '名稱';

 

復制代碼代碼如下:


-- Create table GRADECODE 
create table GRADECODE 

DM CHAR(1), 
MC NVARCHAR2(5) 

tablespace SDMP 
pctfree 10 
initrans 1 
maxtrans 255 
storage 

initial 64K 
minextents 1 
maxextents unlimited 
); 
-- Add comments to the columns 
comment on column GRADECODE.DM 
is '代碼'; 
comment on column GRADECODE.MC 
is '名稱';


然后,執行以下insert語句,分別在每個表中填入信息。 

復制代碼代碼如下:


--insert into student 
insert into student(id,name,sex,grade,age) values(1,'張三','1','2',8); 
insert into student(id,name,sex,grade,age) values(2,'李四','0','1',11); 
insert into student(id,name,sex,grade,age) values(3,'王五','1','2',9); 
insert into student(id,name,sex,grade,age) values(4,'劉二','0','4',8); 
insert into student(id,name,sex,grade,age) values(5,'韓六','0','3',6); 

--insert into sexcode 
insert into sexcode(dm,mc) values('1','男'); 
insert into sexcode(dm,mc) values('0','女'); 

--insert into gradecode 
insert into gradecode(dm,mc) values('1','一年級'); 
insert into gradecode(dm,mc) values('2','二年級'); 
insert into gradecode(dm,mc) values('3','三年級');


最后,給出常用sql查詢方式和本文倡導的查詢方式及其查詢結果比較: 
通用查詢方式及其查詢結果如下: 

復制代碼代碼如下:


select s.id,s.name,sc.mc sex,gc.mc grade,s.age 
from student s,sexcode sc,gradecode gc 
where sc.dm=s.sex(+) and s.grade=gc.dm(+)

 

ID

NAME

SEX

GRADE

AGE

1

2

李四

一年級

11

2

3

王五

二年級

9

3

1

張三

二年級

8

4

5

韓六

三年級

6

5

4

劉二

 

8

本問題出查詢方法及其查詢結果如下

復制代碼代碼如下:


select s.id,s.name,s.age, 
(select mc from sexcode where dm=s.sex) sex, 
(select mc from gradecode where dm=s.grade) grade 
from student s

 

ID

NAME

AGE

SEX

GRADE

1

1

張三

8

二年級

2

2

李四

11

一年級

3

3

王五

9

二年級

4

4

劉二

8

 

5

5

韓六

6

三年級

 

注:1.對于二者的性能,這里只是做了個簡單測試,1000條數據查詢耗時二者相當,而且本文提到方法甚至略優于普通方法。

2.此方法目前只在oracle數據庫中實現并測試,其他數據庫請自行測試。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 在线观看日韩av | 精品国产黄a∨片高清在线 天天色天天色 | 亚洲一二三 | 日韩在线视频观看 | 成人av电影网址 | 亚洲伦理影院 | 久久久久久av | 午夜视频免费 | 国产91在线观看 | 欧美九九| 欧美日韩国产精品一区 | 高清av在线 | 日本久久精品 | 在线a人片免费观看视频 | 亚洲视频精品在线 | 2012中文版免费观看 | 亚洲欧美另类在线 | 成人精品视频在线 | 欧美三级电影 | 澳门av| 亚洲久久一区二区 | 亚洲aaa在线观看 | 亚洲色图在线观看 | 成人片网址| 91视频在线免费观看 | 一区二区不卡 | 91春色| 日韩精品一区二区三区 | 欧美国产激情二区三区 | 欧美日韩成人精品 | 精品久久久久久久久久久久久久 | 亚洲精品在线视频 | 欧美国产日韩精品 | 亚洲精品久久 | 91成人免费看 | 久久精品久久久 | 精品伊人 | 久久一二区 | 亚洲日本韩国在线观看 | 亚洲精品在线视频观看 | 日韩欧一区二区三区 |