當前位置:首頁 » 存儲配置 » sql存儲過程面試題

sql存儲過程面試題

發布時間: 2022-09-26 20:05:09

A. 求:存儲過程面試題!

其實存儲過程的基本寫法我相信你都知道了。
面試這種語言不要緊張,估計多數是要考你對sql效率概念的理解。
普通的sql語句誰都會寫的,但是這樣的語句往往會造成程序的低效,在壓力比較大的伺服器上,很有可能造成系統的癱瘓。
注意幾點:
1、寫語句要用到索引
2、not exists 替換 not in
3、exists 替換 in
4、盡量不要用3個表以上的連接,寧可單個單個取
5、注意書寫規則,要寫的明白寫,錯誤信息返回那個地方要注意
6、寫游標的話,要注意有退出的地方和關閉游標。
7、變數之間要注意轉換,隱式的轉換往往會耗掉更多的時間。
這些是最基本的了,你需要查閱相關資料進行了解下。

B. 有關SQL的面試題。。。

1、忍不住想說一句,因為第一題中的欄位類型是
【日期型】,而各種資料庫操作日期型數據有不同的方法,沒有一種共通的方法,所以脫離了資料庫而言沒有一種共通的sql。
2、select
id,name,address,phone,logdate
from
t
where
id
in(
select
id
from
t
group
by
name
having
count(*)>1)
order
by
name;
3、delete
from
t
where
id
not
in
(select
min(id)
from
t
group
by
name);
4、update
t
set
t.address=(select
e.address
from
e
where
e.name=t.name),
t.phone=(select
e.phone
from
e
where
e.name=t.name);
5、這個不同的資料庫也有不同的處理方法,不能脫離資料庫談了。
如:sqlserver或者access可以使用
top
oracle可以使用
rownum

---
以上,希望對你有所幫助。

C. 資料庫存儲過程有哪些,面試題

