id随机选择另一张表格的 sql_这些SQL题目,你是否也会犯错?

27d5f16c319c04137ff974aaaf286838.gif

① 某打车公司将驾驶里程(drivedistanced)超过5000里的司机信息转移到一张称为seniordrivers 的表中,他们的详细情况被记录在表drivers 中,正确的sql为()

A insert into seniordrivers drivedistanced>=5000 from drivers whereB insert seniordrivers (drivedistanced) values from drivers where drivedistanced>=5000C insert into seniordrivers(drivedistanced)values>=5000 from drivers whereD select * into seniordrivers from drivers where drivedistanced >=5000

② 雇员表EMP 结构如下

(雇员编号 EMPNO,姓名 ENAME ,

工作岗位 JOB,管理员编号 MGR ,

受雇时间 HIREDATE,工资 SAL ,

奖金 COMM,部门编号 DEPTNO );

下列操作语句正确的是:( )

A # 显示在10和30部门工作并且工资大于5500元的雇员的姓名和工资,列标题显示为Employee和Monthly Salary 语句:SELECT ENAME EMPLOYEE ,SAL "MONTHLY SALARY" FROM EMP WHERE DEPTNO IN(10,30)AND SAL > 5500;B # 显示受雇时间在2010年1月1日和2012年12月31日之间的雇员的姓名、工资、及受雇时间,并以受雇时间升序排列。语句:SELECT ENAME,SAL,HIREDATE FROM EMP WHERE HIREDATE BETWEEN '2010-01-01' AND '2012-12-31' ORDER BY HIREDATE;C # 显示奖金比工资多10%以上的雇员的姓名、工资及奖金。语句:SELECT ENAME,SAL ,COMM FROM EMP WHERE COMM > SAL*1.1;D # 查询没有奖金且工资低于6500并工作岗位是经理、普通员工、销售员的所有员工信息。语句:SELECT * FROM EMP WHERE SAL < 6500 AND COMM IS NULL AND JOB IN ('经理','普通员工','销售员');

③ 修改表test_tbl字段i的缺省值为1000,可以使用SQL语句():

A ALTER TABLE test_tbl ALTER i SET DEFAULT 1000;B ALTER TABLE test_tbl i SET DEFAULT 1000;C ALTER TABLE test_tbl MODIFY i SET DEFAULT 1000;D ALTER TABLE test_tbl CHANGE i SET DEFAULT 1000;

④ 使用SQL语句建个存储过程proc_stu,然后以student表中的学号Stu_ID为输入参数@s_no,返回学生个人的指定信息。下面创建存储过程语句正确的是:()

A CREATE PROCEDURE [stu].[proc_student]@s_no AS intASBEGINselect * from stu.student where Stu_ID=@s_noENDB CREATE PROCEDURE [stu].[proc_student]@s_no  intASBEGINselect * from stu.student where Stu_ID=@s_noENDC CREATE PROCEDURE [stu].[proc_student]@s_no  intASBEGINselect * from stu.student where s_no=@s_noENDD CREATE PROCEDURE [stu].[proc_student]@s_no AS intASBEGINselect * from stu.student where Stu_ID=@Stu_IDEND

⑤ 表结构如下:

CREATE TABLE `score` (`id` int(11) NOT NULL AUTO_INCREMENT,`sno` int(11) NOT NULL,`cno` tinyint(4) NOT NULL,`score` tinyint(4) DEFAULT NULL,   PRIMARY KEY (`id`) ) ;

以下查询语句结果一定相等的是()

A A.SELECT sum(score) / count(*) FROM score WHERE cno = 2;B.SELECT sum(score) / count(id) FROM score WHERE cno = 2;C.SELECT sum(score) / count(sno) FROM score WHERE cno = 2;D.SELECT sum(score) / count(score) FROM score WHERE cno = 2;E.SELECT sum(score) / count(1) FROM score WHERE cno = 2;F.SELECT avg(score) FROM score WHERE cno = 2;

题解:

① 第一题考察的是向表格中插入数据,对于向表中插入数据有两种方式,

1、INSERT INTO语句用于向表格中插入新的行。

INSERT INTO table_name VALUES (值1, 值2,....)# 指定所要插入数据的列INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

2、SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。常用于创建表的备份复件或者用于对记录进行存档。

# 把所有的列插入新表 SELECT *INTO new_table_name [IN externaldatabase] FROM old_tablename# 只把希望的列插入新表SELECT column_name(s)INTO new_table_name [IN externaldatabase] FROM old_tablename

从题目的要求来看,应该用的是第二种方式,所以正确的答案为A。

② 对于第二题,需要逐一判断,A是无错的。

B #选项因为between...and后面加日期的话,短日期默认time为00:00:00。#因此查询日期只能截止到2012-12-31 00:00:00 并没有当天的记录C #选项是少了一个"="D #没有奖金并不完全是null,还有可能是0

③ 考察的是修改表字段默认值

alter table 表名 alter column 字段名 set default 默认值;(若本身不存在则可以直接设定)

则正确的答案为A

④ 第四题考察的是存储的过程,带有参数的存储过程模式是:

use db_student--创建存储过程create procedure proc_group@课程类别 varchar(20),  --定义参数@学分 intasbeginselect * from coursewhere 课程类别=@课程类别 and 学分>@学分end 

我们可以知道正确的答案是B,不过原题给的最终正确答案是A和B,对于参数变量的数据类型申明可以用as吗?本人不是很清楚。如有小伙伴知道,请留言告知,谢谢

⑤ 从题目中我们可以看到id和sno都是非空数值,所以对于count(*) 和count(id)、count(sno)和count(1)是相等的,所以ABCE 的值是相等的。

D和F是表示的同一个意思,所以D和F值肯定是相等的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值