数据库笔试题(三)
軟通動力筆試題
一、選擇題(每題?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;
?
?
?
sql查詢數據庫最后10條記錄并按降序排列
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
總結
- 上一篇: 常见的预测算法
- 下一篇: mysql安装包脚本之家_CentOS