SQL题目

合集下载

完美的50sql题目及答案

完美的50sql题目及答案

Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表--查询“1”课程比“2”课程成绩高的所有学生的学号select a.stuidfrom (select * from t_sc s where s.cid = 1) a,(select * from t_sc s where s.cid = 2) bwhere a.stuid = b.stuidand a.score > b.score;--2、查询平均成绩大于80分的同学的学号和平均成绩;select stuid, avg(score) from t_sc group by stuid having avg(score)>80;--3、查询所有同学的学号、姓名、选课数、总成绩;select s.stuid, , c.xks, c.zcjfrom t_student s left outer join(select stuid, count(cid) xks, sum(score) zcjfrom t_scgroup by stuid) con s.stuid = c.stuid;select s.stuid, , count(c.cid), sum(c.score)from t_student sleft Outer join t_sc con s.stuid = c.stuidgroup by s.stuid, ;--4、查询姓“李”的老师的个数;select count(tid) from t_teacher where tname like '李%';--5、查询没学过“叶平”老师课的同学的学号、姓名;select s.stuid,from t_student s, t_course c, t_teacher t, t_sc sc where s.stuid=sc.stuidand c.cid=sc.cidand c.teacherid=t.tidand t.tname!='叶平';--6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;select s.stuid, from t_student s, t_sc c where c.cid=1 and s.stuid=c.stuid andexists (select * from t_sc sc where sc.stuid=s.stuid and sc.cid=2);-- select Student.S#,Student.Sname fromStudent,SC where Student.S#=SC.S# andSC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002');--7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;select s.sid,s.sname from student s, sc sc where s.sid = sc.sid and sc.cid in(select c.cid from teacher t,course c where t.tid=c.tid and t.tname='叶平')group by s.sid,s.snamehaving count(sc.cid)=(select count(*) from teacher t,course c where t.tid=c.tid and t.tname='叶平');--8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;Select S#, Snamefrom (select Student.S#,Student.Sname,score,(select scorefrom SC SC_2where SC_2.S# = Student.S#and SC_2.C# = '002') score2 from Student, SCwhere Student.S# = SC.S# andC# = '001') S_2where score2 < score;--9、查询所有课程成绩小于60分的同学的学号、姓名;select s.sid,s.sname from student s ,sc c where c.sid=s.sid group by s.sid,s.sname having max(c.score)<60select s.stuid, from t_student s where s.stuid not in (select sc.stuid from t_student s, t_sc sc where sc.score>=60 and s.stuid=sc.stuid);select s.stuid, from t_student s where not exists (select * from t_sc sc where sc.stuid=s.stuid and sc.score>=60);--10、查询没有学全所有课的同学的学号、姓名;select s.sid from sc c,course e,student s where c.sid=s.sid and e.cid=c.sid group by s.sid having count(c.cid)<(select count(*) from course)select s.stuid, from t_student s,t_sc sc where s.stuid=sc.stuidgroup by s.stuid, having count(sc.cid) != (select count(cid) from t_course);select Student.S#, Student.Snamefrom Student, SC whereStudent.S# = SC.S#group by Student.S#, Student.Snamehaving count(C#) < (select count(C#) from Course);--11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;select distinct s.sid from sc s where s.cid in(select c.cid from sc c where sid=1) and s.sid<>1select distinct s.stuid, from t_student s, t_sc sc where s.stuid=sc.stuid and s.stuid!=1 and sc.cid in (select cid from t_sc where stuid=1)--select s.stuid, from t_Student s, t_SC sc where s.stuid=SC.Stuid and sc.cid in (select Cid from t_SC where stuid='1');--13、把“t_SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;update t_sc sc1 set sc1.score = (select avg(score) from t_sc group by cidhaving cid in (select cid from t_teacher t, t_course c where t.tid=c.teacherid and t.tname='叶平') and cid=sc1.cid);--14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;select sid from sc where sid in(select sid from sc group by sid having count(*) =(select count(*) from sc where sid = 1)) and cid in (select cid from sc where sid=1);--15、删除学习“叶平”老师课的SC表记录delete t_sc where cid in(select cid from t_course c, t_teacher t where c.teacherid=t.tid and t.tname='Mr.mao');--16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“5”课程的同学学号、2号课的平均成绩;insert into t_scselect stuid, '5' cid, (select avg(score) from t_sc sc where sc.cid=2) scorefrom t_student s where not exists(select * from t_sc sc where sc.cid=5 and sc.stuid=s.stuid);--17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按--如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分select t.stuid,max(case ame when 'Chinese' then t.score end) Chinese,max(case ame when 'Math' then t.score end) Math,max(case ame when 'English' then t.score end) English,round(avg(t.score), 2) avgscore,count(t.cid) kcsfrom (select s.stuid, stuname, sc.cid, sc.score, cname from t_student s, t_sc sc, t_course cwhere s.stuid = sc.stuidand sc.cid = c.cidand in ('Chinese', 'Math', 'English')) tgroup by t.stuidorder by avgscore desc;--18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分select cid, max(score) maxscore, min(score) minscore from t_sc group by cid order by cid;--19、按各科平均成绩从低到高和及格率的百分数从高到低顺序select sc.cid, (select name from t_course where cid=sc.cid) cname,round(avg(sc.score),2) avgscore,round((select count(*) from t_sc where cid = sc.cid and score>=70)/ (select count(*) from t_sc where cid = sc.cid)*100,2)||'%' jgl from t_sc scgroup by sc.cidorder by avgscore, jgl desc;--20、查询如下课程平均成绩和及格率的百分数(用"1行"显示):--企业管理(001),马克思(002),OO&UML (003),数据库(004)select * from t_sc sc group by sc.cidselect sc.cid, (select name from t_course where cid=sc.cid) cname,case sc.cid when 1 then round(avg(sc.score),2) end chinese_avgscore,case sc.cid when 1 thenround((select count(*) from t_sc where cid = sc.cid and score>=70)/ (select count(*) from t_sc where cid = sc.cid)*100,2)||'%' end chinese_jglfrom t_sc scgroup by sc.cid--21、查询不同老师所教不同课程平均分从高到低显示select sc.cid,round(avg(sc.score),2) avg_score,,t.tnamefrom t_sc sc, t_course c, t_teacher twhere sc.cid=c.cid and t.tid=c.teacheridgroup by sc.cid, , t.tnameorder by avg_score desc;--22、查询如下语文成绩第 2 名到第 5 名的学生成绩单:--[学生ID],[学生姓名],语文成绩,排名select * from (select t.*, rownum tn from (select s.stuid, ,min(case when 'Chinese' then sc.score end) chinese_score from t_student s, t_sc sc, t_course cwhere s.stuid = sc.stuidand sc.cid = c.cidgroup by s.stuid, order by chinese_score desc) t where rownum <=5) where tn>1--23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]select sc.cid, ,(select count(*) from t_sc where cid=sc.cid and score>=85 and score<=100) a,(select count(*) from t_sc where cid=sc.cid and score>=70 and score<85) b,(select count(*) from t_sc where cid=sc.cid and score>=60 and score<70) c,(select count(*) from t_sc where cid=sc.cid and score<60) dfrom t_sc sc, t_course cwhere sc.cid = c.cidgroup by sc.cid, ;--24、查询学生平均成绩及其名次select t.*, rownum rn from (select s.stuid, , avg(sc.score) avg_score from t_student s, t_sc sc where s.stuid=sc.stuidgroup by s.stuid, order by avg_score desc) t;select t.*, row_number() over(order by avg_score desc) pm from (select s.stuid, , avg(sc.score) avg_scorefrom t_student s, t_sc sc where s.stuid=sc.stuidgroup by s.stuid, ) t;--25、查询各科成绩前三名的记录:(不考虑成绩并列情况)select * from (select sc.cid, , sc.score, row_number() over(partition by sc.cid, order by sc.score desc) pmfrom t_sc sc, t_course c where sc.cid=c.cid ) where pm <=3;--26、查询每门课程被选修的学生数select cid, count(*) rs, (select name from t_course where cid=t_sc.cid) cname from t_sc group by cid;--27、查询出只选修了3门课程的全部学生的学号和姓名select sc.stuid, from t_sc sc, t_student s where sc.stuid = s.stuid group by sc.stuid, having count(*) =3;--28、查询男生、女生人数select case when sex='1' then 'Man' else 'Woman' end sex, count(*) rs from t_student group by sex;--29、查询姓“张”的学生名单select * from t_student where name like 'w%';--30、查询同名同性学生名单,并统计同名人数select name, count(*) rs from t_student group by name having count(*)>1;--31、1981年出生的学生名单(注:Student表中Sage列的类型是datetime) select to_char(sysdate,'yyyy') year from dual;--32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列select cid, round(avg(score),2) avg_score from t_sc group by cid order by avg_score, cid desc;--33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩select s.stuid, , round(avg(sc.score), 2) avg_score from t_student s, t_sc sc where s.stuid=sc.stuid group by s.stuid, having avg(sc.score)>80;--34、查询课程名称为“数据库”,且分数低于60的学生姓名和分数select s.stuid, stuname, sc.score from t_student s, t_sc sc, t_course c where s.stuid=sc.stuid and sc.cid=c.cid and ='Computer' and sc.score<70;--35、查询所有学生的选课情况select s.stuid, stuname, c.cid, coursename from t_student s, t_sc sc, t_course c where s.stuid=sc.stuid and sc.cid=c.cid;--36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数select s.stuid, stuname, c.cid, coursename, sc.score from t_student s, t_sc sc, t_course c where s.stuid=sc.stuid and sc.cid=c.cid and sc.score>70;--37、查询不及格的课程,并按课程号从大到小排列select c.cid, from t_sc sc, t_course c where sc.cid=c.cid group by c.cid,,sc.score having sc.score<70 order by c.cid desc;--38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;select s.stuid, , sc.score from t_student s,t_sc sc where s.stuid=sc.stuid and sc.cid=3 and sc.score>80;--39、求选了课程的学生人数select count(*) rs from (select stuid from t_sc group by stuid);--40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩select s.stuid, stuname, t.max_score from t_student s, t_sc sc, (select c.cid, max(sc.score) max_score from t_sc sc, t_course c, t_teacher t where sc.cid=c.cid and c.teacherid=t.tidand t.tname='Mr.mao' group by c.cid) twhere s.stuid=sc.stuid and sc.cid=t.cid and sc.score=t.max_score;--41、查询各个课程及相应的选修人数select cid, count(*) rs from t_sc group by cid order by cid;--42、查询不同课程成绩相同的学生的学号、课程号、学生成绩select * from t_sc sc where exists (select * from t_sc where stuid!=sc.stuid and cid!=sc.cid and score=sc.score);select distinct A.Stuid,B.score from t_SC A ,t_SC B where A.Score=B.Score and A.Cid <>B.Cid ;--43、查询每门功成绩最好的前两名select * from (select stuid, cid ,score, row_number() over(partition bycid order by score desc) pm from t_sc) where pm<3;--44、统计每门课程的学生选修人数(超过10人的课程才统计)。

【sql:练习题25】查询每门课程的平均成绩,结果按平均成绩降序排列

【sql:练习题25】查询每门课程的平均成绩,结果按平均成绩降序排列

【sql:练习题25】查询每门课程的平均成绩,结果按平均成绩
降序排列
题⽬:查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列
刚开始写的sql ⽐较简单:
SELECT courseid, AVG(score) as a FROM student_score GROUP BY courseid ORDER BY a DESC, courseid ASC;
但是我看到答案可以列出 coursename:
但是coursename⼜是在student_course 表⾥⾯,要去关联这个表,但是对于GROUP BY聚合操作,如果在SELECT 中的列中要列出 coursename ,但是 coursename 没有在GROUP BY中出现,这样的sql
是不合法的,会报错因为列不在GROUP BY从句中,也就是说查出来的列必须在group by后⾯出现,否则就会报错,或者这个字段出现在聚合函数⾥⾯。

但是我还是改了系统配置,执⾏了这个sql 不知道在⼯作中这样是不是合法的?
SELECT courseid,student_course.coursename,
AVG(score) as a FROM student_score,student_course WHERE student_score.courseid = student_course.id GROUP BY courseid ORDER BY a DESC, courseid ASC;。

sql注入29题

sql注入29题

sql注入29题SQL注入是一种常见的网络攻击方式,通过在输入框中插入恶意SQL代码,来获取数据库中的敏感信息或进行破坏性操作。

