日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

必会SQL笔试题

發布時間:2023/12/10 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 必会SQL笔试题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
(1)表名:購物信息 購物人 商品名稱 數量 A 甲 2 B 乙 4 C 丙 1 A 丁 2 B 丙 5 ……給出所有購入商品為兩種或兩種以上的購物人記錄答:select * from 購物信息 where 購物人 in (select 購物人 from 購物信息 group by 購物人 having count(*) >= 2);(2)表名:成績表 姓名 課程 分數 張三 語文 81 張三 數學 75 李四 語文 56 李四 數學 90 王五 語文 81 王五 數學 100 王五 英語 49給出成績全部合格的學生信息(包含姓名、課程、分數),注:分數在60以上評為合格答:select * from 成績表 where 姓名 not in (select distinct 姓名 from 成績表 where 分數 < 60) 或者: select * from 成績表 where 姓名 in (select 姓名 from 成績表 group by 姓名 having min(分數) >=60)(3)表名:商品表 名稱 產地 進價 蘋果 煙臺 2.5 蘋果 云南 1.9 蘋果 四川 3 西瓜 江西 1.5 西瓜 北京 2.4 ……給出平均進價在2元以下的商品名稱答:select 名稱 from 商品表 group by 名稱 having avg(進價) < 2(4)表名:高考信息表 準考證號 科目 成績 2006001 語文 119 2006001 數學 108 2006002 物理 142 2006001 化學 136 2006001 物理 127 2006002 數學 149 2006002 英語 110 2006002 語文 105 2006001 英語 98 2006002 化學 129 ……給出高考總分在600以上的學生準考證號答:select 準考證號 from 高考信息表 group by 準考證號 having sum(成績) > 600(5)表名:高考信息表 準考證號 數學 語文 英語 物理 化學 2006001 108 119 98 127 136 2006002 149 105 110 142 129 ……給出高考總分在600以上的學生準考證號答:select 準考證號 from 高考信息表 where (數學+語文+英語+物理+化學) > 600(四部分) (一)表名:clubid gender age 67 M 19 68 F 30 69 F 27 70 F 16 71 M 32 ……查詢出該俱樂部里男性會員和女性會員的總數答:select gender,count(id) from club group by gender(二)表名:team ID(number型) Name(varchar2型) 1 a 2 b 3 b 4 a 5 c 6 c 要求:執行一個刪除語句,當Name列上有相同時,只保留ID這列上值小的 例如:刪除后的結果應如下: ID(number型) Name(varchar2型) 1 a 2 b 5 c 請寫出SQL語句。delete from team where id not in (select min(id) from team group by name)(三)表名:studentname course score 張青 語文 72 王華 數學 72 張華 英語 81 張青 物理 67 李立 化學 98 張燕 物理 70 張青 化學 76查詢出“張”姓學生中平均成績大于75分的學生信息答:select * from student where name in (select name from student where name like '張%' group by name having avg(score) > 75)1.一道SQL語句面試題,關于group by表內容:info 表date result2005-05-09 win2005-05-09 lose2005-05-09 lose2005-05-09 lose2005-05-10 win2005-05-10 lose2005-05-10 lose如果要生成下列結果, 該如何寫sql語句?win lose2005-05-09 2 22005-05-10 1 2答案:(1) select date, sum(case when result = "win" then 1 else 0 end) as "win", sum(case when result = "lose" then 1 else 0 end) as "lose" from info group by date;(2) select a.date, a.result as win, b.result as losefrom(select date, count(result) as result from info where result = "win" group by date) as ajoin(select date, count(result) as result from info where result = "lose" group by date) as bon a.date = b.date;2.表中有A B C三列,用SQL語句實現:當A列大于B列時選擇A列否則選擇B列,當B列大于C列時選擇B列否則選擇C列select (case when a > b then a else b end), (case when b > c then b else c end) from table;3.請取出tb_send表中日期(SendTime字段)為當天的所有記錄? (SendTime字段為datetime型,包含日期與時間)select * from tb where datediff(dd,SendTime,getdate())=04.有一張表,里面有3個字段:chinese,math,english。其中有一條記錄chinese 70分,math 80分,english 58分,請用一條sql語句查詢出所有記錄并按以下條件顯示出來(并寫出您的思路): 大于或等于80表示excellent,大于或等于60表示pass,小于60分表示fail。 顯示格式: 以上面的chinese 70分,math 80分,english 58分chinese math english pass excellent failselect (case when chinese >= 80 then "excellent" when chinese >= 60 then "pass" else "fail" end) as chinese,(case when math >= 80 then "excellent" when math >= 60 then "pass" else "fail" end) as math,(case when english >= 80 then "excellent" when english >= 60 then "pass" else "fail" end) as englishfrom grade;5.請用一個sql語句得出結果從table1,table2中取出如table3所列格式數據,注意提供的數據及結果不準確,只是作為一個格式向大家請教。如使用存儲過程也可以。table1月份mon 部門dep 業績yj-------------------------------一月份 01 10一月份 02 10一月份 03 5二月份 02 8二月份 04 9三月份 03 8table2部門dep 部門名稱dname--------------------------------01 國內業務一部02 國內業務二部03 國內業務三部04 國際業務部table3 (result)部門dep 一月份 二月份 三月份--------------------------------------01 10 null null02 10 8 null03 null 5 804 null null 9------------------------------------------select t1.dep,sum(case when mon = 1 then yj else 0 end) as jun,sum(case when mon = 2 then yj else 0 end) as feb,sum(case when mon = 3 then yj else 0 end) as marfromt1 right join t2 on t1.dep = t2.depgroup by t1.dep;題目一、 有兩個表:TableX有三個字段Code、 Name、 Age、 其中Code為主鍵; TableY有三個字段Code、 Class、Score, 其中Code + Class 為主鍵。兩表記錄如下:Code Name Age Code Class Score 97001 張三 22 97001 數學 80 97002 趙四 21 97002 計算機 59 97003 張飛 20 97003 計算機 60 97004 李五 22 97004 數學 551、請寫出SQL,找出所有姓張的學生,并按年齡從小到大排列;2、請寫出SQL,取出計算機科考成績不及格的學生;3、通過等值聯接,取出Name、Class、Score,請寫出SQL即輸出結果4、通過外聯接,取出每個學生的Name、Class、Score、請寫SQL輸出結果5、請寫SQL,在TableX 表中增加一條學生記錄(學號:97005 姓名:趙六 年齡:20);6、李五的年齡記錄錯了,應該是21,請寫SQL,根據主鍵進行更新;7、請寫SQL,刪除TableX中沒有考試成績的學生記錄,請使用not in條件;題目二、 有兩個表定義如下: create tableindividual ( firstname varchar2(20) not null lastname vatchar2(20) not null birthdate date gender varchar2(1) initial number(2) farorite varchar2(6) type varchar2(8) );在此表中建唯一索引 firstname + lastnamecreate table chile_detail( firstname varchar2(20) lastname varchar2(20) cname varchar2(8) coment varchar2(2) type varchar2(8) );1、寫一個簡單的SQL語句實現:刪除表individual中一條出生日期(brithdate)為 1990年10月2日 出生的人的記錄2、寫一修改語句實現: 將表child_detail 中的type 為 “kkd” 的記錄的Cname 值為“declear”,coment的值為“02” TableX有三個字段Code、 Name、 Age、 其中Code為主鍵; TableY有三個字段Code、 Class、Score, 其中Code + Class 為主鍵。兩表記錄如下:Code Name Age Code Class Score 97001 張三 22 97001 數學 80 97002 趙四 21 97002 計算機 59 97003 張飛 20 97003 計算機 60 97004 李五 22 97004 數學 551、請寫出SQL,找出所有姓張的學生,并按年齡從小到大排列; select * from TableX where name like '張%' order by age2、請寫出SQL,取出計算機科考成績不及格的學生; select * from tableX where code in (select code from tableY WEHRE class='計算機' and score <60)3、通過等值聯接,取出Name、Class、Score,請寫出SQL即輸出結果 select a.name,b.class,b.score from tableX a,tableY b where a.code=b.code 4、通過外聯接,取出每個學生的Name、Class、Score、請寫SQL輸出結果 select a.name,b.class,b.score from tableX full join tableY on a.code=b.code5、請寫SQL,在TableX 表中增加一條學生記錄(學號:97005 姓名:趙六 年齡:20); insert into tablex values('97005','趙六',20)6、李五的年齡記錄錯了,應該是21,請寫SQL,根據主鍵進行更新; update tablex set age=21 where code='97004'7、請寫SQL,刪除TableX中沒有考試成績的學生記錄,請使用not in條件; delete tablex where code not in (select code from tabley)DELETE TABLEX WHERE CODE IN ( SELECT CODE FROM TABLEX WHERE CODE NOT IN(SELECT Y.CODE FROM TABLEY)) 但看了其它人的寫法,感覺自己寫的不簡潔,學習一下.1、請寫出SQL,找出所有姓張的學生,并按年齡從小到大排列; SELECT * FROM TableX WHERE Name LIKE '張%' ORDER BY Age;2、請寫出SQL,取出計算機科考成績不及格的學生; SELECT * FROM TableX x, TableY y WHERE x.Code = y.Code AND Class = '計算機' AND Score < 60;3、通過等值聯接,取出Name、Class、Score,請寫出SQL即輸出結果 SELECT x.Name, y.Class, y.Score FROM TableX x, TableY y WHERE x.Code = y.Code4、通過外聯接,取出每個學生的Name、Class、Score、請寫SQL輸出結果 Left Out:SELECT x.Name, y.Class, y.Score FROM TableX x, TableY y WHERE x.Code = y.Code(+) Right Out: SELECT x.Name, y.Class, y.Score FROM TableX x, TableY y WHERE x.Code(+) = y.Code Full Out:Left join union all right join5、請寫SQL,在TableX 表中增加一條學生記錄(學號:97005 姓名:趙六 年齡:20); INSERT INTO TableX(Code, Name, Age) VALUES('97005','趙六',20); COMMIT;6、李五的年齡記錄錯了,應該是21,請寫SQL,根據主鍵進行更新; UPDATE TableX SET Age = 21 WHERE Code in (SELECT Code FROM TableX WHERE Name = '李五')7、請寫SQL,刪除TableX中沒有考試成績的學生記錄,請使用not in條件; DELETE FROM TableX WHERE Code Not in (SELECT Code FROM TableY WHERE NVL(Score,0) = 0)在此表中建唯一索引 firstname + lastname CREATE UNIQUE INDEX NAME_UNINDEX ON individual(firstname,lastname)1、寫一個簡單的SQL語句實現:刪除表individual中一條出生日期(brithdate)為 1990年10月2日 出生的人的記錄 DELETE FROM individual WHERE TO_CHAR(birthdate,'YYYY-MM-DD') = '1990-10-02'; COMMIT;2、寫一修改語句實現: 將表child_detail 中的type 為 “kkd” 的記錄的Cname 值為“declear”,coment的值為“02” UPDATE chile_detail SET Cname = 'declear', coment = '02' WHERE type = 'kkd'; COMMIT;http://www.51testing.com/?uid-165528-action-viewspace-itemid-99563http://www.cnblogs.com/zemliu/archive/2012/10/09/2717629.html http://bbs.csdn.NET/topics/270058476

