软通动力笔试题
一、选择题(每题 2 分,共计 30 分)
1.在ER模型中,下列有关主码和超码描述正确的是_____。
A. 主码是超码的真子集 B. 超码是主码的真子集
C. 主码和超码没有关系 D. 以上都不对
2.在下列范式中,最高级别的范式是______。
A. BCNF B. 1NF
C. 5NF D. 以上都不对
3. SQL语言中,删除记录的命令是( A )。
A. DELETE B. DROP
C. CLEAR D. REMOVE
4.下在ER图中,关系用( C )来表示
A. 矩形 B. 椭圆
C. 菱形 D. 以上都不对
5. 查询订购单号(字符型,长度为4)尾字符是”1″的错误命令是___C___。
subStr(列名,开始位置,截取长度);
subStr(列名,开始位置) //默认到字符结素
A. SELECT * FROM 订单 WHERE SUBSTR(订购单号,4)=”1″
B. SELECT * FROM 订单 WHERE SUBSTR(订购单号,4,1)=”1″
C. SELECT * FROM 订单 WHERE “1″$订购单号
D. SELECT * FROM 订单 WHERE RIGHT(订购单号,1)=”1″
6. 假设Students表中有主键SCode,Score表中有外键 stuNo列,stuNo引入Scode列来实施引用完整性约束,此时如果使用T-SQL
Update Students set Scode = ‘001’ where scode = ‘002’ ___
A. 肯定会产生更新错误 B. 可能会更新Students表中的两行数据
C. 可能会更新Score表中的一行数据 D. 可能会更新Students表中的一行数据
7. 在T-SQL语言中,修改表结构时,应使用的命令是(C )
A.UPDATE B.INSERT
C.ALTER D. MODIFY
8. 限制输入到列的值的范围,应使用( D )约束。
A. CHECK B. PRIMARY KEY
C. FOREIGN KEY D. UNIQUE
9. 参与联系的实体集的个数叫( B )。
A.域 B.码数 C.元 D.以上都不对
10. 关于视图下列哪一个说法是错误的( B )。
A. 视图是一种虚拟表 B. 视图中也存有数据
C. 视图也可由视图派生出来 D. 视图是保存在数据库中的SELECT查询
11. 用于模糊查询的匹配符是( D )。
A. _ B. []
C. ^ D. LIKE
12. 在ER图中,如果一个实体集完全参与到一个联系中,则他们之间用 ( )连接。
A. 虚线 B. 有向边
C. 单向边 D. 双线段
13. 关于关系图下列哪一个是正确的( )。
A. 关系图是在同一个表中不同字段之间建立关联 B. 关系图是在不同表中的字段之间建立关联
C. 关系图是表与表之间建立关联,与字段无关。 D. 关系图是在不同数据库之间建立关联
14. 触发器可以创建在( A )中。
A. 表 或 视图 B. 过程
C. 数据库 D. 函数
15. 规则对象在使用上与( A )约束类似。
A. CHECK B. PRIMARY KEY
C. FOREIGN KEY D. UNIQU
二、判断题(每题 2 分,共计10 分)
1.一个数据表中只能有一个主键约束,但可以有多个UNIQUE约束。( 对 )
2. 数据库系统中的锁一共有三种。( 共享(S)锁,排它(X)锁,更新(U)锁 )
3.数据库系统中数据的一致性是指数据类型一致。(错 )
4.ODBC是由Microsoft定义的一种数据库访问标准。( 对 )
5.事务当中的操作可以部分执行。( 错 )
三、简答题(10分)
数据库名:学生成绩数据库
学生表 课程表
班级编号 | int |
|
学号 | int |
|
姓名 | Varchar | 10 |
性别 | Char | 2 |
民族 | Varchar | 20 |
身份证号 | Varchar | 18 |
出生日期 | datetime |
|
课程号 | int |
|
课程名 | Varchar | 20 |
开课学期 | char | 6 |
学 时 | int |
|
成绩表
ID | int |
|
学号 | int |
|
课程号 | int |
|
分数 | int |
|
要求用SQL语言实现下列功能的sql语句代码:
(1) 从学生表和教学成绩表中查询所有学生的学号.姓名.课程名和分数
Select 学生表.学号,姓名,课程名,分数 from 学生表,课程表,成绩表 where 学生表.学号 = 成绩表.学号 and 课程表.课程号=课程表.课程号;
(2) 向学生表中插入一条班级编号为’00001’,学号为’00009’,姓名为’张三’,性别为’男’的记录
Insert into 学生表 (班级编号,学号,姓名,性别)values (00001,00009,‘张三’,’男’);
(3) 将成绩表中学号为’00006’,课程号为’00002’的学生的分数更新为’95’
Update 成绩表 set 分数 = 95 where 学号=00001 and 课程号=00002;
SELECT TOP 10 FROM 表名 ORDER BY 排序列 DESC;SQL的执行顺序先按照你的要求排序,然后才返回查询的内容。例如有一个名为ID自动增长的列,表中有100条数据,列的值得分别是1、2、3、4………9、99、100。那么查询加了DESC你得到的是91到100条,就是最后十条,如果加ASC你得到的将会是1到10,也就是最前面的那几条。
记录如果说有先后的话 必然是根据某几个字段进行排序了的你反过来排序就变成求前10条记录了呗,把desc和 asc互换一下 (默认是 asc )oracle 的写法slect * from (select * from tab order by col desc ) where rownum <= 10
赞同
最后10条降序与最前10条升序是一样的如果还想排序,那就按他们说的用临时表。select top 10 * from table 1 order by field1 into table #tempselect * from #temp order by field1 desc //查询结果放临时表select * top 10 from table1 order by field1 asc into tabl temp //再从临时表查询select * from temp order by field1 desc