下面将介绍29个常见的SQL注入题目,并给出相应的解答。

1. 请列出所有数据库中的表名。

答:SELECT table_name FROM information_schema.tables;2. 请列出指定数据库中的所有表的列名。

答:SELECT column_name FROM information_schema.columns WHEREtable_name = 'table_name';3. 请列出指定表中的所有数据。

答:SELECT * FROM table_name;4. 请列出指定表中的指定列数据。

答:SELECT column_name FROM table_name;5. 请列出指定表中特定条件的数据。

答:SELECT * FROM table_name WHERE column_name = 'value';6. 请列出数据库中所有表的数量。

答:SELECT count(table_name) FROM information_schema.tables;7. 请列出指定表中数据的数量。

答:SELECT count(*) FROM table_name;8. 请列出指定表中数据的总和。

答:SELECT sum(column_name) FROM table_name;9. 请列出指定表中数据的平均值。

答:SELECT avg(column_name) FROM table_name;10. 请列出指定表中数据的最大值。

答:SELECT max(column_name) FROM table_name;11. 请列出指定表中数据的最小值。

答:SELECT min(column_name) FROM table_name;12. 请列出指定表中数据的总和,并按指定列进行排序。

sql50经典题

sql50经典题

sql50经典题SQL(Structured Query Language)是用于管理关系数据库的标准编程语言。

