22面試數(shù)據(jù)庫(kù)相關(guān)技術(shù)匯總_第1頁(yè)
22面試數(shù)據(jù)庫(kù)相關(guān)技術(shù)匯總_第2頁(yè)
22面試數(shù)據(jù)庫(kù)相關(guān)技術(shù)匯總_第3頁(yè)
22面試數(shù)據(jù)庫(kù)相關(guān)技術(shù)匯總_第4頁(yè)
22面試數(shù)據(jù)庫(kù)相關(guān)技術(shù)匯總_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1 分頁(yè)怎么實(shí)現(xiàn)的分頁(yè)使用 limit :比如:select 列名 from 表名 limit 10,10;Oracle 分頁(yè)使用rownum :比如:selecta.* from( select rownum rw,列名 from表 where 條件 ) awhere a.rwx and a.rw=y;2 用沒用過索引,分類3 為什么索引會(huì)提高效率過程45游標(biāo)會(huì)不會(huì)用1.有一個(gè) user 表列有 name、province、age、city 以下 3 道題都是只能用一條 sql 語(yǔ)句查詢出問:(1)總共有多少人select count(0) 人數(shù) from user;(2)山東省各城市平均s

2、elect city , avg(age) from user where province=山東神 group by city ;(3)廣州平均大于 22 歲的城市select city from userwhere city like 廣州% group by city having avg(age)22;1.oracle、分頁(yè)?分頁(yè)使用 limit :比如:select 列名 from 表名 limit 10,10;Oracle 分頁(yè)使用rownum :比如:selecta.* from( select rownum rw,列名 from 表 where 條件 ) awhere a.rw

3、x and a.rw=y;2.oracle 的分析函數(shù)?分析函數(shù)1. 顧名思義,分析函數(shù)是在主查詢結(jié)果的基礎(chǔ)上進(jìn)行一定的分析,如分部門匯總,分部門求均值等等。數(shù)據(jù)窗口1. Oracle 分析函數(shù)建立在所謂的數(shù)據(jù)窗口之上,數(shù)據(jù)窗口可以理解為一個(gè)數(shù)據(jù)集合。主查詢的數(shù)據(jù)可以按照不同的標(biāo)準(zhǔn)分割成不同的數(shù)據(jù)集。比如 partition BYmanager_id按照 manager_id 將主查詢的數(shù)據(jù)分成 N(N 代表有多少個(gè)不同的 Manager_id)個(gè)不同的數(shù)據(jù)窗口。分析函數(shù)和 GROUP BY 的區(qū)別和聯(lián)系1. 分析函數(shù)的功能大部分都可以通過 GROUP BY 來聚合完成2. 分析函數(shù)查詢出來的

4、行數(shù)是由主查詢決定的,GROUP BY 的行數(shù)結(jié)果是由GROUP BY后面的集合的唯一性組合決定的,通常比主查詢的結(jié)果行數(shù)少。常用的一些分析函數(shù)有:sum()avg()count()max()min()根據(jù)某列連續(xù)累計(jì)求和:SUM(列) ovARTITION BY 列)根據(jù)某列得到:列order by 列row_number() ovartition bydesc)3.分組排序降序 升序分組:group by排序:order by降序:desc升序:asc和 oracle 的區(qū)別? Oracle 使用 rownum 來實(shí)現(xiàn)分頁(yè),使用 limit 實(shí)現(xiàn)分頁(yè) Oracle 沒有主鍵自增特性,可以使

5、用調(diào)用序列的方式來實(shí)現(xiàn)主鍵自增;可以在主鍵列之后添加 auto_increment 設(shè)置自增特性 Oracle 有表空間的概念,沒有表空間 Oracle 的分組函數(shù)中 select 之后不能直接寫組的其他列;如果沒有聚組函數(shù)則可以寫其他列 Oracle 的表存放在用戶(其實(shí)是 schema 對(duì)象)所屬的表空間的數(shù)據(jù)文件中,的表存放在某個(gè) database 中(一個(gè) root 用戶下可以有很多 database) Oracle 中的一些函數(shù)和也不一樣 Oracle 中的字符類型可以使用 varchar2不能使用該類型1.數(shù)據(jù)庫(kù)分頁(yè)?分頁(yè)使用 limit :比如:select 列名 from 表名

6、 limit 10,10;Oracle 分頁(yè)使用rownum :比如:selecta.* from( select rownum rw,列名 from 表 where條件 ) awhere a.rwx and a.rw=y;2.給你 100 萬(wàn)條數(shù)據(jù),你想查一條數(shù)據(jù)怎么查?可以在表中查詢的列上創(chuàng)建索引:其次可以使用分區(qū)表來存放數(shù)據(jù),按照數(shù)據(jù)量劃分,將每 10 萬(wàn)條數(shù)據(jù)量放入不同的表空間中,這樣在查詢具體的某條數(shù)據(jù)時(shí),內(nèi)容,可以使用 partition 關(guān)鍵字指定查詢哪個(gè)分區(qū)下的可以極大提高查詢效率。1.oracle 里面的 sql 語(yǔ)句優(yōu)化1 可以使用索引2 SQL 語(yǔ)句如果是多表關(guān)聯(lián)可以將關(guān)

7、聯(lián)條件寫在左側(cè),過濾條件盡量寫在右側(cè)3 避免在子查詢語(yǔ)句中使用 in some any all 等關(guān)鍵字可以使用多表關(guān)聯(lián)替代4 避免使用 like % 寫法,這種寫法或造成全盤掃描like 之后是 字符%如果必須是 like %字符% 可以使用 instr 函數(shù)替代where ename like %E%;where instr(ename,E)0;5 復(fù)雜的業(yè)務(wù)功能可以使用過程(如果對(duì)過程熟悉的話回答)38.表 score: 用一條 SQL 語(yǔ)句 查詢每門課程都大于 80 分的學(xué)生name kecheng fenshu語(yǔ)文81數(shù)學(xué)75語(yǔ)文76.準(zhǔn)備 SQL:createtablescore(

8、idprimarykeyauto_increment,namevarchar(20),subjectvarchar(20),score);直接分組求最小科目分?jǐn)?shù)大于 80:select name from score group by name having min(fenshu)80 ;39.基于下面的表結(jié)構(gòu)回答問題Table EMPLOYEES Structure:EMPLOYEE_ID NUMBrimary Key,_NAME VARCHAR2(25),LAST_NAME VARCHAR2(25),Salary number(8,2),HireDate DATE,Departmentid

9、 number(2)Table Departments Structure:Departmentid number(2) Primary Key,DepartmentName VARCHAR2(25)(1)基于上述 EMPLOYEES 表寫出查詢:寫出雇傭日期在今年的,或者工資在1000,3000之間的,或者員工以O(shè)bama打頭的(last_name)所有員工,寫出這些員工的全部個(gè)人信息。select EMPLOYEE_ID,_NAME,LAST_NAME,Salary,HireDate,Departmentidfrom EMPLOYEESwhere to_char(HireDate,yyyy

10、 )=to_char(sysdate,yyyy)or (sal betn 1000 and 3000)or LAST_NAME like Obama%;(2)基于上述 EMPLOYEES 表寫出查詢:查詢部門平均工資大于 1800 元的部門的所有員工,列出這些員工的全部個(gè)人信息select EMPLOYEE_ID,_NAME,LAST_NAME,Salary,HireDate,Departmentidfrom EMPLOYEESwhere Departmentid in(select Departmentidfrom EMPLOYEESgroup by Departmentidhaving a

11、vg(sal)1800);(3)基于上述 EMPLOYEES 表寫出查詢:查出個(gè)人工資高于其所在部門平均工資的員工,列出這些員工的全部個(gè)人信息及該員工高處部門平均工資百分比selectEMPLOYEE_ID,_NAME,LAST_NAME,Salary,HireDate,Departmentid,Salary/avgDeptSal*100|% 百分比f(wàn)rom (select e.*,(select avg(Salary ) from EMPLOYEES where Departmentide.Departmentid) avgDeptSal=from EMPLOYEES e) where Sa

12、laryavgDeptSal;select e.*from employees e,(select departmentid ,avg(salary) salfrom employees group by departmentid ) awhere e.departmentid = a.departmentid and e.sala.sal;40.根據(jù)題目信息回答問題設(shè)某工商業(yè)數(shù)據(jù)庫(kù) 3 個(gè)實(shí)體集:一是“商品”實(shí)體集,屬性有商品號(hào)、商品名、規(guī)格、單價(jià)等二是“商店”實(shí)體集,屬性有商店號(hào)、商店名、地址等三是“供應(yīng)商”實(shí)體集,屬性有供應(yīng)商、供應(yīng)商名、地址等供應(yīng)商與商品之間存在“供應(yīng)”關(guān)系,每個(gè)供應(yīng)商

13、可以供應(yīng)多向多個(gè)供應(yīng)商訂購(gòu),品,每種商品可每個(gè)供應(yīng)商供應(yīng)每種商品有個(gè)月供應(yīng)量;商店與商品之間存在“銷售”聯(lián)系,每個(gè)商店可銷售多種商品,每種商品可在多個(gè)商店銷售,每個(gè)商店銷售每種商品有個(gè)月計(jì)劃數(shù)(1)試畫出 ER 圖,并在圖上注明屬性、聯(lián)系的類型(2)將 ER 圖轉(zhuǎn)換成關(guān)系模式集,并每個(gè)關(guān)系模式的主鍵和外鍵商品(商品號(hào),商品名,規(guī)格,單價(jià))供應(yīng)商(供應(yīng)商,供應(yīng)商名,地址)供應(yīng)關(guān)系(供應(yīng)商,商品號(hào),數(shù)量)商店(商店,商店名,地址)銷售關(guān)系(商品,商品號(hào),計(jì)劃數(shù))* 關(guān)系模式集與 ER 實(shí)體圖之間的轉(zhuǎn)換,就是構(gòu)建底層數(shù)據(jù)庫(kù)的基礎(chǔ)1.過程了解多少?寫過嗎?過程 procedure:在服務(wù)器端,能夠被多

14、個(gè)程序調(diào)用的一段 SQL 語(yǔ)句塊。簡(jiǎn)單來說就是事先用數(shù)據(jù)庫(kù)語(yǔ)言寫好的一段功能,能夠像函數(shù)一樣被程序調(diào)用,但是過程本身沒有返回值,是通過返回參數(shù)的形式返回?cái)?shù)據(jù)。需要先用工具(Oracle 用PLSQLDeveloper儲(chǔ)過程,用 Navicat)寫好某個(gè)特定功能的存JDBC 可以使用 CallableSement 調(diào)用過程。2.貴公司的數(shù)據(jù)庫(kù)用的是什么?Oracle 和3.數(shù)據(jù)庫(kù)和 oracle 分頁(yè)分頁(yè)使用 limit :比如:select 列名 from 表名 limit 10,10;Oracle 分頁(yè)使用rownum :比如:selecta.* from( select rownum rw

15、,列名 from 表 where條件 ) awhere a.rwx and a.rw Oracle 使用 rownum 來實(shí)現(xiàn)分頁(yè),使用 limit 實(shí)現(xiàn)分頁(yè) Oracle 沒有主鍵自增特性,可以使用調(diào)用序列的方式來實(shí)現(xiàn)主鍵自增;可以在主鍵列之后添加 auto_increment 設(shè)置自增特性 Oracle 有表空間的概念,沒有表空間 Oracle 的分組函數(shù)中 select 之后不能直接寫組的其他列;如果沒有聚組函數(shù)則可以寫其他列 Oracle 的表存放在用戶(其實(shí)是 schema 對(duì)象)所屬的表空間的數(shù)據(jù)文件中,的表存放在某個(gè) database 中(一個(gè) root 用戶下可以有很多 dat

16、abase) Oracle 中的一些函數(shù)和也不一樣 Oracle 中的字符類型可以使用 varchar2不能使用該類型1:drop 和 truncate 的區(qū)別?drop 是刪除表,不會(huì)表原先占有的內(nèi)存空間;truncate 是截?cái)啾?,能夠表中?shù)據(jù)所占有的內(nèi)存空間,保留表結(jié)構(gòu);如果使用 drop table 表名 purge;語(yǔ)句則能夠直接表占有的內(nèi)存空間。2:一條 SQL 怎么做 update or insert?Oracle 中,要實(shí)現(xiàn) update/insert 功能,要用到Merge能),其語(yǔ)法如下:o 來實(shí)現(xiàn)(Oracle 9i 引入的功O 表名 別名 1MERGEUSING (表|

17、視圖|查詢語(yǔ)句) 別名 2ON (關(guān)聯(lián)關(guān)系)WHEN MATCHED THENUPDATE 表名SET col1 = col_val1,col2 = col_val2WHEN NOT MATCHED THENINSERT (column_list) VALUES (column_values);有一個(gè)表 T,有兩個(gè)字段 a、b,想在表 T 中做 Insert/Update,如果條件滿足,則更新 T。中 b 的值,否則在 T 中一條MERGEO T T1USING (SELECT 1001 AS a,2 AS b FROM dual) T2ON ( T1.a=T2.a)WHEN MATCHED

18、THENUPDATE SET T1.b = T2.bWHEN NOT MATCHED THENINSERT (a,b) VALUES(T2.a,T2.b);3:說說數(shù)據(jù)庫(kù)三大范式是什么?第一范式:數(shù)據(jù)表中的字段不可再分假設(shè)有一三個(gè)字段。但是又可以拆分為 固users:,定,號(hào),家庭住址等,如果按照之前的設(shè)計(jì),填寫家庭住址登),這個(gè)列上的數(shù)據(jù)可能會(huì)很復(fù)雜(既可以填又可以這種表的設(shè)計(jì)就不符合第一范式的要求。第一范式是數(shù)據(jù)庫(kù)設(shè)計(jì)必須遵循的原則!第二范式:在第一范式的基礎(chǔ)上, 需要確保數(shù)據(jù)庫(kù)表中的每一列都和主鍵相關(guān),而不能只與主鍵的某一部分相關(guān)(主要針對(duì)聯(lián)合主鍵而言)假設(shè)有一張訂單表:訂單,商品,商品

19、名稱,單價(jià),數(shù)量,下單時(shí)間.分析這,訂單和商品可以設(shè)計(jì)成一個(gè)聯(lián)合主鍵(一個(gè)訂單可以有多個(gè)商品),但是表中的商品名稱和單價(jià)跟訂單沒有任何關(guān)系,只跟商品有關(guān),下單時(shí)間跟商品信息也沒有關(guān)系,而是跟訂單有關(guān)。則可以將商品的信息單獨(dú)設(shè)計(jì)成單獨(dú)的商品表,將訂單信息抽象成獨(dú)立的表,而訂單跟商品又可以是一個(gè)關(guān)聯(lián)的橋表??梢孕薷臑椋河唵伪恚?訂單,下單時(shí)間.商品表: 商品,商品名稱,單價(jià).商品訂單表:訂單,商品,數(shù)量這樣在每個(gè)表中的字段跟主鍵都有唯一的關(guān)系(商品訂單表的數(shù)量依賴于訂單和商品!)第三范式: 確保每列都和主鍵列直接相關(guān),而不是間接相關(guān)假設(shè)有員工表和部門表,員工表中有一個(gè)列為部門列對(duì)應(yīng),列,能夠跟部門

20、表中的部門那么就不能在員工表中再設(shè)計(jì)一些部門信息的列(比如在員工表中添加部門名部門地點(diǎn)登),這就是第三范式的要求!1.當(dāng) JDBC 執(zhí)行失敗時(shí)往往需要回滾操作,請(qǐng)以 user(id number(11),name varchar2(20)為例,包含 insert 語(yǔ)句的 Java 代碼用戶表示出現(xiàn)異常時(shí)的回滾動(dòng)作publicaddUser(User us)Connection conn = null;Sement se = null;tryClass.forName(oracle.jdbc.driver.OracleDriver);conn = DriverManager.getConnect

21、ion(jdbc:oracle:thinlocalhost:1521:orcl,scott,tiger);mit(false);/ 開啟事務(wù)/需要 user_seq 系列對(duì)象i = se.executeUpdate(inserto user(id,name) values(user_seq.nextval,+us.getName()+);if(i=1)mit();return i;catch(Exception e)e.prStackTrace();tryif(conn!=null) conn.rollback();catch(Exception ec)finallytryif(se!=nul

22、l) se.close();catch(Exception ec)tryif(conn!=null) conn.close();catch(Exception ec)2.請(qǐng)分別寫出 Oracle 和限制返回十條的查詢語(yǔ)句Oracle:select 列名 from 表名 where rownum開始位置 and a.rw=(開始位置+10);*實(shí)際是分頁(yè)的用法:select 列名 from 表名 limit 10;3.寫出創(chuàng)建 Oracle JDBC 連接的過程public sic Connection getConnection()Class.forName(oracle.jdbc.drive

23、r.OracleDriver);conn = DriverManager.getConnection(jdbc:oracle:thinlocalhost:1521:orcl,scott,tiger);return conn;4.按部分分組,按創(chuàng)建時(shí)間反向排序 user(標(biāo)識(shí),部門,創(chuàng)建時(shí)間)查詢 SQL 的語(yǔ)句select 部門,wm_concat(時(shí)間) desc ;) 部門中員工from user group by 部門 order by min(創(chuàng)建6.oracle 的過程過程 procedure:在服務(wù)器端,能夠被多個(gè)程序調(diào)用的一段 SQL 語(yǔ)句塊。簡(jiǎn)單來說就是事先用數(shù)據(jù)庫(kù)語(yǔ)言寫好的一

24、段功能,能夠像函數(shù)一樣被程序調(diào)用,但是過程本身沒有返回值,是通過返回參數(shù)的形式返回?cái)?shù)據(jù)。7. 如何調(diào)用過程?JDBC 中使用 CallableSement 執(zhí)行器對(duì)象,通過 execute(call過程名(?,?)的方式來調(diào)用;PL/SQL Developer 工具中可以通過declarebegin過程名(參數(shù));end;的方式調(diào)用;8. 游標(biāo)對(duì)象怎么用?游標(biāo)是過程體中用來指代一個(gè) ResultSet 查詢結(jié)果的,JDBC 中可以用 ResultSet 表示一個(gè)結(jié)果集,但是過程用的是curso(r游標(biāo))對(duì)象來表示。過程如果需要遍歷/返回一個(gè)查詢結(jié)果,就需要使用游標(biāo)對(duì)象。8.【數(shù)據(jù)庫(kù)】語(yǔ)文 10

25、0 ,數(shù)學(xué) 80,英語(yǔ) 88,語(yǔ)文 72.1.設(shè)計(jì)一,寫出創(chuàng)建表的 sql 語(yǔ)句create table sc(name varchar(16),subject varchar(16),score number(3);2.查詢出每科成績(jī)最高的學(xué)生select sc.* from sc ,(select subject,max(score) maxsc from sc group by subject ) awhere sc.subjeubject and sc.score = a.maxsc;*內(nèi)層嵌套按照學(xué)科分組查詢學(xué)科及對(duì)應(yīng)學(xué)科最高的工資,外層級(jí)聯(lián) sc 表,如果學(xué)科和成績(jī)都跟內(nèi)存查詢相同

26、,則取出該同學(xué)信息3.查詢出平均分在 80 分以上的學(xué)生select name from scgroup by name having avg(score)80;jdbc 怎樣執(zhí)行 sql 語(yǔ)句?1 加載驅(qū)動(dòng)2 通過驅(qū)動(dòng)管理對(duì)象獲得連接3 獲得執(zhí)行器對(duì)象編寫 SQL 語(yǔ)句,JAVA 中用 String 類型表示 SQL4 通過執(zhí)行器執(zhí)行 SQL 語(yǔ)句常用的執(zhí)行 SQL 語(yǔ)句的方法有:(*執(zhí)行 select 語(yǔ)句時(shí)返回 true,因?yàn)?select 能夠返回一execute()個(gè)查詢結(jié)果其令開頭的語(yǔ)句返回false)executeUpdate()executeQuery()ResultSet資源

27、51.索過嗎 ? 在什么情況下會(huì)導(dǎo)致索引失效 ?用索引還需要注意哪些問題呢?索引分為幾種 ?用過;如果有索引的列空值比較多、重復(fù)數(shù)據(jù)比較多的話索引不起作用。通常索在查詢較多而增刪改較少的表,因?yàn)樗饕龝?huì)降低增刪改的效率。常用的索引有普通索引、唯一性索引、位圖索引,如果某個(gè)列上經(jīng)常使用函數(shù),還可以建一個(gè)函數(shù)索引。2.like 用過嗎 ?怎么用的?用過;like 常用來實(shí)現(xiàn)模糊查詢,與%和_匹配使用,如果需要匹配特殊字符,則需要使用esc逃離符。3.union 用過嗎?能聯(lián)合字段嗎? 如果聯(lián)合的信息有空的會(huì)怎樣(對(duì)應(yīng)的位置是 null)?union 表示聯(lián)合,將多個(gè)查詢結(jié)果聯(lián)為一個(gè)查詢結(jié)果,并且能夠

28、去除重復(fù)數(shù)據(jù)4.sql 語(yǔ)句中怎么判斷一個(gè)字段是不是空 ?與空判斷使用 is null或者 is not null5.左外連接,右外連接,說一下?left join 左外連接*from 原表 join 新表 on 關(guān)聯(lián)關(guān)系原表和新表能夠關(guān)聯(lián)的數(shù)據(jù)+無法通過關(guān)聯(lián)關(guān)系關(guān)聯(lián)到原表的數(shù)據(jù)right join 右外連接原表和新表能夠關(guān)聯(lián)的數(shù)據(jù)+無法通過關(guān)聯(lián)關(guān)系關(guān)聯(lián)到新表的數(shù)據(jù)6.樹形查詢是什么?用過嗎?樹形查詢相當(dāng)于遞歸操作,需要使用 connect by 來實(shí)現(xiàn),簡(jiǎn)單來說就是通過某個(gè)作為根節(jié)點(diǎn),一次查找所屬的子節(jié)點(diǎn)。7.在數(shù)據(jù)庫(kù)中,例一個(gè)表,數(shù)據(jù)是 1000 萬(wàn)條,怎樣將其中的 500 萬(wàn)條放在另一個(gè)

29、表中,且剩下的那個(gè)表也是 500 萬(wàn)條(實(shí)際意思就是怎樣把一個(gè)表中的數(shù)據(jù)的分為兩個(gè)表)分區(qū)表的使用:如果一中的數(shù)據(jù)量特別大,通??梢圆捎梅謪^(qū)表的方式來存放數(shù)據(jù);首先建立不同的表空間 A 和 B(不同的表空間指向不同的數(shù)據(jù)文件),在創(chuàng)建表是使用 partition by range(范圍分區(qū)的意思),將前 500 萬(wàn)條數(shù)據(jù)指定存放在表空間A 中,將后超出 500 萬(wàn)條之后的數(shù)據(jù)存放在表空間B 中,以后查詢數(shù)據(jù)如果查詢的范圍500 萬(wàn)條中,可以指定只查詢 A 中的內(nèi)容,反之則只查詢B 中的內(nèi)容。8.數(shù)據(jù)庫(kù)登錄時(shí),一般用戶和管理員用戶的區(qū)別是?一般用戶剛開始創(chuàng)建沒限需要,管理員是一個(gè) DBA 角色,

30、權(quán)限很大。9.怎樣對(duì)一個(gè)用戶?其關(guān)鍵字是什么?Oracle 權(quán)限分為系統(tǒng)權(quán)限和對(duì)象權(quán)限:系統(tǒng)權(quán)限使用grant 權(quán)限to 用戶;對(duì)象權(quán)限使用grant 權(quán)限on 資源 to 用戶;1.一句 sql 備份數(shù)據(jù)庫(kù)中的一(SQLServer,Oracle)備份某,再次理解為備份表中數(shù)據(jù),之前提到過如何備份數(shù)據(jù):創(chuàng)建表同時(shí)數(shù)據(jù):create table 新表名(列名) aect 列名 from 舊表where 條件;如果表已存在,可以向已存在的表中數(shù)據(jù):o 表名(列名) select 列名 from 舊表 where 條件;insert2.Oracle 怎么實(shí)現(xiàn)自動(dòng)增長(zhǎng)的Oracle 通過調(diào)用序列對(duì)象

