46.簡述leftjoin和rightjoin的區別?
left join:外鏈接之左連接:優先顯示左表全部記錄
#以左表為准,即找出所有員工信息,當然包括沒有部門的員工
#本質就是:在內連接的基礎上增加左邊有右邊沒有的結果
right join:外鏈接之右連接:優先顯示右表全部記錄
#以右表為准,即找出所有部門信息,包括沒有員工的部門
#本質就是:在內連接的基礎上增加右邊有左邊沒有的結果
47.索引有什么作用,有那些分類,有什么好處和壞處?
作用:
索引提供指向存儲在表的指定列中的數據值的指針,然后根據您指定的排序順序對這些指針排序。數據庫使用索引以找到特定值,然后順指針找到包含該值的行。這樣可以使對應於表的SQL語句執行得更快,可快速訪問數據庫表中的特定信息。
分類:
1、唯一索引
唯一索引是不允許其中任何兩行具有相同索引值的索引。當現有數據中存在重復的鍵值時,大多數數據庫不允許將新創建的唯一索引與表一起保存。
2、主鍵索引
數據庫表經常有一列或多列組合,其值唯一標識表中的每一行。該列稱為表的主鍵。在數據庫關系圖中為表定義主鍵將自動創建主鍵索引,主鍵索引是唯一索引的特定類型。該索引要求主鍵中的每個值都唯一。當在查詢中使用主鍵索引時,它還允許對數據的快速訪問。
3、聚集索引
在聚集索引中,表中行的物理順序與鍵值的邏輯(索引)順序相同。一個表只能包含一個聚集索引。如果某索引不是聚集索引,則表中行的物理順序與鍵值的邏輯順序不匹配。與非聚集索引相比,聚集索引通常提供更快的數據訪問速度。
4、索引列
可以基於數據庫表中的單列或多列創建索引。多列索引可以區分其中一列可能有相同值的行。如果經常同時搜索兩列或多列或按兩列或多列排序時,索引也很有幫助。例如,如果經常在同一查詢中為姓和名兩列設置判據,那么在這兩列上創建多列索引將很有意義。
優點:
1、大大加快數據的檢索速度。
2、創建唯一性索引,保證數據庫表中每一行數據的唯一性。
3、加速表和表之間的連接。
4、在使用分組和排序子句進行數據檢索時,可以顯著減少查詢中分組和排序的時間。
缺點:
1、索引需要占物理空間。
2、當對表中的數據進行增加、刪除和修改的時候,索引也要動態的維護,降低了數據的維護速度。
48.寫sql語句
TableA
ID | NAME | KECHENG | FENSHU |
---|---|---|---|
1 | 張三 | 語文 | 81 |
2 | 張三 | 數學 | 75 |
3 | 李四 | 語文 | 76 |
4 | 李四 | 數學 | 90 |
5 | 王五 | 語文 | 81 |
6 | 王五 | 數學 | 100 |
7 | 王五 | 英語 | 90 |
TableB
ID | NAME |
---|---|
1 | 張三 |
2 | 李四 |
3 | 王五 |
4 | 趙六 |
查詢:
1.查詢出每門課程都大於80分的學生姓
SELECT
`NAME`
FROM
TableA
WHERE
`NAME` NOT IN (
SELECT
`NAME`
FROM
TableA
WHERE
FENSHU < 80
GROUP BY
`NAME`
)
GROUP BY
`NAME`;
2.查詢出語文成績最大的學生姓名
SELECT
TableA.`NAME`
FROM
TableA
WHERE
FENSHU = (
SELECT
`FENSHU`
FROM
TableA
WHERE
KECHENG = "語文"
GROUP BY
FENSHU
ORDER BY
FENSHU DESC
LIMIT 1
)
3.查詢沒有成績的學生姓名
SELECT
`NAME`
FROM
TableB
WHERE
NAME NOT IN ( SELECT `NAME` FROM TableA GROUP BY `NAME` )
49.試列出至少三種目前流行的大型關系型數據庫的名稱
試列出至少三種目前流行的大型關系型數據庫的名稱
其中您最熟悉的是
什么時候開始使用
“”“
Oracle
SQL Server
MySQL
”“”
50.什么是MySQL慢日志?
慢日志查詢的主要功能就是,記錄sql語句中超過設定的時間閾值的查詢語句。例如,一條查詢sql語句,我們設置的閾值為1s,當這條查詢語句的執行時間超過了1s,則將被寫入到慢查詢配置的日志中.
慢查詢主要是為了我們做sql語句的優化功能.
配置項說明:
登陸mysql服務:
> show variables like '%query%';
關注三個配置項即可。
1.slow_query_log
該配置項是決定是否開啟慢日志查詢功能,配置的值有ON或者OFF.
2.slow_query_log_file
該配置項是慢日志查詢的記錄文件,需要手動創建.
3.long_query_time
該配置項是設置慢日志查詢的時間閾值,當超過這個閾值時,慢日志才會被記錄.配置的值有0(任何的sql語句都記錄下來),或者>0(具體的閾值).該配置項是以秒為單位的,並且可以設置為小數.
4.log-queries-not-using-indexes
該配置項是為了記錄未使用到索引的sql語句.