以下是一些经典的 SQL 题目,可以帮助你提高 SQL 编程技能:1. 选择题:* 什么是 SQL?* SQL 中哪些关键字可以用于选择所有行?* SQL 中哪些关键字可以用于过滤数据?2. 查询题:* 请编写一个 SQL 查询,从 `employees` 表中选取所有员工的姓名和工资。

* 请编写一个 SQL 查询,从 `orders` 表中选取所有订单的编号、客户姓名和订单日期。

3. 插入题:* 请编写一个 SQL 插入语句,将一条新员工记录插入到 `employees` 表中。

* 请编写一个 SQL 插入语句,将一条新订单记录插入到 `orders` 表中。

4. 更新题:* 请编写一个 SQL 更新语句,将 `employees` 表中某个员工的工资增加 10%。

* 请编写一个 SQL 更新语句,将 `orders` 表中某个订单的状态更新为"Shipped"。

5. 删除题:* 请编写一个 SQL 删除语句,从 `employees` 表中删除某个员工的记录。

* 请编写一个 SQL 删除语句,从 `orders` 表中删除某个订单的记录。

6. 排序和聚合题:* 请编写一个 SQL 查询,按工资从高到低排列 `employees` 表中的员工记录。

* 请编写一个 SQL 查询,计算 `employees` 表中的平均工资。

7. 联接题:* 请编写一个 SQL 查询,联接 `orders` 表和 `customers` 表,选取所有订单的编号、客户姓名和订单日期。

* 请编写一个 SQL 查询,联接 `orders` 表和 `employees` 表,选取所有订单的编号、员工姓名和订单日期。

8. 子查询和内连接题:* 请编写一个 SQL 子查询,找出平均工资最高的员工姓名。

sql测试题选择和填空

sql测试题选择和填空

sql测试题选择和填空好的,下面是一些关于SQL的选择题和填空题。

请注意,由于限制了字数,每个问题的回答可能会比较简洁,但我会尽量提供全面的答案。

让我们开始吧!选择题:1. 下面哪个关键字用于在SQL中创建表?A. SELECT.B. INSERT.C. CREATE.D. UPDATE.答案,C. CREATE.2. 下面哪个关键字用于在SQL中更新表中的数据?A. SELECT.B. INSERT.C. CREATE.D. UPDATE.答案,D. UPDATE.3. 下面哪个关键字用于在SQL中删除表?A. SELECT.B. INSERT.C. CREATE.D. DROP.答案,D. DROP.4. 下面哪个关键字用于在SQL中向表中插入新的数据?A. SELECT.B. INSERT.C. CREATE.D. UPDATE.答案,B. INSERT.5. 下面哪个关键字用于在SQL中查询表中的数据?A. SELECT.B. INSERT.C. CREATE.D. UPDATE.答案,A. SELECT.填空题:1. 在SQL中,用于选择特定列的关键字是 __SELECT__。

2. 在SQL中,用于过滤数据的关键字是 __WHERE__。

3. 在SQL中,用于根据条件对结果进行排序的关键字是__ORDER BY__。

4. 在SQL中,用于将多个表连接在一起的关键字是 __JOIN__。

