笔试之数据库

1. 数据库:两个数据库表之间的内连接和外连接是怎么样的?有什么样的区别?

  内连接:平时最常用的等值连接,例如:select * from A, B where A.id = B.id;

  外连接:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接

      其中左外连接:左边表数据行全部保留,右边表保留符合连接条件的行;

      其中右外连接:右边表数据行全部保留,左边表保留符合连接条件的行;

      其中左外连接:左外连接 union 右外连接。

  举例如下:

  表TESTA,TESTB,TESTC,各有A, B两列

A.内连接

内连接,即最常见的等值连接,例:

SELECT * FROM TESTA,TESTB WHERE TESTA.A = TESTB.A

结果


A


B


A


B


001


10A


001


10B

B.外连接

外连接分为左外连接,右外连接和全外连接。

1.  左外连接 left outer join 或者 left join

  左外连接就是在等值连接的基础上加上主表中的未匹配数据,例:

SELECT * FROM TESTA LEFT OUTER JOIN TESTB ON TESTA.A = TESTB.A

Oracle 支持另一种写法

SELECT * FROM TESTA,TESTB WHERE TESTA.A = TESTB.A(+)

  结果:


A


B


A


B


001


10A


001


10B


002


10B

  三个表做左外连接:

SELECT * FROM TESTA LEFT OUTER JOIN TESTB
ON TESTA.A = TESTB.A LEFT OUTER JOIN TESTC
ON TESTA.A = TESTC.A

  Oracle 支持的另外一种写法

SELECT * FROM TESTA,TESTB,TESTC WHERE TESTA.A=TESTB.A(+)
AND TESTA.A=TESTC.A(+)

  结果:


A


B


A


B


A


B


001


10A


001


10B


001


10C


002


20A

2. 右外连接 right outer join 或者 right join

  右外连接是在等值连接的基础上加上被连接表的不匹配数据

SELECT * FROM TESTA RIGHT OUTER JOIN TESTB
ON TESTA.A = TESTB.A

Oracle支持的另一种写法

SELECT * FROM TESTA,TESTB WHERE TESTA.A(+)=TESTB.A

  结果:


A


B


A


B


001


10A


001


10B


003


30B

3. 全外连接 full outer join 或者 full join

  全外连接是在等值连接的基础上将左表和右表的未匹配数据都加上

SELECT * FROM TESTA FULL OUTER JOIN TESTB
ON TESTA.A =TESTB.A

  全外连接的等价写法,对同一表先做左连接,然后右连接

SELECT  TESTA.*,TESTB.* FROM TESTA LEFT OUTER JOIN TESTB
ON TESTA.A=TESTB.A
UNION
SELECT TESTA.*,TESTB.* FROM TESTB LEFT OUTER JOIN TESTA
ON TESTA.A=TESTB.A

  结果:


A


B


A


B


001


10A


001


10B


002


20A


003


30B

2. 数据库的 group by 怎么使用?count()函数的使用

时间: 2024-11-08 11:01:41

笔试之数据库的相关文章

在线笔试系统 数据库设计

试卷模板:papertemaplate 岗位类型:positiontype 题库:question 答卷:sheet 应聘者答案(答卷明细表):ansersheet 用户表(包含面试吗.HR.应聘者):user 角色表:role (用来区分用户的类型) 试卷模板和题库的关系(试卷明细表): paperdetails 应聘者和岗位的关系:userpositiondertails 用户表(用户表包含3个角色)user 列名 含义 类型 属性 id 记录编号 INT 自增.主键.非空 loginnam

数据库操作语句

转自:http://www.cnblogs.com/lixiangfa/archive/2011/09/15/2178033.html 笔试回来,数据库基础知识总结 今天到某公司笔试,数据库考的比较多,但是说老实话,考的也比较基础.现在趁回忆得起来,将数据库知识简单整理如下: 一.建表指令 比如创建一个学生表student,它由学号Sno,姓名Sname,性别Ssex,年龄Sage,所在系Sdept五个属性组成.其中学号不能为空,值是唯一的,并且姓名取值也唯一. CREATE TABLE Stu