31、來實(shí)現(xiàn)主鍵自增:在做新增操作時(shí),主鍵列上的值可以使用序列.nextval 來得到一個(gè)新生成的值。3.group by 不能和誰(shuí)連用問題出錯(cuò)! 估計(jì)面試官是理解成 group by 不能和 order by 連用這個(gè)老問題。但事實(shí)是group by 和 order by 是可以連用的,只是要注意 order by 之后排序的列是有要求的,必須是分組列或者聚組函數(shù)計(jì)算后的其他列!4.左外接 右外接left join 左外連接*from 原表 join 新表 on 關(guān)聯(lián)關(guān)系原表和新表能夠關(guān)聯(lián)的數(shù)據(jù)+無法通過關(guān)聯(lián)關(guān)系關(guān)聯(lián)到原表的數(shù)據(jù)right join 右外連接原表和新表能夠關(guān)聯(lián)的數(shù)據(jù)+無法通過關(guān)聯(lián)關(guān)

32、系關(guān)聯(lián)到新表的數(shù)據(jù)1.oracle 中分頁(yè)用的什么?Oracle 使用 rownum 來實(shí)現(xiàn)分頁(yè)2.rownum 是從 0 還是 1 開始的 ?從 1 開始3.一個(gè)主鍵自增的數(shù)據(jù)庫(kù),怎么拿到想要的 id?JDBC:Sement 執(zhí)行器對(duì)象能夠通過 getGeneratedKeys()這個(gè)方法來獲得自增列的結(jié)果集(返回 ResultSet),定位到這個(gè)返回的結(jié)果集的第一條數(shù)據(jù)(調(diào)用 next() 方法),通過 get(1)這個(gè)方法能得到一個(gè)類型的自增主鍵值。過程用過嗎?過程 關(guān)鍵字是 procedure:在服務(wù)器端,能夠被多個(gè)程序調(diào)用的一段 SQL 語(yǔ)句塊。簡(jiǎn)單來說就是事先用數(shù)據(jù)庫(kù)語(yǔ)言寫好的一段

33、功能,能夠像函數(shù)一樣被程序調(diào)用,但是過程本身沒有返回值,是通過返回參數(shù)的形式返回?cái)?shù)據(jù)。2.sql 優(yōu)化1 可以使用索引2 SQL 語(yǔ)句如果是多表關(guān)聯(lián)可以將關(guān)聯(lián)條件寫在左側(cè),過濾條件盡量寫在右側(cè)3 避免在子查詢語(yǔ)句中使用 in some any all 等關(guān)鍵字可以使用多表關(guān)聯(lián)替代4 避免使用 like % 寫法,這種寫法或造成全盤掃描like 之后是 字符%如果必須是 like %字符% 可以使用 instr 函數(shù)替代where ename like %E%;where instr(ename,E)0;5 復(fù)雜的業(yè)務(wù)功能可以使用過程(如果對(duì)過程熟悉的話回答)1: 數(shù)據(jù)量比較大的情況下,怎么提高

34、效率問題(其實(shí)他想知道 sql 優(yōu)化問題)1 可以使用索引2 SQL 語(yǔ)句如果是多表關(guān)聯(lián)可以將關(guān)聯(lián)條件寫在左側(cè),過濾條件盡量寫在右側(cè)3 避免在子查詢語(yǔ)句中使用 in some any all 等關(guān)鍵字可以使用多表關(guān)聯(lián)替代4 避免使用 like % 寫法,這種寫法或造成全盤掃描like 之后是 字符%如果必須是 like %字符% 可以使用 instr 函數(shù)替代where ename like %E%;where instr(ename,E)0;5 復(fù)雜的業(yè)務(wù)功能可以使用過程(如果對(duì)過程熟悉的話回答)2: oracle 中用過哪些與時(shí)間有關(guān)的函數(shù)?怎么查詢每個(gè)月第一天的數(shù)據(jù)?add_months

35、(d1,i2)在 d1 時(shí)間上增減 i2 個(gè)月份months_betn(d1,d2) 計(jì)算兩個(gè)日期之間的月份last_day(d1) 得到給定日期所在月份的最后一天是幾號(hào)next_day(d1,周期)得到給定日期 d1 之后指定的周期是哪天 周期可以是:日一二.六查詢給定日期所在月份的第一天,可以使用trunc(d1,mm) 得到,trunc 能夠精確日期,第二個(gè)參數(shù)mm表示精確到當(dāng)前的月份,天數(shù)默認(rèn)為 1第一天也就是該月3: oracle 中還用過哪些函數(shù)?length()substr()upper()lower()initcap()to_char()to_date()max() min()

36、 sum()avg()count()wm_concat()過程會(huì)么?具體說一下4:過程 procedure:在服務(wù)器端,能夠被多個(gè)程序調(diào)用的一段 SQL 語(yǔ)句塊。簡(jiǎn)單來說就是事先用數(shù)據(jù)庫(kù)語(yǔ)言寫好的一段功能,能夠像函數(shù)一樣被程序調(diào)用,但是過程本身沒有返回值,是通過返回參數(shù)的形式返回?cái)?shù)據(jù)。5: 數(shù)據(jù)庫(kù)用過哪些?Oracle6: 怎么加載的驅(qū)動(dòng)?JDBC 中有三種方式:/最常用1Class.forName(com.jdbc.Driver);2new com.jdbc.Driver();3System.setProperty(jdbc.drivers,com.jdbc.Driver);7: Oracl

37、e 分頁(yè)用什么?rownum 和查詢語(yǔ)句嵌套的形式比如:selecta.* from( select rownum rw,列名 from 表 where 條件 ) awhere a.rwx and a.rw=y;8: Oracle - 如果一有 id name age三個(gè)字段 怎么給他們用 age 分組,id 排序和計(jì)算人數(shù)?select count(id) 人數(shù) from 表名 group by age order by max(id);1.一個(gè) table 如何得到第二行第三列的值?在 JDBC 中,可以通過 ResultSet 對(duì)象得到:ResultSet rs 對(duì)象中的方法 absol