5. 在SQL中,用于计算某个列的总和的关键字是 __SUM__。

这些题目只是一小部分SQL的基础知识,希望能帮到你!如果你还有其他问题,请继续提问。

sql左连接查询题目

sql左连接查询题目

sql左连接查询题目
以下是一个关于SQL 左连接查询的题目:
假设我们有两个表格:
1."Students" 表包含学生的信息,包括学生ID、姓名、年龄等字段;
2."Exams" 表包含学生参加的考试信息,包括学生ID、考试科目、成绩等
字段。

现在,我们要查询每个学生的姓名、年龄和参加的所有考试科目及对应的成绩。

请使用SQL 左连接查询语句完成此查询。

查询语句如下:
解释:
•SELECT用于选择要查询的字段,这里选择了学生的姓名、年龄和考试的科目及成绩;
•FROM指定了主表"Students";
•LEFT JOIN用于进行左连接操作,将"Students" 表和"Exams" 表连接起来;
•ON指定了连接条件,即两个表中的学生ID字段相等。

这样,我们就可以查询到每个学生的姓名、年龄和参加的所有考试科目及对应的成绩了。

sql 语句经典题目

sql 语句经典题目SQL(Structured Query Language)是用于管理关系数据库的标准编程语言。

以下是一些经典的 SQL 题目,可以帮助你提高 SQL 技能:1. 学生成绩查询假设有一个学生数据库,包括学生、课程和成绩等信息。

学生表为`students`,包含列 `id`, `name`, 和 `age`。

课程表为 `courses`,包含列`id`, `name`。

成绩表为 `scores`,包含列 `student_id`, `course_id`, 和`score`。

查询每个学生的姓名、年龄和所有课程的成绩。

2. 员工工资查询假设有一个员工数据库,包括员工、部门和工资等信息。

员工表为`employees`,包含列 `id`, `name`, 和 `department_id`。

部门表为`departments`,包含列 `id`, `name`。

工资表为 `salaries`,包含列`employee_id`, `salary`。

查询每个员工的姓名、所属部门和工资。

3. 商品销售统计假设有一个商品销售数据库,包括商品、销售和购买者等信息。

商品表为 `products`,包含列 `id`, `name`, 和 `price`。

销售表为 `sales`,包含列 `product_id`, `seller_id`, 和 `buyer_id`。

查询每种商品的名称、单价和销售数量,并按销售数量降序排列。

4. 电影评分查询假设有一个电影数据库,包括电影、导演和评分等信息。

电影表为`movies`,包含列 `id`, `title`, 和 `director_id`。

导演表为 `directors`,包含列 `id`, `name`。

评分表为 `ratings`,包含列 `movie_id`, 和 `rating`。

查询每个导演所执导的电影的评分,并计算每个导演的平均评分。

5. 博客文章分类假设有一个博客文章数据库,包括文章、类别和作者等信息。

招聘sql笔试题及答案

招聘sql笔试题及答案招聘SQL笔试题及答案1. 题目一:查询员工工资高于平均工资的员工信息要求:从员工表中查询出工资高于平均工资的员工的所有信息。

SQL语句:```sqlSELECT * FROM employeesWHERE salary > (SELECT AVG(salary) FROM employees);```答案解析:此查询首先计算了员工表中所有员工的平均工资,然后从员工表中选出那些工资高于该平均工资的员工信息。

2. 题目二:统计每个部门的员工人数要求:列出每个部门的员工人数。

SQL语句:```sqlSELECT department_id, COUNT(*) AS employee_countFROM employeesGROUP BY department_id;```答案解析:通过GROUP BY子句对部门ID进行分组,并使用COUNT 函数计算每个部门的员工人数。

3. 题目三:查询工资最高的员工信息要求:查询工资最高的员工的所有信息。

SQL语句:```sqlSELECT * FROM employeesWHERE salary = (SELECT MAX(salary) FROM employees);```答案解析:此查询首先找出员工表中工资最高的值,然后选择所有工资等于该值的员工信息。

4. 题目四:找出工资在第三高的员工信息要求:查询工资排名第三高的员工的所有信息。

SQL语句:```sqlSELECT * FROM employeesWHERE salary = (SELECT salary FROM (SELECT salaryFROM employeesORDER BY salary DESCLIMIT 1 OFFSET 2) AS subquery);```答案解析:通过子查询先找出工资最高的三个员工,然后选择工资等于第三个最高工资的员工信息。

