笔试_oracle(6)

来源:互联网 发布:足球买球让球算法 编辑:程序博客网 时间:2024/06/06 15:21

一、 单选题(每小题2分,共56分)

1. 观察下面employees表的表结构



执行下面SQL语句的结果为:DELETE employees;

A:由于主键违规而出现错误。

B:EMPLOYEES表的数据和结构将被删除。

C:EMPLOYEES表中的数据被删除,但表结构依然存在。

D:因为语句在语法上不正确而出错。

参考答案:

C

解析:

truncate tablenamedelete tablename不删除表的结构,只是删除表中的数据;drop tablename:删除表的表结构和数据。 


2. 观察EMPLOYEES表的表结构



哪个SQL语句能够查询出最低工资低于5000,最高工资超过15000的部门的部门ID、部门员工的最低工资、最高工资()

A:

SELECT dept_id, MIN(salary), MAX(salary)

FROM employees

WHERE MIN(salary) < 5000 AND MAX(salary) > 15000;


B:

 SELECT dept_id, MIN(salary), MAX(salary)

FROM employees

WHERE MIN(salary) < 5000 AND MAX(salary) > 15000

GROUP BY dept_id;

 

C:

 SELECT dept_id, MIN(salary), MAX(salary)

FROM employees

HAVING MIN(salary) < 5000 AND MAX(salary) > 15000;

 

D:

SELECT dept_id, MIN(salary), MAX(salary)

FROM employees

GROUP BY dept_id

HAVING MIN(salary) < 5000 AND MAX(salary) > 15000;

 

E: 

 SELECT dept_id, MIN(salary), MAX(salary)

FROM employees

GROUP BY dept_id, salary

HAVING MIN(salary) < 5000 AND MAX(salary) > 15000;

 

参考答案:

D

解析:

根据题意,首先要对部门分组,然后过滤出最低工资低于5000、最高工资高于15000的部门


3.  对SQL语句的描述中,下列说法不正确的有

A: 使用关键字distinct消除冗余

B: where用于指定筛选条件

C: sql关键字区分大小写

D: 字符串比较按照字典排序

 

参考答案:

C

解析:

 sql不区分大小写


4. 观察customers表的表结构



其中CUSTOMER_ID是表的主键。下列哪个选项能够查询出“Los Angeles”和“San Francisco”的城市地址(city_address),以及每个城市里顾客的数量()

A: 

SELECT city_address, COUNT(*)

FROM customers

WHERE city_address IN ('Los Angeles', 'San Francisco');

B: 

SELECT city_address, COUNT(*)

FROM customers

WHERE city_address IN ('Los Angeles', 'San Francisco')

GROUP BY city_address;

C: 

SELECT city_address, COUNT(customer_id)

FROM customers

WHERE city_address IN ('Los Angeles', 'San Francisco')

GROUP BY city_address, customer_id;

D: 

SELECT city_address, COUNT(customer_id)

FROM customers

GROUP BY city_address IN ('Los Angeles', 'San Francisco');

 

参考答案:

B

解析:

若要查询出这两个城市的顾客数量,必须先按城市分组,再统计数量


5.  在数据库中,user为用户表,id为用户编号,name为用户名,age为年龄字段。下面关于update  user set name='tom',age=21  where id=1语句说法正确的是:

A: 把用户名为tom的年龄改为21

B: 把用户编号为1的记录用户名修改为tom年龄修改为21

C:   把所有用户记录的用户名修改为tom年龄修改为21

D: 语法错误

参考答案:

B

解析:

 update  user set name='tom',age=21  where id=1语句 语法没有问题,意思为: 把用户编号为1的记录用户名修改为tom年龄修改为21


6.  能查询用户的平均年龄的是:

A: select max(age) from user;

B:  select count(age) from user;

C:   select  sum(age) from user;

D:  select avg(age) from user;

参考答案:

D

解析:

 avg函数:统计数据表选中行某列的平均值。 


7.  能查询年龄小于15岁的女学生信息:

A: select * from users where age<15 and sex=女

B: select * from users where age<15 or sex='女'

C: select * from users where id<15 and sex='女'

D: select * from users where age<15 and sex='女'

参考答案:

D

解析:

 题目要求<15岁 和 女生两个条件同时满足 所以用and 进行条件连接。


8.  下面关于Oracle的说法正确的是

A: Oracle的默认的SID是ORCL

B: Oracle的测试用户scott的默认密码是123456

C: Oracle的测试用户hr的密码是123456

D: Oracle的默认端口号是1520

参考答案:

A

解析:

 Oracle的测试用户是scott,默认密码是tiger。 Oracle的默认端口号是1521


9. 关于drop关键字下面说法错误的是:

A:删除某个用户是需要此关键字

B:删除表中的某个字段时需要此关键字

C:删除某张表时需要此关键字

D:删除表中的某条数据时需要此关键字

参考答案:

D

解析:

删除表中数据使用delete关键字


10. 下面排序的说法不正确的是:

A:asc是升序排列

B:默认是升序排序

C:desc是降序排序

D:  默认是降序排序

参考答案:

D

解析:

数据库查询中默认是asc升序排列


11. 观察EMPLOYEES表,其中在EMPLOYEES表上,EMPLOYEE_ID是主键。 MGR_ID是经理的ID,并引用EMPLOYEE_ID。 JOB_ID列是一个NOT NULL列。



下面的DELETE语句为何删除失败 

DELETE employee_id, salary, job_id

FROM employees

WHERE dept_id = 90;

A:在EMPLOYEES 表中没有dept_id 为90的行

B:不能删除JOB_ID 列,因为该列不能为空

C:不能在删除语句的DELETE子句中指定列名

D:不能删除EMPLOYEE_ID列,因为它是表的主键。

参考答案:

C

解析:

删除语句只能用于整行删除,不能再delete子句中指定列名。


12. 观察orders表和customers表,哪个SQL语句能够检索出与Martin同一天下订单的订单ID,客户ID和订单总额?


A: 

SELECT ord_id, cust_id, ord_total

FROM orders, customers

WHERE cust_name='Martin'

AND ord_date IN ('18-JUL-2000','21-JUL-2000');

B: 

SELECT ord_id, cust_id, ord_total

FROM orders

WHERE ord_date IN (SELECT ord_date

FROM orders

WHERE cust_name ='Martin')

C:


SELECT ord_id, cust_id, ord_total

FROM orders

WHERE ord_date IN (SELECT ord_date

FROM orders, customers

WHERE cust_name ='Martin');

 

D: 

SELECT ord_id, cust_id, ord_total

FROM orders

WHERE cust_id IN (SELECT cust_id

FROM customers

WHERE cust_name = 'Martin');

 

参考答案:

B

解析:

订单(orders)表中没有cust_name ,所以要通过子查询查出cust_name ='Martin'的顾客的ID(cust_id ),然后在orders表中查询出该顾客在那天下过订单,最后查询出在这一天下的订单的订单ID,客户ID和订单总额


13. 观察下表(EMP)


需要查询出奖金(COMM)为空,正确的SQL语句是()

A: 

SELECT * FROM EMP WHERE COMM = NULL;

B: 

SELECT * FROM EMP WHERE COMM = 0;

C: 

SELECT * FROM EMP WHERE COMM IS NULL;

D: 

SELECT * FROM EMP WHERE COMM IS 0;

参考答案:

C

解析:

判断某列的值为空用IS null


14. 观察employees表的表结构


下列哪个SQL语句能够查询出部门数量,要求这些部门都有姓李(last_name='李')的员工

A: 

SELECT COUNT(*)FROM employeesWHERE last_name='李';

B: 

SELECT COUNT(dept_id)

FROM employees

WHERE last_name='李';

C: 

SELECT DISTINCT(COUNT(dept_id))

FROM employees

WHERE last_name='李';

D: 

SELECT COUNT(DISTINCT dept_id)

FROM employees

WHERE last_name='李';

E: 

SELECT UNIQUE(dept_id)

FROM employees

WHERE last_name='李';

参考答案:

D

解析:

根据题目要求首先要查询出有姓李的员工的部门信息,然后再对部门的dept_id进行去除重复,最后计数


15. 观察下表ORDERS和CUSTOMERS


下面SQL语句的执行结果是() 

SELECT *

FROM orders

WHERE cust_id = (SELECT cust_id

FROM customers

WHERE cust_name = 'Smith');

A:

B:

C:

D:查询失败,因为子查询的返回结果不止一行

E:查询失败,因为子查询和主查询用的不是同一张表

参考答案:

D

解析:

主查询的where子句的运算符为“=”,所以其后面的值不能是多个,但是在customers表中Smith有两个,所以查询失败。


16. 观察EMP的表结构

执行该SQL语句,返回的结果的顺序是怎样的? 

