数据库工程师答案(数据库工程师的技术能力)

本文目录
数据库工程师的技术能力
数据库工程师以技术为基础,通过技术保障数据库提供更高质量的服务。数据库工程师工作的职责及在业务中的位置决定了数据库工程师需要具备更加广博的知识和深入的技术能力。在数据库环境的管理与维护中,技术任务可归结成许多不同的分类。下面列出了一名数据库工程师应掌握的一些技能:
1)理解数据备份/恢复与灾难恢复
恢复已损坏的数据库是每一个数据库工程师应掌握的最重要的技能。数据库工程师需要完全理解数据库所有可能的备份与恢复方法,以及不同备份方法与不同恢复策略的对应关系。此外,数据库工程师还需要与业务部门合作,一起确认业务需求,明确用户能够容忍的数据丢失底线。此外,业务用户还需要确定在系统故障情况下,他们的业务能够维持多长时间。理解这些需求可以帮助数据库工程师开发出一个满足业务用户要求的备份/恢复方法。一个优秀的数据库工程师要定期测试备份与恢复流程,保证他们有能力恢复业务数据,满足企业所规定的业务数据丢失与恢复要求。
2)工具集的使用
所谓工具集,指的是一组用于执行不同数据库工程师任务的脚本。这个工具集应该包含不同的小代码片段,它们可以快速诊断问题或执行一个特定的任务。这些工具脚本应该按数据库工程师的活动类型归类,如备份、索引维护、性能优化、容量管理等。由于总是会执行新任务、发现新问题或找到其他人开发的好用脚本,因此一个优秀的数据库工程师会不断地给这个工具集增加新脚本。此外,他还应该了解网上哪里能够找到一些免费的工具和脚本。一个好的数据库工程师知道什么时候可以利用其他人编写的脚本,从而节省自己的时间和改进自己的工具集。
3)知道如何快速寻找答案
数据库每天会面临各种各样故障的挑战,从硬件到网络,从性能压力到程序bug,数据库工程师都要从容应对,一一排除。即使是数据库大牛,也不可能是无所不知的,因此每个数据库工程师一方面需要不断修炼自己,积累操作系统、网络、硬件、存储系统、分布式计算等理论基础,另一方面还要有快速寻找新问题解决方法的能力。如果一个数据库实例不能按预期方式运转,那么快速寻找新问题的解决方法也是一个重要能力。一个好的数据库工程师知道如何快速地在网上查找一个未知问题的解决方法。此外,他们也可能已经知道了一些非常不错的网站,也知道业界专家会提供一些好建议,同时知道什么时候应该忽略一些不好的建议。你可能想象不到,确实有一些建议不值得参考。
4)如何监控和优化数据库性能
对于任何数据库产品,性能都尤其重要,它会直接影响产品的响应速度和用户体验。对于一个数据库工程师来说,性能优化一般需要占用50%的工作时间,因此数据库工程师需要知道如何监控和优化数据性能。
以SQL Server举例,性能是一个关键的问题,因此数据库工程师需要知道如何修复故障和监控性能问题。有许多第三方性能监控工具可以帮助数据库工程师优化性能。如果数据库工程师只使用第三方工具,而不会使用SQL Server自带的原生工具来监控性能,那么相信很快就会出现问题。虽然使用第三方工具来监控性能也很不错,但是数据库工程师一定要理解SQL自带的一些原生工具,如SQL Server Profiler、Database Engine Tuning Advisor、Dynamic Management Views、系统/扩展的存储过程、Extended Events等。许多第三方工具实际上在使用这些底层的原生工具。因此,理解这些自带的原生工具将有利于增强数据库工程师使用第三方工具的经验。
5)研究新版本
在技术领域中,没有什么是一成不变的。每隔两三年,主流数据库厂商都会发布一个大版本的更新。数据库工程师应该紧跟新版本所作的修改,它们可能有许多变化方法,最好的方法是迟早介入这个过程。测试版开放后马上下载和安装,尽快掌握第一手使用经验。一名好的数据库工程师总是走在学习排头兵,总是会第一时间安装和测试新版本。这样他们就可以尽早理解新特性,然后提出一些合理的新建议,帮助组织更好地利用新版本数据库。
6)理解代码最佳实践方法
数据库工程师应该了解如何编写高效的代码。有许多糟糕的编码实践方法会导致拙劣的性能。一名好的数据库工程师要能够理解和识别这些糟糕的编码实践方法,知道如何修改这些烂代码,让它们变成高效代码。此外,他们还要记录下写代码的最佳实践方法,并且将这些实践方法分享给其他人。
7)持续不断地学习
数据库及其组件涉及面非常广。数据库工程师很难理解一个技术的方方面面。数据库工程师需要持续学习如何管理数据库。这个学习过程有很多方法。其中之一就是参加正式培训。但是,并非人人都有这样充裕的事件和金钱,也并非人人都能够放下手头工作专门出去参加正式的培训。但是,还有许多其他方法可以获得培训,而且大多数还是免费的。一名好的数据库工程师一定要订阅一些定期发布数据库新技巧和新文章的社区网站。此外,他还应该加入一些用户组织,可以在周末参加一些当地的免费沙龙活动。
8)数据库安全性
安全性是一个热门话题。数据库工程师应该完全掌握如何实现数据库的安全访问。他们应该理解操作系统身份验证和数据库身份验证的区别,以及它们各自的使用场合。他们应该理解如何使用数据库角色来管理不同类型用户的安全配置。他们应该理解连接数据库的端口与协议。此外,他们还应该理解如何加密整个数据库,或者加密一个数据库中一个表的某一个字段,同时理解关于加密数据的各种问题。
9)数据库设计
决定数据库性能的一个关键问题是数据库设计。数据库工程师需要理解关于数据库设计的各个方面。他们要能够理解设计好坏的区别。他们需要理解为什么使用正确的外键约束、主键、检查约束和使用数据类型能够保持数据库的数据完整性和实现高效的数据查询与更新。
10)索引设计
数据库索引是提高应用程序检索和更新数据速度的重要环节。数据库工程师需要知道索引的工作原理。他们应该知道聚簇索引和非聚簇索引的区别,知道这些索引的物理存储方式。数据库工程师应该知道如何在执行计划中使用这些索引。他们应该理解如何找到索引的使用统计、理解索引碎片及如何发现丢失的索引。他们应该知道如何维护索引,以及索引统计信息对于查询引擎的重要作用。
11)容量监控与规划
数据库往往要使用大量的资源,包括CPU、内存、I/O及磁盘空间。数据库工程师应该理解如何监控数据库所需要的不同主机资源的用量。他们应该能够理解这些资源在不同时间的使用情况,以及利用历史使用数据来规划未来的容量需求。在监控过程中,数据库工程师应该能够预见到容量规划会在将来什么时候出现问题,然后采取必要的措施保持数据库不会因为容量限制而出现中断。
12)数据库许可证
不同的产品有许多不同的许可证授权方式。而且,同一款产品本身又有许多不同的版本。数据库工程师应该理解所负责的数据库版本的不同授权模式。他们应该能够提供指导如何通过合理购买授权来减少数据库总拥有成本,以及如何合理利用授权方法来降低未来版本的升级成本。
13)尽可能实现自动化
数据库工程师每天都需要执行许多的日常任务。其中一些任务需要每天执行,而另一些则每周、每月或每年执行。一名好的数据库工程师需要理解如何高效地安排自己的时间。其中一种方法是建立工作流程,这些日常任务的自动执行。通过实现日常任务的自动化执行,数据库工程师就可以用更多的时间去关注于数据库环境管理中遇到的严重问题。
你具备的特质越多,作为数据库工程师的你就越优秀。成为一名成功数据库工程师的关键是不断地学习与提高,努力去掌握更多关于如何管理和维护数据库环境的知识。
数据库如何创建视图
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。
视图是存储在数据库中的查询的SQL 语句,它主要出于两种原因:安全原因, 视图可以隐藏一些数据,如:社会保险基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资数等,另一原因是可使复杂的查询易于理解和使用。这个视图就像一个“窗口”,从中只能看到你想看的数据列。这意味着你可以在这个视图上使用SELECT *,而你看到的将是你在视图定义里给出的那些数据列:
既然视图的定义是基于基本表的,哪为什么还要定义视图呢?这是因为合理地使用视图能够带来许多好处:
1、 视图能简化用户操作
视图机制使用户可以将注意力集中在所关心地数据上。如果这些数据不是直接来自基本表,则可以通过定义视图,使数据库看起来结构简单、清晰,并且可以简化用户的的数据查询操作。例如,那些定义了若干张表连接的视图,就将表与表之间的连接操作对用户隐藏起来了。换句话说,用户所作的只是对一个虚表的简单查询,而这个虚表是怎样得来的,用户无需了解。
2、 视图使用户能以多种角度看待同一数据
视图机制能使不同的用户以不同的方式看待同一数据,当许多不同种类的用户共享同一个数据库时,这种灵活性是非常必要的。
3、 视图对重构数据库提供了一定程度的逻辑独立性
数据的物理独立性是指用户的应用程序不依赖于数据库的物理结构。数据的逻辑独立性是指当数据库重构造时,如增加新的关系或对原有的关系增加新的字段,用户的应用程序不会受影响。层次数据库和网状数据库一般能较好地支持数据的物理独立性,而对于逻辑独立性则不能完全的支持。
在关许数据库中,数据库的重构造往往是不可避免的。重构数据库最常见的是将一个基本表“垂直”地分成多个基本表。例如:将学生关系Student(Sno,Sname,Ssex,Sage,Sdept),
分为SX(Sno,Sname,Sage)和SY(Sno,Ssex,Sdept)两个关系。这时原表Student为SX表和SY表自然连接的结果。如果建立一个视图Student:
view plain copy
CREATE VIEW Student(Sno,Sname,Ssex,Sage,Sdept)AS SELECT SX.Sno,SX.Sname,SY.Ssex,SX.Sage,SY.Sdept FROM SX,SY WHERE SX.Sno=SY.Sno;
CREATE VIEW VMGRADE
AS
SELECT Sno,MAX(Grade) Mgrade
FROM SC
GROUP BY Sno
SELECT SC.Sno,Cno FROM SC,VMGRADE WHERE SC.Sno = VMGRADE.Sno AND SC.Grade = VMGRADE.Mgrade;
CREATE TABLE t_employee(
ID INT PRIMARY KEY AUTO_INCREMENT,
NAME CHAR(30) NOT NULL,
SEX CHAR(2) NOT NULL,
AGE INT NOT NULL,
DEPARTMENT CHAR(10) NOT NULL,
SALARY INT NOT NULL,
HOME CHAR(30),
MARRY CHAR(2) NOT NULL DEFAULT ’否’,
HOBBY CHAR(30)
);
INSERT INTO learning.t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’小红’,’女’,20,’人事部’,’4000’,’广东’,’否’,’网球’);
INSERT INTO learning.t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’明日’,’女’,21,’人事部’,’9000’,’北京’,’否’,’网球’);
INSERT INTO learning.t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’天天’,’男’,22,’研发部’,’8000’,’上海’,’否’,’音乐’);
INSERT INTO learning.t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’大大’,’女’,23,’研发部’,’9000’,’重庆’,’否’,’无’);
INSERT INTO learning.t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’王下’,’女’,24,’研发部’,’9000’,’四川’,’是’,’足球’);
INSERT INTO learning.t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’无名’,’男’,25,’销售部’,’6000’,’福建’,’否’,’游戏’);
INSERT INTO learning.t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’不知道’,’女’,26,’销售部’,’5000’,’山西’,’否’,’篮球’);
create TABLE t_employee_detail(
ID INT PRIMARY KEY,
POS CHAR(10) NOT NULL,
EXPERENCE CHAR(10) NOT NULL,
CONSTRAINT `FK_ID` FOREIGN KEY(ID) REFERENCES t_employee(ID)
)
INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(1,’人事管理’,’工作二年’);
INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(2,’人事招聘’,’工作二年’);
INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(3,’初级工程师’,’工作一年’);
INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(4,’中级工程师’,’工作二年’);
INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(5,’高级工程师’,’工作三年’);
INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(6,’销售代表’,’工作二年’);
INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(7,’销售员’,’工作一年’);
SELECT SELECT_priv,create_view_priv from mysql.user WHERE user=’root’
CREATE VIEW V_VIEW1(ID, NAME, SEX, AGE,DEPARTMENT) AS SELECT ID, NAME, SEX, AGE,DEPARTMENT FROM learning.t_employee;
SELECT * FROM V_VIEW1
CREATE VIEW V_VIEW2(ID, NAME, SEX, AGE,DEPARTMENT,POS,EXPERENCE) AS SELECT a.ID, a.NAME, a.SEX, a.AGE,a.DEPARTMENT,b.POS,b.EXPERENCE FROM learning.t_employee a,learning.t_employee_detail b WHERE a.ID=b.ID;
SELECT * FROM V_VIEW2
DESCRIBE V_VIEW2
show TABLE status LIKE ’V_VIEW2’
show CREATE view V_VIEW2
CREATE OR REPLACE VIEW V_VIEW1(ID, NAME, SEX) AS SELECT ID, NAME, SEX FROM learning.t_employee;
ALTER VIEW V_VIEW1(ID, NAME) AS SELECT ID, NAME FROM learning.t_employee;
SELECT * FROM learning.v_view1
UPDATE V_VIEW2 SET POS=’高级工程师’ WHERE NAME=’天天’
SELECT * FROM learning.t_employee_detail WHERE t_employee_detail.ID=3
CREATE VIEW V_VIEW3(ID, NAME,SEX,AGE,DEPARTMENT,SALARY, HOME, MARRY, HOBBY) AS SELECT ID, NAME, SEX,AGE,DEPARTMENT,SALARY,HOME,MARRY,HOBBY FROM learning.t_employee WHERE DEPARTMENT=’人事部’ WITH LOCAL CHECK OPTION;
INSERT INTO learning.V_VIEW3(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’会会会会’,’女’,20,’人事部’,’4500’,’广东’,’否’,’网球’);
SELECT * FROM learning.V_VIEW3
INSERT INTO learning.V_VIEW3(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’qqqqvasvas’,’女’,20,’研发部’,’4500’,’上海’,’否’,’网球’);
DROP VIEW IF EXISTS 视图名
这样尽管数据库的逻辑结构改变了(变为SX和SY两个表了),但应用程序不必修改,因为新建立的视图定义为用户原来的关系,使用户的外模式保持不变,用户的应用程序通过视图仍然能够查找数据。
当然,视图只能在一定程度上提供数据的逻辑独立,比如由于视图的更新是有条件的,因此应用程序中修改数据的语句可能仍会因为基本表构造的改变而改变。
4、视图能够对机密数据提供安全保护
有了视图机制,就可以在设计数据库应用系统时,对不同的用户定义不同的视图,使机密数据不出现在不应该看到这些数据的用户视图上。这样视图机制就自动提供了对机密数据的安全保护功能。例如,Student表涉及全校15个院系学生数据,可以在其上定义15个视图,每个视图只包含一个院系的学生数据,并只允许每个院系的主任查询和修改本原系学生视图。
5、适当的利用视图可以更清晰地表达查询
例如经常需要执行这样的查询“对每个学生找出他获得最高成绩的课程号”。可以先定义一个视图,求出每个同学获得的最高成绩:
view plain copy
然后用如下的查询语句完成查询:
view plain copy
二、数据准备
1、员工表
view plain copy
插入数据:
view plain copy
插入的结果:
请点击输入图片描述
然后再定义一张员工信息表:
view plain copy
插入如下:
view plain copy
内容:
请点击输入图片描述
三、使用案例
1. 语法
CREATE
通过该语句可以创建视图,若给定了,则表示当已具有同名的视图时,将覆盖原视图。select_statement是一个查询语句,这个查询语句可从表或其它的视图中查 询。视图属于数据库,因此需要指定数据库的名称,若未指定时,表示在当前的数据库创建新视图。
表和数据库共享数据库中相同的名称空间,因此,数据库不能包含相同名称的表和视图,并且,视图的列名也不能重复。
在创建视图前应先看看是否有权限:
view plain copy
Y表示有创建的权限
请点击输入图片描述
2、单表上创建视图
在员工表是创建视图
view plain copy
然后是显示内容:
view plain copy
请点击输入图片描述
3、多表上创建视图
view plain copy
显示结果
view plain copy
请点击输入图片描述
4、查看视图
(1)DESCRIBE 命令
view plain copy
请点击输入图片描述
(2)SHOW TABLE STATUS
view plain copy
请点击输入图片描述
(3)SHOW CREATE view命令
view plain copy
请点击输入图片描述
5、修改视图
(1)CREATE OR REPLACE命令
view plain copy
请点击输入图片描述
(2) ALTER 命令
view plain copy
请点击输入图片描述
6、更新视图
在MySQL中,更新视图是指通过视图来插入(INSERT)、更新(UPDATE)和删除(DELETE)表中的数据。因为视图是一个虚拟表,其中没有数据,所以通过视图更新时,都是转换到基本表来更新。
更新视图时,只能更新权限范围内的数据。超出了范围,就不能更新。
更新前:
请点击输入图片描述
更新后:
view plain copy
请点击输入图片描述
对应 的真实表上的数据也发生改变 了
view plain copy
请点击输入图片描述
不可更新的视图:
某些视图是可更新的。也就是说,可以在诸如UPDATE、DELETE或INSERT等语句中使用它们,以更新基表的内容。对于可更新的视图,在视图中的行和基表中的行之间必须具有一对一的关系。还有一些特定的其他结构,这类结构会使得视图不可更新。更具体地讲,如果视图包含下述结构中的任何一种,那么它就是不可更新的:
· 聚合函数(SUM(), MIN(), MAX(), COUNT()等)。
· DISTINCT
· GROUP BY
· HAVING
· UNION或UNION ALL
· 位于选择列表中的子查询
· Join
· FROM子句中的不可更新视图
· WHERE子句中的子查询,引用FROM子句中的表。
· 仅引用文字值(在该情况下,没有要更新的基本表)。
· ALGORITHM = TEMPTABLE(使用临时表总会使视图成为不可更新的)。
注意
视图中虽然可以更新数据,但是有很多的限制。一般情况下,最好将视图作为查询数据的虚拟表,而不要通过视图更新数据。因为,使用视图更新数据时,如果没有全面考虑在视图中更新数据的限制,就可能会造成数据更新失败。
CASCADED和LOCAL能不能决定视图是否能更新?
WITH CHECK OPTION能不能决定视图是否能更新?这两个参数的基本定义如下:
LOCAL参数表示更新视图时只要满足该视图本身定义的条件即可。
CASCADED参数表示更新视图时需要满足所有相关视图和表的条件。没有指明时,该参数为默认值。
With check option的用法:
(with check option对于没有where条件的视图不起作用的)
view plain copy
表示只限定插入部门为人事部的人。
请点击输入图片描述
然后插入一条:
view plain copy
看下结果:
view plain copy
请点击输入图片描述
同时看真实表中的数据:
请点击输入图片描述
再来插入一条:
view plain copy
请点击输入图片描述
结果显示插入失败
对于with check option用法,总结如下:
通过有with check option选项的视图操作基表(只是面对单表,对连接多表的视图正在寻找答案),有以下结论: 插入后的数据,通过视图能够查询出来就符合WITH CHECK OPTION 否则就不符合;
首先视图只操作它可以查询出来的数据,对于它查询不出的数据,即使基表有,也不可以通过视图来操作。
1.对于update,有with check option,要保证update后,数据要被视图查询出来
2.对于delete,有无with check option都一样
4.对于insert,有with check option,要保证insert后,数据要被视图查询出来
对于没有where 子句的视图,使用with check option是多余的
7、删除视图
view plain copy
等
2015年软考数据库系统工程师模拟题(一)
1.关于er图,下列说法中错误的是( )
A.现实世界的事物表示为实体,事物的性质表示为属性
B.事物之间的自然联系表示为实体之间的联系
C.在er图中,实体和属性的划分是绝对的、一成不变的
D.在er图中,实体之间可以有联系,属性和实体之间不能有联系
2.在er模型转换成关系模型的过程中,下列叙述不正确的是( )
A.每个实体类型转换成一个关系模型
B.每个联系类型转换成一个关系模式
C.每个m:n联系转换成一个关系模式
D.在1:n联系中,“1”端实体的主键作为外键放在“n”端实体类型转换成的关系模式中
3.在数据库设计中,超类实体与子类实体的关系是( )
A.前者继承后者的所有属性
B.后者继承前者的所有属性
C.前者只继承后者的主键
D.后者只继承前者的主键
4.综合局部er图生成总体er图过程中,下列说法错误的是( )
A.不同局部er图中出现的相同实体,在总体er图中只能出现一次。
B.在总体er图中可以添加属于不同局部er图实体间的联系。
C.在总体er图中可以添加局部er图中不存在的联系。
D.在总体er图中不可以删除任何实体间的联系。
5.如果一个系统定义为关系系统,则它必须( )
A.支持关系数据库
B.支持选择、投影和连接运算
C.A和B均成立
D.A、B都不需要
6.设E是关系代数表达式,F1、F2是选取条件表达式,则有( )
7.数据库技术中的“脏数据”是指( )的数据。
A.错误
B.回返
C.未提交
D.未提交的随后又被撤消
8.er模型转换成关系模型时,一个m:n联系转换为一个关系模式,该关系模型的关键字是( )
A.m端实体的关键字
B.n端实体的关键字
D.重新选取的其他属性
9.在一个er图中,如果共有20个不同实体类型,在这些实体类型之间存在着9个不同的二元联系(二元联系是指两个实体之间的联系)其中3个是1:n联系,6个是m:n联系,还存在1个m:n的三元联系,那么根据er模型转换成关系模型的规则,这个er结构转换成的关系模型个数为( )
A.24
B.27
C.29
D.30
10.在关系数据库中,通过( )来表示概念记录之间的关系。
A.外来关键字
B.关键字
C.数据字典
D.元组
参考答案:1 C 2 B 3 B 4 D 5 C 6 B 7 D 8 C 9 B 10 A
11.下列聚合函数中不忽略空值 (null) 的是( )
A.sum (列名)
B.max (列名)
C.count ( * )
D.avg (列名)
12.sql中,下列涉及空值的操作,不正确的是( )
A.age is null
B.age is not null
C.age = null
D.not (age is null)
13.视图是一个“虚表”,视图的构造基于( )
A.基本表
B.视图
C.基本表或视图
D.数据字典
14.sql语言中,select语句的执行结果是( )
A.属性
B.表
C.元组
D.数据库
15.sql语言中,条件“年龄between 20 and 30”表示年龄在20至30之间,且( )
A.包括20 岁和30 岁
B.不包括20岁和30岁
C.包括20 岁但不包括30岁
D.包括30 岁但不包括20岁
16.为了使索引键的值在基本表中,在建立索引的语句中应使用保留字( )
A.unique
B.count
C.distinct
D.union
17.在sql 语言中,用户可以直接操作的是( )
A.基本表
B.视图
C.基本表和视图
D.基本表或视图
18.在sql 的select 语句中,与选择运算对应的命令动词是( )
A.select
B.rom
C.where
D.group by
19.在数据库与宿主语言之间传递信息是通过( )
A.全局变量
B.局部变量
C.公共数据区
D.系统缓冲区
20.在sql 语言中,对输出结果排序的是( )
A.order by
B.where
C.group by
D.having
参考答案:11 C 12 B 13 A 14 C 15 C 16 A 17 B 18 D 19 A 20 D
21.下列聚合函数中不忽略空值 (null) 的是( )
A.sum (列名)
B.max (列名)
C.count ( * )
D.avg (列名)
22.sql中,下列涉及空值的操作,不正确的是( )
A.age is null
B.age is not null
C.age = null
D.not (age is null)
23.视图是一个“虚表”,视图的构造基于( )
A.基本表
B.视图
C.基本表或视图
D.数据字典
24.sql语言中,select语句的执行结果是( )
A.属性
B.表
C.元组
D.数据库
25.sql语言中,条件“年龄between 20 and 30”表示年龄在20至30之间,且( )
A.包括20 岁和30 岁
B.不包括20岁和30岁
C.包括20 岁但不包括30岁
D.包括30 岁但不包括20岁
26.为了使索引键的值在基本表中,在建立索引的语句中应使用保留字( )
A.unique
B.count
C.distinct
D.union
27.在sql 语言中,用户可以直接操作的是( )
A.基本表
B.视图
C.基本表和视图
D.基本表或视图
28.在sql 的select 语句中,与选择运算对应的命令动词是( )
A.select
B.rom
C.where
D.group by
29.在数据库与宿主语言之间传递信息是通过( )
A.全局变量
B.局部变量
C.公共数据区
D.系统缓冲区
30.在sql 语言中,对输出结果排序的是()
A.order by
B.where
C.group by
D.having
参考答案:21 C 22 C 23 C 24 C 25 A 26 A 27 C 28 C 29 B 30 A
ETL工程师要学什么
技术方面:需要学习使用数据源、目标端工具的基本使用(如 oracle MySQL hive等);需要学习etl工具的安装配置常用错误解决(如 kettle DataStage infa sqoop datax等)
理论方面:懂得数仓分层架构,维度建模等。
从ETL的字面来看,它主要包含三大阶段,分别是数据抽取、数据转换、数据加载。
1.数据抽取
这个阶段的主要目标是汇总多种数据源,为下一步的转换做准备。
2.数据转换
这个阶段是ETL的核心环节,也是最复杂的环节。它的主要目标是将抽取到的各种数据,进行数据的清洗、格式的转换、缺失值填补、剔除重复等操作,最终得到一份格式统一、高度结构化、数据质量高、兼容性好的数据,为后续的分析决策提供可靠的数据支持。
3.数据加载
这个阶段的主要目标是把数据加载至目的地,比如数据仓库中。通常的做法是,将处理好的数据写成特定格式(如parquet、csv等)的文件,然后再把文件挂载到指定的表分区上。也有些表的数据量很小,不会采用分区表,而是直接生成最终的数据表。
了解了ETL这部分的工作主要做什么,接下来再来说作为ETL工程师需要具备哪些技能,这些也就是需要学习的重点——
1、精通SQL语言,具备存储过程开发能力,能熟练进行SQL查询优化;
2、熟悉Hive数据仓库设计,了解数据仓库模型及思想、维度建模思想,了解数据仓库;
3、熟悉Hadoop、Spark、Flink、Kafka等相关技术;
4、熟练Python、Java中至少一种语言;
5、熟悉Mysql、Nosql等常见数据库。
最高分求SQL Server试题,考试要用,急!
一、填空题
1、beautiful、我心中的太阳--(去掉了右边的空格)
2、实体、域
3、视图
4.13.4300、13.4570--(保留2位和三位小数,但总位数不变)
5、数据定义语言(DDL)、数据操作语言(DML)
6、网状、关系、关系
7、二维表、属性、元组
8、一对一、一对多、多对多
9、%、_
二、选择题
1、C
2、B
3、A
4、A
5、C
6、D
7、A
8、C
9、D
10、B
11、A
12、A
13、B
14、B
15、B
三、判断题
1、√
2、ⅹ
3、ⅹ----会取整(12)
4、ⅹ
5、ⅹ--物极必反,多了存储数据时会消耗较多系统资源
6、ⅹ--连接、投影结果是不一样的
7、ⅹ--视图上可以创建触发器,但与表功能不相同
8、ⅹ
9、√
10、√
四、简答题
(一)
区别:
1、视图是已经编译好的sql语句。而表不是
2、视图没有实际的物理记录。而表有。
3、表是内容,视图是窗口
4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时四对它进行修改,但视图只能有创建的语句来修改
5、表是内模式,试图是外模式
6、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
7、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。
8、视图的建立和删除只影响视图本身,不影响对应的基本表。
视图优点:1、聚焦特定的数据。
2、简化数据操作
3、定制用户数据
4、对重构数据库提供了一定程度的逻辑独立性
5、合并分离的数据
6、屏蔽数据库的复杂性
7、简化用户权限的管理
8、便于数据的共享
(二)
含义:
存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
语法:
CREATE PROCEDURE
[WITH
{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}
]
AS 程序行
etl工程师是做什么的工作内容是什么
etl工程师是从事系统编程、数据库编程与设计,要掌握各种常用的编程语言的专业技术人员。也叫数据库工程师。
工作内容:
见岗位职责:
1. 海量数据的ETL开发,抽取成各种数据需求。
2. 参与数据仓库架构的设计及开发 。
3. 参与数据仓库ETL流程优化及解决ETL相关技术问题。
4、熟悉主流数据库技术,如oracle、Sql server、PostgeSQL等。
4、精通etl架构,有一定的etl开发经验,了解日常作业的部署和调度。
5、会数据etl开发工具,如Datastage,Congos,Kettle等。

更多文章:
text函数公式(excel中round和text函数的区别是什么)
2026年10月11日 03:50
google chrome打不开(chrome浏览器打不开怎么回事 浏览器打不开的处理方法)
2026年10月11日 02:00
websocket整合springboot(Springboot整合Websocket遇到的坑)
2026年10月11日 01:40
drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)
2026年10月10日 19:20
xor四位数怎么运算(单片机怎样用C语言实现4个数字间的异或)
2026年10月10日 17:50
perl数组中最多的元素(用perl实现,得到一个数组中重复次数最多的元素)
2026年10月10日 17:00
oracle11g端口映射客户端频繁掉线(oracle本地进行连接的时候报错ORA-12560: TNS: 协议适配器错误)
2026年10月10日 16:10