5. 题目五:查询所有员工的姓名、工资以及工资等级要求:根据工资将员工分为高、中、低三个等级。

plsql面试笔试题目及答案

plsql面试笔试题目及答案一、单项选择题(每题2分,共10题)1. PL/SQL中,哪个关键字用于定义变量?A. VARB. DECLAREC. VARIBLED. DECLARE_VAR答案:B2. 在PL/SQL中,哪个语句用于结束循环?A. EXITB. END_LOOPC. LOOP_ENDD. QUIT答案:A3. PL/SQL中,哪个关键字用于定义存储过程?A. PROCEDUREB. FUNCTIONC. PACKAGED. TRIGGER答案:A4. 在PL/SQL中,哪个关键字用于定义函数?A. PROCEDUREB. FUNCTIONC. PACKAGED. TRIGGER答案:B5. PL/SQL中,哪个关键字用于定义游标?A. CURSORB. SELECTC. LOOPD. FOR答案:A6. PL/SQL中,哪个关键字用于定义异常处理?A. EXCEPTIONB. TRYC. CATCHD. RAISE答案:A7. 在PL/SQL中,哪个关键字用于定义记录类型?A. RECORDB. TYPEC. ROWD. TABLE答案:B8. PL/SQL中,哪个关键字用于定义集合类型?A. COLLECTIONB. SETC. ARRAYD. LIST答案:A9. 在PL/SQL中,哪个关键字用于定义触发器?A. TRIGGERB. PROCEDUREC. FUNCTIOND. PACKAGE答案:A10. PL/SQL中,哪个关键字用于定义包?A. PACKAGEB. PROCEDUREC. FUNCTIOND. TRIGGER答案:A二、多项选择题(每题2分,共10题)1. PL/SQL中,哪些关键字用于控制流程?A. IFB. LOOPC. GOTOD. CASE答案:A, B, D2. 在PL/SQL中,哪些关键字用于集合操作?A. BULK COLLECTB. FORALLC. LIMITD. FETCH答案:A, B3. PL/SQL中,哪些关键字用于异常处理?A. EXCEPTIONB. RAISEC. WHEND. THEN答案:A, B, C4. 在PL/SQL中,哪些关键字用于定义数据类型?A. TYPEB. TABLEC. RECORDD. COLLECTION答案:A, C, D5. PL/SQL中,哪些关键字用于定义游标?A. CURSORB. FORC. LOOPD. SELECT答案:A, B6. 在PL/SQL中,哪些关键字用于定义触发器?A. TRIGGERB. BEFOREC. AFTERD. INSTEAD OF答案:A, B, C7. PL/SQL中,哪些关键字用于定义存储过程和函数?A. PROCEDUREB. FUNCTIONC. PACKAGED. TRIGGER答案:A, B8. 在PL/SQL中,哪些关键字用于定义变量?A. VARB. DECLAREC. VARIBLED. DECLARE_VAR答案:B9. PL/SQL中,哪些关键字用于定义条件语句?A. IFB. THENC. ELSED. ELSIF答案:A, B, C, D10. 在PL/SQL中,哪些关键字用于定义循环?A. LOOPB. FORC. WHILED. REPEAT答案:A, B三、判断题(每题2分,共10题)1. PL/SQL是一种过程式编程语言。

sql面试必会6题经典

SQL面试必会6题经典在SQL面试中,有一些问题是经典且必会的。

这些问题涵盖了SQL的基本概念和技巧,能够帮助面试官对面试者的SQL能力有一个全面的了解。

以下是6道经典的SQL面试题,包含了SELECT、JOIN、GROUP BY和子查询等常见的SQL操作。

题目一:查询表中的所有记录SELECT*FROM table_name;这是一个非常基本的查询,它能够返回表中的所有记录。

在面试中,可以用这个问题来考察面试者对SQL语法的熟悉程度。

题目二:查询表中的指定字段SELECT column1, column2 FROM table_name;这个问题要求面试者从表中选择指定的字段,而不是返回所有字段。

这能够考察面试者对SELECT语句的掌握程度。

题目三:查询表中的记录数SELECT COUNT(*) FROM table_name;在面试中,有时候会需要知道一张表中的记录数。