SELECT empname,hire_date HIREDATE, salary

FROM EMP

ORDER BY hire_date;

A:无序

B:按日期升序

C:按日期降序

D:按字母顺序升序

E:按字母顺序降序

参考答案:

B

解析:

当不指定排序方式时,系统默认升序排序


17. 以下SQL语句,能正确执行的是( )

A: 

select e.department_id,sum(e.salary),round(avg(e.salary),2) "AvgSalary"

from employees e

order by e.department_id

group by e.department_id

B: 

select e.department_id, e.salary

from employees e

group by e.department_id

order by e.department_id

C: 

select sum(e.salary),round(avg(e.salary),2) "AvgSalary"

from employees e

group by e.department_id

order by e.department_id

D: 

select e.department_id,sum(e.salary),round(avg(e.salary),2) "AvgSalary"

from employees e

group by e.department_id

order by e.department_id

参考答案:

D


18. 您需要更改现有表的定义:
更改COMMERCIALS表的DESCRIPTION列以保存不超过1000字节的变长字符,该列当前每个值可以保存500个字节。 表包含20000行。 
哪个SQL语句能够完成该需求()

A: 

ALTER TABLE commercials

MODIFY (description CHAR2(1000));

B: 

ALTER TABLE commercials

CHANGE (description CHAR2(1000));

C: 

ALTER TABLE commercials

CHANGE (description VARCHAR2(1000));

D: 

ALTER TABLE commercials

MODIFY (description VARCHAR2(1000));

E:如果该列有数据,你不可以增加字段的长多。

参考答案:

D

解析:

修改表结构的固定语法:
ALTER TABLE table_name
MODIFY (column_name data_type);


19. 观察STUDENT_GRADES 表的表结构

一个学期有多个GPA,下列哪个语句能找到每个学期最高的GPA?

A: 

ELECT MAX(gpa)

FROM student_grades

WHERE gpa IS NOT NULL;

B: 

SELECT (gpa)

FROM student_grades

GROUP BY semester_end

WHERE gpa IS NOT NULL;

C: 

SELECT MAX(gpa)

FROM student_grades

WHERE gpa IS NOT NULL

GROUP BY semester_end;

D: 

SELECT MAX(gpa)

GROUP BY semester_end

WHERE gpa IS NOT NULL

FROM student_grades;

E: 

SELECT MAX(gpa)

FROM student_grades

GROUP BY semester_end

WHERE gpa IS NOT NULL;

参考答案:

C

解析:

在使用聚合函数时一定要考虑null值的情况。
想要查询每学期的最高的GPA,必须要以学期(SEMESTER_END)分组,此时要考虑有些学生可能没有参加考试(即GPA为null)的情况,GPA为null,oracle系统就会使某组的max(gpa)结果为null,显然这种情况是不符合要求的,要排除这种情况,就必须对null做处理,要么将null用0代替,要么直接去除null的情况,在这里是求最大值,直接去除null不会影响最大值的情况,而且提前排除null,后续的计算量也会下降,所以此时选择直接去除null,SQL语句的性能更高。


20. having  , where , group by 的正确执行顺序是( )

A:having,where,group by

B:group by,having,where

C:where,having,group by

D:where ,group by,having

参考答案:

D

解析:

查询中用到的关键词主要包含六个,并且他们的顺序依次为 

select--from--where--group by--having--order by

 

21. 需要创建一个订单(ORDERS)表,该表包含如下4列

1. an ORDER_ID column of number data type
2. a CUSTOMER_ID column of number data type
3. an ORDER_STATUS column that contains a character data type
4. a DATE_ORDERED column to contain the date the order was placed
要求:当一行插入到表中时,如果没有提供任何值,则应使用今天的日期。
下列选项符合要求的是()

A: 

CREATE TABLE orders (

order_id NUMBER(10),

customer_id NUMBER(8),

order_status VARCHAR2 (10),

date_ordered DATE = SYSDATE);

B: 

CREATE TABLE orders (

order_id NUMBER(10),

customer_id NUMBER(8),

order_status VARCHAR2 (10),

date_ordered DATE DEFAULT SYSDATE);

C: 

CREATE OR REPLACE TABLE orders (

order_id NUMBER(10),

customer_id NUMBER(8),

order_status VARCHAR2 (10),

date_ordered DATE DEFAULT SYSDATE);

D: 

