02 銷售部 應偉東
03 服務部 周垠
04 財務部 陳力勝
4.數據庫中什麼叫視圖?
答:視圖(View)是從一個或多個表(或
視圖)導出的表。視圖與表(有時爲與視圖區別,也稱表爲基本表——Base Table)不一樣,視圖是一個虛表,即視圖所對應的數據不進行實際存儲,數據庫中只存儲視圖的定義,在對視圖的數據進行操做時,系統根據視圖的定義去操做與視圖相關聯的基本表。
1.若視圖是由兩個以上基本表導出的,則此視圖不容許更新。
2.若視圖的字段來自字段表達式或常數,則不容許對視圖執行INSTER和UPDATE操做,但容許delete。
3.若視圖的字段來自彙集函數,則此視圖不容許更新。
4.若視圖中含有GROUP by子句,則此視圖不容許更新。
5.若視圖中含有DISTINCT短語,則此視圖不容許更新。.
6若視圖定義中有嵌套查詢,而且內層查詢的FROM子句中涉及的表也是導出該視圖的基本表,則此視圖不容許更新。.
7.一個不容許更新的視圖上定義的視圖不容許更新。
視圖除了進行查詢記錄外,也能夠利用視圖進行插入、更新、刪除記錄的操做,減小對基表中信息的直接操做,提升了數據的安全性。
在視圖上使用INSERT語句添加數據時,要符合如下規則。
(1)使用INSERT語句向數據表中插入數據時,用戶必須有插入數據的權利。
(2)因爲視圖只引用表中的部分字段,因此經過視圖插入數據時只能明確指定視圖中引用的字段的取值。而那些表中並未引用的字段,必須知道在沒有指定取值的狀況下如何填充數據,所以視圖中未引用的字段必須具有下列條件之一。
該字段容許空值。
該字段設有默認值。
該字段是標識字段,可根據標識種子和標識增量自動填充數據。
該字段的數據類型爲timestamp或uniqueidentifier。
(3)視圖中不能包含多個字段值的組合,或者包含使用統計函數的結果。
(4)視圖中不能包含DISTINCT或GROUP BY子句。
(5)若是視圖中使用了WITH CHECK OPTION,那麼該子句將檢查插入的數據是否符合視圖定義中SELECT語句所設置的條件。若是插入的數據不符合該條件,SQL Server會拒絕插入數據。
(6)不能在一個語句中對多個基礎表使用數據修改語句。所以,若是要向一個引用了多個數據表的視圖添加數據時,必須使用多個INSERT語句進行添加。
6.設有一個關係:DEPT(DNO,DNAME),若是要找出倒數第三個字母爲W,而且至少包含4個字母的DNAME,則查詢條件子句應寫成WHERE DNAME LIKE__________.
7.查找 student表中全部電話號碼(列名:telephone)的第一位爲8或6,第三位爲0的電話號碼?
答:SELECT telephone FROM student WHERE telephone LIKE ‘[8,6]_0%’
8.用命令()能夠查看mysql數據庫中user表的表結構?
答:desc user;show create table user;
9.內鏈接與外聯結?
答:內鏈接返回的結果集是兩個表中全部相匹配的數據,不包含沒有匹配的行。
外鏈接有三種:左外鏈接,右外鏈接,全外鏈接。外鏈接不只包含符合鏈接條件的行,還包含左表(左外鏈接)、右表(右外鏈接)或兩個表(全外鏈接)中的全部數據行。對於沒有匹配的行就用NULL值來填充。
所以,外鏈接中:既包含相匹配的行也包括不相匹配的行、不相匹配的行就用NULL值填充、外鏈接中也能夠只有不匹配的行。
10.怎樣設置主鍵?
答:最小性原則,個人理解是,單列,int型產生方便,維護方便,易比較,缺點是沒啥實際意義。
惟一性原則,若是不能有同時重複的username和password,那麼username和password能夠組合在一塊兒做爲主鍵。
11.mysql怎樣開啓事務?
答:
MySQL事務控制語句
在mysql命令行的默認下,事務都是自動提交的,sql語句提交後立刻會執行commit操做。所以開啓一個事務必須使用begin,start transaction,或者執行 set autocommit=0;
可使用的事務控制語句設計
start transction | begin : 顯示的開啓一個事務
12.有訂單表orders,包含字段用戶信息userid,字段產品信息productid,如下語句可以返回至少被訂購過兩會的productid?
答:select productid from orders group by productid having count(productid)>1
13.創建索引的原則?
答:
14.
表中刪除主鍵爲:
alert table table_test drop primary key;
表中增長主鍵爲:
alert table table_test add primary key(id);
15.在一個表中能夠創建()
答:多個普通索引,多個惟一索引,多個候選索引,一個主索
16.mysql 數據庫有選課表 learn(student_id int,course_id int),字段分別表示學號和課程編號, 如今想獲取每一個學生所選課程的個數信息,請問以下的 sql 語句正確的是()?
答:select student_id,count(course_id)from learn group by student_id
17.未提交讀(Read Uncommitted):容許髒讀,也就是可能讀取到其餘會話中未提交事務修改的數據提交讀(Read Committed):只能讀取到已經提交的數據.可重複讀(Repeated Read):在同一個事務內的查詢都是事務開始時刻一致的。
18.關於group by子句的做用描述正確的是?
答:
用於過濾數據的子句是where
根據題目給出的答案去作推論
首先group by的做用是用來分組,這點明確了;而後看答案
A過濾數據,這個和分組沒什麼關係pass
而後BC sum和avg兩個函數分別是求和和求平均,這個時候分組就有存在價值了,一組數據的和,一組數據的平均數兩個;
D having這個關鍵字自己就是用來和分組一塊兒使用的,是分組後的過濾條件
GroupBy語句從英文的字面意義上理解就是「根據(by)必定的規則進行分組(Group)」。它的做用是經過必定的規則將一個數據集劃分紅若干個小的區域,而後針對若干個小區域進行數據處理。
19.爲了提升數據的查詢效率,須要在數據庫中創建索引,則下列設計索引的原則描述正確的是()
答:
在頻繁進行排序或分組(即進行group by 或order by操做)的列上創建索引
考慮列中指的分佈,列的基數越大,索引的效果越好
不包含(在select關鍵字後選擇列表的列上,創建索引,錯,應該是where命令)
表的某個字段值得離散度越高,該字段越適合選做索引的關鍵字。主鍵字段以及惟一性約束字段適合選做索引的關鍵字,緣由就是這些字段的值很是離散。尤爲是在主鍵字段建立索引時, cardinality (基數,集的勢)的值就等於該表的行數。 MySQL 在處理主鍵約束以及惟一性約束時,考慮周全。數據庫用戶建立主鍵約束的同時, MySQL 自動建立主索引( primary index ),且索引名稱爲 Primary;數據庫用戶建立惟一性索引時, MySQL 自動建立惟一性索引( unique index ),默認狀況下,索引名爲惟一性索引的字段名。
二、 佔用存儲空間少的字段更適合選做索引的關鍵字。例如,與字符串相比,整數字段佔用的存儲空間較少,所以,較爲適合選做索引關鍵字。指針
三、 存儲空間固定的字段更適合選做索引的關鍵字。與 text 類型的字段相比, char 類型的字段較爲適合選做索引關鍵字。
四、 Where 子句中常用的字段應該建立索引,分組字段或者排序字段應該建立索引,兩個表的鏈接字段應該建立索引。
五、 更新頻繁的字段不適合建立索引,不會出如今 where 子句中的字段不該該建立索引。
六、 最左前綴原則。
七、 儘可能使用前綴索引。