数据库总结

题目:有如下两个表:

        表A                    表B

请写SQL语句输出一下效果:

(1)

  

(2)

(3)

下面讲解一下这三个小题:

  首先由表可以看出:A,B两个表的id都是字符串类型。这一点很重要,后面会用到。

1.

  由第一个小题的要求(图)可以看出,这是在考察SQL的等值连接,表A和表B 的id相等的都满足该条件。故:

    

select * from A a,B b where a.id_a = b.id_b;

2.

  由图2可知:A的没有全显示,而B的全显示出来了,想到这,马上就可以知道这是“右外连接”,连接的条件为:A的id等于B的id且A的name等于B的name。故可以得到如下SQL语句:

select  * from A a right  join B b on a.id_a = b.id_b  and a.name_a = b.name_b;

  不过,这种查询结果有一点小问题:如图

  可以看出来,这明显不符合题目要求(可以对比一下第二题的要求)。

  接下来就考到细节了,查询后的结果去null。SQL有这样一个函数ISNULL(表达式1,表达式2),该函数的大意就是:查询的结果表达式1是否位NULL,如果为NULL则取表达式2的值,否则取表达式1的值。

所以,完全的答案是:

1 select  ISNULL(a.id_a,‘‘) id_a,ISNULL(a.name_a,‘‘) name_a,ISNULL(a.desc_a,‘‘) desc_a,b.id_b,b.name_b,b.desc_b from A a right  join B b on a.id_a = b.id_b  and a.name_a = b.name_b;

3.

  由图三可知:

    A表id为3对应B表的那一行为空,B表id为3对应A表的那一行为空。这时,可以得出如下结论:

      分别对A表和B表全查询,但是查询的条件不能为id,而是name。可以想到 ‘full outer join on‘  ,它的大意:分别查询A,B表,A和B在查询条件满足时的数据显示出来,还有不满足查询条件的也显示出来。(去NULL的办法2中已经介绍)

1 select ISNULL(a.id_a,‘‘) id_a,ISNULL(a.name_a,‘‘) name_a,ISNULL(a.desc_a,‘‘) desc_a,ISNULL(b.id_b,‘‘) id_b,ISNULL(b.name_b,‘‘) name_b,ISNULL(b.desc_b,‘‘) desc_b from A a full outer  join B b on a.id_a = b.id_b and a.name_a =b.name_b ;

时间: 2024-10-08 03:33:42

数据库总结的相关文章

数据库介绍与分类

目录 数据库介绍与分类... 1 1.1 数据库介绍... 2 1.1.1什么是数据库... 2 1.2数据库的种类... 2 1.2.1关系型数据库介绍... 2 1.2.2非关系型数据库介绍... 3 1.3 常用关系型数据库产品介绍... 4 1.3.1 Oracle数据库... 4 1.3.2 MySQL数据库... 5 1.3.3 MariaDB数据库... 5 1.3.4 SqlServer数据库... 6 1.3.5 Access数据库... 6 1.3.6 其他不常用数据库...

win7 64位系统 PB连接oracle数据库出现“oracle library oci.dll could not be loaded”问题的解决方法