CREATE OR REPLACE TABLE orders (

order_id NUMBER(10),

customer_id NUMBER(8),

order_status VARCHAR2 (10),

date_ordered DATE = SYSDATE);

E: 

CREATE TABLE orders (

order_id NUMBER(10),

customer_id NUMBER(8),

order_status NUMBER (10),

date_ordered DATE = SYSDATE);

F: 

CREATE TABLE orders (

order_id NUMBER(10),

customer_id NUMBER(8),

order_status NUMBER (10),

date_ordered DATE DEFAULT SYSDATE);

参考答案:

B

解析:

oracle数据库可以用create or replace的对象有:functions, procedures, packages, types, synonyms, trigger and views,就是没有table,也没有sequence。据此排除C、D选项。
添加默认值的方式是在字段的数据类型之后用“default”,而不是用“=”。据此排除A、E。
选项F是ORDER_STATUS 字段的数据类型错误。


22. 观察employees表的表结构


选项中哪个update语句是有效的()

A: 

UPDATE employees

SET first_name = 'John'

SET last_name ='Smith'

WHERE employee_id = 180;

B: 

UPDATE employees

SET first_name = 'John',

SET last_name ='Smith'

WHERE employee_id = 180;

C: 

UPDATE employees

SET first_name = 'John'

AND last_name ='Smith'

WHERE employee_id = 180;

D: 

UPDATE employees

SET first_name = 'John', last_name ='Smith'

WHERE employee_id = 180;

参考答案:

D

解析:

一个update语句中只需写一个SET子句,多个被更新的字段用逗号隔开。


23. 插入、删除以及修改数据被称作()

A:数据库定义语言(DDL)

B:数据库操作语言(DML)

C:数据库查询语言(DQL)

D:数据库控制语言(DCL)

参考答案:

B


24. 观察表EMPLOYEES 和NEW_EMPLOYEES的表结构

选项中哪个更新操作是有效的()

A: 

UPDATE new_employees SET name = (SELECT last_name||

first_name

FROM employees

WHERE employee_id

=180)

WHERE employee_id =180;

B: 

UPDATE new_employees SET name = (SELECT

last_name||first_name

FROM employees )

WHERE employee_id =180;

C: 

UPDATE new_employees SET name = (SELECT last_name ||

first_name

FROM employees

WHERE employee_id

=180)

WHERE employee_id =(SELECT employee_id

FROM new_employees);

D: 

UPDATE new_employees SET name = (SELECT last_name||

first_name

FROM employees

WHERE employee_id =

(SELECT employee_id

FROM new_employees))

WHERE employee_id

=180;

参考答案:

A

解析:

B.子查询查出了多行数据;
C.第二个子查询得到了多行数据,但是where子句的运算符“=”只能指定一个值;
D.选项错误同上。


25. 顾客表(customers)中有一存储顾客姓名的字段(customerName),现在想显示"欢迎customerName光临小店"的字样,下列SQL语句能够满足该需求的是()

A: 

SELECT "欢迎"||customerName||"光临小店" FROM customers;

B: 

SELECT '欢迎'||customerName||'光临小店' FROM customers;

C: 

SELECT '欢迎'|customerName|'光临小店' FROM customers;

D: 

SELECT "欢迎"|customerName|"光临小店'"FROM customers;

参考答案:

B

解析:

select中显示的字符用单引号引起来,字符之间的连接用||


26. 下列哪项不属于关系型数据库?

A:Oracle

B:SQL Server

C:HBase

D:MySql

参考答案:

C

解析:

常见关系型数据库有:Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL
HBase是列式非关系型数据库


27. 使用哪个SELECT语句从系统日期中提取年份并以“1998”格式显示?

A:


SELECT TO_CHAR(SYSDATE,'yyyy')

FROM dual;

B:


SELECT TO_DATE(SYSDATE,'yyyy')

FROM dual;

C:


SELECT DECODE(SUBSTR(SYSDATE, 8), 'YYYY')

FROM dual;

D:


SELECT DECODE(SUBSTR(SYSDATE, 8), 'year')

FROM dual;

 

E:


SELECT TO_CHAR(SUBSTR(SYSDATE, 8,2),'yyyy')

FROM dual;

参考答案:

A

解析:

日期转换用TO_CHAR(date,fmt)函数,date是将被转换的日期,fmt指定转换后的格式。


28. 已知表T1中有2行数据,T2中有3行数据,执行SQL语句"select a.* from T1 a,T2 b"后,返回行数为:()

A:2行

B:3行