38、ute(2)能夠定位到第二條數(shù)據(jù),rs.getObject(3)可以得到第 2 條第 3 列的值.1.oracle 和端oracle:1521: 33062.觸發(fā)器過程過程 procedure:在服務(wù)器端,能夠被多個(gè)程序調(diào)用的一段 SQL 語(yǔ)句塊。簡(jiǎn)單來說就是事先用數(shù)據(jù)庫(kù)語(yǔ)言寫好的一段功能,能夠像函數(shù)一樣被程序調(diào)用,但是過程本身沒有返回值,是通過返回參數(shù)的形式返回?cái)?shù)據(jù)。觸發(fā)器 trigger:一種特殊的過程,不需要調(diào)用也沒有參數(shù),在滿足條件時(shí)觸發(fā):觸發(fā)條件:在對(duì)某個(gè)表做 insert 、 update 或 delete 操作之前或之后(取決于如何實(shí)現(xiàn))自動(dòng)執(zhí)行6.你在之前的項(xiàng)目中有寫過第調(diào)用的

39、接口嗎這個(gè)為什么在 CoreJava 里?這里的接口不是erface!強(qiáng)烈 BS!1.數(shù)據(jù)庫(kù)優(yōu)化對(duì)于 Oracle 數(shù)據(jù)庫(kù)可以使用表空間,將項(xiàng)目中的數(shù)據(jù)庫(kù)用戶所有的表存放在一個(gè)單獨(dú)的表空間對(duì)應(yīng)的數(shù)據(jù)文件中,能夠避免多個(gè)用戶而且方便數(shù)據(jù)備份。同一數(shù)據(jù)文件帶來的資源爭(zhēng)用問題;可以使用為一些表創(chuàng)建適當(dāng)?shù)囊晥D,在一些統(tǒng)計(jì)功能中 SQL 可能比較固定而且復(fù)雜,視圖可以將查詢語(yǔ)句保存起來以供下次執(zhí)行而無需編譯,還能某些敏感字段保護(hù)隱私。使用執(zhí)行效率。過程完成復(fù)雜操作,能夠避免 JAVA 與數(shù)據(jù)庫(kù)之間的多次交互從而提高程序?qū)τ诮?jīng)常的表中的字段可以適當(dāng)創(chuàng)建索引(適合用在查詢多增刪改少的表中)。2.過程 視圖過