今天与大家分享一个自己的学习笔记,希望能给遇到同样问题的人带来帮助. 不知道大家在win7 64位系统下用 PB连接oracle数据库时,是否遇到过“oracle library oci.dll could not be loaded”问题. 今天,在win7 64位系统下用 PB连接oracle数据库时,一直出现上述错误,在百度上找了很久,都没有找到一个完整的解决方案,咨询了很多人,(他们都说是我的PB和oracle没装好,但我装的时候没出现任何问题,一切都很顺利,而且PB和oracle都能正

C#与数据库访问技术总结(八)之ExecuteNonQuery方法

ExecuteNonQuery方法 ExecuteNonQuery方法主要用来更新数据. 通常使用它来执行Update.Insert和Delete语句. 该方法返回值意义如下: 对于Update.Insert和Delete语句,返回值为该命令所影响的行数. 对于所有其他类型的语句,返回值为-1. Command对象通过ExecuteNonQuery方法更新数据库的过程非常简单,需要进行的步骤如下: (1)创建数据库连接. (2)创建Command对象,并指定一个SQL Insert.Update

Oracle 10g通过创建物化视图实现不同数据库间表级别的数据同步

摘自:http://blog.csdn.net/javaee_sunny/article/details/53439980 目录(?)[-] Oracle 10g 物化视图语法如下 实例演示 主要步骤 在A节点创建原表和物化视图日志 在B节点创建连接A节点的远程链接 在B节点处创建目标表和与目标表名称相同的物化视图 在B节点处刷新物化视图 升级采用存储过程定时任务JOB方式定时刷新物化视图 进一步优化 文章更新记录 参考文章 Oracle 10g 物化视图语法如下: create materia

Linux环境下MySQL数据库用SQL语句插入中文显示 “问号或者乱码 ” 问题解决!

问题: 在普通用户权限下执行 mysql -u root -p进入mysql数据库,中间步骤省略,插入数据:insert into 库名(属性)values('汉字'); 会出现如下提示:  Query OK, 1 row affected, 1 warning (0.00 sec)    表明出现错误,没有插入成功,然后执行select * from 表名   就会出现如下的问题:显示的表中出现乱码或者问号. 如图: 解决方案: 首先重新打开一个终端窗口(方便操作),进入root用户模式 执行

WEB页面,WEB环境版本,数据库,整站备份脚本

#!/bin/bash # #WEB页面,WEB环境版本,数据库,整站备份脚本 #当发生某个原因导致整个服务器无法恢复时,利用上面备份的相关数据即可重做一台一样的服务器 date_a=`date +%Y%m%d-%H%M%S` mkdir -p /web_bak/${date_a}/conf &> /dev/null mkdir -p /web_bak/${date_a}/web &> /dev/null mkdir -p /web_bak/${date_a}/mysql &a

MySQL数据库基础知识

day02 MySQL数据库基础知识 一.基础知识概述: 基础决定你这门课程的学习成败!只有学习好这些基础知识以后,你才能真正的运用自如.才能够对数据库有更深入的了解,道路才会越走越远. 二.基础知识: 1.数据库(database):数据库就好比是一个物理的文档柜,一个容器,把我们整理好的数据表等等归纳起来. 创建数据库命令:        create database 数据库名; 2.查看数据库         show databases; 3.打开指定的数据库         use 

PL/SQL developer 连接oracle数据库报错“initialization error could not load oci.dll”

声明:PL/SQL 版本:PL/SQL Developer 9.0.6 (http://files.allroundautomations.com/plsqldev906.exe) 报错提示如图: 原因:PL/SQL只对32位OS进行支持,解决方法是额外加载一个oci.dll文件 解决办法:1.下载OCI.DLL相关库文件.地址: (需注册Oracle账号) http://www.oracle.com/technetwork/topics/winsoft-085727.html ----->  

Linux环境下启动MySQL数据库出现找不到mysqld.sock的解决办法!

问题: 在普通用户权限下运行:mysql -u root -p,回车之后如果会出现如下错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 此错误的意思就是没有找到mysqld.sock文件. 解决办法: 首先进入超级用户root权限  sudo -i 或者su - root 切换到默认目录 cd /var/lib/mysql  下查看

Java精品高级课,架构课,java8新特性,P2P金融项目,程序设计,功能设计,数据库设计,第三方支付,web安全,视频教程

36套精品Java架构师,高并发,高性能,高可用,分布式,集群,电商,缓存,性能调优,设计模式,项目实战,P2P金融项目,大型分布式电商实战视频教程 视频课程包含: 高级Java架构师包含:Spring boot.Spring  cloud.Dubbo.Elasticsearch,Redis.ActiveMQ.Nginx.Mycat.Spring.MongoDB.ZeroMQ.Git.Nosql.Jvm.Mecached.Netty.Nio.Mina.java8新特性,P2P金融项目,程序设计,