C:5行

D:6行

参考答案:

D

解析:

查询结果返回的是笛卡尔积;笛卡尔积:列相加,行相乘


二、 多选题(每小题3分,共24分)

1.

观察下面创建订单(order)表的SQL语句

 

 

当你执行上面的SQL语句时候哪些列会自动创建索引(index)?(请选出两项)

A:SER_NO

B:ORDER_ID

C:STATUS

D:PROD_ID

E:ORD_TOTAL

F:基于ORDER_ID and ORDER_DATE创建复合索引

参考答案:

AF

解析:

oracle数据库会在唯一约束和主键约束上自动创建索引


2.观察下面employees表的表结构

 

 

您创建了一个名为EMP_ID_SEQ的序列,以填充EMPLOYEES表的EMPLOYEE_ID列的序列值。 哪两个语句关于EMP_ID_SEQ序列是正确的?(请选出两项)

A:您不能使用EMP_ID_SEQ序列填充JOB_ID列。

B:修改EMPLOYEE_ID列时,EMP_ID_SEQ序列无效。

C:EMP_ID_SEQ序列本身不受对EMPLOYEES表的修改的影响。

D:架构中任何其他NUMBER数据类型的列都可以使用EMP_ID_SEQ序列。

E:删除EMPLOYEES表时,将自动删除EMP_ID_SEQ序列。

F:删除EMPLOYEE_ID列时,将自动删除EMP_ID_SEQ序列。

参考答案:

CD

解析:

序列不属于任何一张表,表可以用序列辅助插入一些数据,但是对表的处理不会影响序列


3. 我们需要在employee数据表中查出工号emp_no为29346,24323的记录,可以使用的SQL语句有?(选出正确的两项)

A:SELECT * FROM employee WHERE emp_no=29346 OR emp_no=24323 ;

B:SELECT * FROM employee WHERE emp_no IN(29346,24323);

C:SELECT * FROM employee WHERE emp_no=29346 AND emp_no=24323;

D:SELECT * FROM employee WHERE emp_no  NOT IN(29346,24323)='dl');

参考答案:

AB


4. 下列关于视图的说法,正确的有?(选出正确的三项)

A:视图可以防止未经许可的用户访问敏感数据

B:创建视图时,可以将列名改为有意义的名称,使用户更容易理解列所代表的内容

C:定义的视图中可以包含ORDER BY子句

D:不能为视图建立索引

参考答案:

ABC

解析:

视图上也可以建立索引,以便快速查询


5. 关于where和having子句说法正确的有?(请选出两项)

A:WHERE子句可用于限制行和组。

B:WHERE子句只能用于限制行。

C:HAVING子句可用于限制行和组。

D:HAVING子句只能用于限制组。

E:如果查询使用HAVING子句,则不能在查询中使用WHERE子句。

F:HAVING子句不能在子查询中使用。

参考答案:

BD

解析:

where只能用于行数据的筛选;having只能用于组数据的筛选。


6.  下列查询姓张的学生的语句不正确的是?(选出正确的三项)

A: select * from 表名 where 姓名 = '%张%'

B: select * from 表名 where 姓名 like '张'

C: select * from 表名 where 姓名 like '张%'

D: select * from 表名 where 姓名 = '张' 

参考答案:

ABD

解析:

 LIKE 模糊查询字符匹配操作可以使用通配符 “%” 和 “_”:%:表示任意个字符,包括零个;_:表示一个任意字符;题目要求查询姓张的,所以需要张开头的姓名。所以c是正确的。


7.关于下面的SQL删除语句,说法正确的是?(请选出四项)

DROP TABLE DEPT;

A:无法回滚此语句。

B:所有待处理的事务都已提交。

C:基于DEPT表的所有视图都将被删除。

D:将删除基于DEPT表的所有索引。

E:将删除表中的所有数据,并删除表结构。

F:将删除表中的所有数据,但保留表的结构。

参考答案:

ABDE

解析:

AB.DROPDDL,会被隐式提交,所以无法回滚(只能回滚未提交的DML,其上的操作也被一并提交;

C.表被删除,基于表的视图不会被删除,只是执行查询操作的时候会报错;

DEF.删除表,基于表的索引、表结构都会被删除。


8. 观察下表EMP


下列能够查询工号EMPNO在7300——7500之间的员工的姓名的SQL语句是?(请选出两项)

A:

SELECT ENAME FROM EMP WHERE EMPNO IN(7300,7500);

B:

SELECT ENAME FROM EMP WHERE EMPNO BETWEEN 7300 AND 7500;

C:

SELECT ENAME FROM EMP WHERE EMPNO>7300 OR EMPNO<7500;

D:

SELECT ENAME FROM EMP WHERE EMPNO>7300 AND EMPNO<7500;

参考答案:

BD

解析:

between and 的作用和> and <的作用相同


三、 综合题(每小题10分,共20分)

1. 根据下面创建表的语句完成SQL查询


Create table org_organization(

   Organization_id        NUMBER(10)        not null,--组织结构ID(主键)

   Parent_organization_id  NUMBER(10)        null,--从属的上级组织结构ID

   Organization_name     varchar(60)   not null,--组织机构名称

   Organization_desc      varchar(240)  null,--组织机构说明

   Organization_type      NUMBER(1)       not  null,--组织类型:1=智能型;2=业务型

   Primary key(organization_id)

);

1.查询组织结构ID大于“100”的所有组织机构的信息?
2.查询“组织机构名称”中包含“北京”的所有组织机构的信息?  
3.查询组织机构ID等于“1000”的组织机构的信息以及从属的上级组织机构的信息?  
4.统计“职能型”和“业务型”的组织机构,各有多少个?(注:用一条sql语句实现)

参考答案: 

1.SELECT*FROM org_organization WHERE Organization_id>100;


2.SELECT*FROM org_organization WHERE Organization_name LIKE '%北京%';

 

3.SELECT ORG1.*,ORG2.* FROM org_organization org1 

    LEFT JOIN org_organization org2 

    ON ORG1.Parent_organization_id=ORG2.Organization_id

    WHERE Organization_id=1000;


4.SELECT Organization_type,count(Organization_id) FROM org_organization GROUP BY Organization_type

解析:

1.   

2. 模糊查询需要用like关键字,%是正则表达式的概念里的通配符,代表0或多个字符,_代表1个字符。正则表达式在各种程序设计技术里用到的都特别多,有兴趣、学有余力的同学可以到网上自学一下。 

3. 此题是简单的连接查询,由于组织机构和直接从属上级机构在同一张表里,所以需要将一张表以别名的形式当成两张表来连接查询,连接条件是ORG1.Parent_organization_id=ORG2.Organization_id,需要在结果里筛选出Organization_id=1000的组织机构。 

4. 很明显要使用分组查询,分组的依据是Organization_type,然后统计出每组里的Organization_id的数量即可。



2.有一个学生成绩单,要建立数据表把数据存储此表中:需要包括的字段为:

 

1.写出创建表的语法,表名自定  

2.查询出生时间在1990-01-01后的学生所有课程成绩  

3.查询学生总数  

4.查询该班学生Java基础(课程编号为000101)的平均成绩 

参考答案:

1.CREATE TABLE STUDENT (stuName VARCHAR2(60),stuID VARCHAR(100),stuBirthday DATE,classID NUMBER(8),

        stuScore NUMBER(5,2),stuRemark VARCHAR2(400));


2.SELECT stuName,stuScore FROM STUDENT WHERE stuBirthday>TO_DATE('1990-01-01','yyyy-mm-dd');


3.SELECT count(DISTINCT(STUNAME)) "学生总数" FROM STUDENT;


4.SELECT AVG(stuScore) FROM STUDENT WHERE classID=000101;

解析:

1. 此处需要注意,oracle数据库里字符的概念是对英文来说的,但是一个汉字占两个字符,所以题目中要求插入n个汉字,在创建表时,字符的数量要写2n

2. 这里一定要注意字符到日期的转换,我们输入的‘1990-01-01’在系统看来是字符,当然字符跟日期是没有办法比较的(数据类型不同嘛),所以在比较之前一定要先将字符类型的‘1990-01-01’转换成日期类型。

3. 在学生成绩表中查询出所有学生,然后去除重复再计数,即得出学生总数

4. 此题看似简单,实则暗藏杀机,首先要想到一点,有些学生可能缺考,此时他的Java基础的分数就为null,但是系统对null会自动忽略,然后人数就会减少(少了Java基础得分为null的同学),显然这种情况得出的平均分是不正确的(不信的话,假如系统不处理null的情况,老师为了好看的平均分会让成绩差的同学缺考~~)。扯远了,处理null可以用NVL(stuScore,0);假如stuScorenull,就当成0来计算。

 


原创粉丝点击