?

?

  一 單詞解釋(2分/個) 34Data 數據Database 數據庫RDBMS 關系數據庫管理系統GRANT 授權REVOKE取消權限DENY 拒絕權限DECLARE 定義變量PROCEDURE存儲過程Transaction事務TRIGGER觸發器繼續 continue唯一 unqiue主鍵 primary key標識列 identity外鍵 foreign kdy 檢查 check約束 constraint二 編寫SQL語句(5分/題)501) 創建一張學生表,包含以下信息,學號,姓名,年齡,性別,家庭住址,聯系電話Create table stu (學號 int ,姓名 varchar(8),年齡 int,性別 varchar(4),家庭地址 varchar(50),聯系電話 int);2) 修改學生表的結構,添加一列信息,學歷Alter table stu add 學歷 varchar(6);3) 修改學生表的結構,刪除一列信息,家庭住址Alter table stu drop column 家庭地址4) 向學生表添加如下信息:學號 姓名年齡性別聯系電話學歷1A22男123456小學2B21男119中學3C23男110高中4D18女114大學Insert into stu values(1,’A’,22,’男’,123456,’小學’)Insert into stu values(2,’B’,21,’男’,119,’中學’)Insert into stu values(3,’C’,23,’男’,110,’高中’)Insert into stu values(4,’D’,18,’女’,114,’大學’) 5) 修改學生表的數據,將電話號碼以11開頭的學員的學歷改為“大專”Update stu set 學歷=’大專’ where 聯系電話 like ‘11%’6) 刪除學生表的數據,姓名以C開頭,性別為‘男’的記錄刪除Delect from stu where 性別=’男’ and 姓名 like ‘c%’7) 查詢學生表的數據,將所有年齡小于22歲的,學歷為“大專”的,學生的姓名和學號示出來Select 姓名,學號 from stu where 年齡<22 and 學歷=’大專’8) 查詢學生表的數據,查詢所有信息,列出前25%的記錄Select top 25 percent * from stu9) 查詢出所有學生的姓名,性別,年齡降序排列Select 姓名,性別 from stu order by 年齡 desc10) 按照性別分組查詢所有的平均年齡Select avg(年齡) from stu group by 性別三 填空(3分/題) 361) 索引分為__聚集索引___和__非聚集索引__在一張表上最多可以創建1個 聚集索引_索引。但是可以創建_249個非 聚集索引 索引。2) 系統存儲過程_sp-helptext__是用來顯示規則,默認值,未加密的存儲過程,用戶定義函數,觸發或視圖的文本3) 事務開始:begin Transction提交事務:commit Transction回滾事務:rollback Transction四 問答題(5分/題)601) 數據庫包含哪些那幾種后綴名的文件必須,這些文件分別存放在什么的信息?主要數據文件(.mdf) 包含數據用戶收集的信息,還有數據庫其他相關的信息,日志數據文件(.ndf) 存放用戶對數據庫的增刪改查的信息,用于備份恢復使用2) TRUNCATE TABLE 命令是什么含義?和Delete from 表名有什么區?TRUNCATE TABLE: 提供了一種刪除表中所有記錄的快速方法Delete from 表名:可以刪除表的一個或多條記錄3) 說出以下聚合數的含義:avg ,sum ,max ,min , count ,count(*)AVG:求平均值SUM:求和MAX:求最大值MIN:求最小值COUNT(*):返回所有行數COUNT返回滿足指定條件的記錄值 4) inner join 是什么意思?作用是什么?寫出基本語法結構INNER JOIN 內聯接,用于返回兩個表中要查詢的列數據通信Select * from 表名1 inner join 表名2 on 條件表達式5) 左向外聯接,右向外聯接,全聯接的關健字如何寫?Left outer join 左向外聯接Right outer join 右向外聯接Full outer join 全聯接6) 子查詢分為幾類,說明相互之間的別了查詢分三種基本子查詢: 1.使用in 查詢返回一列或更多值2.比較運算符,返回單個值勤做為外查詢的參數3.用exists 查詢時相當于進行一次數據測試7) 實現實體完整性,實現域完整性,實現 完整性(引用完整性),實現自定義完整性分別使用什么手段?實現實體完整性: 主鍵約束 唯一約束 標識列實現域完整性: 默認值約束 檢查約束 非空屬性引和完整性: 外鍵引用8) 視圖可以更新嗎?會影響到實際表嗎?視圖是可以更新的,視圖只是基于基本表上的虛擬表,對視圖的更新會直接影響到實際表9) 談談這樣幾個角色, dbo , Sysadmin publicDbo : 是數據庫的擁有者,對數據庫擁有所有操作的權限Sysadmin : 可以對SQL SERVER執行任何活動Public : 自動創建的,能捕獲數據庫中用戶的所有默認權限10) 何為動態游標?何為靜態游標?動態游標與靜態游標相對,反映結果集中所做的所有更改,靜態游標的結果集在游標打開時,建立在tempdb中,總按照游標打開時的原樣顯示11) 什么是存儲過程?為什么存儲過程要比單純的Sql 語句執行起來要快?存儲過程:是一組預先編譯好的T-SQL代碼在創建存儲過程時經過了語法和性能優化,執行不必重復的步驟,使用存儲過程可提高運行效率12)什么是Inserted 表 ?什么是Deleted 表?Inserted表用于存儲inserted和update語句影響的副本Deleted 表用于存儲delect 和 update語句影響的行的副本

?

總結

以上是生活随笔為你收集整理的必会SQL笔试题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。