/*
系統存儲過程很多,有些常用,有些不常用
常用:
sp_attach_db附加資料庫到一個伺服器中
sp_columns返回在當前環境中列的信息
sp_databases列出當前系統中的資料庫
sp_configure顯示或修改當前伺服器的全局配置
sp_depends顯示資料庫對象的依賴信息
sp_executesql執行動態的T-SQL語句
sp_help報告有關資料庫對象的信息
sp_helpdb返回指定資料庫或全部資料庫的信息
sp_helptext顯示規則、默認值、存儲過程、觸發器、視圖等的未加密的文本定義信息
sp_indexes返回指定遠程表的索引信息
sp_lock返回有關鎖的信息
sp_password增加或者修改指定login的口令
sp_rename更改用戶創建的資料庫對象名稱
sp_renamedb更改資料庫名稱
sp_spaceused顯示資料庫的空間使用情況
sp_tables返回在當前環境中可以被查詢的對象的列表
sp_who提供當前用戶和進程的信息
不常用:
sp_addlinkedserver創建一個允許執行分布式查詢的鏈接伺服器
sp_addlinkedsrvlogin在本地伺服器和遠程伺服器之間創建login帳戶的映射關系
sp_addlogin創建一個新的login帳戶
sp_add_agent_parameter在代理文件中增加一個參數
sp_add_agent_profile為復制代理增加一個代理文件
sp_add_alert創建一個警報
sp_add_category在伺服器上,增加一種作業、警報或者操作員的特定分類
sp_add_data_file_recover_suspect_db當資料庫復原不能完成時,向文件組增加一個數據文件
sp_add_file_recover_suspect_db對於復原有問題的資料庫增加一個文件
sp_add_job增加一個sqlserveragent可以執行的作業
sp_add_jobschele為作業創建調度
sp_add_jobserver把指定的作業增加到指定伺服器上
sp_add_jobstep在作業中增加一步或一個操作
sp_add_log_file_recover_suspect_db當資料庫復原不能完成時,向文件組增加一個日誌文件
sp_add_notification為警報創建一個通知
sp_add_operator為警報或者作業創建一個操作員
sp_add_targetservergroup增加指定的伺服器組
sp_add_targetsvrgrp_member在指定的目標伺服器組增加一個目標伺服器
sp_addalias在資料庫中為login帳戶增加一個別名
sp_addapprole在資料庫中增加一個特殊的應用程序角色
sp_addarticle創建文章,並把該文章添加到出版物中
sp_adddistpublisher創建一個使用本地分布伺服器的出版伺服器
sp_adddistributiondb在分布伺服器上創建一個新的distribution資料庫
sp_adddistributor增加一個分布伺服器
sp_addextendedproc在系統中增加一個擴展存儲過程
sp_addgroup在當前資料庫中增加一個組
sp_addmergearticle為一個已有的合並出版物創建一個文章
sp_addmergefilter為了連接另外一個表,創建一個合並過濾器
sp_addmergepublication創建一個新的合並出版物
sp_addmergepullsubscription增加一個拉回類型的訂閱物
sp_addmergepullsubscription_agent在訂閱伺服器上,為合並拉回訂閱物創建一個代理
sp_addmergesubscription創建一個推出或者拉回類型的訂閱物
sp_addmessage在系統中增加一個新的錯誤消息
sp_addpublicaton創建一個快照復制或者事務復制出版物
sp_addpublicaton_snapshot創建一個快照代理
sp_addpullsusscription在當前訂閱伺服器的資料庫中增加一個拉回或者匿名訂閱物
sp_addpullsusscription_agent在訂閱伺服器的資料庫中增加一個新的代理
sp_addremotelogin在本地伺服器上增加一個遠程login帳戶,允許執行遠程存儲過程調用
sp_addrole在當前資料庫中增加一個角色
sp_addrolemember為當前資料庫中的一個角色增加一個安全性帳戶
sp_addserver添加一個遠程或者本地伺服器
sp_addsrvrolemember為固定的伺服器角色增加一個成員
sp_addsubscriber增加一個新的訂閱伺服器
sp_addsubscriber_schele為分布代理和合並代理增加一個調度
sp_addsubscription訂閱文章並且設置訂閱伺服器的狀態
sp_addsynctrigers在訂閱伺服器上創建一個立即修改觸發器
sp_addtabletocontents在合並跟蹤表中插入一個參考
sp_addtype創建一個用戶定義的數據類型
sp_admpdevice增加一個備份設備
sp_adser在當前資料庫中為一個新用戶增加一個安全性帳戶
sp_altermessage修改錯誤信息的狀態
sp_addly_job_to_targets把作業應用到一個或者多個目標伺服器
sp_approlepassword在當前資料庫中改變應用程序角色的口令
sp_aarticle_validation為指定的文章初始化確認請求
sp_aarticlecolumn指定在文章中使用的列
sp_aarticlefilter創建一個用於水平過濾數據的過濾器
sp_articleview當表被過濾時,為文章創建一個同步化對象
sp_attach_single_file_db在當前伺服器中,附加一個只有一個數據文件的資料庫
sp_aautostats對於一個指定的索引或統計,自動顯示updatestatistics的狀態
sp_bindefault把默認值綁定到列或用戶定義的數據類型上
sp_bindrule把規則綁定到列或用戶定義的數據類型上
sp_bindsession綁定或解除綁定與實例中的其它事務的連接
sp_browsereplcmds在分布資料庫中返回一種可讀格式的結果集
sp_catalogs返回指定連接伺服器中的系統目錄列表,在本地伺服器中等價於資料庫列表
sp_certify_removable確認在可移動介質上用於分布的資料庫是否正確配置
sp_change_agent_parameter修改復制代理配置使用的參數
sp_change_agent_profile修改復制代理配置使用的配置參數
sp_change_users_login修改login與當前資料庫中用戶之間的關系
sp_changearticle改變文章的屬性
sp_changedbowner改變當前資料庫的所有者
sp_changedistpublisher改變分布出版伺服器的屬性
sp_changedistributor_password改變分布伺服器的口令
sp_changedistributor_property改變分布伺服器的屬性
sp_changedistribtutiondb改變分布資料庫的屬性
sp_changegroup改變安全性帳戶所屬的角色
sp_changemergearticle改變合並文章的屬性
sp_changemergefilter改變一些合並過濾器的屬性
sp_changemergepublication改變合並出版物的屬性
sp_changemergepullsubscription改變合並拉回出版物的屬性
sp_changemergesubscription改變合並的推出或者拉回出版物的屬性
sp_changeobjectowner改變對象的所有者
sp_changepublication改變出版物的屬性
sp_changesubscriber改變用於訂閱伺服器的選項
sp_changesubscriber_schele改變用於分布式代理和事務代理的訂閱伺服器的調度
sp_changesubstatus改變訂閱伺服器的狀態
sp_column_privileges返回列的許可權信息
sp_column_privileges_ex返回在鏈接伺服器上指定表的列的許可權信息
sp_columns_ex返回在鏈接伺服器上列的信息
sp_create_removable創建一個可移動介質資料庫
sp_createstats創建單列的統計信息
sp_cursor用於請求定位更新
sp_cursor_list報告當前打開的伺服器游標屬性
sp_cursorclose關閉和釋放游標
sp_cursorfetch從游標中取出數據行
sp_cursoropen定義與游標和游標選項相關聯的SQL語句,然後填充游標
sp_cursoroption用於設置各種游標選項
sp_cycle_errorlog關閉錯誤日誌文件重新開始錯誤記錄
sp_datatype_info返回當前環境支持的數據類型信息
sp_dbfixedrolepermission顯示每一個固定資料庫角色的許可
sp_dboption顯示或修改資料庫選項
sp_dbremove刪除資料庫和與該資料庫相關的所有文件
sp_defaultdb設置登錄帳戶的默認資料庫
sp_defaultlanguage設置登錄帳戶的默認語言
sp_delete_alert刪除警報
sp_delete_backuphistory刪除備份和恢復的歷史信息
sp_delete_category刪除指定類型的作業、警報和操作員
sp_delete_job刪除一個作業
sp_delete_jobschele刪除作業的調度
sp_delete_jobserver刪除指定的目標伺服器
sp_delete_jobstep從作業中刪除指定的作業步驟
sp_delete_notfication刪除發送給某個操作員的所有通知
sp_delete_operator刪除操作員
sp_delete_targetserver從可以使用的目標伺服器列表中刪除指定的伺服器
sp_delete_targetservergroup刪除指定的目標伺服器組
sp_delete_targetsvrgrp_member從目標伺服器組中刪除一個目標伺服器
sp_deletemergeconflictrow刪除沖突表中的記錄行
sp_denylogin防止window用戶或群組連接到sqlserver
sp_describe_cursor報告伺服器游標的屬性
sp_describe_cursor_columns報告在伺服器游標的結果集中列的屬性
sp_describe_cursor_tables報告伺服器游標參考的基表信息
sp_detach_db分享伺服器中的資料庫
sp_drop_agentparameger刪除配置文件中的一個或者多個參數
sp_drop_profile刪除配置文件
sp_dropalias刪除一個帳戶的別名
sp_dropapprole刪除當前資料庫中的應用程序角色
sp_droparticle從出版物中刪除一篇文章
sp_dropdevice刪除資料庫或者備份設備
sp_dropdistpublisher刪除出版伺服器
sp_dropdistributiondb刪除分布資料庫
sp_dropdistributor刪除分布伺服器
sp_dropdropextendedproc刪除一個擴展存儲過程
sp_dropgroup從當前資料庫中刪除角色
sp_droplinkedsrvlogin刪除一個本地伺服器和連接伺服器的映射帳戶
sp_droplogin刪除一個登錄帳戶
sp_dropmergearticle從合並出版物中刪除一篇文章
sp_dropmergefilter刪除一個合並過濾器
sp_dropmergepublication刪除一個合並出版物和與其相關的快照復制
sp_dropmergepullsubscription刪除一個合並拉回訂購物
sp_dropmergesubscription刪除一個訂閱物
sp_dropmessage刪除一個消息
sp_droppublication刪除出版物和與其相關的文章
sp_droppullsubscription刪除當前訂閱伺服器資料庫中的訂閱物
sp_dropremotelogin刪除一個遠程登錄帳戶
sp_droprole從當前資料庫中刪除一個角色
sp_droprolemember從當前資料庫中的一個角色中刪除一個安全性帳戶
sp_dropserver刪除一個遠程或者連接伺服器列表中的伺服器
sp_dropsrvrolemember從一個固定的伺服器角色中刪除一個帳戶
sp_dropsubscriber刪除一個訂閱伺服器
sp_dropsubscription刪除訂閱物
sp_droptype刪除一種用戶定義的數據類型
sp_dropuser從當前資料庫中刪除一個用戶
sp_dropdropwebtask刪除以前版本定義的web任務
sp_dsninfo從一個與當前伺服器相關的分布伺服器返回ODBC和OLEDB數據源的信息
sp_mpparamcmd返回存儲在分布資料庫中的參數化命令的詳細信息
sp_enumcodepages返回一個字元集和代碼頁的列表
sp_enumcustomresovers返回所有可用的定製解決方案表表
sp_enumdsn返回所有可用的odbc和oledb數據源列表
sp_enumfullsubscribers返回訂閱伺服器的列表
sp_expired_subscription_cleanup周期性地檢查訂閱物的狀態是否失效
sp_fkeys返回當前環境的外鍵信息
sp_foreignkeys返回參照連接伺服器的表的主鍵的外鍵
sp_fulltext_catalog創建和刪除全文本目錄
sp_fulltext_column指定某一個列是否參加全文本索引
sp_fulltext_database從當前資料庫中初始化全文本索引
sp_fulltext_service改變MicrosoftSearchService屬性
sp_fulltext_table標記用於全文本索引的表
sp_generatefilters在外鍵表上創建一個過濾器
sp_get_distributor確定一個分布伺服器是否安裝在某個伺服器上
sp_getbindtoken創建一個綁定的連接文本
sp_getmergedeletype返回合並刪除的類型
sp_grant_publication_access在出版物的訪問列表中增加一個用戶
sp_grantdbaccess在當前資料庫中增加一個安全性帳戶
sp_grantlogin允許Windows用戶或群組連接到SQLServer
sp_help_agent_default檢索作為參數傳送的代理類型的默認配置的標識號
sp_help_agent_parameter返回代理配置的所有參數
sp_help_agent_profile返回指定代理的配置
sp_help_alert報告有關警報的信息
sp_help_category提供有關作業、警報、操作員的指定種類的信息
sp_help_downloadlist列出有關作業的信息
sp_help_fulltext_catalogs返回有關全文本索引表的信息
sp_help_fulltext_columns返回標記全文本索引的列信息
sp_help_fulltext_columns_cursor使用游標檢索標記為全文本的索引列
sp_help_fulltext_tables返回標記為全文本索引的表
sp_help_fulltext_tables_cursor使用游標返回標記為全文本索引的表
sp_help_job返回有關作業的信息
sp_help_jobhistory提供有關作業的歷史信息
sp_help_jobschele返回作業的調度信息
sp_help_jobserver返回給定作業的伺服器信息
sp_help_jobstep返回作業的步驟信息
sp_help_operator返回有關操作員的信息
sp_help_publication_access返回可以訪問指定出版物的帳戶列表
sp_help_targetserver列出全部目標伺服器
sp_help_targetservergroup列出指定伺服器組中的全部目標伺服器
sp_helparticle顯示有關文章的信息
sp_helpconstraint返回有關約束的類型、名稱等信息
sp_helpdbfixedrole返回固定的伺服器角色的列表
sp_helpdevice返回有關資料庫文件的信息
sp_helpdistpublisher返回充當分布伺服器的出版伺服器的屬性
sp_helpdistributiondb返回分布資料庫的屬性信息
sp_helpdistributor列出分布伺服器、分布資料庫、工作目錄等信息
sp_helpextendproc顯示當前定義的擴展存儲過程信息
sp_helpfile返回與當前資料庫相關的物理文件信息
sp_helpfilegroup返回與當前資料庫相關的文件組信息
sp_helpgroup返回當前資料庫中的角色信息
sp_helpindex返回有關表的索引信息
sp_helplanguage返回有關語言的信息
sp_helplinkedsrvlogin返回鏈接伺服器中映射的帳戶信息
sp_helplogins返回有關login和與其相關的資料庫用戶信息
sp_helpmergearticle返回有關合並文章的信息
sp_helpmergearticleconflicts返回有關沖突的出版物中的文章信息
sp_helpmergeconflictrows返回在指定沖突表中的行
sp_helpmergefilter返回有關合並過濾器的信息
sp_helpmergepublication返回有關合並出版物的信息
sp_helpmergepullsubscription返回有關拉回訂閱物的信息
sp_helpmergesubscription返回有關推出訂閱物的信息
sp_help_notification報告對於給定操作員的警報信息
sp_helppublication返回有關出版物的信息
sp_helprole返回當前資料庫中的角色信息
sp_helprolemember返回當前資料庫中角色成員的信息
sp_helprotect返回有關用戶許可的信息
sp_helpserver顯示特定遠程或者復制伺服器的信息
sp_helpsort顯示系統的排列順序和字元集的信息
sp_helpsrvrole顯示系統中的固定伺服器角色列表
sp_helpsrvrolemember顯示系統中的固定伺服器角色成員的信息
sp_helpsubscrberinfo顯示有關訂閱伺服器的信息
sp_helpsubscription顯示有特定出版物等有關的訂閱物信息
sp_helpsubscription_properties檢索安全性信息
sp_helptrigger顯示觸發器的類型
sp_helpuser顯示當前資料庫中的用戶、WindowsNT用戶和組、角色等信息
sp_indexoption為用戶定義的索引設置選項
sp_link_publication設置立即修改訂閱伺服器的同步化觸發器使用的配置和安全性信息
sp_linkedservers返回在本地伺服器上定義的鏈接伺服器的列表
sp_makewebtask創建一個執行html文檔的任務
sp_manage_jobs_by_login刪除或者重新指定屬於login的作業
sp_mergemmyupdate製作用於合並復制的修改備份
sp_mergesubscription_cleanup刪除元數據
sp_monitor顯示系統的統計信息
sp_msx_defect從多個伺服器操作中刪除當前伺服器
sp_msx_enlist增加當前伺服器到可用的目標伺服器列表中
sp_pkeys返回某個表的主鍵信息
sp_post_msx_operation插入一些目標伺服器可以執行的信息
sp_primarykeys返回主鍵列的信息
sp_processmail使用擴展存儲過程修改郵件信息
sp_procoption設置或者顯示過程選項
sp_publication_validation初始化文章校驗請求
sp_purge_jobhistory刪除作業的歷史記錄
sp_recompile使存儲過程和觸發器在下一次運行時重新編譯
sp_refreshsubscriptions在拉回出版物中增加訂閱物到文章中
sp_refreshview刷新指定視圖的元數據
sp_reinitmergepullsubscription標記一個合並拉回訂閱
sp_reiniteergesubscription標記一個合並訂閱
sp_reinitpullsubscription標記一個事務訂閱或者匿名訂閱
sp_reinitsubscription重新初始化訂閱
sp_remoteoption顯示或者修改遠程登錄帳戶的選項
sp_remove_job_from_targets從給定的目標伺服器中刪除指定的作業
sp_removedbreplication從資料庫中刪除所有的復制對象
sp_replcounters返回復制的統計信息
sp_repldone修改伺服器做的分布事務的統計信息
sp_replflush處理文章的高速緩沖存儲區
sp_replication_agent_checkup檢查每一個分布資料庫
sp_replicationdboption在當前資料庫中設置復制資料庫的選項
sp_replsetoriginator用於在事務復制中檢測循環登錄
sp_replshowcmds返回標記復制的事務命令
sp_repltrans返回在出版資料庫事務日誌中的所有事務的結果集
sp_resetstatus重新設置異常資料庫的形態
sp_resync_targetserver重新同步所有的多伺服器作業
sp_revoke_publication_access從出版資料庫的訪問列表中刪除login帳戶
sp_revokedbaccess從當前資料庫中刪除安全性帳戶
sp_revokelogin刪除系統的login帳戶
sp_script_synctran_commands生成一個可以用於立即修改訂閱物的腳本
*/