40、程 procedure:在服務(wù)器端,能夠被多個(gè)程序調(diào)用的一段 SQL 語(yǔ)句塊。簡(jiǎn)單來說就是事先用數(shù)據(jù)庫(kù)語(yǔ)言寫好的一段功能,能夠像函數(shù)一樣被程序調(diào)用,但是過程本身沒有返回值,是通過返回參數(shù)的形式返回?cái)?shù)據(jù)。視圖 View : 將編譯后的 SQL 語(yǔ)句保存在數(shù)據(jù)庫(kù)中,這就是視圖。視圖可以將查詢語(yǔ)句保存起來以供下次執(zhí)行而無需編譯,還能某些敏感字段保護(hù)隱私。3.oracle刪除第 5 條到第 10 條數(shù)據(jù)delect from 表 where id in(select id from(select rownum rw,id from 表 where 條件 ) awhere a.rw betn 5 and

41、 10 ) ;查詢 5-10 條會(huì),刪除不就是加上個(gè) delete from where 嗎!不同表空間的表?4.oracleOracle 中的表不是基于表空間的,而是基于用戶(這里的用戶實(shí)際上是一個(gè)跟用戶同名的“方案 schema”對(duì)象 最好強(qiáng)調(diào)一下表名 這種帶有前綴的寫法,不同表空間的表實(shí)際上是使用 schema.比如在etoak 用戶(默認(rèn)表空間為 A)中要scott 用戶(默認(rèn)表空間為 B) 中的表:select 列名 from scott.emp;只需要將用戶對(duì)象的默認(rèn)表空間指向其他表空間即可,當(dāng)前前提是 etoak 用戶必須限能夠到 scott 中的 emp 表,權(quán)限可以讓 eto

42、ak 是一個(gè) dba 用戶,或者通過 scott 或管理員scott.emp to etoak;:grant select on5.mybatis 和 jdbcJDBC 是 JAVA數(shù)據(jù)庫(kù)的技術(shù),代碼靈活但是代碼量較大;mybatis 底層封裝了 JDBC 是一個(gè)半自動(dòng)的框架,相對(duì)于 JDBC 來講代碼量較少,效率不如 JDBC 快。怎么查詢所有表名;6.上數(shù)據(jù)庫(kù)后:第式: show tables;第二種查詢方式:SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 數(shù)據(jù)庫(kù)名一個(gè)年級(jí)有多個(gè)班級(jí),一個(gè)班級(jí)有若干

43、人,如果查高一年級(jí)班級(jí)人數(shù)最多的該怎7.么實(shí)現(xiàn)年級(jí)表gidname高一10高二20高三30班級(jí)表人數(shù)idnamegid一班11020二班21025一班32010三班41025第一種需求,查詢出符合條件的班級(jí)人數(shù)最多是多少,然后查詢出班級(jí)人數(shù)與之相等的班級(jí)select * from 班級(jí)表 where 人數(shù) in( select max(人數(shù)) from 班級(jí)表 where gid=(select gid from 年級(jí)表 where name=高一);第二種需求,只查詢班級(jí)人數(shù)最多是多少select max(人數(shù)) from 班級(jí)where gid=(select gid from 年級(jí) wh

44、ere name=高一);* 第二種需求利用聚組函數(shù)直接過濾高一班級(jí)中最多的班級(jí)人數(shù),這兩種做法根據(jù)需求來8.CRUD 分別是什么意思CRUD 是指增加(Create)、幾個(gè)單詞的首字母簡(jiǎn)寫(Retrieve)(重新得到數(shù)據(jù))、更新(Update)和刪除(Delete)1.往一個(gè)空表里面插 10 條數(shù)據(jù),插到第五條報(bào)出異常,問這時(shí)候表里了幾條數(shù)據(jù)?如果開啟事務(wù),則表中沒有數(shù)據(jù)2.手寫一份 JDBC 查詢還記得如何使用 ResultSetMetaData 對(duì)象嗎?實(shí)現(xiàn)層與實(shí)體類的解耦!public List readEmpByMap() tryconn = MCF.getConnection(o

45、racle);se = conn.createSement();rs = se.executeQuery(select * from emp);ResultSetMetaData rsmd = rs.getMetaData();List list = new ArrayList(); /每一條就是一個(gè) List 元素while(rs.next()Map map = new HashMap(); /將行中所有的列以及對(duì)應(yīng)的值存放在鍵值對(duì)集合中eger: 用來主鍵 : 列索引/ Object : 對(duì)應(yīng)列的值/進(jìn)入 while()循環(huán)說明遍歷的是當(dāng)前一條for(i =1;i=rsmd.getColu

46、mnCount();i+)/進(jìn)入for 循環(huán) 說明得到的時(shí)當(dāng)前行上當(dāng)前列的數(shù)據(jù)map.put(i, rs.getObject(i);list.add(map);return list;catch(Exception e)e.prStackTrace();finally/MCF.close(conn,se,rs);return null;1: oracle 數(shù)據(jù)庫(kù)的工具如何導(dǎo)出表結(jié)構(gòu),菜單是哪個(gè)?PL/SQL Developer 工具:Tools - exports Tables .或者Tools - export User Objects .回答這個(gè)問題,可以跟他談?wù)劽顚?dǎo)出,命令導(dǎo)出的形式更

47、全面:在命令行中使用命令導(dǎo)出,(cmd 直接輸入無需進(jìn)入 Oracle)Oracle:導(dǎo)出:exp 用戶名/口令數(shù)據(jù)庫(kù)標(biāo)識(shí) file=文件.dmp導(dǎo)入:用戶名/口令數(shù)據(jù)庫(kù)標(biāo)識(shí) file=文件.dmpfull=yimp:導(dǎo)出:數(shù)據(jù)源名 文件.sqldump -uroot -p導(dǎo)入:數(shù)據(jù)源名 select date_format(now(),%Y-%m-%d); select time_format(now(),%H-%i-%S);*to_date(str,format)STR_TO_DATE(str,format) 函數(shù)名稱不同:ORACLE: SELECT to_date(2009-3-6,y

48、yyy-mm-dd) VAULE FROM DUAL:SELECT STR_TO_DATE(2004-03-01, %Y-%m-%d) VAULE(這道題目主要羅列幾個(gè)函數(shù)即可,因?yàn)楹瘮?shù)不同的太多.)#3: 表對(duì)象和表空間的區(qū)別首先要弄明白兩個(gè)概念:表對(duì)象指的是所有建立起來或者的數(shù)據(jù)表。表空間是個(gè)邏輯概念,本質(zhì)上是一個(gè)或者多個(gè)數(shù)據(jù)文件的集合。數(shù)據(jù)文件是一個(gè)物理概念,是具體數(shù)據(jù)的物理文件。一個(gè)數(shù)據(jù)文件只能屬于一個(gè)表空間.一個(gè)表空間可以包含一個(gè)或多個(gè)數(shù)據(jù)文件,一個(gè)數(shù)據(jù)庫(kù)由多個(gè)表空間組成,但是一個(gè)表空間只能屬于一個(gè)數(shù)據(jù)庫(kù)。oracle 中的 schema(可以叫它:方案)就是指一個(gè)用戶下所有對(duì)象的集

49、合,schema 本身不能理解成一個(gè)對(duì)象,oracle 并沒有提供創(chuàng)建 schema 的語(yǔ)法.那么表和表空間之間關(guān)系?schema 與表空間區(qū)別?在數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)用戶后,并給以這個(gè)用戶創(chuàng)建表或者其他對(duì)象的權(quán)限,這時(shí)還沒有模式存在。只有當(dāng)這個(gè)用戶利用這些權(quán)限創(chuàng)建了屬于自己的第一個(gè)對(duì)象時(shí),oracle 為這個(gè)用戶創(chuàng)建一個(gè) schema,來容納這個(gè)對(duì)象以及以后創(chuàng)建的對(duì)象。同一個(gè) schema 的 objects(主要是表)可以在不同的 tablespace(表空間)中,同樣,tablespace 也可以不同 schema的 objects。schema 就是一個(gè)用戶和它下面的所有對(duì)象,而表空間邏輯上

50、用來放 objects,物理上對(duì)應(yīng)磁盤上的數(shù)據(jù)文件或者 設(shè)備。4: 觸發(fā)器和過程過程 procedure:在服務(wù)器端,能夠被多個(gè)程序調(diào)用的一段 SQL 語(yǔ)句塊。簡(jiǎn)單來說就是事先用數(shù)據(jù)庫(kù)語(yǔ)言寫好的一段功能,能夠像函數(shù)一樣被程序調(diào)用,但是過程本身沒有返回值,是通過返回參數(shù)的形式返回?cái)?shù)據(jù)。觸發(fā)器 trigger:一種特殊的過程,不需要調(diào)用,在滿足條件時(shí)觸發(fā):觸發(fā)條件:在對(duì)某個(gè)表做 insert 、 update 或 delete 操作之前或之后(取決于如何實(shí)現(xiàn))自動(dòng)執(zhí)行5: SQL 的順序1、from 子句組裝來自不同數(shù)據(jù)源的數(shù)據(jù)2、where 子句基于指定的條件對(duì)行進(jìn)行篩選3、group by 子

