SQL语句简单面试题
- 格式:doc
- 大小:15.11 KB
- 文档页数:10
oracle面试题sql语句当面试官问到关于Oracle SQL的问题时,通常会涉及到基本的查询、聚合函数、连接、子查询、索引等方面的知识。
我会从这些方面给出一些可能被问到的问题和相应的SQL语句作为回答。
1. 基本查询。
基本查询是SQL中最基本的操作,可能会涉及到SELECT语句以及WHERE子句的使用。
例如:sql.SELECT FROM employees;SELECT employee_id, first_name, last_name FROM employees WHERE department_id = 20;2. 聚合函数。
面试官可能会问到如何使用聚合函数来对数据进行统计,比如求和、平均值等。
例如:sql.SELECT AVG(salary) FROM employees;SELECT MAX(salary) FROM employees WHERE department_id = 30;3. 连接。
连接是SQL中非常重要的一部分,可能会涉及到INNER JOIN、LEFT JOIN、RIGHT JOIN等。
例如:sql.SELECT e.first_name, st_name, d.department_name.FROM employees e.JOIN departments d ON e.department_id = d.department_id;4. 子查询。
子查询也是SQL中常见的操作,可以用来进行嵌套查询或者作为临时表使用。
例如:sql.SELECT employee_id, first_name, last_name.FROM employees.WHERE department_id IN (SELECT department_id FROM departments WHERE location_id = 1700);5. 索引。
面试官可能会问到如何创建索引以及索引对查询的影响。
sql优化面试题答案一:在进行SQL性能优化的时候,我们需要关注以下几个方面:1. 数据库结构优化:a. 合理设计表结构,避免过多冗余字段和无效索引的存在。
b. 设计适当的主键和外键,以提升查询效率。
c. 使用合适的数据类型,减少存储空间和提高查询性能。
2. 索引优化:a. 合理创建索引,对于经常用于查询的字段和JOIN操作的关联字段,可以考虑创建索引。
b. 避免创建过多的索引,因为索引的更新和维护也会带来性能开销。
c. 定期对索引进行优化和重建,以提高查询性能。
3. SQL查询优化:a. 使用合适的查询语句,避免使用过于复杂的SQL语句。
b. 避免使用SELECT *,只选取需要的字段,减少数据传输。
c. 调整查询顺序,优化JOIN操作的顺序和条件。
d. 避免使用子查询,可以将子查询转换为JOIN操作或者临时表的方式实现。
e. 尽量减少数据库访问次数,使用批量操作替代逐条操作。
4. 数据库配置优化:a. 合理配置数据库连接池,避免过多的空闲连接和频繁的连接创建。
b. 调整数据库参数,如缓存大小、并发连接数等,以适应具体的应用场景。
5. SQL语句调优:a. 使用Explain分析SQL语句执行计划,根据执行计划来优化查询语句。
b. 使用合适的JOIN方式,避免全表扫描和笛卡尔积等低效操作。
c. 避免使用OR条件,可以使用IN或者UNION替代。
d. 使用LIMIT限制返回的行数,避免返回大量无用数据。
6. 数据库缓存优化:a. 合理利用数据库缓存,缓存经常使用的查询结果和数据。
b. 使用合适的缓存策略,如LRU(最近最少使用)等。
综上所述,SQL优化不是一蹴而就的任务,需要我们综合考虑数据库结构、索引、查询语句、数据库配置以及缓存等各个方面的优化策略。
只有全面考虑并有针对性地进行优化,才能提升数据库的性能和响应速度。
答案二:在面试中,SQL优化是一个常见的话题。
下面我将介绍一些SQL 优化的面试题及其解答:1. 什么是SQL优化,为什么需要进行SQL优化?SQL优化是通过调整和优化SQL语句的结构、索引和查询方式,以提升数据库的性能和响应速度。
软件测试sql面试题在进行软件测试SQL面试之前,我们先来了解一下什么是软件测试和SQL。
软件测试是指通过执行特定的测试用例来检验软件的正确性、完整性、可用性等方面的过程。
SQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言。
在软件测试中,SQL通常用于检验和验证软件与数据库之间的数据交互和操作是否正常。
在面试中,面试官可能会提出一些关于SQL的问题,以考察你对SQL的理解和应用能力。
下面就是一些常见的软件测试SQL面试题及其解答,希望对你有所帮助。
问题一:请解释什么是SQL注入漏洞?答:SQL注入漏洞是指攻击者通过在应用程序的输入框中插入恶意数据库查询语句,从而实现对数据库的非授权访问或者执行不受控制的操作。
攻击者可以通过SQL注入漏洞获取敏感信息、修改数据或者执行其他恶意操作。
为防止SQL注入漏洞,应该对输入的数据进行合法性检查和过滤,并使用参数化查询或预编译语句来执行数据库操作。
问题二:请解释什么是数据库事务,并举例说明事务的使用场景。
答:数据库事务是指一组数据库操作,这些操作要么全部成功执行,要么全部回滚。
事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
其中,隔离性是指多个事务并发执行时,每个事务都感觉不到其他事务的存在。
举例来说,假设一个银行系统中,用户从一个账户转账到另一个账户,这个操作可以看作是一个事务。
首先,系统会检查转账的两个账户是否存在,并验证转账金额是否合法;然后,系统会在数据库中扣除一个账户的金额并增加另一个账户的金额;最后,系统会确认转账操作是否成功,并更新账户余额。
问题三:请解释什么是数据库索引,并说明索引在软件测试中的作用。
答:数据库索引是一种数据结构,用于提高数据库查询的速度和效率。
它通过对特定列或组合列创建索引,可以加快数据库的检索速度,减少查询的时间复杂度。
sql面试必会6题经典面试题
1. SQL有哪些数据类型?
SQL数据类型包括:数值类型(整数、实数、位类型)、字符串类型(字符串、固定长度字符串、可变长度字符串)、日期/时间类型、二进制类型以及用户自定义的特殊类型。
2. 什么是 SQL 联合查询?
SQL联合查询是一种在单个查询中使用多个表进行信息检索的技术,可以将多个相关表中的数据检索出来并进行合并显示。
常用的联合查询有内连接(Inner Join)、左外连接(Left Join)、右外连接(Right Join)、全外连接(Full Join)等。
3. 什么是 SQL 索引?
SQL索引是数据库表中用于快速检索数据的数据结构,它可以加快数据库表中某一列或多列上的查询速度。
常见的索引类型有B树索引、哈希索引、空间索引等。
4. 什么是SQL视图?
SQL视图是一种虚拟表,用于从一个或多个表中检索数据,并提供一种抽象的方法来访问表中的数据。
它可以让用户只能看到所需要看到的列和行,而不需要查看整个表。
5. SQL语句有哪些?
SQL语句有以下几种:CREATE(创建)、SELECT(查询)、INSERT(插入)、UPDATE(更新)、DELETE(删除)、ALTER(修改)、DROP(删除)等。
6. 什么是子查询?
子查询是一种在SQL语句中嵌套另一个完整的SQL语句的查询,它可以从其它表中检索数据,也可以从当前表中检索数据。
它可以让你更有效地检索数据,并且可以让你在不使用连接的情况下实现类似于连接的结果。
sql 二表关联面试题
好的,以下是几个常见的 SQL 二表关联面试题:
1. 请解释什么是 JOIN,以及它有哪些类型?
2. 什么是内连接(INNER JOIN)?请给出一个示例。
3. 什么是左连接(LEFT JOIN)?请给出一个示例。
4. 什么是右连接(RIGHT JOIN)?请给出一个示例。
5. 什么是全连接(FULL JOIN)?请给出一个示例。
6. 什么是交叉连接(CROSS JOIN)?请给出一个示例。
7. 如何在 SQL 中使用 JOIN 来关联两个表?请给出一个示例。
8. 什么是自连接(Self-Join)?请给出一个示例。
9. 什么是多表连接(Multi-Table Join)?请给出一个示例。
10. 什么是隐式连接(Implicit Join)和显式连接(Explicit Join)?它们之间有什么区别?
以上是一些常见的SQL 二表关联面试题,你可以根据这些题目来准备面试。
运维sql面试题及答案一、单项选择题(每题2分,共20分)1. SQL中,用于查询数据的命令是:A. INSERTB. UPDATEC. DELETED. SELECT答案:D2. 下列哪个选项是SQL中用于添加数据的命令?A. SELECTB. INSERTC. UPDATED. DELETE答案:B3. 在SQL中,哪个关键字用于删除表?A. REMOVEB. DROPC. DELETED. CLEAR答案:B4. SQL中的GROUP BY子句用于:A. 排序结果B. 选择列C. 聚合数据D. 过滤结果答案:C5. SQL中的LIKE关键字用于:A. 聚合数据B. 过滤结果C. 排序结果D. 选择列答案:B6. SQL中,哪个命令用于修改表结构?A. ALTER TABLEB. CHANGE TABLEC. MODIFY TABLED. UPDATE TABLE答案:A7. 下列哪个选项是SQL中用于创建数据库的命令?A. CREATE DATABASEB. OPEN DATABASEC. START DATABASED. INIT DATABASE答案:A8. SQL中,哪个命令用于备份数据库?A. BACKUP DATABASEB. COPY DATABASEC. SAVE DATABASED. EXPORT DATABASE答案:A9. 在SQL中,哪个函数用于返回当前日期?A. NOW()B. TODAY()C. CURRENT_DATED. DATE()答案:C10. SQL中,哪个命令用于恢复数据库?A. RESTORE DATABASEB. RECOVER DATABASEC. RELOAD DATABASED. REOPEN DATABASE答案:A二、多项选择题(每题2分,共20分)1. SQL中,哪些命令用于数据更新?A. INSERTB. UPDATEC. DELETED. SELECT答案:B, C2. 在SQL中,哪些子句可以用于过滤结果?A. WHEREB. GROUP BYC. HAVINGD. ORDER BY答案:A, C3. SQL中,哪些关键字用于创建表?A. CREATE TABLEB. MAKE TABLEC. BUILD TABLED. DEFINE TABLE答案:A4. 在SQL中,哪些函数用于字符串操作?A. CONCAT()B. UPPER()C. LOWER()D. SUBSTRING()答案:A, B, C, D5. SQL中,哪些命令用于数据删除?A. DELETEB. DROPC. REMOVED. CLEAR答案:A, B6. 在SQL中,哪些关键字用于数据排序?A. ORDER BYB. SORT BYC. ASCD. DESC答案:A, C, D7. SQL中,哪些命令用于数据选择?A. SELECTB. PICKC. CHOOSED. FETCH答案:A8. 在SQL中,哪些函数用于数学计算?A. ABS()B. SQRT()C. POWER()D. MOD()答案:A, B, C, D9. SQL中,哪些关键字用于数据聚合?A. COUNT()B. SUM()C. AVG()D. MAX()答案:A, B, C, D10. 在SQL中,哪些命令用于数据库的创建和删除?A. CREATE DATABASEB. DROP DATABASEC. REMOVE DATABASED. DELETE DATABASE答案:A, B三、判断题(每题2分,共20分)1. SQL中的主键字段可以有NULL值。
plsql面试题及答案PL/SQL面试题及答案1. 什么是PL/SQL?PL/SQL是一种过程化编程语言,旨在与Oracle数据库一起使用。
它是在标准SQL语言的基础上扩展而来的,具有更多的编程功能和控制结构。
PL/SQL可以用于编写存储过程、触发器、函数和包等数据库对象。
2. PL/SQL的优势是什么?PL/SQL具有以下几个优势:- 高性能:PL/SQL代码在数据库服务器上直接执行,减少了与数据库之间的通信开销,提高了性能。
- 数据库交互:PL/SQL可以与数据库进行高效交互,支持丰富的SQL语句和事务处理。
- 强大的编程功能:PL/SQL具有条件语句、循环语句、异常处理、游标等功能,使开发人员可以实现更复杂的业务逻辑。
- 结构化编程:PL/SQL支持模块化开发,可以将代码组织成存储过程、函数和包等可重复使用的单元。
- 安全性:PL/SQL提供了一系列的安全特性,包括访问控制、数据封装和异常处理等,确保数据的安全性和完整性。
3. PL/SQL中的控制结构有哪些?PL/SQL提供了以下控制结构:- 条件语句:IF-THEN、IF-THEN-ELSE、IF-THEN-ELSIF。
- 循环语句:LOOP、WHILE、FOR。
- 异常处理:EXCEPTION。
- CASE语句:CASE-WHEN-THEN。
- GOTO语句:用于跳转到指定的标签或代码块。
- NULL语句:用于忽略某些情况下的代码执行。
4. 如何定义变量和常量?在PL/SQL中,可以使用DECLARE语句定义变量和常量。
定义变量时需要指定变量的名称和数据类型,可以选择性地指定初始值。
例如:```sqlDECLAREemp_name VARCHAR2(100) := 'John Doe';emp_salary NUMBER := 5000;pi NUMBER := 3.14;max_attempts CONSTANT NUMBER := 3;```5. 如何使用游标?游标用于在PL/SQL中处理查询结果集。
sql语句优化面试题在数据库开发和优化领域,SQL语句优化是一个重要的话题。
随着数据量的增长,SQL查询性能的优化变得尤为重要。
本文将介绍一些常见的SQL语句优化面试题,并提供一些解析和最佳实践。
1. 什么是SQL语句优化?SQL语句优化是为了提高数据库查询性能而对SQL查询语句进行的一系列改进和调整的过程。
通过对SQL查询进行优化,可以减少数据库的负载,加快查询速度,提升应用程序的性能。
2. SQL语句优化的方法有哪些?- 索引优化:为表中的关键列创建索引,并确保索引被合理地使用。
- 查询重写:通过改变查询方式或者重写查询语句,使其更加高效。
- 视图优化:使用视图来优化复杂的查询,减少重复性的计算和读取操作。
- 表分区:根据数据特性和查询模式将表划分成多个分区,提高查询效率。
- 缓存优化:通过使用缓存技术,减少对数据库的访问次数,加快查询速度。
3. 请列举一些常见的SQL查询性能问题。
- 缺乏合适的索引导致全表扫描,查询速度慢。
- 过多的连接操作导致查询复杂度高。
- 子查询嵌套层次过多,增加查询开销。
- 数据库统计信息不准确,导致查询优化器做出错误的执行计划。
- 数据库设计模型不合理,导致查询需要多次关联多个表。
4. 如何通过索引优化来提高查询性能?- 确保重要的查询列都有索引,特别是在WHERE和JOIN子句中经常使用的列。
- 避免在索引列上进行函数、计算或者转换操作,这会导致索引失效。
- 确保索引的列的顺序和查询条件的顺序一致,可以减少索引树的搜索次数。
- 如果一次查询中需要访问的数据较少,可以使用覆盖索引来避免对表的访问。
5. 如何避免SQL注入攻击?- 使用参数化查询或者预编译语句,将用户输入的数据作为参数传递给SQL查询。
- 对输入进行严格的合法性验证,过滤掉潜在的恶意字符。
- 使用ORM框架或者存储过程等抽象层来处理SQL查询,减少直接操作数据库的风险。
6. 如何优化复杂查询?- 尽量避免使用嵌套查询,可以使用关联查询或者临时表来替代。
sql优化常用面试题在数据库应用开发中,SQL优化是一个重要的方面,它可以提升数据库的性能和效率。
在面试中,经常会遇到与SQL优化相关的问题。
本文将介绍一些常见的SQL优化面试题,并给出相应的答案。
1. 什么是SQL优化?SQL优化是指对SQL查询语句进行调整和改进,以提高查询的执行效率和查询结果的准确性。
通过合理的索引设计、查询重写、规范化数据模型等手段,可以有效减少查询的执行时间和资源消耗。
2. 如何判断SQL查询语句是否需要优化?需要优化的SQL查询语句通常具有以下特点:- 执行时间过长,超过一定的阈值。
- 占用大量的系统资源,如CPU、内存等。
- 影响其他查询的执行性能。
3. SQL优化的方法有哪些?SQL优化可以采用以下几种方法:- 索引优化:合理设计索引,避免全表扫描,提高查询效率。
- 查询重写:对复杂的查询语句进行优化,使用合适的连接方式、嵌套与连接、子查询等。
- 数据库分区:对大表进行分区存储,提高查询效率。
- 规范化数据模型:遵循数据库设计的规范,减少数据冗余和数据异常。
- 缓存机制:使用缓存技术,减少数据库查询的次数,提高查询效率。
- 分布式数据库:将数据分布在多个节点上,分布式查询,提高查询效率。
4. 如何确定哪个部分影响了查询的性能?可以通过数据库性能监控工具和性能分析工具来确定哪个部分影响了查询的性能。
常用的性能监控工具有MySQL自带的慢查询日志、show processlist命令等。
性能分析工具主要有EXPLAIN语句和性能分析器等。
5. 什么是索引?如何设计索引?索引是一种数据结构,用于加快数据库查询的速度。
索引基于表中的一列或多列创建,可以提供快速的数据查找和排序。
设计索引应注意以下几点:- 选择合适的列作为索引列,通常是经常被查询、排序或者用于连接的列。
- 不要为每个列都创建索引,过多的索引会增加维护成本,降低插入和更新的性能。
- 考虑使用组合索引,将多个列组合在一起创建索引,以满足复杂查询的需求。
第1篇第一部分:基础SQL查询1. 如何使用SELECT语句从数据库中查询数据?- 答案:SELECT语句用于从数据库表中查询数据。
基本语法如下:```sqlSELECT column1, column2, ... FROM table_name;```2. 如何使用WHERE子句对查询结果进行过滤?- 答案:WHERE子句用于过滤查询结果,只返回满足特定条件的行。
语法如下: ```sqlSELECT column1, column2, ... FROM table_name WHERE condition;```3. 如何使用ORDER BY子句对查询结果进行排序?- 答案:ORDER BY子句用于对查询结果进行排序。
语法如下:```sqlSELECT column1, column2, ... FROM table_name ORDER BY column1ASC|DESC;```4. 如何使用LIMIT子句限制查询结果的数量?- 答案:LIMIT子句用于限制查询结果的数量。
语法如下:```sqlSELECT column1, column2, ... FROM table_name LIMIT row_count;```5. 如何使用DISTINCT关键字去除查询结果中的重复值?- 答案:DISTINCT关键字用于去除查询结果中的重复值。
语法如下:```sqlSELECT DISTINCT column1, column2, ... FROM table_name;```第二部分:高级SQL查询6. 如何使用JOIN子句进行多表查询?- 答案:JOIN子句用于连接两个或多个表,并返回满足连接条件的行。
常见的JOIN类型包括:- INNER JOIN:返回两个表中匹配的行。
- LEFT JOIN(或LEFT OUTER JOIN):返回左表的所有行,即使右表中没有匹配的行。
- RIGHT JOIN(或RIGHT OUTER JOIN):返回右表的所有行,即使左表中没有匹配的行。
1.一道sql语句面试题,关于group by 表内容: 2005-05-09 胜 2005-05-09 胜 2005-05-09 负 2005-05-09 负 2005-05-10 胜 2005-05-10 负 2005-05-10 负 如果要生成下列结果, 该如何写sql语句? 胜 负 2005-05-09 2 2 2005-05-10 1 2 ------------------------------------------ create table #tmp(rq varchar(10),shengfu nchar(1)) insert into #tmp values(2005-05-09,胜) insert into #tmp values(2005-05-09,胜) insert into #tmp values(2005-05-09,负) insert into #tmp values(2005-05-09,负) insert into #tmp values(2005-05-10,胜) insert into #tmp values(2005-05-10,负) insert into #tmp values(2005-05-10,负) 1)select rq, sum(case when shengfu=胜 then 1 else 0 end)胜,sum(case when shengfu=负 then 1 else 0 end)负 from #tmp group by rq 2) select n.rq,n.勝,m.負 from ( select rq,勝=count(*) from #tmp where shengfu=胜group by rq)n inner join (select rq,負=count(*) from #tmp where shengfu=负group by rq)m on n.rq=m.rq 3)select a.rq,a.a1 胜,b.b1 负 from (select rq,count(rq) a1 from #tmp where shengfu=胜 group by rq) a, (select rq,count(rq) b1 from #tmp where shengfu=负 group by rq) b where a.rq=b.rq 2.请教一个面试中遇到的sql语句的查询问题 表中有a b c三列,用sql语句实现:当a列大于b列时选择a列否则选择b列,当b列大于c列时选择b列否则选择c列。 ------------------------------------------ create table #tmp(a int,b int,c int) insert into #tmp values(10,20,30) --insert into #tmp values(10,30,20) --insert into #tmp values(40,10,20) select * from #tmp select (case when a>b then a else b end),(case when b>c then b else c end ) from #tmp 3.面试题:一个日期判断的sql语句? 请取出tb_send表中日期(sendtime字段)为当天的所有记录?(sendtime字段为datetime型,包含日期与时间) ------------------------------------------ select * from #tmp where datediff(dd,rq,getdate())=0 select * from #tmp where rq=rtrim(convert(varchar,getdate(),23)) 4.有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记 录并按以下条件显示出来(并写出您的思路): 大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。 显示格式: 语文 数学 英语 及格 优秀 不及格 ------------------------------------------ create table #tmp(语文 int,数学 int ,英语 int) insert into #tmp values(70,80,58) --insert into #tmp values(100,50,60) select * from #tmp select (case when 语文 >=80 then 优秀 when 语文 >=60 then 及格 else 不及格 end ) 语文, (case when 数学 >=80 then 优秀 when 数学 >=60 then 及格 else 不及格 end ) 数学, (case when 英语 >=80 then 优秀 when 英语 >=60 then 及格 else 不及格 end ) 英语 from #tmp 5.在sqlserver2000中请用sql创建一张用户临时表和系统临时表,里面包含两个字段id和idvalues,类型都是int型,并解释下两者的区别? ------------------------------------------ 用户临时表:create table #xx(id int, idvalues int) 系统临时表:create table ##xx(id int, idvalues int) 区别: 用户临时表只对创建这个表的用户的session可见,对其他进程是不可见的. 当创建它的进程消失时这个临时表就自动删除. 全局临时表对整个sql server实例都可见,但是所有访问它的session都消失的时候,它也自动删除. 6.sqlserver2000是一种大型数据库,他的存储容量只受存储介质的限制,请问它是通过什么方式实现这种无限容量机制的。 ------------------------------------------ 它的所有数据都存储在数据文件中(*.dbf),所以只要文件够大,sql server的存储容量是可以扩大的. sql server 2000 数据库有三种类型的文件: 主要数据文件 主要数据文件是数据库的起点,指向数据库中文件的其它部分。每个数据库都有一个主要数据文件。主要数据文件的推荐文件扩展名是 .mdf。 次要数据文件 次要数据文件包含除主要数据文件外的所有数据文件。有些数据库可能没有次要数据文件,而有些数据库则有多个次要数据文件。次要数据文 件的推荐文件扩展名是 .ndf。 日志文件 日志文件包含恢复数据库所需的所有日志信息。每个数据库必须至少有一个日志文件,但可以不止一个。日志文件的推荐文件扩展名是 .ldf。 7.请用一个sql语句得出结果 从table1,table2中取出如table3所列格式数据,注意提供的数据及结果不准确,只是作为一个格式向大家请教。 如使用存储过程也可以。 table1 月份mon 部门dep 业绩yj ------------------------------- 一月份0110 一月份0210 一月份035 二月份028 二月份049 三月份038 table2 部门dep部门名称dname -------------------------------- 01国内业务一部 02国内业务二部 03国内业务三部 04国际业务部 table3 (result) 部门dep 一月份二月份三月份 -------------------------------------- 0110 nullnull 02108 null 03null 5 8 04nullnull9 ------------------------------------------ create table #a(mon varchar(10),dep varchar(10) ,yj int) insert into #a values(一月份,01,10) insert into #a values(一月份,02,10) insert into #a values(一月份,03,5) insert into #a values(二月份,02,8) insert into #a values(二月份,04,9) insert into #a values(三月份,03,8) select * from #a create table #b(dep varchar(10),dname varchar(20)) insert into #b values(01,国内业务一部) insert into #b values(02,国内业务二部) insert into #b values(03,国内业务三部) insert into #b values(04,国际业务部) select * from #b --------------------------------------------------------------- 1)select dep,(select sum(yj) from #a where mon=一月份 and #a.dep=#b.dep) 一月份, (select sum(yj) from #a where mon=二月份 and #a.dep=#b.dep) 二月份,(select sum(yj) from #a where mon=三月份 and #a.dep=#b.dep) 三月份 from #b 2)select b.dep,dname, sum(case when a.mon=一月份 then a.yj else 0 end ) as 一月份,篇二:十几道sql语句面试题 十几道sql语句面试题 第1部分: 题目: student(s#,sname,sage,ssex) 学生表 course(c#,cname,t#) 课程表 sc(s#,c#,score) 成绩表 teacher(t#,tname) 教师表 问题: 1、查询“001”课程比“002”课程成绩高的所有学生的学号; selecta.s# from (select s#,score from sc where c#=’001′) a, (select s#,score from sc where c#=’002′) b wherea.score>b.score and a.s#=b.s#; 2、查询平均成绩大于60分的同学的学号和平均成绩; select s#,avg(score) fromsc group by s# having avg(score) >60; 3、查询所有同学的学号、姓名、选课数、总成绩; select student.s#,student.sname,count(sc.c#),sum(score) from student left outer join sc on student.s#=sc.s# group by student.s#,sname 4、查询姓“李”的老师的个数; select count(distinct(tname)) from teacher where tname like ‘李%’; 5、查询没学过“叶平”老师课的同学的学号、姓名; select student.s#,student.sname from student where s# not in (select distinct( sc.s#) from sc,course,teacher where sc.c#=course.c# and teacher.t#=course.t# and teacher.tname=’叶平’);