D. 50分求sql題

1.一道SQL語句面試題,關於group by
表內容:
2005-05-09 勝
2005-05-09 勝
2005-05-09 負
2005-05-09 負
2005-05-10 勝
2005-05-10 負
2005-05-10 負

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

勝 負
2005-05-09 2 2
2005-05-10 1 2
------------------------------------------
create table #tmp(rq varchar(10),shengfu nchar(1))

insert into #tmp values('2005-05-09','勝')
insert into #tmp values('2005-05-09','勝')
insert into #tmp values('2005-05-09','負')
insert into #tmp values('2005-05-09','負')
insert into #tmp values('2005-05-10','勝')
insert into #tmp values('2005-05-10','負')
insert into #tmp values('2005-05-10','負')

select * from #tmp
select rq, shengfu from #tmp group by rq,shengfu
select rq, shengfu from #tmp group by shengfu,rq
select rq, shengfu,sum(shengfu) from #tmp group by shengfu,rq

1)select rq, sum(case when shengfu='勝' then 1 else 0 end)'勝',sum(case when shengfu='負' then 1 else 0 end)'負' from #tmp group by rq

2) select N.rq,N.勝,M.負 from (
select rq,勝=count(*) from #tmp where shengfu='勝'group by rq)N inner join
(select rq,負=count(*) from #tmp where shengfu='負'group by rq)M on N.rq=M.rq
3)select a.col001,a.a1 勝,b.b1 負 from
(select col001,count(col001) a1 from temp1 where col002='勝' group by col001) a,
(select col001,count(col001) b1 from temp1 where col002='負' group by col001) b
where a.col001=b.col001

2.請教一個面試中遇到的SQL語句的查詢問題
表中有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 esle c end)
from table_name

