package basic;
走過10多年,我們已為眾多企業(yè)及政府機(jī)關(guān)提供專業(yè)的互聯(lián)網(wǎng)服務(wù)。我們不只是一家專業(yè)網(wǎng)站制作公司;我們對營銷、技術(shù)、服務(wù)都有自己獨(dú)特見解,創(chuàng)新互聯(lián)公司采取“創(chuàng)意+綜合+營銷”一體化的方式為您提供更專業(yè)的服務(wù)!創(chuàng)新互聯(lián)公司經(jīng)歷的每一步也許不一定是最完美的,但每一步都有值得深思的意義。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBC {
public void findAll() {
try {
// 獲得數(shù)據(jù)庫驅(qū)動
//由于長時間不寫,驅(qū)動名和URL都忘記了,不知道對不對,你應(yīng)該知道的,自己改一下的哈
String url = "jdbc:oracle:thin:@localhost:1521:XE";
String userName = "system";
String password = "system";
Class.forName("oracle.jdbc.driver.OracleDriver");
// 創(chuàng)建連接
Connection conn = DriverManager.getConnection(url, userName,
password);
// 新建發(fā)送sql語句的對象
Statement st = conn.createStatement();
// 執(zhí)行sql
String sql = "select * from users";
ResultSet rs = st.executeQuery(sql);
// 處理結(jié)果
while(rs.next()){
//這個地方就是給你的封裝類屬性賦值
System.out.println("UserName:"+rs.getString(0));
}
// 關(guān)閉連接
rs.close();
st.close();
conn.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void delete(){
try {
//步驟還是那六個步驟,前邊的兩步是一樣的
String url = "jdbc:oracle:thin:@localhost:1521:XE";
String userName = "system";
String password = "system";
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(url,userName,password);
//這里的發(fā)送sql語句的對象是PreparedStatement,成為預(yù)處理sql對象,因?yàn)榘礂l件刪除是需要不定值的
String sql = "delete from users where id = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(0, 1);
int row = ps.executeUpdate();
if(row!=0){
System.out.println("刪除成功!");
}
// 關(guān)閉連接
rs.close();
st.close();
conn.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
arcatolog數(shù)據(jù)庫所在字段內(nèi)容清空:如果你不需要這數(shù)據(jù)庫的結(jié)構(gòu),直接刪除.如果你需保留數(shù)據(jù)庫的結(jié)構(gòu),需有該數(shù)據(jù)庫的密碼,再用編程序方法解決。
數(shù)據(jù)管理不再僅僅是存儲和管理數(shù)據(jù),而轉(zhuǎn)變成用戶所需要的各種數(shù)據(jù)管理的方式。數(shù)據(jù)庫有很多種類型,從最簡單的存儲有各種數(shù)據(jù)的表格到能夠進(jìn)行海量數(shù)據(jù)存儲的大型數(shù)據(jù)庫系統(tǒng)都在各個方面得到了廣泛的應(yīng)用。
查詢方式:
關(guān)系型數(shù)據(jù)庫采用結(jié)構(gòu)化查詢語言(即SQL)來對數(shù)據(jù)庫進(jìn)行查詢,SQL早已獲得了各個數(shù)據(jù)庫廠商的支持,成為數(shù)據(jù)庫行業(yè)的標(biāo)準(zhǔn),它能夠支持?jǐn)?shù)據(jù)庫的CRUD(增加,查詢,更新,刪除)操作,具有非常強(qiáng)大的功能。
SQL可以采用類似索引的方法來加快查詢操作。NoSQL數(shù)據(jù)庫使用的是非結(jié)構(gòu)化查詢語言(UnQL),它以數(shù)據(jù)集(像文檔)為單位來管理和操作數(shù)據(jù)。
由于它沒有一個統(tǒng)一的標(biāo)準(zhǔn),所以每個數(shù)據(jù)庫廠商提供產(chǎn)品標(biāo)準(zhǔn)是不一樣的,NoSQL中的文檔Id與關(guān)系型表中主鍵的概念類似,NoSQL數(shù)據(jù)庫采用的數(shù)據(jù)訪問模式相對SQL更簡單而精確。
nosql是not only sql的意思。是近今年新發(fā)展起來的存儲系統(tǒng)。當(dāng)前使用最多的是key-value模型,用于處理超大規(guī)模的數(shù)據(jù)。
以下是摘自百度百科中的一部分
NoSQL 是非關(guān)系型數(shù)據(jù)存儲的廣義定義。它打破了長久以來關(guān)系型數(shù)據(jù)庫與ACID理論大一統(tǒng)的局面。NoSQL 數(shù)據(jù)存儲不需要固定的表結(jié)構(gòu),通常也不存在連接操作。在大數(shù)據(jù)存取上具備關(guān)系型數(shù)據(jù)庫無法比擬的性能優(yōu)勢。該術(shù)語在 2009 年初得到了廣泛認(rèn)同。
當(dāng)今的應(yīng)用體系結(jié)構(gòu)需要數(shù)據(jù)存儲在橫向伸縮性上能夠滿足需求。而 NoSQL 存儲就是為了實(shí)現(xiàn)這個需求。Google 的BigTable與Amazon的Dynamo是非常成功的商業(yè) NoSQL 實(shí)現(xiàn)。一些開源的 NoSQL 體系,如Facebook 的Cassandra, Apache 的HBase,也得到了廣泛認(rèn)同。從這些NoSQL項目的名字上看不出什么相同之處:Hadoop、Voldemort、Dynomite,還有其它很多。
NoSQL與關(guān)系型數(shù)據(jù)庫設(shè)計理念比較
關(guān)系型數(shù)據(jù)庫中的表都是存儲一些格式化的數(shù)據(jù)結(jié)構(gòu),每個元組字段的組成都一樣,即使不是每個元組都需要所有的字段,但數(shù)據(jù)庫會為每個元組分配所有的字段,這樣的結(jié)構(gòu)可以便于表與表之間進(jìn)行連接等操作,但從另一個角度來說它也是關(guān)系型數(shù)據(jù)庫性能瓶頸的一個因素。而非關(guān)系型數(shù)據(jù)庫以鍵值對存儲,它的結(jié)構(gòu)不固定,每一個元組可以有不一樣的字段,每個元組可以根據(jù)需要增加一些自己的鍵值對,這樣就不會局限于固定的結(jié)構(gòu),可以減少一些時間和空間的開銷。
一、概念
SQL?(Structured?Query?Language)?數(shù)據(jù)庫,指關(guān)系型數(shù)據(jù)庫。主要代表:SQL?Server,Oracle,MySQL(開源),PostgreSQL(開源)。
NoSQL(Not?Only?SQL)泛指非關(guān)系型數(shù)據(jù)庫。主要代表:MongoDB,Redis,CouchDB。
二、區(qū)別
1、存儲方式
SQL數(shù)據(jù)存在特定結(jié)構(gòu)的表中;而NoSQL則更加靈活和可擴(kuò)展,存儲方式可以省是JSON文檔、哈希表或者其他方式。SQL通常以數(shù)據(jù)庫表形式存儲數(shù)據(jù)。舉個栗子,存?zhèn)€學(xué)生借書數(shù)據(jù):
而NoSQL存儲方式比較靈活,比如使用類JSON文件存儲上表中熊大的借閱數(shù)據(jù):
2、表/數(shù)據(jù)集合的數(shù)據(jù)的關(guān)系
在SQL中,必須定義好表和字段結(jié)構(gòu)后才能添加數(shù)據(jù),例如定義表的主鍵(primary?key),索引(index),觸發(fā)器(trigger),存儲過程(stored?procedure)等。表結(jié)構(gòu)可以在被定義之后更新,但是如果有比較大的結(jié)構(gòu)變更的話就會變得比較復(fù)雜。在NoSQL中,數(shù)據(jù)可以在任何時候任何地方添加,不需要先定義表。例如下面這段代碼會自動創(chuàng)建一個新的"借閱表"數(shù)據(jù)集合:
NoSQL也可以在數(shù)據(jù)集中建立索引。以MongoDB為例,會自動在數(shù)據(jù)集合創(chuàng)建后創(chuàng)建唯一值_id字段,這樣的話就可以在數(shù)據(jù)集創(chuàng)建后增加索引。
從這點(diǎn)來看,NoSQL可能更加適合初始化數(shù)據(jù)還不明確或者未定的項目中。
3、外部數(shù)據(jù)存儲
SQL中如何需要增加外部關(guān)聯(lián)數(shù)據(jù)的話,規(guī)范化做法是在原表中增加一個外鍵,關(guān)聯(lián)外部數(shù)據(jù)表。例如需要在借閱表中增加審核人信息,先建立一個審核人表:
再在原來的借閱人表中增加審核人外鍵:
這樣如果我們需要更新審核人個人信息的時候只需要更新審核人表而不需要對借閱人表做更新。而在NoSQL中除了這種規(guī)范化的外部數(shù)據(jù)表做法以外,我們還能用如下的非規(guī)范化方式把外部數(shù)據(jù)直接放到原數(shù)據(jù)集中,以提高查詢效率。缺點(diǎn)也比較明顯,更新審核人數(shù)據(jù)的時候?qū)容^麻煩。
4、SQL中的JOIN查詢
SQL中可以使用JOIN表鏈接方式將多個關(guān)系數(shù)據(jù)表中的數(shù)據(jù)用一條簡單的查詢語句查詢出來。NoSQL暫未提供類似JOIN的查詢方式對多個數(shù)據(jù)集中的數(shù)據(jù)做查詢。所以大部分NoSQL使用非規(guī)范化的數(shù)據(jù)存儲方式存儲數(shù)據(jù)。
5、數(shù)據(jù)耦合性
SQL中不允許刪除已經(jīng)被使用的外部數(shù)據(jù),例如審核人表中的"熊三"已經(jīng)被分配給了借閱人熊大,那么在審核人表中將不允許刪除熊三這條數(shù)據(jù),以保證數(shù)據(jù)完整性。而NoSQL中則沒有這種強(qiáng)耦合的概念,可以隨時刪除任何數(shù)據(jù)。
6、事務(wù)
SQL中如果多張表數(shù)據(jù)需要同批次被更新,即如果其中一張表更新失敗的話其他表也不能更新成功。這種場景可以通過事務(wù)來控制,可以在所有命令完成后再統(tǒng)一提交事務(wù)。而NoSQL中沒有事務(wù)這個概念,每一個數(shù)據(jù)集的操作都是原子級的。
7、增刪改查語法
8、查詢性能
在相同水平的系統(tǒng)設(shè)計的前提下,因?yàn)镹oSQL中省略了JOIN查詢的消耗,故理論上性能上是優(yōu)于SQL的。
nosql 你可以想到就是座位號碼。
你給的是唯一碼,就能得到唯一碼對應(yīng)的相關(guān)信息。
與標(biāo)準(zhǔn)SQL不同,SQL,字段多少會左右查詢速度。
NOSQL則是以json類似的格式把全部字段用一個字符串展現(xiàn)出來。
以3億數(shù)據(jù)的表,你加上索引,查全部欄位。單個速度可能會很快。
如果多個,哪怕有索引,恐怕也要幾百毫米。
而NOSQL則依次給你全部數(shù)據(jù)。你只需要程序上做出來就行。
存取速度大概小于10毫米。
不過NOSQL所占的硬盤空間,是普通SQL的好幾倍。。。。。。