oracle 11g-SQL语句:等值链接,外连接问题

问题描述

SQL语句:等值链接,外连接问题

编程:按要求写出SQL语句
TableX有三个字段Code,Name,Age,其中Code为主键;
TableY有三个字段Code,Class,Score,其中Code+Class为主键;
两表记录如下:

Code    Name    Age
97001     张三       22
97002     赵四       21
97003     张飞       20
97004     李五       22
Code   Class    Score
97001    数学       80
97002    计算机   59
97003    计算机   60
97004    数学      55
1.通过等值联接,取出Name,Class,Score,请写出SQL即输出结果 

2.通过外联接,取出每个学生的Name,Class,Score,请写SQL输出结果

楼主目前用的数据库是oracle 11g,尽量用Oracle的sql语句吧,如果用其他数据库的也
不介意的,不过回答的朋友请提示一下用的是什么数据库!

为了方便一些朋友调试,下面给出创建数据库和添加记录的sql语句吧.

 create table TABLEX
(
CODE VARCHAR2(10) not null,
NAME VARCHAR2(20),
AGE NUMBER
);
alter table TABLEX
add constraint P_TABLEX primary key (CODE);
create table TABLEY
(
CODE VARCHAR2(10) not null,
CLASS VARCHAR2(20) not null,
SCORE NUMBER
);
alter table TABLEY
add constraint P_TABLEY primary key (CODE, CLASS);
insert into TABLEX (CODE, NAME, AGE)
values ('97001', '张三', 22);
insert into TABLEX (CODE, NAME, AGE)
values ('97002', '赵四', 21);
insert into TABLEX (CODE, NAME, AGE)
values ('97003', '张飞', 20);
insert into TABLEX (CODE, NAME, AGE)
values ('97004', '李五', 22);
commit;
insert into TABLEY (CODE, CLASS, SCORE)
values ('97001', '数学', 80);
insert into TABLEY (CODE, CLASS, SCORE)
values ('97002', '计算机', 59);
insert into TABLEY (CODE, CLASS, SCORE)
values ('97003', '计算机', 60);
insert into TABLEY (CODE, CLASS, SCORE)
values ('97004', '数学', 55);
commit;

ps:由于没有多少分,之类只能给2分了,请见谅。

解决方案

1、 SELECT NAME,CLASS,SCORE FROM TABLEX,TABLEY WHERE TABLEX.CODE=TABLEY.CODE

2、SELECT NAME,CLASS,SCORE FROM TABLEX LEFT JION TABLEY ON TABLEX.CODE=TABLEY.CODE

解决方案二:

1、 SELECT NAME,CLASS,SCORE FROM TABLEX,TABLEY WHERE TABLEX.CODE=TABLEY.CODE

2、SELECT NAME,CLASS,SCORE FROM TABLEX LEFT JION TABLEY ON TABLEX.CODE=TABLEY.CODE

时间: 2024-11-01 11:11:59

oracle 11g-SQL语句:等值链接,外连接问题的相关文章

《卸甲笔记》-PostgreSQL和Oracle的SQL差异分析之一:外连接

PostgreSQL是世界上功能最强大的开源数据库,在国内得到了越来越多机构和开发者的青睐和应用.随着PostgreSQL的应用越来越广泛,Oracle向PostgreSQL数据库的数据迁移需求也越来越多.数据库之间数据迁移的时候,首先是迁移数据,然后就是SQL.存储过程.序列等程序中不同的数据库中数据的使用方式的转换.下面根据自己的理解和测试,写了一些SQL以及数据库对象转换方面的文章,不足之处,尚请多多指教. 外连接 Oracle数据库中,数据的外连接有两种写法.一种是标准SQL的写法.[l

Oracle中SQL语句连接字符串的符号使用介绍_oracle

Oracle中SQL语句连接字符串的符号为|| 复制代码 代码如下: select catstr(tcdm) || (',') from T_YWCJ_RWCJR where cjrjh='009846' and rwid='12050' and jsdm='CJY' 拼接成一条数据并连接一个","

Oracle常用sql语句

Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象 一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, --) VALUES ( 值1, 值2, --); INSERT INTO 表名(字段名1, 字段名2, --) SELECT (字段名1, 字段名2, --) FROM 另外的表名; 字符串类型的字段值必须用单引号括起来, 例如: 'GOOD DAY' 如果字段值里包含单引号' 需要

oracle常用sql语句_oracle

正在看的ORACLE教程是:oracle常用sql语句.SQL*Plus system/manager 2.显示当前连接用户 SQL> show user 3.查看系统拥有哪些用户 SQL> select * from all_users; 4.新建用户并授权 SQL> create user a identified by a;(默认建在SYSTEM表空间下) SQL> grant connect,resource to a; 5.连接到新用户 SQL> conn a/a

把这四条sql语句从sqlsever变成oracle的sql语句,求帮忙

问题描述 把这四条sql语句从sqlsever变成oracle的sql语句,求帮忙 1C 1.SELECT top 1 MENUID+1 from app_menu ORDER BY CAST(MENUID AS int) desc 2.SELECT top 1 idfileNamefilePathcreateTimemd5fileSize FROM VIS_file WHERE md5=#md5# 3. SELECT top 1 USERIDREALNAMEGENDEROTELOEMAILQQ

Oracle查询SQL语句,请教各位大神

问题描述 Oracle查询SQL语句,请教各位大神 有这样一些数据: name subject张三 语文 李四 数学 张三 数学 李四 英语 张三 历史 想得到的结果: name subject张三 语文,数学,历史 李四 数学,英语 请教SQL语句,各路大神帮忙思考下. 解决方案 SELECT name , wmsys.wm_concat (subject) as result FROM 表名 GROUP BY name 解决方案二: 这个主要用SQL语句将subject里的数据拼接成一个字符

sqlserver中一条sql语句把插入数据的ID返回出来,oracle中sql语句要怎么写?

问题描述 sqlserver中一条sql语句把插入数据的ID返回出来,oracle中sql语句要怎么写? sqlserver中一条sql语句把插入数据的ID返回出来,oracle中sql语句要怎么写? 解决方案 oracle,sqlserver分页查询sql语句重复的数据只取一条,SQL语句如何写 解决方案二: select test.currval from dual 解决方案三: oracle里面不是差不多的吗

Oracle中SQL语句解析的步骤

我们都知道在Oracle中每条SQL语句在执行之前都需要经过解析,这里面又分为软解析和硬解析.那么这两种解析有何不同之处呢?它们又分别是如何进行解析呢?Oracle内部解析的步骤又是如何进行的呢?下面我们就这些话题进行共同探讨. 在Oracle中存在两种类型的SQL语句,一类为DDL语句,他们是从来不会共享使用的,也就是每次执行都需要进行硬解析.还有一类就是DML语句,他们会根据情况选择要么进行硬解析,要么进行软解析.在Oracle 8i OCP教材的023中1-12有说明SQL语句的解析步骤,

C#中如何执行多条Oracle的SQL语句(不用存储过程和事务)

问题描述 在改造一个项目的时候发现,项目里面有比较多的批sql(在SQLServer库+System.Data.SqlClient是可以执行多条SQL语句),改造成Oracle的SQL语句之后发现不能通过OracleClient来执行,无论是command的executenoquery()还是scalar()等方法.需要执行的SQL语句如下:deletefromt1wheret1.f1='11';deletefromt2wheret2.f1='22';selectf1fromt3wheret3.

Oracle之SQL语句性能优化(34条优化方法)_oracle

好多同学对sql的优化好像是知道的甚少,最近总结了以下34条仅供参考. (1)选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. (2) WH