3.面試題:一個日期判斷的sql語句?
請取出tb_send表中日期(SendTime欄位)為當天的所有記錄?(SendTime欄位為datetime型,包含日期與時間)
------------------------------------------
select * from tb where datediff(dd,SendTime,getdate())=0

4.有一張表,裡面有3個欄位:語文,數學,英語。其中有3條記錄分別表示語文70分,數學80分,英語58分,請用一條sql語句查詢出這三條記錄並按以下條件顯示出來(並寫出您的思路):
大於或等於80表示優秀,大於或等於60表示及格,小於60分表示不及格。
顯示格式:
語文 數學 英語
及格 優秀 不及格
------------------------------------------
select
(case when 語文>=80 then '優秀'
when 語文>=60 then '及格'
else '不及格') as 語文,
(case when 數學>=80 then '優秀'
when 數學>=60 then '及格'
else '不及格') as 數學,
(case when 英語>=80 then '優秀'
when 英語>=60 then '及格'
else '不及格') as 英語,
from table

5.在sqlserver2000中請用sql創建一張用戶臨時表和系統臨時表,裡麵包含兩個欄位ID和IDValues,類型都是int型,並解釋下兩者的區別?
------------------------------------------
用戶臨時表:create table #xx(ID int, IDValues int)
系統臨時表:create table ##xx(ID int, IDValues int)

區別:
用戶臨時表只對創建這個表的用戶的Session可見,對其他進程是不可見的.
當創建它的進程消失時這個臨時表就自動刪除.

