您的位置:首页 > 其它

S2错题解析

2017-01-13 14:22 183 查看

T-SQL中,Create语句用来创建数据库各种类型对象;alter语句是实现数据库对象的维护操作,

比如添加、删掉各种约束等;drop语句是删除数据库的指定对象;insert语句则是向表中添加记录。



即使有' '号,但是里面的值是Int类型的,T-SQL会进行自动的类型转换

发生了自动类型转换,整型和字符串相加,字符串自动转成了整型

因为前面10+10默认为数字类型所以执行数字运算,
后面+'10'也按前面数字运算,同理,所以最后执行40。



T-SQL中,if语句要求:if关键字后要紧跟条件表达式。

选项A和选项B是条件表达式的结果,选项D的运算符不符合T-SQL语法要求



选项A的create
table语句中,表名后面的大括号“{”、“}”是错误的,应该是圆括号“(”、“)”。

选项C对标识列的描述也是错误的,identity(1,8)表示指定列自动编号,起始值是1,递增量是8.



要查询选修了所有课程的学生信息,即查询有些学生没有一门课程他没有选的。

如果有一门课没有选,则此时(1)select
* from select_course sc where sc.student_id=ts.id and sc.course_id=c.id存在null,

这说明(2)select
* from course c 的查询结果中确实有记录不存在(1查询中),查询结果返回没有选的课程,

此时select
* from student ts 后的not exists 判断结果为false,不执行查询。



全局变量前缀是”@@”,并且系统变量不能修改和赋值,局部变量可以声明和赋值,前缀是“@”



在SQL
Server中给字段取别名有三种方式,用等于号时别名放在列名的前面,

用as别名放在列名后,as可省略。所以选项A、B、C的写法是正确的,D选项是错的



在关系数据库中,嵌套在其他查询中的查询,称为子查询。

子查询分为相关子查询和非相关子查询。子查询的结构和普通的查询语句相差不大,只是将以前的语句中嵌套另一句查询。

使用子查询虽然能在多张表中查找数据,但是它也有很大的局限性,语法杂乱,影响性能,为了解决这种问题,我们引入了表联接。

使用表联接可以很方便的在几张表中查找数据。

多表联接查询实际上是通过各个表之间共同列的关联性来查询数据的,它是关系数据库查询最主要的特征。

子查询和表联接查询是可以互相替换的。



语法:select
 top  N  字段列表  from 表,

使用order
by score desc将学生考试成绩按从大到小的方式降序排列



SQL
Server中,任何一个子查询都是select块,一定要加一对圆括号“()”,否则就会报错。

任何一个子查询都不能用order
by来排序,只能在外层查询中对最终的查询结果进行排序。

子查询的结果只是作为父查询的某一个条件而已,还可以用AND,OR等追加更多的条件。

嵌套查询中的IN,表示某一个字段在某一个集合里面,集合中可能有多个也可能只有一个值,但是只会有一个字段。

Exists可以检测数据是否存在。如果子查询的结果非空,则Exists(子查询)将返回真(true),否则返回假(false)。



A选项中不可能把字符串转换成int,因此A是不正确的选项



T-SQL中,Case语句有两种格式。选项A和选项D代码分别符合Case语句的两种语法格式。

但选项B的Case语句编写有错,在结束位置使用as而不是end关键字;而执行选项C代码在结果集中会出现2个ClassID列,与本题要求不符



select
客户编号 from 订单表:这条语句查询所有有订单的客户编号。

where
编号 not in:not in代表没有订单信息的那些客户。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: