日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java常见面试题之SQL基础

發布時間:2023/12/20 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java常见面试题之SQL基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

SQL?基礎考核1、數據庫三大范式

2、varchar?和char?的區別?

3、drop、delete、truncate?區別?

4、UNION和?UNIONALL?的區別?

5、SOL語句執行的很慢的原因是什么?

6、SOL之連接查詢

7、SOL之聚合函數

8、SQL?Select?語句完整的執行順序:

9、數據庫鎖

10、MySQL?常用?SQL?查詢語句優化方法【必問】


SQL?基礎考核
1、數據庫三大范式

**第一范式**:確保每列保持原子性,數據表中的所有字段值都是不可分解的原子值。這是第一范式只有一張表 ,七個字段在業務中不可再拆分:| 訂單 id | 商品 id | 用戶 id | 商品名稱 | 商品數量 | 用戶地址 | 用戶電話 | | ------- | ------- | ------- | -------- | -------- | -------- | -------- | | 1 | 1 | 1 | Java | 1 | 杭州 | 110 | | 1 | 2 | 2 | C++ | 1 | 上海 | 120 | | 2 | 2 | 3 | C++ | 1 | 北京 | 114 |**第二范式**:確保表中的每列都和主鍵相關。第二范式分成 2 表 訂單明細表和用戶表 ,一張表只描述一個事件,第一范式中有兩件事,一個用戶,一個訂單。| 訂單 id | 商品 id | 用戶 id | 商品名稱 | 商品數量 | | ------- | ------- | ------- | -------- | -------- | | 1 | 1 | 1 | Java | 1 | | 1 | 2 | 2 | C++ | 1 | | 2 | 2 | 3 | C++ | 1 || 用戶 id | 用戶地址 | 用戶電話 | | ------- | -------- | -------- | | 1 | 杭州 | 110 | | 2 | 上海 | 120 | | 3 | 北京 | 114 |第三范式:確保每列都和主鍵列直接相關而不是間接相關。第三范式分成 3 表 繼續拆分訂單明細表,添加商品表,一張表中非主鍵字段只依賴主鍵,不傳遞依賴,商品名稱只依賴商品 ID,不依賴訂單 ID。| 訂單 id | 商品 id | 用戶 id | 商品數量 | | ------- | ------- | ------- | -------- | | 1 | 1 | 1 | 1 | | 1 | 2 | 2 | 1 | | 2 | 2 | 3 | 1 || 商品 id | 商品名稱 | | ------- | -------- | | 1 | C++ | | 2 | C++ | | 1 | 1 | | 1 | 2 | | 2 | 2 |最后提下,三大范式在實際中也不是必須嚴格遵循的,根據業務可以靈活調整,并不是一成不變的。

2、varchar?和char?的區別?

1. varchar 表示**變長**,char 表示長度**固定**。 2. 存儲容量不同,對于 char 來說,最多能存放的字符個數為 255。對于 varchar,最多能存放的字符個數是 65535。 3. 存儲速度不同,char 長度固定,存儲速度會比 varchar 快一些,但在空間上會占用額外的空間,屬于一種空間換時間的策略。而 varchar 空間利用率會高些,但存儲速度慢,屬于一種時間換空間的策略。

3、drop、delete、truncate?區別?

? drop:刪除表、不可恢復、速度快? delete:刪除表的數據、可恢復、速度慢? truncate:刪除表結構和數據、表還存在、不可恢復、速度較快

4、UNION和?UNIONALL?的區別?

1. 相同點:union 和 union all 的作用都是將**兩個結果集合并到一起**。 2. 不同點:**union** 會對結果**去重并排序**,union all 直接直接返回合并后的結果,**不去重也不進行排序**。union all 的性能比 union 性能好。

5、SOL語句執行的很慢的原因是什么?

1. 如果 SQL 語句只是偶爾執行很慢,可能是執行的時候遇到了鎖,也可能是 redo log 日志寫滿了,要將 redo log 中的數據同步到磁盤中去。 2. 如果 SQL 語句一直都很慢,可能是字段上沒有索引或者字段有索引但是沒用上索引。

6、SOL之連接查詢

1. 左連接(左外連接)以**左表為基準**進行查詢,左表數據會全部顯示出 來, 右表 如果和左表匹配 的數據則顯示相應字段的數據,如果不匹配,則顯示為NULL;2. 右連接(右外連接)以**右表為基準**進行查詢,右表數據會全部顯示出 來, 右表 如果和左表匹配的數據則顯示相應字段的數據,如果不匹配,則顯示為NULL;3. 全連接就是**兩表為基準**先以左表進行左外連接,然后以右表進行右外連接。4. 內連接:顯示表之間有連接匹配的所有行。內連接(交集)、外連接(并集)

7、SOL之聚合函數

? 聚合函數是對一組值進行計算并返回單一的值的函數,它經常與 select語句中的 group by 子句一同使用。1. avg():返回的是指定組中的平均值,空值被忽略。 2. count():返回的是指定組中的項目個數。 3. max():返回指定數據中的最大值。 4. min():返回指定數據中的最小值。 5. sum():返回指定數據的和,只能用于數字列,空值忽略。

8、SQL?Select?語句完整的執行順序:

select * from student where 班級=1班 group by sex having sex>'男'order by id? 查詢中用到的關鍵詞主要包含六個, 并且他們的順序依次為select--from--where--group by--having--order by其中 select 和 from 是必須的,其他關鍵詞是可選的, 這六個關鍵詞的執行順序如下:? from: 需要從哪個數據表檢索數據? where: 過濾表中數據的條件? group by: 如何將上面過濾出的數據分組算結果? having:和group by配合使用、分組后篩選? order by : 按照什么樣的順序來查看返回的數據

9、數據庫鎖

1. 行鎖:粒度最小的鎖,表示只針對當前操作的行進行加鎖; 2. 表鎖:粒度最大的鎖,表示當前的操作對整張表加鎖; 3. 頁鎖:粒度介于行級鎖和表級鎖中間的一種鎖,表示對頁進行加鎖。

10、MySQL?常用?SQL?查詢語句優化方法【必問】

**SQL優化:**- 定位要優化的SQL語句 - **分析SQL語句執行效率**( explain select * from emp where ename like '%A%';) - 給出SQL優化方案``` 1.頻繁出現在where 或者order by子句中的列,建索引 2.在查詢時,盡量避免在where子句中使用null值判斷 3.在查詢時,盡量避免在where子句中使用!=或者<>運算符 --- 索引引擎會使用全表掃描而不會使用索引 4.在查詢時,盡量避免在where子句中使用or運算符--- 索引引擎會使用全表掃描而不會使用索引 5.在查詢時,in語句要慎用,可以exist替換; 6.在查詢時,不建議用'%key%'的格式進行模糊查詢--- 索引引擎會使用全表掃描而不會使用索引 7.在查詢時,對連續的值,能使用 between就不要用in 8.在查詢時,盡量避免在where子句中對使用表達式或使用函數-- 索引引擎會使用全表掃描而不會使用索引 9.避免頻繁的創建和刪除臨時表,以減少對系統表資源的消耗 10.只含有數值的值盡量不要設為字符型; 11.盡量不要使用*,而用字段名替換 12.盡量避免大事務操作(運時間過久,長時間不提交的事務)

總結

以上是生活随笔為你收集整理的Java常见面试题之SQL基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。