全局臨時表對整個SQL Server實例都可見,但是所有訪問它的Session都消失的時候,它也自動刪除.

6.sqlserver2000是一種大型資料庫,他的存儲容量只受存儲介質的限制,請問它是通過什麼方式實現這種無限容量機制的。
------------------------------------------
它的所有數據都存儲在數據文件中(*.dbf),所以只要文件夠大,SQL Server的存儲容量是可以擴大的.

SQL Server 2000 資料庫有三種類型的文件:

主要數據文件
主要數據文件是資料庫的起點,指向資料庫中文件的其它部分。每個資料庫都有一個主要數據文件。主要數據文件的推薦文件擴展名是 .mdf。

次要數據文件
次要數據文件包含除主要數據文件外的所有數據文件。有些資料庫可能沒有次要數據文件,而有些資料庫則有多個次要數據文件。次要數據文件的推薦文件擴展名是 .ndf。

日誌文件
日誌文件包含恢復資料庫所需的所有日誌信息。每個資料庫必須至少有一個日誌文件,但可以不止一個。日誌文件的推薦文件擴展名是 .ldf。

7.請用一個sql語句得出結果
從table1,table2中取出如table3所列格式數據,注意提供的數據及結果不準確,只是作為一個格式向大家請教。
如使用存儲過程也可以。

table1

月份mon 部門dep 業績yj
-------------------------------
一月份 01 10
一月份 02 10
一月份 03 5
二月份 02 8
二月份 04 9
三月份 03 8

table2

部門dep 部門名稱dname
--------------------------------
01 國內業務一部
02 國內業務二部
03 國內業務三部
04 國際業務部

table3 (result)

部門dep 一月份 二月份 三月份
--------------------------------------
01 10 null null
02 10 8 null
03 null 5 8
04 null null 9

------------------------------------------
1)
select a.部門名稱dname,b.業績yj as '一月份',c.業績yj as '二月份',d.業績yj as '三月份'
from table1 a,table2 b,table2 c,table2 d
where a.部門dep = b.部門dep and b.月份mon = '一月份' and
a.部門dep = c.部門dep and c.月份mon = '二月份' and
a.部門dep = d.部門dep and d.月份mon = '三月份' and
2)
select a.dep,
sum(case when b.mon=1 then b.yj else 0 end) as '一月份',
sum(case when b.mon=2 then b.yj else 0 end) as '二月份',
sum(case when b.mon=3 then b.yj else 0 end) as '三月份',
sum(case when b.mon=4 then b.yj else 0 end) as '四月份',
sum(case when b.mon=5 then b.yj else 0 end) as '五月份',
sum(case when b.mon=6 then b.yj else 0 end) as '六月份',
sum(case when b.mon=7 then b.yj else 0 end) as '七月份',
sum(case when b.mon=8 then b.yj else 0 end) as '八月份',
sum(case when b.mon=9 then b.yj else 0 end) as '九月份',
sum(case when b.mon=10 then b.yj else 0 end) as '十月份',
sum(case when b.mon=11 then b.yj else 0 end) as '十一月份',
sum(case when b.mon=12 then b.yj else 0 end) as '十二月份',
from table2 a left join table1 b on a.dep=b.dep

8.華為一道面試題
一個表中的Id有多個記錄,把所有這個id的記錄查出來,並顯示共有多少條記錄數。
------------------------------------------
select id, Count(*) from tb group by id having count(*)>1
select * from(select count(ID) as count from table group by ID)T where T.count>1

實在沒空發郵件。。。在這收吧

E. SQL資料庫面試題 急急急

a)select pname as '商品名',avg(qty) as 平均銷售量 from s,p,m where m.city='上海' and s.mno=m.mno and p.pno=s.pno,select p.Pno,p.pname,sum(s.qty)
from s left join p on s.pno=p.pno left join m on p.Mno=m.Mno
where m.city='上海市'
group by p.Pno,p.pname,p.city,p.color
b)、先刪除Sale表的外鍵PNO,再刪除gds表。

c)聯系:視圖(view)是在基本表之上建立的表,它的結構(即所定義的列)和內容(即所有數據行)都來自基本表,它依據基本表存在而存在。一個視圖可以對應一個基本表,也可以對應多個基本表。視圖是基本表的抽象和在邏輯意義上建立的新關系
區別:1、視圖是已經編譯好的sql語句。而表不是
2、視圖沒有實際的物理記錄。而表有。
3、表是內容,視圖是窗口
4、表只用物理空間而視圖不佔用物理空間,視圖只是邏輯概念的存在,表可以及時四對它進行修改,但視圖只能有創建的語句來修改
5、表是內模式,視圖是外模式
6、視圖是查看數據表的一種方法,可以查詢數據表中某些欄位構成的數據,只是一些SQL語句的集合。從安全的角度說,視圖可以不給用戶接觸數據表,從而不知道表結構。
7、表屬於全局模式中的表,是實表;視圖屬於局部模式的表,是虛表。
8、視圖的建立和刪除隻影響視圖本身,不影響對應的基本表。

F. SQL server存儲過程題目

declare @tmp table(grade int)
insert @tmp
select grade from choice

declare @i int
set @i =0
while (select sum (case when grade >50 then 1.0 else 0.0 end )*100.0 /CONVERT(float,count(*)) from @tmp ) >50
begin
update @tmp set grade = grade +1
set @i = @i +1
end

print '最終加了' +convert(nvarchar,@i) +'分'

G. SQL查詢面試題與答案

SQL查詢面試題與答案

SQL語言是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統;同時也是資料庫腳本文件的擴展名。下面是我搜集的SQL查詢面試題與答案,歡迎大家閱讀。

SQL查詢面試題與答案一

1.一道SQL語句面試題,關於group by表內容:

2005-05-09 勝

2005-05-09 勝

2005-05-09 負

2005-05-09 負

2005-05-10 勝

2005-05-10 負

