mysql知識點(二)

1.什麼叫彙集索引和非彙集索引?mysql

答:sql

彙集索引:該索引中鍵值的邏輯順序決定了表中相應行的物理順序。數據庫

     彙集索引肯定表中數據的物理順序。彙集索引相似於電話簿,後者按姓氏排列數據。因爲彙集索引規定數據在表中的物理存儲順序,所以一個表只能包含一個彙集索引。但該索引能夠包含多個列(組合索引),就像電話簿按姓氏和名字進行組織同樣。

非彙集索引:數據存儲在一個地方,索引存儲在另外一個地方,索引帶有指針指向數據的存儲位置。安全

      非彙集索引中的項目按索引鍵值的順序存儲,而表中的信息按另外一種順序存儲(這能夠由彙集索引規定)。對於非彙集索引,能夠爲在表非彙集索引中查找數據時經常使用的每一個列建立一個非彙集索引。有些書籍包含多個索引。例如,一本介紹園藝的書可能會包含一個植物通俗名稱索引,和一個植物學名索引,由於這是讀者查找信息的兩種最經常使用的方法。
2.外鍵的參考完整性?
答:

僱員表是部門字段使用了外鍵ide

05 不存在與部門表中,因此不能插入,不然違反了參考完整性。函數

 

3.建立符合數據庫三範式的表,好比:.net

答:命令行

僱員信息表: 
僱員號 僱員名 部門號 工資 
001       張山      02         2000 
010      王宏達   01         1200 
056      馬林生   02         1000 
101       趙敏      04         1500 

部門信息表 
部門號 部門名 主任 
01         業務部 李建 
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__________.
答:‘_ % W _ _’
 
             
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 子句中的字段不該該建立索引。

六、   最左前綴原則。

七、   儘可能使用前綴索引。

相關文章
相關標籤/搜索