重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
NoSQL数据库有很多种,实现方式差别很大。有接近SQL查询方式的,也有纯粹的键值对查询。
创新互联是专业的繁峙网站建设公司,繁峙接单;提供网站设计制作、做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行繁峙网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
对于K-V型数据库,比较典型的是Redis,系统提供了get、set之类的命令用于增删改查。关键是键值对的键和值怎么设计。
参考这个链接: 应该能解决的。
我正在努力看懂...............
试一下下面代码看看
select WPRO_NAME,CS_PRICE+WS_PRICE --CONT_NO ,CONT_VER 这两列我不要了
INTO #ProgrectDetail
from CS_COST_DETAIL where FTY_ID='mk5' and CONT_NO='GWCH-14-AK084' and COST_VER=0
DECLARE @sql VARCHAR(1000), @distinct_val VARCHAR(500) ;
SET @sql = 'SELECT * FROM #ProgrectDetail PIVOT(SUM(PRICE) FOR [WPRO_NAME] IN (' ;
SET @distinct_val = (SELECT STUFF(( SELECT DISTINCT ',' + [WPRO_NAME] FROM #ProgrectDetail FOR XML PATH('')), 1, 1, '')) ;
SET @sql = @sql + @distinct_val + '))' + ' p'
EXEC(@sql)
package basic;
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 {
// 获得数据库驱动
//由于长时间不写,驱动名和URL都忘记了,不知道对不对,你应该知道的,自己改一下的哈
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);
// 新建发送sql语句的对象
Statement st = conn.createStatement();
// 执行sql
String sql = "select * from users";
ResultSet rs = st.executeQuery(sql);
// 处理结果
while(rs.next()){
//这个地方就是给你的封装类属性赋值
System.out.println("UserName:"+rs.getString(0));
}
// 关闭连接
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);
//这里的发送sql语句的对象是PreparedStatement,成为预处理sql对象,因为按条件删除是需要不定值的
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("删除成功!");
}
// 关闭连接
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();
}
}
}
每种nosql都有自己的语法。跟t-sql类数据库的方式类似。但。不是用sql语句。而是他自身定义的读取语句
想法1
先查询出以每个部门为单位,有多少人工资低于3000 以及 低于3000的人数 顺便把部门ID也带出来,以备后用
select sum(salary),count(id),dep_id from yuangong where salary3000 group by dep_id
然后,将上面查询出来的结果进行加工,得出最后结论
select
bumen.dep_name,
a.renshu,
a.money/a.renshu
from
bumen,
(select sum(salary) as money,count(id) as renshu,dep_id from yuangong where salary3000 group by dep_id) a
where
a.dep_id = bumen.id
想法呢是这个想法,
想法2
先把所有的部门,工资少许8000 的数据找出来
select
bumen.dep_name,
yuangong.*
from
bumen,
yuangong
where
yuangong.salary3000 and
yuangong.dep_id = bumen.id
然后对上面的数据进行分类加工,
分类的依据是部门id 或者部门名字(group by bumen.dep_name)
select
bumen.dep_name,
count(yuangong.id),
sum(yuangong.salary)/count(yuangong.id)
from
bumen,
yuangong
where
yuangong.salary3000 and
yuangong.dep_id = bumen.id
group by bumen.dep_name
一样是数据库
NOSQL查询速度快,但是占用空间也大(都去索引那边了)
但是NOSQL查询复杂的逻辑关系的时候,只能批量获取到本地去统计而SQL能通过条件和关联表等方式进行筛选只显示符合条件的语句。
NOSQL用于无条件或少条件下的存取。百亿级数据也能快速取出。
SQL用于复杂的逻辑存取。在数据量不多的情况下也能跟NOSQL一样用于数据存储。