2005-05-10 負

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

勝 負

2005-05-09 2 2

2005-05-10 1 2

------------------------------------------

create table #tmp(rq varchar(10),shengfu nchar(1))

insert into #tmp values('2005-05-09','勝')

insert into #tmp values('2005-05-09','勝')

insert into #tmp values('2005-05-09','負')

insert into #tmp values('2005-05-09','負')

insert into #tmp values('2005-05-10','勝')

insert into #tmp values('2005-05-10','負')

insert into #tmp values('2005-05-10','負')

1)select rq, sum(case when shengfu='勝' then 1 else 0 end)'勝',sum(case when shengfu='負' then 1 else 0 end)'負' from #tmp group by rq

2) select N.rq,N.勝,M.負 from (

select rq,勝=count(*) from #tmp where shengfu='勝'group by rq)N inner join

(select rq,負=count(*) from #tmp where shengfu='負'group by rq)M on N.rq=M.rq

3)select a.col001,a.a1 勝,b.b1 負 from

(select col001,count(col001) a1 from temp1 where col002='勝' group by col001) a,

(select col001,count(col001) b1 from temp1 where col002='負' group by col001) b

where a.col001=b.col001

2.請教一個面試中遇到的SQL語句的查詢問題

表中有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 esle c end)

from table_name

3.面試題:一個日期判斷的sql語句?

請取出tb_send表中日期(SendTime欄位)為當天的所有記錄?(SendTime欄位為datetime型,包含日期與時間)

------------------------------------------

select * from tb where datediff(dd,SendTime,getdate())=0

4.有一張表,裡面有3個欄位:語文,數學,英語。其中有3條記錄分別表示語文70分,數學80分,英語58分,請用一條sql語句查詢出這三條記錄並按以下條件顯示出來(並寫出您的思路):

大於或等於80表示優秀,大於或等於60表示及格,小於60分表示不及格。

顯示格式:

語文 數學 英語

及格 優秀 不及格

------------------------------------------

select

(case when 語文>=80 then '優秀'

when 語文>=60 then '及格'

else '不及格') as 語文,

(case when 數學>=80 then '優秀'

when 數學>=60 then '及格'

else '不及格') as 數學,

(case when 英語>=80 then '優秀'

when 英語>=60 then '及格'

else '不及格') as 英語,

from table

5.在sqlserver2000中請用sql創建一張用戶臨時表和系統臨時表,裡麵包含兩個欄位ID和IDValues,類型都是int型,並解釋下兩者的區別?

------------------------------------------

用戶臨時表:create table #xx(ID int, IDValues int)

系統臨時表:create table ##xx(ID int, IDValues int)

區別:

用戶臨時表只對創建這個表的用戶的Session可見,對其他進程是不可見的.

當創建它的進程消失時這個臨時表就自動刪除.

全局臨時表對整個SQL Server實例都可見,但是所有訪問它的Session都消失的時候,它也自動刪除.

