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

歡迎訪問 生活随笔!

生活随笔

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

数据库

SQL 笔试题

發布時間:2023/12/10 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL 笔试题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://blog.csdn.net/codema/article/details/80915311
常見的SQL筆試題和面試題(上):經典50題

https://www.cnblogs.com/guxia/p/7878657.html
必會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)表名:高考信息表
準考證號 科目 成績
語文 119
數學 108
物理 142
化學 136
物理 127
數學 149
英語 110
語文 105
英語 98
化學 129
……

給出高考總分在600以上的學生準考證號

答:select 準考證號 from 高考信息表 group by 準考證號 having sum(成績) > 600

(5)表名:高考信息表
準考證號 數學 語文 英語 物理 化學
108 119 98 127 136
149 105 110 142 129
……

給出高考總分在600以上的學生準考證號

答:select 準考證號 from 高考信息表 where (數學+語文+英語+物理+化學) > 600

(四部分)
(一)表名:club

id gender age
M 19
F 30
F 27
F 16
M 32
……

查詢出該俱樂部里男性會員和女性會員的總數

答:select gender,count(id) from club group by gender

(二)表名:team
ID(number型) Name(varchar2型)
a
b
b
a
c
c
要求:執行一個刪除語句,當Name列上有相同時,只保留ID這列上值小的
例如:刪除后的結果應如下:
ID(number型) Name(varchar2型)
a
b
c
請寫出SQL語句。

delete from team where id not in (select min(id) from team group by name)

(三)表名:student

name 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 result

2005-05-09 win

2005-05-09 lose

2005-05-09 lose

2005-05-09 lose

2005-05-10 win

2005-05-10 lose

2005-05-10 lose

如果要生成下列結果, 該如何寫sql語句?

win lose

2005-05-09 2 2

2005-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 lose

from

(select date, count(result) as result from info where result = “win” group by date) as a

join

(select date, count(result) as result from info where result = “lose” group by date) as b

on 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())=0

4.有一張表,里面有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 fail

select (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 english

from grade;

5.請用一個sql語句得出結果

從table1,table2中取出如table3所列格式數據,注意提供的數據及結果不準確,只是作為一個格式向大家請教。

如使用存儲過程也可以。

table1

月份mon 部門dep 業績yj


一月份 01 10

一月份 02 10

一月份 03 5

二月份 02 8

二月份 04 9

三月份 03 8

table2

部門dep 部門名稱dname


國內業務一部 國內業務二部 國內業務三部 國際業務部

table3 (result)

部門dep 一月份 二月份 三月份


10 null null 10 8 null null 5 8 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 mar

from

t1 right join t2 on t1.dep = t2.dep

group by t1.dep;

題目一、
有兩個表:

TableX有三個字段Code、 Name、 Age、 其中Code為主鍵;
TableY有三個字段Code、 Class、Score, 其中Code + Class 為主鍵。兩表記錄如下:

Code Name Age Code Class Score
張三 22 97001 數學 80
趙四 21 97002 計算機 59
張飛 20 97003 計算機 60
李五 22 97004 數學 55

1、請寫出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 + lastname

create 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
張三 22 97001 數學 80
趙四 21 97002 計算機 59
張飛 20 97003 計算機 60
李五 22 97004 數學 55

1、請寫出SQL,找出所有姓張的學生,并按年齡從小到大排列;
select * from TableX where name like ‘張%’ order by age

2、請寫出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.code

5、請寫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.Code

4、通過外聯接,取出每個學生的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 join

5、請寫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-99563

http://www.cnblogs.com/zemliu/archive/2012/10/09/2717629.html
http://bbs.csdn.NET/topics/270058476

[sql] view plain copy
一 單詞解釋(2分/個) 34
Data 數據Database 數據庫RDBMS 關系數據庫管理系統GRANT 授權
REVOKE取消權限DENY 拒絕權限DECLARE 定義變量PROCEDURE存儲過程
Transaction事務TRIGGER觸發器繼續 continue唯一 unqiue
主鍵 primary key標識列 identity外鍵 foreign kdy 檢查 check
約束 constraint
二 編寫SQL語句(5分/題)50

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

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

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