java初級面試題(sql方面)
下面我給大家帶來一些資料庫知識點和麵試題。
下列的連結是我看到非常好的java基礎面試題的博文推薦給大家。
關係資料庫這一塊是非常重要的,對於我們初級程式設計師,資料庫考察的很大一部分知識其實就是SQL語言的掌握了,至於使用的是mysql、sqlserver、oracle等其中的哪種關係資料庫都差不多。下面簡單做一個介紹吧!
SQL語言包括四類種主要程式設計語言類別的語句:
資料定義語言(DDL),例如:CREATE、DROP、ALTER等語句。
資料操作語言(DML), 例如:INSERT(插入)、UPDATE(修改)、DELETE(刪除)語句。
資料控制語言(DCL), 例如:GRANT、REVOKE等語句。
事物控制語言(TCL), 例如:COMMIT、ROLLBACK等語句。
絕大多數的操作都是使用DDL和DML。實用中需要熟練的使用join,這個比較重要。例如一些常用的函式decode()、NVL()等等。大家找找資料多動手寫寫sql就會了。如何sql優化這類比較深入的知識,我覺得除了掌握理論知識外,還需要實際工作中積累,在工作中才會有真實的資料來測試。大家應該瞭解in和exists的區別,exists在查詢時會使用到索引,所以大表查詢時儘量使用exists替代in。但是沒有實際的測試資料是很難形成對比的。我公司用的oracle,具體花多少錢買了多好的我不知道,資料庫中資料量也不小,下面是我測試的結果。
Sfcusn、Sfcmo表的資料量(表結構就不能放出來了)
1、測試一(子查詢為小表)
1)All rows模式下查詢結果
在進行All rows優化查詢所花費的時間是差不多的。
2)first rows模式下查詢結果
在first rows優化模式下,exists的查詢用時短。
2、測試2(子查詢為大表)
1)All rows下查詢結果
可以看出exitst用時明顯少。
2)first rows下查詢結果
同樣exists查詢用時少。
本來想說下索引的,但感覺知識點太大了,就不在本章說了。(提一嘴吧)建適當的索引有利於查詢的速度,經常作為查詢條件的欄位應該優先建立索引。
下面是關於sql的一些筆試題,相信大家也可以找到更多的例項來練習(建議多練習一些基礎)。
如上圖,新建一張表xsda,寫出sql語句
create table xsda
(
Xh char(10) not null unique,
Xm char(8),
csny datetime,
Gz decimal(6,1),
Zy char(10)
);
1.在xsda表中插入一條記錄(2000jsj008,李平)
INSERT INTO Xsda(Xh, Xm) VALUES('2000jsj008','李平');
2.把xsda表中80-01-01前出生的人的工資增加20%
UPDATE Xsda SET gz = gz*1.2 WHERE csny > '80-01-01';
3.查詢xsda表中不同專業的人數
SELECT Zy, COUNT(Xh) FORM Xsda WHERE GROUP BY Zy;
4.假如另外還有一個學生成績表xscj(xh,kch,kccj), xh,kch,kccj分別指學號、課程號、成績, 要求查詢姓名為李平的同學的各門課程的成績。
SELECT A.kch, A.kccj FROM Xscj A, Xsda B WHERE A.xh = B.xh AND B.xm = '李平';
5. xsda、xscj表同上,查詢選修了kch為Yy2的學生的xh和Xm
SELECT B.xh, B.xm FROM Xscj A, Xsda B WHERE A.xh = B.xh AND A.kch = 'Yy2';
下面是我收集的一些總結
1.資料庫的實質:硬碟上儲存資料的檔案
2.注意Oracle與Mysql中的null值。
在mysql中,null與''是不相同的,''會插入一個空字串;在oracle中,null與''是相同的。
3.儘量不要使用like查詢。
4.用 EXISTS 替代 IN、用 NOT EXISTS 替代 NOT IN(這個已經有驗證了)
5.用 >= 替代 > 高效,前者定位快掃描少。