❤1、sql基礎
1、寫sql:找出每個城市的最新一條記錄。
select city, max(time) from table group by city、
2、乙個學生表,乙個課程成績表,怎麼找出學生課程的最高分數
學生表(child):id ,student(姓名)
成績表(grade):id,grade,childid;
語句:select c.student,max(g.grade) from grade g,child c where c.id=g.childid group by c.id;
返回每個學生的最高成績
3、有一組合索引(a,b,c),會出現哪幾種查詢方式?tag:sql語句
組合索引最左原則,有a,ab,abc三種組合。
❤2、jdbc基礎
1、資料庫水平切分,垂直切分
3、資料庫兩種引擎
4、索引了解嘛,底層怎麼實現的,什麼時候會失效
5、問了資料庫的隔離級別
6、資料庫樂觀鎖和悲觀鎖
1、悲觀鎖,就是對資料的衝突採取一種悲觀的態度,也就是說假設資料肯定會衝突,所以在資料開始讀取的時候就把資料鎖定住。【資料鎖定:資料將暫時不會得到修改】
2、樂觀鎖,認為資料一般情況下不會造成衝突,所以在資料進行提交更新的時候,才會正式對資料的衝突與否進行檢測,如果發現衝突了,則讓使用者返回錯誤的資訊。讓使用者決定如何去做。
實現:一、悲觀鎖
1、排它鎖,當事務在運算元據時把這部分資料進行鎖定,直到操作完畢後再解鎖,其他事務操作才可操作該部分資料。這將防止其他程序讀取或修改表中的資料。
2、實現:大多數情況下依靠資料庫的鎖機制實現
一般使用 select …for update 對所選擇的資料進行加鎖處理,例如select * from account where name=」max」 for update, 這條sql 語句鎖定了account 表中所有符合檢索條件(name=」max」)的記錄。本次事務提交之前(事務提交時會釋放事務過程中的鎖),外界無法修改這些記錄。
二、樂觀鎖
1、如果有人在你之前更新了,你的更新應當是被拒絕的,可以讓使用者重新操作。
2、實現:大多數基於資料版本(version)記錄機制實現
具體可通過給表加乙個版本號或時間戳字段實現,當讀取資料時,將version欄位的值一同讀出,資料每更新一次,對此version值加一。當我們提交更新的時候,判斷當前版本資訊與第一次取出來的版本值大小,如果資料庫表當前版本號與第一次取出來的version值相等,則予以更新,否則認為是過期資料,拒絕更新,讓使用者重新操作。
8、講一下資料庫acid的特性?
9、mysql主從複製?
mysql要做到主從複製,其實依靠的是二進位制日誌,即:假設主伺服器叫a,從伺服器叫b;主從複製就是b跟著a學,a做什麼,b就做什麼。那麼b怎麼同步a的動作呢?現在a有乙個日誌功能,把自己所做的增刪改查的動作 全都記錄在日誌中,b只需要拿到這份日誌,照著日誌上面的動作施加到自己身上就可以了。這樣就實現了主從複製。
10、leftjoin和rightjoin的區別?
11、資料庫優化方法
13、說出資料連線池的工作機制是什麼?
15、jdbc中如何進行事務處理?
❤3、jdbc高階
1、jdbc的反射,反射都是什麼?
3、statement和preparedstatement有什麼區別?哪個效能更好?
JDBC程式設計步驟
jdbc常用介面和類 1.drivermanager jdbc驅動類,負責載入資料庫jar包,獲得資料庫的鏈結。2.connection 資料庫連線類,通過drivermanager載入資料庫之後,返回乙個連線物件 會話,用於訪問資料庫。3.statement 執行sql的介面,子類有prepare...
JDBC程式設計步驟
載入驅動 class.forname com.mysql.jdbc.driver 獲取資料庫的連線 connection conn drivermanager.getconnection url,user,pass 使用connection來建立乙個statement物件 statement stm...
JDBC程式設計(二)
什麼是持久化?持久化是將程式中的資料在瞬時狀態和持久狀態間轉換的機制 程式執行過程中產生的資料是瞬時狀態的資料 瞬時狀態 記憶體中有,資料庫中沒有 持久狀態 資料在資料庫中存在,永久的儲存下來了 將資料從程式中記錄到外界的媒介 檔案 資料庫等 上的過程就叫持久化的過程 持久化的實現方式 1 資料庫 ...