搜索
您的当前位置:首页正文

实习中接触到的数据库知识

来源:哗拓教育

在数据库方面,主要是涉及到之前没有接触或者接触很少的知识点。比如存储过程、select top实现数据分页、短路表达式。下面使用简单的例子来说明

首先在数据库中简单建立一个数据表,如图


users表.PNG

对于上表,只是截取部分,数据远不止7个,建表时采用循环插入数据的方法共插入99条数据
<pre>declare @i int,@j int;
set @i=1;
set @j=10;
while @i < 100
begin insert into test.dbo.users(id,name,password) values(@i,@j+1,@j+2);
set @i=@i+1;
set @j=@j+1;
end </pre>

在实际开发中建表时需要注意的问题:相似数据类型的区别
char:使用时需固定长度,如char(10),表示它占有10个字节,如果实际数据并未达到10字节,则差的部分会以空格来填补
varchar:使用时虽然设置有长度,如varchar(10),但是实际占位以实际数据为准,若数据只有5个字节则只占5个字节
text:不需要定义长度,一般用来存储文本数据
nchar、nvarchar、ntext:与char、varchar和text的区别在于存储数据的方式不同,nchar、nvarchar和ntext采用unicode字符存储数据,所有字符都是使用两个字节表示,因此存储总量(都是存储英文的情况下)char、varchar和text为8000,ncahr、nvarchar和ntext则只有4000

1.存储过程:在数据库中进行sql代码编写,类似java中的一个方法,可以接收参数,在java代码中可以直接调用这个方法获取数据,避免在java代码中编写sql语句(只是举例,并不是只有java可以使用)
建立存储过程

新建存储过程.png
右键新建存储过程,会得到下面的页面
存储过程示例.PNG
本例中先使用简单的查询全部数据,稍后会进行参数的添加
存储过程getUsers.PNG
如图:设置方法名为getUsers,查询全部数据
然后在java代码中进行调用
<pre>Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection("jdbc:","xxx","xxx");
CallableStatement cs = conn.prepareCall("{call getUsers()}"); //调用getUser()方法
ResultSet rs = cs.executeQuery(); //查询结果保存在ResultSet中
while(rs.next()){ //读取ResultSet中的数据
String name = rs.getString("name");
String password = rs.getString("password");
System.out.println("name is " + name + "and password is" + password);
}</pre>
打印结果:
部分数据.PNG

2.select top实现数据分页
select top在数据库中是读取前多少条数据。
新建存储过程,如下

存储过程getUsersByIndex.PNG
上图中select top部分的代码,pageSize是指每个页面显示多少数据,pageIndex是指当前的页面,@pageSize*(@pageIndex-1)得到的结果便是当前页之前已经显示了多少条数据,第二个select top就是获得这些数据的id,然后第一个select top则是从id不在这些id之中的数据开始选取前多少条,由此实现分页功能
在java代码中进行调用
<pre>CallableStatement cs = connection.prepareCall("{call getUsersByIndex(?,?)}");
callableStatement.setInt(1, 10); //第一个参数指的是pageSize,就是每页显示多少数据
callableStatement.setInt(2, 3); //第二个参数指的是pageIndex,当前的页码
ResultSet rs = callableStatement.executeQuery();
while (rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
String password = rs.getString("password");
System.out.println("id is " + id + " name is" + name + " password is " + password);
}</pre>
综上就是每页显示10条数据,当前显示第3页,打印结果如下
第3页的10条数据.PNG name关键字为0的数据.PNG

主要知识点就是这些,都是按照自己的理解来写的,可能会有不全面的地方,如果有错误,欢迎指出共同探讨哈。

Top