Ⅰ 一些sql的試題
1.應用程序
2.實體完整性
3.distince
4.
5.create Nonclustered index IDX_authors on authors(州名列,城市名列)
6.創建表
7.select 列名 from 表名
8.sum()
9.top
10.alter procere
11.ltrim()
12.declare @變數名 數據類型
13.where
14.from
15.order by
16.cast(表達式 as 數據類型)
17.count()
18.drop procere 存儲過程名
19.創建資料庫
20.價格大於15美元的所有數據
21.資料庫
22.rollback
23.
24.服務管理器
25.
26.數據冗餘(備份)
27.3
28.資料庫
29.應用程序
30.drop table
33.操作系統
許可權
1.
2.是並發控制的單位,是用戶定義的一個操作序列,具有原子性,一致性,隔離性,持續性四個特性。
3.共享鎖(S鎖):如果事務T對數據A加上共享鎖後,則其他事務只能對A再加共享鎖,不能加排他鎖.
獲准共享鎖的事務只能讀數據,不能修改數據。
4.
5.
1.存儲過程可以使得程序執行效率更高、安全性更好,因為過程建立之後 已經編譯並且儲存到資料庫,直接寫sql就需要先分析再執行因此過程效率更高,直接寫sql語句會帶來安全性問題,如:sql注入
2.建立過程不會很耗系統資源,因為過程只是在調用才執行。
6.聚簇索引是一種對磁碟上實際數據重新組織以按指定的一個或多個列的值排序。
7.
8.是並發控制的單位,是用戶定義的一個操作序列,具有原子性,一致性,隔離性,持續性四個特性。
BEGIN TRAN [Tran_name]開始事務
COMMIT TRAN [Tran_name]事務完成提交事務
9.存儲過程是由流控制和SQL語句書寫的過程,這個過程經編譯和優化後存儲在資料庫伺服器中,應用程序使用時只要調用即可。
10.增量備份:是針對於上一次備份(無論是哪種備份):備份上一次備份後,所有發生變化的文件。
12.原子性,要麼都做,要麼不做。
13.排它鎖若事務T對數據對象A加上X鎖,則只允許T讀取和修改A,其它任何事務都不能再對A加任何類型的鎖,直到T釋放A上的鎖。
它防止任何其它事務獲取資源上的鎖,直到在事務的末尾將資源上的原始鎖釋放為止。
14.分布式資料庫系統通常使用較小的計算機系統,每台計算機可單獨放在一個地方,每台計算機中都有DBMS的一份完整拷貝副本,並具有自己局部的資料庫,位於不同地點的許多計算機通過網路互相連接,共同組成一個完整的、全局的大型資料庫。
15.
17同2,18同8
19.DBMS資料庫管理系統,DBA資料庫管理員
20.1對1,一個學生對應一個學號
1對多 一個學生對應多門功課
多對多 商品與廠商
(備註:只能做這么多了,很長時間沒看書了,有時間可以看看<資料庫系統概論>薩師煊 王珊 高等教育出版社,很不錯的一本書哦。上有你要的答案,特別是簡答題。)
21.
22.資料庫完整性,對資料庫提出的某種約束條件或規則。
分三種:實體完整性,參照完整性,用戶自定義完整性
23.
24.原則如下:
●在經常進行連接,但是沒有指定為外鍵的列上建立索引,而不經常連接的欄位則由優化器自動生成索引。
●在頻繁進行排序或分組(即進行group by或order by操作)的列上建立索引。
●在條件表達式中經常用到的不同值較多的列上建立檢索,在不同值少的列上不要建立索引。比如在雇員表的「性別」列上只有「男」與「女」兩個不同值,因此就無必要建立索引。如果建立索引不但不會提高查詢效率,反而會嚴重降低更新速度。
●如果待排序的列有多個,可以在這些列上建立復合索引(compound index)。
26。聚集索引確定表中數據的物理順序。由於聚集索引規定數據在表中的物理存儲順序,因此一個表只能包含一個聚集索引。但該索引可以包含多個列(組合索引)
非聚集索引一種索引,該索引中索引的邏輯順序與磁碟上行的物理存儲順序不同。一個表可以有多個聚集索引
Ⅱ SQL試題求解
1
IF OBJECT_ID('學生表')IS NOT NULL
DROP TABLE 學生表
GO
create table 學生表 --建立學生表.
(
學號 int not null , --學號,姓名,年齡,性別,家庭住址,聯系電話
姓名 varchar(10) not null, --姓名
性別 varchar(2)
年齡 int,
聯系電話 varchar(10),
家庭住址 varchar(50),
聯系電話 varchar(20),
check (性別 ='男' OR 性別='女'),
)
1.1
delete 學生表
insert 學生表 (學號,姓名,年齡,性別,聯系電話,學歷)
values(1,"A",22,"男","123456","小學")
insert 學生表 (學號,姓名,年齡,性別,聯系電話,學歷)
values(2,"B",21,"男","119","中學")
insert 學生表 (學號,姓名,年齡,性別,聯系電話,學歷)
values(3,"C",23,"男","110","高中")
insert 學生表 (學號,姓名,年齡,性別,聯系電話,學歷)
values(4,"D",18,"女","114","大學")
1.2
update 學生表
set 學歷='大專'
where 聯系電話 like '11%'
go
1.3
delet 學生表
where 性別='女',姓名 like 'B%'
go
1.4
select 姓名,學號
from 學生表
where 學歷='大專',年齡<22
go
1.5
select 姓名,性別
from 學生表
order by 年齡 desc
go
2.1
use stu
IF OBJECT_ID('Student')IS NOT NULL
DROP TABLE Student
GO
create table Student --建立學生表.
(
學號 int not null ,
姓名 varchar(10) not null, --姓名
性別 varchar(2)
年齡 int,
所在系 varchar(10),
check (性別 ='男' OR 性別='女'),
)
2.2
use stu
select 學生表.學號
from Student As 學生表,SG As 成績表
where 學生表.學號=成績表.學號,成績表.成績<60
go
2.3
use stu
select 姓名,性別,年齡
from Student
where 所在系='計算機系',性別='男',姓名 like '張%'
go
2.4
use stu
insert Student (學號,姓名,年齡,性別,所在系)
values(05020,"高平",19,"女","積極管理系")
go
4.1
刪除student表中學號為2004009的學生的信息
4.2
在stu資料庫的student表中創建列名為姓名,家庭住址的視圖student_view
4.3
查詢stu資料庫的student表中前9條信息
4.4
在stu資料庫的student表中創建查詢學號,姓名,家庭住址的存儲過程student_pro
4.5
在stu資料庫的student表中創建帶輸入參數的存儲過程
4.6
查詢Sg表中課程號為06的平均成績
Ⅲ 一些SQL的試題
4.1
select stud_id,name ,birthday,gender,mark from stud_info where name like '張%' and len(name)=2
4.2
select stud_id ,name from stud_grade where grade=(select max(grade) from stud_grade
或者select top 1 stud_id ,name from stud_grade order by grade desc
4.3
declare @zhuanye char(10)
select @zhuanye=sunbstring(zhuanye,5,2) from stud_info
select name from stud_info where @zhuanye='01'
4.4
create proc people_num
as
begin
select count(*) from stud_info where gender='男'
end
4.5
alert table stud_info add column money varchar(30)
4.6
alter table stud_info add constraint uniqueindex unique(telcode)
4.7
ALTER TABLE stud_info
ADD
CONSTRAINT pk_level
PRIMARY KEY CLUSTERED (stud_id)
4.8
alter table stud_grade
add constraint stud_info
foreign key (stud_id)
references (stud_id)
4.9
create nonclustered index CourseIndex
on stud_grade(course_id)
4.10
create view stud_view
as
select A.stud_id ,A.name,B.grade from stud_info A,stud_grade B where A.stud_id=B.stud_id and
substring(stud_id,3,2)='01'
第二題
36 select 姓名,年齡 from S order by 年齡 desc
37 select * from S where 姓名 like '王%'
38 select S.姓名,S.年齡,S.性別,S.系別 from S,C,SC where S.學號=SC.學號 and C.課號=SC.課號 and C.課名='資料庫原理'
39 select * from S where 系別=(select 系別 from S where 姓名='劉平')
Ⅳ SQL筆試試題
select ACCOUNT
,sum(RENT),sum().... from USERLIST a ,CHARGE b where a.TELEPHONE
=b.TELEPHONE(+)
group by a.ACCOUNT
上飢友面是oracle用的
通用的宴肢毀晌備是
select ACCOUNT
,sum(RENT),sum().... from USERLIST a left join CHARGE b on a.TELEPHONE
=b.TELEPHONE
group by a.ACCOUNT
Ⅳ 求助SQL考試題。。明天早上就考了 今晚要交
1.select 書名,出版社 from 圖書 where 20=<價格=<50 order by 價格 desc
2.select distinct a.書號 as 圖書種類 ,a.操作員帳號 from 借出 a,操作員 b where a.操作員帳號=(select b.操作員帳號 from 操作員 where 操作員姓名='李凡')
3.select 書名,出版社 from 圖書 where 書名 like '%資料庫%' or 書名 like '%SQL%'
4.delete from 課程 where 課程編號 in ( '20016','20018','20019')
5.insert into 教師 (教師編號,姓名,所在部門,職稱) values (60016,王力,,講師)
6.select a.生產廠家,count(b.商品編號) as 商品種類 from 商品 b,(select distinct 生產廠家 from 商品) as a where a.生產廠家=b.生產廠家 group by a.生產廠家
Ⅵ 求SQL試題答案
1. C
2. A
3. A
4. B 說明:%是一個通配符,如select * from test where ID like 12% 這句話就表示在test表中搜索出ID以12開頭的數據記錄,可以是123,也可以是1234.
5. C
6. A 如果讀者也作為主鍵你想會發生啥情況,每個人只能借1本書,災難啊
7. A 我真的運行了一次,因為我也不確定...
8. B
9. C
10.D
11.D
12.B 這一題考的是LEFT OUTER JOIN的用法,LEFT OUTER JOIN等同於LEFT JOIN,數據數目按照較大數來算.
二.
1. ABCE D是程序員做的事
2. ABC 系統固定的角色許可權是標準的PUBLIC許可權,用戶可以根據需要進行許可權的調整,就是C選項
3. DE A錯誤的原因是因為事務備份的還原精度要比差異備份高,能恢復到故障點前一刻,這是差錯備份做不到的;B,事務日誌只能恢復從上一次備份到本次故障點之間的一個時刻.
4. AB
Ⅶ sql面試題1
【1】騰訊面試題
table_A ( 用戶userid和登錄時間time)求連續登錄3天的用戶數
https://www.cnblogs.com/ikww/p/12012831.html
【SQL】查詢連續登陸7天以上的用戶
查詢7天連續登陸用戶這個問題很經典,解決方法也有很多,這里我講一下筆者的方法,希望對大家有幫助。
具體思路:
1、因為每天用戶登錄次數可能不止一次,所以需要先將用戶每天的登錄日期去重。
2、再用row_number() over(partition by _ order by _)函數將用戶id分組,按照登陸時間進行排序。
3、計算登錄日期減去第二步驟得到的結果值,用戶連續登陸情況下,每次相減的結果都相同。
4、按照id和日期分組並求和,篩選大於等於7的即為連續7天登陸的用戶。
表信息如下圖
第一步:用戶登錄日期去重
1select DISTINCT date(date) as 日期,id from orde;
結果為:
第二步:用row_number() over()函數計數
1select *,row_number() over(PARTITION by id order by 日期) as cum from (select DISTINCT date(date) as 日期,id from orde)a;
結果為:
第三步:日期減去計數值得到結果
1select *,date(日期)-cum as 結果 from (select *,row_number() over(PARTITION by id order by 日期) as cum from (select DISTINCT date(date) as 日期,id from orde)a)b;
結果:
第四步:根據id和結果分組並計算總和,大於等於7的即為連續登陸7天的用戶
1select id,count(*) from (select *,date(日期)-cum as 結果 from (select *,row_number() over(PARTITION by id order by 日期) as cum from (select DISTINCT date(date) as 日期,id from orde)a)b)c GROUP BY id,結果 having count(*)>=7;
結果為:
用了多次嵌套查詢,最終得到我們需要的結果。
01
01.還原題目場景 - 建表
select*fromtmp.tmp_last_3_day;
02
02.解決問題關鍵 - 分析
03
03.見證奇跡的時刻 - 實現
連續3天登錄的用戶id sql如下:
我們再來看下結果:
04
04.面試反思總結 - 升華
現在看來,其實也不難嘛!思路很重要,有了思路,問題自然迎刃而解(此處有掌聲)。。ps:六師妹說今晚的加雞腿~哈哈
05
05.條條大路通羅馬
其實,方法有很多,上面只是選了一種技巧性比較強的一種。下面也是一種不錯的方法,大佬們肯定還有其他實現方式,歡迎小夥伴們右下角點[在看]評論留言,一起討論,一起進步 ~ go go go ...
【2】滴滴面試題
學生表:tb_student(name:學生姓名,id:學號,class:班級,in_time:入學時間,age:年齡,sex:性別,major:專業)
學生成績表:tb_score(id:學號,course:課程,score:分數)
(1)篩選出2017年入學的「計算機」專業年齡最小的10位同學名單(姓名、學號、班級、年齡)
(2)統計每個班同學各科成績平均分大於80分的人數和人數佔比
select a.class,
count(case when a.avg_score>80 then 1 else null end) as '人數'
count(case when a.avg_score>80 then 1 else null end)/count(a.id) as '人數佔比'
from
(select st.class,sc.id,avg(sc.score) as avg_score
from tb_student st
inner join tb_score sc
on st.id=sc.id
group by 1)a
(1)select st.name,st.id,st.class,st.age
from tb_student st
inner join tb_score sc
on st.id=sc.id
where year(st.in_time)='2017'
and major='計算機'
order by age asc
limit 0,9
(2)
鏈接:https://zhuanlan.hu.com/p/110924684
(1)
selectname,id,class,agefromtb_studentwhereyear(in_time)=2017andmajor='計算機'ORDERBYageASClimit10;
(2)
SELECTa.class,sum(casewhenaaa.x>80then1else0end)asnum_80,(sum(casewhenaaa.x>80then1else0end)/count(*))asproportionfromtb_studentaINNERJOIN(SELECTid,avg(score)asxfromtb_scoreGROUPBYid)asaaaona.id=aaa.idGROUPBYclass;
解析:寫一個子查詢,從score表中得到以學號分組的學生各科平均分。命名為aaa,將其與學生表內聯結。再以class分組,得到以class分組的各班學生的平均分,最後通過case語句,sum聚合函數得到平均分>80分的計數,和所佔各班總人數比例。
case語句也可以用if語句來代替
寫法2:
SELECTa.class,count(if(aaa.avg>80,true,null))asnumover80,count(if(aaa.avg>80,true,null))/count(a.id)astotalfromtb_studentaINNERJOIN(SELECTid,avg(score)asxfromtb_scoreGROUPBYid)asaaaona.id=aaa.idGROUPBYclass;
Ⅷ SQL 試題 求高手給正確答案!
題那麼多,分這么少,沒有積極性,沒人給你做啊。
我有時間再給你看看吧。
簡答讀程題
1列出Sql Server 2000資料庫中常見的資料庫對象。
表、視圖、存儲過程、觸發器、索引
2簡述INSERT觸發器的工作原理
當insert一條或多條數據的時候,即觸發該觸發器。
單選題
1、關於主鍵描述正確的是:( c )
A、包含一列 B、包含兩列 C、包含一列或者多列 D、以上都不正確
2、模式查找like '_a%',下面哪個結果是可能的( b )。
A、aili B、
C、bba D、cca
3、下列途徑哪個不是實現值域完整性約束的 __D___ 。
A 、rule( 規則 ) B 、default C 、not null D 、trancation
4 關於視圖和索引,下列說法那個是正確的___B__ 。
A 、視圖是虛表,觀察到的數據是實際基本表中的數據。
B 、索引查找法是比表掃描法查詢更快的一種方法。
C 、視圖是查詢數據的一種方法,只能基於基本表建立。
D 、索引的創建只和數據的存儲有關系。
5在SQL SERVER伺服器上,存儲過程是一組預先定義並(D)的Transact-SQL語句。
A、另保存 B、編寫 C、解釋說明 D、編譯
6、SQL Server 2000是一個(C)的資料庫系統。
A、層次型 B、 網狀型 C、關系型 D、組合型
7、SQL語言中,條件「年齡BETWEEN 40 AND 50」表示年齡在40至50之間,且( a )。
A、包括40歲和50歲 B、不包括40歲和50歲
C、包括40歲但不包括50歲 D、包括50歲但不包括40歲
8、面對索引的相關描述正確的是:(B)。
A、經常被查詢的列不適合建索引。 B、 列值唯一的列適合建索引。
C、有很多重復值的列適合建索引。 D、 是外鍵或主鍵的列不適合建索引。
Ⅸ sql資料庫一道試題幫忙做做
資料庫的專業英語吧,看看我答的Data 數據 Database 資料庫 RDBMS 關系型資料庫管理系統(Relational Database Management System) GRANT 授權 REVOKE 許可權回收 DENY 拒絕 DECLARE 聲明 PROCEDURE程序 Transaction 轉換 TRIGGER 觸發器 continue 連續 unqiue 唯一 primary key 主鍵 identity 標識 foreign key 外鍵