51、句將數(shù)據(jù)劃分為多個(gè)分組4、使用 having 子句篩選分組6、計(jì)算所有的表達(dá)式7、select 的字段8、使用 order by 對(duì)結(jié)果集進(jìn)行排序。6: Oracle 和的端Oracle ;1521: 3306常用的還有:http: 80tomcat: 80807: 分區(qū)表數(shù)據(jù)庫(kù)中某些表數(shù)據(jù)量非常大(Oracle 對(duì)這個(gè)“大”的定義是超過 2GB),可以將表進(jìn)行分區(qū),每個(gè)分區(qū)都是獨(dú)立的段,存放在不同的表空間中,這種數(shù)據(jù)存放在不同表空間中的表就是一種分區(qū)表。分區(qū)提供以下優(yōu)點(diǎn):(這是朝著 DBA 方向發(fā)展的不歸路)(1)由于將數(shù)據(jù)分散到各個(gè)分區(qū)中,減少了數(shù)據(jù)損壞的可能性;(2)可以對(duì)單獨(dú)的分區(qū)進(jìn)行

52、備份和恢復(fù);(3)可以將分區(qū)到不同的物理磁盤上,來分散 IO;(4)提高可管理性、可用性和性能。8: 備份數(shù)據(jù)第使用式:通過導(dǎo)入導(dǎo)出命令備份數(shù)據(jù)庫(kù)中全部數(shù)據(jù)(Oracle 用exp 命令導(dǎo)出數(shù)據(jù),dump 命令備份數(shù)據(jù))第二種方式: 使用工具導(dǎo)出數(shù)據(jù)PL/SQL Developer 的菜單Tools=Export User Objects 中出來一個(gè)框界面,然后框選要到處的 Oracle 數(shù)據(jù)庫(kù)對(duì)象,包括表,序列,等,并指定導(dǎo)出的文件名稱過程,視圖,函數(shù)等9: 索引* 索引:類似于一個(gè)目錄,但是不只是目錄,能夠幫助提高查詢效率.語(yǔ)句:create index 索引名 on 表名(列名,列名);

53、unique index唯一性索引bitmap index位圖索引create index 索引名 on 表名(函數(shù)名(列名);函數(shù)索引* 適用?* 經(jīng)常被查詢的列* 如果該列上的值很少有空值 很少有重復(fù)的值可以使用索引01:過程、視圖、觸發(fā)器過程 procedure:在服務(wù)器端,能夠被多個(gè)程序調(diào)用的一段 SQL 語(yǔ)句塊。簡(jiǎn)單來說就是事先用數(shù)據(jù)庫(kù)語(yǔ)言寫好的一段功能,能夠像函數(shù)一樣被程序調(diào)用,但是過程本身沒有返回值,是通過返回參數(shù)的形式返回?cái)?shù)據(jù)。視圖 View : 將編譯后的 SQL 語(yǔ)句保存在數(shù)據(jù)庫(kù)中,這就是視圖。一般來講視圖不能創(chuàng)建索引(因?yàn)橐晥D本身只是一個(gè)編譯后的查詢語(yǔ)句,索引只能創(chuàng)建在表

54、的列上),但是 Oracle 提供了一種物化視圖可以創(chuàng)建索引。(物化視圖:雖然叫視圖但是實(shí)際類似于表,將數(shù)據(jù)暫時(shí)并在基表刷新或者提交數(shù)據(jù)時(shí)刷新本視圖以便與基表數(shù)據(jù)保持一致。)觸發(fā)器 trigger:一種特殊的過程,不需要調(diào)用,在滿足條件時(shí)觸發(fā):觸發(fā)條件:在對(duì)某個(gè)表做 insert 、 update 或 delete 操作之前或之后(取決于如何實(shí)現(xiàn))自動(dòng)執(zhí)行02:oracle 數(shù)據(jù)庫(kù)啟動(dòng)必須啟動(dòng)哪些服務(wù)服務(wù)(Listener 結(jié)尾比如: OracleOraDb11g_home1TNSListener該服務(wù)允許第-比如 PL/SQL developer數(shù)據(jù)庫(kù))實(shí)例服務(wù)(Servi才能使用相應(yīng)的數(shù)據(jù)

55、庫(kù)實(shí)例)實(shí)例名 比如 : OracleServiceORCL 必須啟用該服務(wù)數(shù)據(jù)庫(kù)03:數(shù)據(jù)庫(kù)優(yōu)化對(duì)于 Oracle 數(shù)據(jù)庫(kù)可以使用表空間,將項(xiàng)目中的數(shù)據(jù)庫(kù)用戶所有的表存放在一個(gè)單獨(dú)的表空間對(duì)應(yīng)的數(shù)據(jù)文件中,能夠避免多個(gè)用戶而且方便數(shù)據(jù)備份。同一數(shù)據(jù)文件帶來的資源爭(zhēng)用問題;可以使用為一些表創(chuàng)建適當(dāng)?shù)囊晥D,在一些統(tǒng)計(jì)功能中 SQL 可能比較固定而且復(fù)雜,視圖可以將查詢語(yǔ)句保存起來以供下次執(zhí)行而無需編譯,還能某些敏感字段保護(hù)隱私。使用執(zhí)行效率。過程完成復(fù)雜操作,能夠避免 JAVA 與數(shù)據(jù)庫(kù)之間的多次交互從而提高程序?qū)τ诮?jīng)常的表中的字段可以適當(dāng)創(chuàng)建索引(適合用在查詢多增刪改少的表中)。04:數(shù)據(jù)庫(kù)類

56、型(引擎類型)在缺省情況下,支持三個(gè)引擎:ISAM、MYISAM 和 HEAP。另外兩種類型 INNODB 和 BERKLEY(BDB)05:如何獲取一個(gè)表第 5 條Oracle: rownum 重命名+嵌套的形式不支持Minus 可以使用連接的形式來實(shí)現(xiàn):t:tidtname112013小X24小 Y35小Z16肯定不能通過主鍵=5 的方式來獲得,但是可以通過兩個(gè) SQL 語(yǔ)句獲得如下數(shù)據(jù):select tid,tname from t limit 5;select tid,tname from t limit 4;將這兩個(gè)結(jié)果做關(guān)聯(lián)并且將能夠關(guān)聯(lián)的數(shù)據(jù)篩選掉注意使用到了 not exists:select a.* from(select tid,tname from t limit 5) awhere not exists( select b.* from(select tid,tname from t limit 4) bwhere a.tid=b.tid);06 : 事務(wù)的特性事務(wù)四大特性(簡(jiǎn)稱 ACID)原子性(A

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論