面试题: 数据库 真实面试题未看13

今天到某公司笔试,数据库考的比较多,但是说老实话,考的也比较基础.现在趁回忆得起来,将数据库知识简单整理如下: 一.建表指令 比如创建一个学生表student,它由学号Sno,姓名Sname,性别Ssex,年龄Sage,所在系Sdept五个属性组成.其中学号不能为空,值是唯一的,并且姓名取值也唯一. CREATE TABLE Student (Sno    CHAR(10) NOT NULL UNIQUE, Sname  CHAR(20) UNIQUE, Ssex    char(2), Sag

2014考研复试漫谈 --致考研刚刚结束的学弟学妹

回忆1( 成绩出来前): 去年考完研的时候,自己对于考上没有多大的把握,所以,考完研决定要做两手准备:一边准备复习,一边为找工作而准备着. 好像大学过的最紧张的日子莫过于此,因为眼看着周围的同学都纷纷出去找工作,并且有的同学还找到了不错的工作.自己现在考研占据了大量的时间,已经错过了所谓的找工作的黄金期,同时觉得自己的专业技能也不是很强,所以很担心自己万一考不上了,工作也不好找.那就真成了没人要的孩子了.没有什么比前途未卜更令人担忧了...所以,大过年的,我还在看王道新出的一本面试宝典,在巩固自

asp.net 数据库面试题(基础)

今天到某公司笔试,数据库考的比较多,但是说老实话,考的也比较基础.现在趁回忆得起来,将数据库知识简单整理如下: 一.建表指令 比如创建一个学生表student,它由学号Sno,姓名Sname,性别Ssex,年龄Sage,所在系Sdept五个属性组成.其中学号不能为空,值是唯一的,并且姓名取值也唯一. CREATE TABLE Student (Sno    CHAR(10) NOT NULL UNIQUE, Sname  CHAR(20) UNIQUE, Ssex    char(2), Sag

数据库笔试面试题库(Oracle、MySQL等)

数据库笔试面试题库(Oracle.MySQL等) ⊙ [DB笔试面试67]在Oracle中,关于表分区下列描述不正确的是()⊙ [DB笔试面试65]在Oracle中,哪一种表分区方式建议的分区数是2的幂(2.4.8等),以获得最平均的数据发布()⊙ [DB笔试面试63]要以NAME's address is ADDR格式返回数据,以下SQL语句正确的是⊙ [DB笔试面试61]以下关于数据模型要求错误的是()⊙ [DB笔试面试59]以下关于视图叙述不正确的是()⊙ [DB笔试面试57]下列关于SQ

程序员面试笔试宝典学习记录(三)(数据库相关知识)

关系数据库系统与文件数据库系统的区别如下: (a)关系数据库系统的主要特征是数据的结构化,而文件数据库系统是数据的非结构化. (b)关系数据库系统中,用户看到的逻辑结构是二维表,而文件数据库系统中,基本元素是文件. (c)文件数据库系统可以实现多媒体文件管理,支持C/S工作模式. acid,指数据库事务正确执行的四个基本要素的缩写.包含:原子性(atomicity),一致性(consistency),隔离性(isolation),持久性(durability). 数据查询:select sele

C/C++笔试忍法帖03——数据库篇

1.存储过程是什么?有什么用?有什么优点? 存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它. 存储过程用于实现频繁使用的查询.业务规则.被其他过程使用的公共例行程序. 存储过程在创建时即在服务器上进行编译,所以执行起来比单个 SQL 语句快. 2.一般数据库若出现日志满了,会出现什么情况,是否还能使用? 答:只能执行查询等读操作,不能执行更改,备份等写操作,原因是任

面试笔试常考的mysql 数据库操作group by

IT 面试中,数据库的相关问题基本上属于必考问题,而其中关于sql语句也是经常考察的一个重要知识点. 下面介绍下sql语句中一个比较重要的操作group by,他的重要行一方面体现在他的理解困难度,一方面体现应用中的长见性. 首先,给出一个studnet学生表: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(30) DEFAULT NULL, `sex` tinyint(1) DEFAU