6.sqlserver2000是一種大型資料庫,他的`存儲容量只受存儲介質的限制,請問它是通過什麼方式實現這種無限容量機制的。

------------------------------------------

它的所有數據都存儲在數據文件中(*.dbf),所以只要文件夠大,SQL Server的存儲容量是可以擴大的.

SQL Server 2000 資料庫有三種類型的文件:

主要數據文件

主要數據文件是資料庫的起點,指向資料庫中文件的其它部分。每個資料庫都有一個主要數據文件。主要數據文件的推薦文件擴展名是 .mdf。

次要數據文件

次要數據文件包含除主要數據文件外的所有數據文件。有些資料庫可能沒有次要數據文件,而有些資料庫則有多個次要數據文件。次要數據文件的推薦文件擴展名是 .ndf。

日誌文件

日誌文件包含恢復資料庫所需的所有日誌信息。每個資料庫必須至少有一個日誌文件,但可以不止一個。日誌文件的推薦文件擴展名是 .ldf。

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

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

如使用存儲過程也可以。

table1

月份mon 部門dep 業績yj

-------------------------------

一月份 01 10

一月份 02 10

一月份 03 5

二月份 02 8

二月份 04 9

三月份 03 8

table2

部門dep 部門名稱dname

--------------------------------

01 國內業務一部

02 國內業務二部

03 國內業務三部

04 國際業務部

table3 (result)

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

--------------------------------------

01 10 null null

02 10 8 null

03 null 5 8

04 null null 9

------------------------------------------

1)

select a.部門名稱dname,b.業績yj as '一月份',c.業績yj as '二月份',d.業績yj as '三月份'

from table1 a,table2 b,table2 c,table2 d

where a.部門dep = b.部門dep and b.月份mon = '一月份' and

a.部門dep = c.部門dep and c.月份mon = '二月份' and

a.部門dep = d.部門dep and d.月份mon = '三月份' and

2)

select a.dep,

sum(case when b.mon=1 then b.yj else 0 end) as '一月份',

sum(case when b.mon=2 then b.yj else 0 end) as '二月份',

sum(case when b.mon=3 then b.yj else 0 end) as '三月份',

sum(case when b.mon=4 then b.yj else 0 end) as '四月份',

sum(case when b.mon=5 then b.yj else 0 end) as '五月份',

sum(case when b.mon=6 then b.yj else 0 end) as '六月份',

sum(case when b.mon=7 then b.yj else 0 end) as '七月份',

sum(case when b.mon=8 then b.yj else 0 end) as '八月份',

sum(case when b.mon=9 then b.yj else 0 end) as '九月份',

sum(case when b.mon=10 then b.yj else 0 end) as '十月份',

sum(case when b.mon=11 then b.yj else 0 end) as '十一月份',

sum(case when b.mon=12 then b.yj else 0 end) as '十二月份',

from table2 a left join table1 b on a.dep=b.dep

8.華為一道面試題

一個表中的Id有多個記錄,把所有這個id的記錄查出來,並顯示共有多少條記錄數。

------------------------------------------

select id, Count(*) from tb group by id having count(*)>1

select * from(select count(ID) as count from table group by ID)T where T.count>1

SQL查詢面試題與答案二

1、查詢不同老師所教不同課程平均分從高到低顯示

SELECT max(Z.T#) AS 教師ID,MAX(Z.Tname) AS 教師姓名,C.C# AS 課程ID,MAX(C.Cname) AS 課程名稱,AVG(Score) AS 平均成績

FROM SC AS T,Course AS C ,Teacher AS Z

where T.C#=C.C# and C.T#=Z.T#

GROUP BY C.C#

ORDER BY AVG(Score) DESC

2、查詢如下課程成績第 3 名到第 6 名的學生成績單:企業管理(001),馬克思(002),UML (003),資料庫(004)

[學生ID],[學生姓名],企業管理,馬克思,UML,資料庫,平均成績

SELECT DISTINCT top 3

SC.S# As 學生學號,

Student.Sname AS 學生姓名 ,

T1.score AS 企業管理,

T2.score AS 馬克思,

T3.score AS UML,

T4.score AS 資料庫,

ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 總分

FROM Student,SC LEFT JOIN SC AS T1

ON SC.S# = T1.S# AND T1.C# = '001'

LEFT JOIN SC AS T2

ON SC.S# = T2.S# AND T2.C# = '002'

LEFT JOIN SC AS T3

ON SC.S# = T3.S# AND T3.C# = '003'

LEFT JOIN SC AS T4

ON SC.S# = T4.S# AND T4.C# = '004'

WHERE student.S#=SC.S# and

ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)

NOT IN

(SELECT

DISTINCT

TOP 15 WITH TIES

ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)

FROM sc

LEFT JOIN sc AS T1

ON sc.S# = T1.S# AND T1.C# = 'k1'

LEFT JOIN sc AS T2

ON sc.S# = T2.S# AND T2.C# = 'k2'

LEFT JOIN sc AS T3

ON sc.S# = T3.S# AND T3.C# = 'k3'

LEFT JOIN sc AS T4

ON sc.S# = T4.S# AND T4.C# = 'k4'

ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);

3、統計列印各科成績,各分數段人數:課程ID,課程名稱,[100-85],[85-70],[70-60],[ <60]

SELECT SC.C# as 課程ID, Cname as 課程名稱

,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85]

,SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70]

,SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60]

,SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -]

FROM SC,Course

where SC.C#=Course.C#

GROUP BY SC.C#,Cname;

4、查詢學生平均成績及其名次

SELECT 1+(SELECT COUNT( distinct 平均成績)

FROM (SELECT S#,AVG(score) AS 平均成績

FROM SC

GROUP BY S#

) AS T1

WHERE 平均成績 > T2.平均成績) as 名次,

S# as 學生學號,平均成績

FROM (SELECT S#,AVG(score) 平均成績

FROM SC

GROUP BY S#

) AS T2

ORDER BY 平均成績 desc;

5、查詢各科成績前三名的記錄:(不考慮成績並列情況)

SELECT t1.S# as 學生ID,t1.C# as 課程ID,Score as 分數

FROM SC t1

WHERE score IN (SELECT TOP 3 score

FROM SC

WHERE t1.C#= C#

ORDER BY score DESC

)

ORDER BY t1.C#;

6、查詢每門課程被選修的學生數

select c#,count(S#) from sc group by C#;

7、查詢出只選修了一門課程的全部學生的學號和姓名

select SC.S#,Student.Sname,count(C#) AS 選課數

from SC ,Student

where SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1;

8、查詢課程編號“002”的成績比課程編號“001”課程低的所有同學的學號、姓名;

Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2

from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2

9、查詢所有課程成績小於60分的同學的學號、姓名;

select S#,Sname

from Student

where S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);

10、查詢沒有學全所有課的同學的學號、姓名;

select Student.S#,Student.Sname

from Student,SC

where Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);

11、查詢至少有一門課與學號為“1001”的同學所學相同的同學的學號和姓名;

select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';

12、查詢至少學過學號為“001”同學所有一門課的其他同學學號和姓名;

select distinct SC.S#,Sname

from Student,SC

where Student.S#=SC.S# and C# in (select C# from SC where S#='001');

13、把“SC”表中“葉平”老師教的課的成績都更改為此課程的平均成績;

update SC set score=(select avg(SC_2.score)

from SC SC_2

where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='葉平');

14、查詢和“1002”號的同學學習的課程完全相同的其他同學學號和姓名;

select S# from SC where C# in (select C# from SC where S#='1002')

group by S# having count(*)=(select count(*) from SC where S#='1002');

15、刪除學習“葉平”老師課的SC表記錄;

Delect SC

from course ,Teacher

where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='葉平';

16、向SC表中插入一些記錄,這些記錄要求符合以下條件:沒有上過編號“003”課程的同學學號、2、

號課的平均成績;

Insert SC select S#,'002',(Select avg(score)

from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');

17、按平均成績從高到低顯示所有學生的“資料庫”、“企業管理”、“英語”三門的課程成績,按如下形式顯示: 學生ID,,資料庫,企業管理,英語,有效課程數,有效平均分

SELECT S# as 學生ID

,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 資料庫

,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企業管理

,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英語

,COUNT(*) AS 有效課程數, AVG(t.score) AS 平均成績

FROM SC AS t

GROUP BY S#

ORDER BY avg(t.score)

18、查詢各科成績最高和最低的分:以如下形式顯示:課程ID,最高分,最低分

SELECT L.C# As 課程ID,L.score AS 最高分,R.score AS 最低分

FROM SC L ,SC AS R

WHERE L.C# = R.C# and

L.score = (SELECT MAX(IL.score)

FROM SC AS IL,Student AS IM

WHERE L.C# = IL.C# and IM.S#=IL.S#

GROUP BY IL.C#)

AND

R.Score = (SELECT MIN(IR.score)

FROM SC AS IR

WHERE R.C# = IR.C#

GROUP BY IR.C#

);

19、按各科平均成績從低到高和及格率的百分數從高到低順序

SELECT t.C# AS 課程號,max(course.Cname)AS 課程名,isnull(AVG(score),0) AS 平均成績

,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分數

FROM SC T,Course

where t.C#=course.C#

GROUP BY t.C#

ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC

20、查詢如下課程平均成績和及格率的百分數(用"1行"顯示): 企業管理(001),馬克思(002),OO&UML (003),資料庫(004)

SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企業管理平均分

,100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企業管理及格百分數

,SUM(CASE WHEN C# = '002' THEN score ELSE 0 END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 馬克思平均分

,100 * SUM(CASE WHEN C# = '002' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 馬克思及格百分數

,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分

,100 * SUM(CASE WHEN C# = '003' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分數

,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 資料庫平均分

,100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 資料庫及格百分數

FROM SC

;

H. 求ASP.NET,C#,SQL一些面試題! swl_101@126.com謝謝了,麻煩了

SQL Server筆試題解答

本文是對SQL筆試題的解答……

一 單詞解釋(2分/個) 34

Data 數據Database 資料庫RDBMS 關系資料庫管理系統GRANT 授權

REVOKE取消許可權DENY 拒絕許可權DECLARE 定義變數PROCEDURE存儲過程

Transaction事務TRIGGER觸發器繼續 continue唯一 unqiue

主鍵 primary key標識列 identity外鍵 foreign kdy 檢查 check

約束 constraint

二 編寫SQL語句(5分/題)50

1) 創建一張學生表,包含以下信息,學號,姓名,年齡,性別,家庭住址,聯系電話

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 stu

9) 查詢出所有學生的姓名,性別,年齡降序排列

Select 姓名,性別 from stu order by 年齡 desc

10) 按照性別分組查詢所有的平均年齡

Select avg(年齡) from stu group by 性別

三 填空(3分/題) 36

1) 索引分為__聚集索引___和__非聚集索引__在一張表上最多可以創建1個 聚集索引_索引。但是可以創建_249個非 聚集索引 索引。

2) 系統存儲過程_sp-helptext__是用來顯示規則,默認值,未加密的存儲過程,用戶定義函數,觸發或視圖的文本

3) 事務開始:begin Transction

提交事務:commit Transction

回滾事務:rollback Transction

四 問答題(5分/題)60

1) 資料庫包含哪些那幾種後綴名的文件必須,這些文件分別存放在什麼的信息?

主要數據文件(.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 public

Dbo : 是資料庫的擁有者,對資料庫擁有所有操作的許可權

Sysadmin : 可以對SQL SERVER執行任何活動

Public : 自動創建的,能捕獲資料庫中用戶的所有默認許可權

10) 何為動態游標?何為靜態游標?

動態游標與靜態游標相對,反映結果集中所做的所有更改,

靜態游標的結果集在游標打開時,建立在tempdb中,總按照游標打開時的原樣顯示

11) 什麼是存儲過程?為什麼存儲過程要比單純的Sql 語句執行起來要快?

存儲過程:是一組預先編譯好的T-SQL代碼

在創建存儲過程時經過了語法和性能優化,執行不必重復的步驟,使用存儲過程可提高運行效率

12)什麼是Inserted 表 ?什麼是Deleted 表?

Inserted表用於存儲inserted和update語句影響的副本

Deleted 表用於存儲delect 和 update語句影響的行的副本

I. 這幾道題用資料庫的SQL語言怎麼實現

第一個:
select MAX(職工號)
from 職工
where 職工. 部門號 in (select 部門號 from 部門)

第二個:
create proc procStaff
@staffID nvarchar(30) --@staffID 表示職工號
as
select 月工資, avg(select 月工資 from 職工 where 職工號 = @staffID
and 部門 in (select 部門號 from 部門))
from 職工
where 職工號 = @staffID

第三個:
select proctID , proctName , Max(clickNum)
from proctInfo
where proctInfo.parentID in(select chassID from className group by classID)
group by proctName
order by Max(clickNum) desc

J. 面試題目(sql)

1、忍不住想說一句,因為第一題中的欄位類型是
【日期型】,而各種資料庫操作日期型數據有不同的方法,沒有一種共通的方法,所以脫離了資料庫而言沒有一種共通的sql。
2、select
ID,NAME,ADDRESS,PHONE,LOGDATE
from
T
where
ID
in(
select
ID
from
T
group
by
NAME
having
count(*)>1)
order
by
NAME;
3、delete
from
T
where
ID
not
in
(select
min(id)
from
T
group
by
name);
4、update
T
set
T.ADDRESS=(select
E.ADDRESS
from
E
where
E.NAME=T.NAME),
T.PHONE=(select
E.PHONE
from
E
where
E.NAME=T.NAME);
5、這個不同的資料庫也有不同的處理方法,不能脫離資料庫談了。
如:SqlServer或者access可以使用
top
oracle可以使用
rownum

---
以上,希望對你有所幫助。

熱點內容
華為賬戶密碼初始密碼是多少 發布:2025-04-07 11:33:38 瀏覽:39
資料庫選擇和投影 發布:2025-04-07 11:33:00 瀏覽:399
伺服器1u指的是什麼 發布:2025-04-07 11:18:43 瀏覽:702
fps打怪腳本 發布:2025-04-07 11:09:47 瀏覽:765
配置硬體拖後腿怎麼升級 發布:2025-04-07 11:06:54 瀏覽:399
mysql伺服器怎麼開啟 發布:2025-04-07 10:55:14 瀏覽:542
java合並map 發布:2025-04-07 10:55:11 瀏覽:100
c語言點名 發布:2025-04-07 10:44:29 瀏覽:161
查看linux進程命令 發布:2025-04-07 10:43:15 瀏覽:913
樂視手機根目錄是哪個文件夾 發布:2025-04-07 10:38:43 瀏覽:511