这个问题考察面试者是否知道如何使用COUNT函数来做这个事情。

题目四:查询表中的最大值和最小值SELECT MAX(column_name), MIN(column_name) FROM table_name;面试者需要使用MAX和MIN函数来查询表中某一列的最大值和最小值。

这个问题考察面试者是否了解这些聚合函数的用法。

题目五:查询表中满足指定条件的记录SELECT*FROM table_name WHERE condition;在面试中,很常见的需求是查询满足某些条件的记录。

这个问题考察面试者是否熟悉SQL中的WHERE子句的用法。

题目六:查询表中的重复记录SELECT column1, column2, COUNT(*) FROM table_n ame GROUP BY column1, column2 HAVING COUNT(*) >1;有时候需要查询表中的重复记录,这个问题考察面试者是否熟悉使用GROUP BY和HAVING来对聚合结果做筛选。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1-5 C C B A A 6-9 D C B B D 10-14 B C A C D 15-19 B D A A C 20-24 C A C D D 25-29 C C A B D 30-34 B D D B C 35-39 AC A C B B 40-44 A B B A D 45-49 A B AD B D 50-54 A AC B BD D 55-58 B AD C A

简单

1. 下列四项中,不属于数据库系统特点的是() 。(选择一项) A. 数据共享 B. 数据完整性 C. 数据冗余度高 D. 数据独立性高 2. 如果将某一列设置为表的主键,在表中此列的值()。(选择一项) A.可以出现重复值 B.允许为空值 C.不允许为空值,也不能出现重复值 D.不允许为空值,但允许列值重复 3. 在SQL Server2005数据库中,可以使用( )关键字来限制返回的数据行数。(选择一项) a) LIMIT b) TOP c) COUNT d) SUM 4.在SQL Server 2005数据库中,系统提供聚合函数对列中的数据进行计算,以下聚合函数中( )用于返回表达式中所有值的总和。(选择一项) a) SUM b) MAX c) AVG d) COUNT 5.以下关于外键和相应的主键之间的关系,正确的是( )(选择一项) A. 外键并不一定要与相应的主键同名. B. 外键一定要与相应的主键同名. C. 外键一定要与相应的主键同名而且唯一. D. 外键一定要与相应的主键同名,但并不一定唯一 6.SQL中“成绩 between 10.5 and 99.5”相当于下列哪个逻辑表达式()。(选择一项) A.成绩>=10.5 and成绩<99.5 B.成绩>10.5 and成绩<99.5 C.成绩>=10.5 or 成绩<=99.5 D.成绩>=10.5 and成绩<=99.5 7.SQL中“年龄在18一25之间“,这种约束属于数据库系统的()措施。(选择一项) A.原子性 B.一致性 C.完整性 D.安全性 8. 数据库系统发展到今天,占统治地位的仍然是关系数据库。关系数据库中所谓的数据冗余指的是( )。(选择一项) a) 数据不准确 b) 存在重复数据 c) 数据之间不存在关系 d) 数据量太大 8. 以下运算符中()不是SQL Server 2005 的T-SQL支持的逻辑运算符。 (选择一项) a) AND b) NO c) NOT d) OR 9.SQL Server 2005采用的身份验证模式有()。 (选择一项) a) 仅Windows身份验证模式 b) 仅SQL Server身份验证模式 c) 仅混合模式 d) Windows身份验证模式和SQLServer身份验证模式 10.在SQL Server2005中,系统提供聚合函数对列中的数据进行统计,一下聚合函数中,( )用于返回表达式中所有值中的最小值。 (选择一项) a) SUM b) MIN c) AVG d) COUNT 11.SQL Server安装程序创建4个系统数据库,下列哪个不是( )系统数据库。 (选择一项) a) master b) model c) pub d) msdb 12.在SQL Server2005数据库中,字符串函数可以用于控制返回给用户的字符串,以下( )函数用于将传递给它的字符串转变为大写。 (选择一项) a) UPPER b) LOWER c) RTRIM d) STUFF 13.在SQL Server2005数据库中,假定grade(成绩)表中包含字段:sID(学号),lang(语文课成绩)。那么列出语文成绩在80分到90分的学生的SQL语句是( ) (选择一项) a) Select * from grade where lang in(80,90) b) Select * from grade having lang in(80,90) c) Select * from grade where lang between 80 and 90 d) Select * from grade having lang between 80 and 90 14.要查询book表中所有书名中以“计算机”开头的书籍的价格,可用( )语句。(选择一项) a) SELECT price FROM book WHERE book_name = „计算机*‟ b) SELECT price FROM book WHERE book_name LIKE „计算机*‟ c) SELECT price FROM book WHERE book_name = „计算机%‟ d) SELECT price FROM book WHERE book_name LIKE „计算机%‟ 15.SQL语句中UPDATE命令的功能是( )(选择一项) a) 删除表中的数据 b) 更新表中的数据 c) 在表中添加一条新记录 d) 修改表的结构 16.在SQL Server 2005数据库中,如果一个T-SQL语句中包含多个逻辑运算符并且假设语句中没有括号时,其正确的运算顺序是()。(选择一项) A) 首先or,然后not,最后计算and B) 首先not,然后or,最后计算and C) 首先and,然后or,最后计算not D) 首先not,然后and,最后计算or 17.在SQL Server 2005数据库中,having和where子句以及group by可以在同一select语句中使用,其正确的先后顺序是()。(选择一项) A) where、group by、having B) where、having、group by C) having、where、group by D) group by、where、having 18.以下关于外键和相应的主键之间的关系,正确的是()(选择一项) A.外键并不一定要与相应的主键同名 B.外键一定要与相应的主键同名 C.外键一定要与相应的主键同名且唯一 D.外键一定要与相应的主键同名,但是并不一定唯一 19.使用()连接可以查询出表A和表B中符合连接条件的数据,不符合条件将不会出现在查询结果中(选择一项) A.左外联接 B.右外联接 C.内联接 D.外联接 20.下列聚合函数中正确的是()(选择一项) A.SUM(*) B.MAX(*) C.COUNT(*) D.AVG(*) 21.限制输入到列的值的范围,应使用()约束。(选择一项) A.CHECK B.PRIMARY KEY C.FOREIGN KEY D.UNIQUE 22.执行select * from Student where st_name like „%[^国]%‟,以下说法正确的是()(选择一项) A.查询出学生表中所有学生的记录 B.查询出学生表中名字带有国字的学生记录 C.查询出学生表中名字不带有国字的学生记录 D.不能查询出学生表中有四个字名字的学生记录 23.在SELECT语句中正确的语句顺序如下()(选择一项) A.where,having,group by,order by B.having,where,group by,order by C.where,order by,group by,having D.Where,group by,having,order by

