楊軍莉
(陜西財經(jīng)職業(yè)技術(shù)學(xué)院, 咸陽 71200)
SQL是專門為數(shù)據(jù)庫而建立的操作命令,是一種功能性比較齊全的數(shù)據(jù)庫語言。SQL功能強(qiáng)大、使用方便,已經(jīng)成為了數(shù)據(jù)庫操作的基礎(chǔ),在多個領(lǐng)域已經(jīng)得到應(yīng)用。總體看來,SQL數(shù)據(jù)庫的構(gòu)建與安全維護(hù)可以提高人們的生活質(zhì)量與生產(chǎn)效率,并且可以給社會帶來一定的社會價值與經(jīng)濟(jì)收益,形成推動社會發(fā)展的動力與源泉。
在現(xiàn)代化的企業(yè)管理中非常重要的理念是項目管理思想,關(guān)于SQL數(shù)據(jù)庫的構(gòu)建管理思想一定要有組織、有規(guī)劃,以基本的職能范圍與工作需求來制定相應(yīng)的項目小組,便于對SQL數(shù)據(jù)庫的開發(fā)與設(shè)計進(jìn)行保障。項目小組主要任務(wù)是通過授權(quán)對數(shù)據(jù)庫進(jìn)行全面對話與管理,確保SQL數(shù)據(jù)庫的開發(fā)與管理順利進(jìn)行。
SQL數(shù)據(jù)庫的開發(fā)與設(shè)計,其相關(guān)人員主要包含數(shù)據(jù)庫開發(fā)管理人員和專業(yè)人員兩類,開發(fā)管理人員主要負(fù)責(zé)系統(tǒng)的技術(shù)開發(fā)與操作,根據(jù)數(shù)據(jù)庫系統(tǒng)把營銷人員的具體需求進(jìn)行轉(zhuǎn)化。專業(yè)人員的職責(zé)在于根據(jù)實際的工作需求參與數(shù)據(jù)庫的開發(fā)。二者相互協(xié)調(diào),相互配合,共同來完成SQL數(shù)據(jù)庫在開發(fā)以及技術(shù)設(shè)計方面所遇到的難題。系統(tǒng)設(shè)計與構(gòu)建主要設(shè)備是電腦、服務(wù)器等。
(1) 規(guī)范命名。對庫名、表名、域名等要有統(tǒng)一的規(guī)范命名,對這些命名要有明確的說明,方便設(shè)計、使用與維護(hù)。
(2) 控制字段引用。在系統(tǒng)設(shè)計時,要選擇合適的數(shù)據(jù)庫管理工具,方便開發(fā)人員的分布式設(shè)計與研制小組的審核管理,設(shè)計的字段如果已經(jīng)存在,則可以直接引用,如果不存在需要重新設(shè)計。
(3) 控制表重復(fù)。在設(shè)計中,如果發(fā)現(xiàn)大部分字段都已經(jīng)存在,那么開發(fā)人員就要考慮所設(shè)計的表庫是否存在,通過對相關(guān)人員以及表庫的查詢,來確認(rèn)表庫是否重復(fù)。
(4) 具體討論。在數(shù)據(jù)庫設(shè)計完成之后,設(shè)計小組要進(jìn)行討論,數(shù)據(jù)小組要對數(shù)據(jù)庫熟悉掌握,對設(shè)計中存在的問題進(jìn)行控制并且獲取重要信息。
正確使用索引:索引是數(shù)據(jù)庫中非常重要的數(shù)據(jù)結(jié)構(gòu),其主要目的是提高查詢效率,索引的使用原則在于:在沒有指定外鍵的列上建立索引,不經(jīng)常連接的字段由路由器自動生成索引,在頻繁排序或者分組的列上建立索引,在條件表達(dá)式中經(jīng)常用到的不同值較多的列上建立索引,在不同值少的列上盡量不要建立索引,如果排序的列有多個,則可以建立符合索引。
簡化排序:系統(tǒng)設(shè)計中,要盡量簡化大型表進(jìn)行重復(fù)排序。當(dāng)能夠通過索引自動產(chǎn)生輸出時,優(yōu)化器就避免了排序的步驟。為了避免重復(fù)排序,一定要正確的增建索引,合并數(shù)據(jù)庫表格,如果必須排序,就要盡量簡化。
避免相關(guān)子查詢:一個列同時在主查詢和where子句中出現(xiàn),主查詢中的列值改變之后,子查詢也要重新查詢。查詢的層次越多,效率就會越低,所以要盡量避免子查詢,如果子查詢不可避免,就要過濾掉盡可能多的行。
避免困難的正規(guī)表達(dá)式:mathes和like關(guān)鍵字支持通配符匹配,但這種匹配特別耗時。例如:select * from customer where zipcode like “98_ _ _”,即使在zipcode字段上已建立了索引,在這種情況下也還是采用順序掃描的方式。如果把語句改為:select * from customer where zipcode >“98000”,在執(zhí)行查詢時就會利用索引來查詢,顯然會大大提高速度。
SQL數(shù)據(jù)庫在創(chuàng)建之初,首先要明確開發(fā)方向,制定企業(yè)所需的相關(guān)數(shù)據(jù)庫任務(wù)與功能。企業(yè)獲取客戶詳情的唯一途徑就是營銷數(shù)據(jù)庫,所以數(shù)據(jù)庫開發(fā)與管理人員要了解數(shù)據(jù)庫建立的重要性。數(shù)據(jù)庫的構(gòu)建要做到準(zhǔn)確、全面。對SQL數(shù)據(jù)庫的結(jié)構(gòu)進(jìn)行徹底分析,通過基本情況數(shù)據(jù)、行為特征數(shù)據(jù)、互動性行為特征3個結(jié)構(gòu)方面進(jìn)行統(tǒng)計。
(1) 基本情況數(shù)據(jù)。主要是人員統(tǒng)計以及單位的基本信息,如聯(lián)系人姓名、職務(wù),單位名稱、單位地址、公司規(guī)模、員工數(shù)量等。
(2) 行為交易特征。信用等級、預(yù)算情況、企業(yè)規(guī)劃、購買歷史,企業(yè)的經(jīng)營目標(biāo),客戶與企業(yè)的市場地位,最近的郵件聯(lián)系情況與銷售訪問情況。
(3) 互動性行為??蛻敉对V、客戶推薦、送貨要求,以往支付歷史、服務(wù)歷史、信用歷史,對產(chǎn)品的基本要求。
SQL數(shù)據(jù)庫體系結(jié)構(gòu),如圖1所示。
圖1 SQL 數(shù)據(jù)庫體系結(jié)構(gòu)圖
(1) 外模式:外模式主要對應(yīng)用戶,是某個用戶所看到的數(shù)據(jù)庫的數(shù)據(jù)視圖,是與某一應(yīng)用相關(guān)的數(shù)據(jù)的邏輯表示。用戶可以通過外模式來對語言進(jìn)行描述,也可以利用數(shù)據(jù)來操縱語言。
(2) 模式:模式對應(yīng)于概念級,是綜合所用用戶的數(shù)據(jù),按照統(tǒng)一的特點所構(gòu)建的邏輯結(jié)構(gòu),對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行總體描述,反應(yīng)了數(shù)據(jù)庫系統(tǒng)的整體觀。
(3) 內(nèi)模式:內(nèi)模式又叫存儲模式,是數(shù)據(jù)庫中數(shù)據(jù)最低一級的邏輯描述,主要描述數(shù)據(jù)的存儲方式和物理結(jié)構(gòu),對應(yīng)著實際存儲在外存儲介質(zhì)上的數(shù)據(jù)庫。
SQL是一種查詢功能非常強(qiáng)的計算機(jī)語言,只要在數(shù)據(jù)庫中已經(jīng)存在的數(shù)據(jù),通過適當(dāng)?shù)姆椒ǘ寄軌虿樵兂鰜?。在SQL查詢系統(tǒng)中,查詢語句只有一個:SELECT,該語句可以與其他語句進(jìn)行配合,完成數(shù)據(jù)的查詢。以下為SQL數(shù)據(jù)庫SELECT應(yīng)用演示。
例如:找到學(xué)生的選課狀況
SELECT st_no,su_no
FROM score
例如:找到學(xué)生的基本情況
SELECT*
FROM student
"*"為通配符,表示查找FROM中所指出關(guān)系的所有屬性的值。
關(guān)于條件查找,所查找的對象一定要滿足WHERE子句所提供的條件。
例如:找到某一學(xué)科成績70分以上的學(xué)生情況、課號以及具體分?jǐn)?shù)
SELECT UNIQUE student.st_class,student.st_no,student.st_name,student.st_sex,student.st_age,score.su_no,score.score
FROM student,score
WHERE score.score>=70 AND score.stno=student,st_no
例如:找到課程號為c02并且考試不及格的同學(xué)
SELECT st_no
FROM score
WHERE su_no='c02'AND score<60
排序查詢主要是將最終的查詢結(jié)果按照某一規(guī)律進(jìn)行排序。
SELECT UNIQUE su_no
FROM score
WHERE score<60
ORDER BY su_no DESC
嵌套查詢是WHERE子句中又包含SELECT子句,主要用于比較復(fù)雜的跨多個基本表查詢的情況。
例如:找到編號為c03并且課程成績在80分以上的同學(xué)的學(xué)好和姓名
SELECT st_no,st_name
第二種,消滅人類。但是,這種情況可能不會發(fā)生,因為對于具有無限智力且有情感能力的超人來說,人類既不能給它帶來好處,也不會給它帶來壞處,消滅人類有什么意義呢?所以,還存在第三種可能。
FROM student
WHERE stno IN (SELECT st_no
FROM score
WHERE su_no='c03' AND score>80 )
需要強(qiáng)調(diào)的是,當(dāng)查詢設(shè)計多個基本表的時候,用嵌套查詢逐次求解層次分明,,在查詢的過程中,IN是經(jīng)常用到的謂詞。如果用戶可以確切知道內(nèi)層查詢返回的是單值,那么也可用算術(shù)比較運算符表示用戶的要求。
計算查詢只要是通過系統(tǒng)所提供的特定函數(shù)在語句中獲得需要通過計算才能得到的結(jié)果。系統(tǒng)中主要運用的函數(shù)包括:
COUNT(*) 計算元組的個數(shù)
COUNT(列名) 對某一列中的值計算個數(shù)
SUM(列名) 求某一列值的總和(此列值是數(shù)值型)
AVG(列名) 求某一列值的平均值(此列值是數(shù)值型)
MAX(列名) 求某一列值中的最大值
MIN(列名) 求某一列值中的最小值
例如:求男學(xué)生的總?cè)藬?shù)與平均年齡
SELECT COUNT(*),AVG(st_age)
FROM student
WHERE st_sex='男'
例如:統(tǒng)計選修了課程的學(xué)生的人數(shù)
SELECT COUNT(DISTINCT st_no)
FROM score
在這里要考慮到一個學(xué)生選修多門課程,所以在查詢與統(tǒng)計時要運用到DISTINCT進(jìn)行篩選。
在SQL數(shù)據(jù)庫系統(tǒng)的日常維護(hù)中,首先要對SQL數(shù)據(jù)庫的用戶密碼定期維護(hù),密碼的維護(hù)是確保SQL數(shù)據(jù)庫系統(tǒng)安全運行的基礎(chǔ)。當(dāng)前我國網(wǎng)絡(luò)中最常用的安全技術(shù)便是密碼技術(shù),在重要文件傳輸?shù)倪^程中,通過密碼加密技術(shù)對其進(jìn)行處理,對方接收到文件之后,通過相應(yīng)的解密鑰匙進(jìn)行解密,即便信息丟失,也不能夠確認(rèn)信息的真實性。所以,密碼技術(shù)在系統(tǒng)中的應(yīng)用,能夠確認(rèn)信息的安全性。在SQL數(shù)據(jù)庫系統(tǒng)使用過程中要定期的更換密碼,設(shè)置安全程度較高的密碼,借助動態(tài)變化的方式提高數(shù)據(jù)庫的安全性能,根據(jù)使用中的運行狀況,采取相應(yīng)的維護(hù)策略。
SQL數(shù)據(jù)庫的規(guī)模在隨著信息技術(shù)的發(fā)展不斷擴(kuò)大,SQL數(shù)據(jù)庫正在實現(xiàn)網(wǎng)絡(luò)訪問與數(shù)據(jù)連接的功能,SQL數(shù)據(jù)安全管理與維護(hù)的重要內(nèi)容之一是數(shù)據(jù)備份與數(shù)據(jù)恢復(fù),在大數(shù)據(jù)環(huán)境下,網(wǎng)路信息數(shù)據(jù)存儲存在較大的安全隱患,數(shù)據(jù)的存儲于相關(guān)工作都是根據(jù)不同服務(wù)開展起來的,所以,為了確保信息安全,一定要做好數(shù)據(jù)存儲工作。當(dāng)SQL數(shù)據(jù)庫建成之后要及時卸除。另外,在對數(shù)據(jù)庫日志備份過程中,要提高備份的操作頻率,由于事物日志與數(shù)據(jù)庫資源的備份空間都比較小,所以在通過備份操作來確保信息安全的同時,要隨時查到數(shù)據(jù)庫訪問記錄,降低數(shù)據(jù)丟失以及相關(guān)的安全隱患。在數(shù)據(jù)庫完成調(diào)用、管理等功能之后,就要考慮數(shù)據(jù)重新安裝問題,確保發(fā)生意外時能夠找回數(shù)據(jù)庫中的全部資源,將數(shù)據(jù)庫損失降至最低。
對SQL數(shù)據(jù)庫的監(jiān)控主要是可以隨時了解系統(tǒng)中的用戶信息,在數(shù)據(jù)庫監(jiān)控中發(fā)現(xiàn)用戶的進(jìn)程與系統(tǒng)的最大現(xiàn)讀比較接近時,就會自動關(guān)閉程序,確保數(shù)據(jù)庫的正常穩(wěn)定運行。另外,在不斷完善已有的制度的前提下,要完善相應(yīng)的管理制度,規(guī)范大數(shù)據(jù)環(huán)境下數(shù)據(jù)的安全體系。把大數(shù)據(jù)置于安全的管理框架中,將大數(shù)據(jù)與云計算相結(jié)合,更好的保障SQL數(shù)據(jù)庫的數(shù)據(jù)安全。在完善制度的基礎(chǔ)上,做好SQL數(shù)據(jù)庫安全管理工作,不斷規(guī)范安全體系。
SQL數(shù)據(jù)庫的構(gòu)建對數(shù)據(jù)資源集中與共享、提高數(shù)據(jù)管理效率有著非常重要的意義。為了進(jìn)一步確保數(shù)據(jù)庫的安全運行,一定要運用現(xiàn)代化手段,避免網(wǎng)絡(luò)環(huán)境給數(shù)據(jù)庫的運用帶來威脅,加強(qiáng)數(shù)據(jù)庫的日常管理,確保數(shù)據(jù)庫正常運行。
[1] 付海麗, 鄧倫強(qiáng), 王希鋒.SQL數(shù)據(jù)庫的構(gòu)建與管理維護(hù)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用.2015,4(15): 21+25.
[2] 武萬軍.SQL數(shù)據(jù)庫的構(gòu)建與安全性維護(hù)技術(shù)方案研究[J].數(shù)字技術(shù)與應(yīng)用,2016,3(15): 210.
[3] 余鵬.基于SQL數(shù)據(jù)庫的性能優(yōu)化研究[J].中國科技信息,2014,1(15):76-77.
[4] 于雷.關(guān)于如何優(yōu)化SQL數(shù)據(jù)庫的性能的幾點分析[J].電腦知識與技術(shù),2016,10(25): 19-20.
[5] 李韓; 孫永杰.SQL數(shù)據(jù)庫的安全管理和性能優(yōu)化[J].科技創(chuàng)新與應(yīng)用,2016,11(8):108.