本文转载自公众号:风控圈子,作者:研习社-winnie。如有侵权,请联系我删除。 每天早上8点半 一起实现自我增值 1 理 论 篇 1、什么是SQL? SQL(结构化查询语言)是一种设计用于检索和操作数据的数据库。它属于美国国家标准协会(ANSI)的一种标准,可用于执行Select(选择)、Update(更新)、Delete(删除)和Insert(插入)等数据任务。 2、数据库中的表和字段是什么? 数据库是有序形式的一组信息,用于访问、存储和检索数据,表是在具有列和行的模型中设计的数据集合。在表中,指定了列数称为字段,但未定义行数称为记录。 3、DBMS的类型是什么? DBMS是一个控制数据维护和使用的程序,它被认为是管理数据的文件管理器。有四种类型的DBMS:
4、SQL中的视图是什么? 它包含来自一个或多个表的行和列,可以定义为虚拟表。它消耗的内存较少。 句法: CREATE VIEW view_name AS SELECT column_name1, column_name2 FROM table_name WHERE CONDITION; 5、什么是SQL中的Joins(连接)? Join用于从相关的行和列中检索数据。它在两个或多个表之间工作,并且它从两个表返回至少一个匹配。 Joins类型是:
6、SQL中的Constraints(约束)是什么? 它可用于设置表中数据类型的限制。在创建或更新表语句时,可以使用约束。一些限制是:
7、SQL中有多少Key(键),它们如何工作? SQL中有不同类型的键:
· AlternateKey(备用密钥)——在任何情况下,如果需要,任何备用密钥都可以作为主键或候选键。 8、什么是Index(索引)? 索引用于加速查询的性能。它可以更快地从表中检索数据。可以在一组列上创建索引。
聚集索引——有助于轻松检索数据,并且只有一个聚集索引与一个表一起分配。它会更改记录在数据库中的保存方式。
9.什么是Aggregate Functions(聚合函数)? 它是一个返回单个值的数学函数。SQL中的聚合函数是:
10、什么是String Functions(字符串函数)? 为了操作字符串,我们使用字符串函数。其中一些是:
11、SQL中有哪些Operators(运算符)? 运算符是一个保留字,主要用于SQL语句的WHERE子句中以进行操作。
12、如何定义NULL值,Blank Space(空格)和ZERO(0)? Null值是没有值的字段。它与0不同。假设有一个表,并且在表中有一个字段,可以在不添加值的情况下将记录插入字段,然后该字段将以NULL值保存。 空格是我们提供的值,0只是一个数字。 13、如何确一个带有名为Fld1字段的TableB表格里只具有Fld1字段里的那些值,而这些值同时在名为TableA的表格的Fld1字段里? 这个与关系相关的问题有两个可能的答案。第一个答案(而且是您希望听到的答案)是使用外键限制。外键限制用来维护引用的完整性。它被用来确保表格里的字段只保存有已经在不同的(或者相同的)表格里的另一个字段里定义了的值。这个字段就是候选键(通常是另外一个表格的主键)。 另外一种答案是触发器。触发器可以被用来保证以另外一种方式实现与限制相同的作用,但是它非常难设置与维护,而且性能一般都很糟糕。由于这个原因,微软建议开发人员使用外键限制而不是触发器来维护引用的完整性。 14、对一个投入使用的在线事务处理表格有过多索引需要有什么样的性能考虑? 你正在寻找进行与数据操控有关的应聘人员。对一个表格的索引越多,数据库引擎用来更新、插入或者删除数据所需要的时间就越多,因为在数据操控发生的时候索引也必须要维护。 15、你可以用什么来确保表格里的字段只接受特定范围里的值? 这个问题可以用多种方式来回答,但是只有一个答案是“好”答案。您希望听到的回答是Check限制,它在数据库表格里被定义,用来限制输入该列的值。 触发器也可以被用来限制数据库表格里的字段能够接受的值,但是这种办法要求触发器在表格里被定义,这可能会在某些情况下影响到性能。因此,微软建议使用Check限制而不是其他的方式来限制域的完整性。 如果应聘者能够正确地回答这个问题,那么他的机会就非常大了,因为这表明他们具有使用存储过程的经验。 返回参数总是由存储过程返回,它用来表示存储过程是成功还是失败。返回参数总是INT数据类型。 OUTPUT参数明确要求由开发人员来指定,它可以返回其他类型的数据,例如字符型和数值型的值。(可以用作输出参数的数据类型是有一些限制的。)您可以在一个存储过程里使用多个OUTPUT参数,而您只能够使用一个返回参数。 2 案 例 篇 1. 语句 查询出每门课都大于80 分的学生姓名 name kecheng fenshu 答案一:: select distinct name from table where name not in (select distinct name from table where fenshu<=80) 答案二:select name from table group by name having min(fenshu)>80 自动编号 学号 姓名 课程编号 课程名称 分数 1 2005001 张三 0001 数学 69 2 2005002 李四 0001 数学 89 3 2005001 张三 0001 数学 69 删除除了自动编号不同, 其他都相同的学生冗余信息
AccID :科目代码;Occmonth :发生额月份;DebitOccur :发生额。 答:select a.* from TestDB a ,(select Occmonth,max(DebitOccur) Debit101ccur from TestDB where AccID=’101’ group by Occmonth) b where a.Occmonth=b.Occmonth and a.DebitOccur>b.Debit101ccur 4、 create table testtable1 ( select * from testtable1
A: p_ID p_Num s_id 1 10 01 1 12 02 2 8 01 3 11 01 3 8 03 其中:p_ID为产品ID,p_Num为产品库存量,s_id为仓库ID。请用SQL语句实现将上表中的数据合并,合并后的数据为: p_ID s1_id s2_id s3_id 1 10 12 0 2 8 0 0 3 11 0 8 其中:s1_id为仓库1的库存量,s2_id为仓库2的库存量,s3_id为仓库3的库存量。如果该产品在某仓库中无库存量,那么就是0代替。 答案: select p_id , sum(case when s_id=1 then p_num else 0 end) as s1_id ,sum(case when s_id=2 then p_num else 0 end) as s2_id ,sum(case when s_id=3 then p_num else 0 end) as s3_id 6、怎么把这样一个表儿
7、有3个表S,C,SC: S(SNO,SNAME)代表(学号,姓名) C(CNO,CNAME,CTEACHER)代表(课号,课名,教师) SC(SNO,CNO,SCGRADE)代表(学号,课号,成绩) 问题: 1,找出没选过“黎明”老师的所有学生姓名。 2,列出2门以上(含2门)不及格学生姓名及平均成绩。 3,既学过1号课程又学过2号课所有学生的姓名。 1. 考察条件筛选 select sname from s where sno not in ( select sno from sc where cno in ( select distinct cno from c where cteacher='黎明' ) ); 2. 考察聚合函数,条件筛选 select s.sname, avg_grade from s join (select sno from sc where scgrade < 60 group by sno having count(*) >= 2) t1 on s.sno = t1.sno join (select sno, avg(scgrade) as avg_grade from sc group by sno ) t2 on s.sno = t2.sno;
3. 考察筛选、连接 select sname from ( select sno from sc where cno = 1) a join (select sno from sc where cno = 2) b on a.sno = b.sno SQL面试题还有很多,今天就先列举一部分,想要更多的练习题目,可以关注网站: https://link.zhihu.com/?target=http%3A//www.w3school.com.cn/sql/index.asp |
|