24.在SQL Server 2005数据库中,有students(表),包含字段:SID(学号),SName(姓名),Grade(成绩)。现要将所有学员的成绩加10分。下列SQL 语言正确的是( )。(选择一项) A. update students set Grade = Grade + 10 where SID=1 B. update * set Grade = Grade + 10 C. update * from students set Grade = Grade + 10 D. update students set Grade = Grade + 10

25.在SQL Server2005中,附加数据库操作指的是()。(选择一项) A. 把数据库删除掉 B. 把SQL Server 数据库文件保存为其他数据文件 C. 根据数据库物理文件中的信息,把数据库在SQL Server 2005中恢复 D. 把所有该数据库表的数据清空

26.在SQLSerever2005数据库中,表主键是()。 (选择一项) A. 只允许以表中第一字段建立 B. 创建唯一的索引,允许空值 C. 为标识表中唯一的实体 D. 允许有多个主键的

27.在SQL Server2005中,表由什么组成( )。(选择一项) A. 行和列 B. 字段和标题 C. 信息项 D. 信息记录 28.在SQL Server 2005中,主键用来实施()。 (选择一项) a) 引用完整性约束 b) 实体完整性约束 c) 域完整性约束 d) 自定义完整性约束 29.在SQL Server 2005中,要防止大于100 的数被保存到int 类型的列,可以使用()。 (选择一项) a) 主键约束 b) 限制约束 c) 外键约束 d) 检查约束 30.在SQL Server 2005 中,使用update语句更新数据库表中的数据,一下说法正确的是()。 (选择一项) a) 只能更新一行数据 b) 可以更新多行数据 c) 如果没有数据现被更新,将提示错误信息 d) 更新数据时,必须带有WHERE条件子句 31.标准SQL基本查询模块的结构是()(选择一项)

相关文档
最新文档