在oracle 数据库查询的select 查询字段中关联其他表的方法
在实际开发过程中,特别是在做数据查询的时候,能够根据动态生成的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(+)
本问题出查询方法及其查询结果如下
代码如下:
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
注:1.对于二者的性能,这里只是做了个简单测试,1000条数据查询耗时二者相当,而且本文提到方法甚至略优于普通方法。
2.此方法目前只在oracle数据库中实现并测试,其他数据库请自行测试。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Datenimportmethode: 1. Verwenden Sie das SQLLoader -Dienstprogramm: Datendateien vorbereiten, Steuerdateien erstellen und SQLLOADER ausführen. 2. Verwenden Sie das IMP/Exp -Tool: Daten exportieren, Daten importieren. Tipp: 1. Empfohlener SQL*Loader für Big -Data -Sets; 2. Die Zieltabelle sollte vorhanden und die Spaltendefinition entspricht. 3. Nach dem Import muss die Datenintegrität überprüft werden.

Ein Primärschlüssel ist eine spezielle Spalte oder Kombination von Spalten, die jede Zeile in einer Tabelle eindeutig identifizieren. Es stellt sicher, dass die Datensätze in der Tabelle eindeutig sind und erstellt werden können durch: Angabe des Tabellennamens mithilfe der Änderungstabelle Anweisung. Fügen Sie das Schlüsselwort der Primärschlüssel hinzu, gefolgt vom Spaltennamen, um als Primärschlüssel anzugeben. Primärschlüsseleinschränkungen tragen dazu bei, die Einzigartigkeit der Daten zu gewährleisten, die Abfragegeschwindigkeiten zu verbessern, doppelte Datensätze zu verhindern und die Tabellenverbindungen zu vereinfachen.

Oracle -Umgebungsvariablen -Konfigurationshandbuch: Erstellen Sie eine Variable der Oracle_Home -Umgebungsvariable, wobei Sie auf das Oracle Home -Verzeichnis verweisen. Fügen Sie das Oracle -Binärverzeichnis der Pfadumgebungsvariable hinzu. Setzen Sie die Umgebungsvariable TNS_ADMIN (wenn die Datei mit TNS benannt ist). Überprüfen Sie die Umgebungsvariableneinstellungen, um sicherzustellen, dass die Ausgabe die festgelegten Variablen anzeigt.

Verwenden Sie die Anweisung für die Änderung der Tabelle, die spezifische Syntax lautet wie folgt: Alter table table_name add column_name data_type [Constraint-Clause]. Wo: table_name der Tabellenname ist, Spalten_Name ist der Feldname, Data_Type ist der Datentyp, und die Einschränkungsklausel ist eine optionale Einschränkung. Beispiel: Änderung der Tabelle Mitarbeiter Fügen Sie der Mitarbeitertabelle eine E -Mail -Varchar2 (100) hinzu.

Um die Oracle -Tablespace -Größe abzufragen, führen Sie die folgenden Schritte aus: Bestimmen Sie den Namen Tablespace, indem Sie die Abfrage ausführen: Wählen Sie Tablespace_Name aus dba_tablespaces. Abfragen Sie die Tablespace -Größe durch Ausführen der Abfrage: Summe (Bytes) als Total_Size, sum (bytes_free) als verfügbare_space, sum

Oracle -verstümmelte Probleme können gelöst werden, indem der Datenbankzeichen gesetzt wird, um sicherzustellen, dass sie mit den Daten übereinstimmen. Legen Sie den Client -Zeichen für die Datenbank fest. Konvertieren Sie Daten oder ändern Sie Spaltenzeichen -Sets so, dass sie Datenbankzeichen -Sets übereinstimmen. Verwenden Sie Unicode -Zeichensätze und vermeiden Sie Multibyte -Zeichensätze. Überprüfen Sie, ob die Spracheinstellungen der Datenbank und des Clients korrekt sind.

Oracle bietet mehrere Deduplication -Abfragemethoden: Das bestimmte Schlüsselwort gibt für jede Spalte einen eindeutigen Wert zurück. Die Gruppe nach Klausel gruppiert die Ergebnisse und gibt für jede Gruppe einen nicht repetitiven Wert zurück. Das eindeutige Schlüsselwort wird verwendet, um einen Index mit nur eindeutigen Zeilen zu erstellen, und das Abfragen des Index wird automatisch dedupliziert. Die Funktion row_number () weist eindeutige Zahlen und filtert Ergebnisse aus, die nur Zeile 1 enthalten. Die Funktion min () oder max () gibt nicht repetitive Werte einer numerischen Spalte zurück. Der Schnittbetreiber gibt die gemeinsamen Werte der beiden Ergebnissätze zurück (keine Duplikate).

Die Schritte zur Änderung des Feldnamens in einer Oracle -Tabelle sind wie folgt: Verbindung zur Datenbank herstellen. Verwenden Sie die Anweisung für die Änderung der Tabelle, um den Feldnamen zu ändern. Geben Sie den Tabellennamen und den alten Feldnamen an. Geben Sie den neuen Feldnamen an. Änderungen einreichen.
