假设有如下一张表,名为 Product (DDL 见本文结尾):
在使用 DISTINCT 时, NULL 也被视为一类数据。 NULL 存在于多行中时,也会被合并为一条 NULL 数据。
对含有 NULL 数据的列使用 DISTINCT 关键字:
执行结果为:
考虑一下在 SQL 语句中如下运算的结果:
正确答案是 全为 NULL 。实际上 所有包含 NULL 的计算,结果肯定是 NULL 。
当我们尝试取出不是进货单价不是 2800 日元( purchase_price <> 2800 )的记录时:
执行结果为:
执行结果中并 没有 “叉子”和“圆珠笔”。这两条记录由于进货单价不明( NULL ),因此无法判定是不是 2800 日元。
当你尝试使用 purchase_price = NULL 或 purchase_price <> NULL 作为查询条件时,均 查询不到任何记录 。
替代的,你可以使用 purchase_price IS NULL 和 purchase_price IS NOT NULL 来查询你想要的记录。如:
执行结果为:
下列是三值逻辑中 AND 和 OR 运算的真值表:
除 COUNT() 外,聚合函数只对 NULL 以外的对象进行汇总。
执行如下查询语句,结果已在注释中标出:
当聚合键中包含 NULL 时,也会将 NULL 作为一组特定的数据:
执行结果为:
使用含有 NULL 的列作为排序键时,NULL 会在结果的 开头或末尾 汇总显示:
执行结果为:
第一步建连接:就是一java连接就行
第二步是建立一个类 这类的与数据库字段对象用于java的面向对象 import javautilDate;
//存放数据的javabean,属性和表中的字段是一一对应的 public class User {
private int userid;
private String username;
private String password;
private Date logintime;
public User() {
}
public void setUserid(int userid) {
thisuserid = userid;
}
public void setUsername(String username) {
thisusername = username;
}
public void setPassword(String password) {
thispassword = password;
}
public void setLogintime(Date logintime) {
thislogintime = logintime;
}
public int getUserid() {
return userid;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public Date getLogintime() {
return logintime;
} }
第三步是建立一个SQL访问类: import javasql; import javautil; public class UserDAO {
//按条件查找多条记录
public List findAll(String filter) {
Connection conn = DbgetConnection();
List datas = new ArrayList();
if(filter!=null) {
filter = " where " + filter;
} else {
filter = "";
}
try {
PreparedStatement ps = connprepareStatement(
"select from usertb " + filter);
ResultSet rs = psexecuteQuery();
while(rsnext()) {
User user = new User();
usersetUserid(rsgetInt(1));
usersetUsername(rsgetString(2));
usersetPassword(rsgetString(3));
usersetLogintime(rsgetDate(4));
datasadd(user);
}
} catch (SQLException ex) {
exprintStackTrace();
} finally {
DbcloseConn(conn);
}
return datas;
} } 第四步是这在jsp上用 <%@ page contentType="text/html; charset=GBK" import="comaccpUser" import="javautilList" %> 然后用<use:Bean>来访问SQL访问类调用方法获取数据
首先要检查你的表与表之间是不是有约束(主外键约束),如果存在一般连接有左连接、右连接、内连接,下面给你举例:
----做笛卡尔积
select
sid,sname,scid,scsname,scscore
from
infom
s
,score
sc
------内连接
写法一
select
sid,sname,scid,scsname,scscore
from
infom
s
,score
sc
inner
join
score
sc
on
sid=
scid
------内连接的条件
------on
sid
<>scid
--------是全集
-
交集
------where
scscore>80
------内连接
方法二
select
sid,sname,scid,scsname,scscore
from
infom
s
,score
sc
where
sid=
scid
-------------------------------------------------------外连接
左连接
--------------左表数据完全显示,右表中相同的数据显示,不同数据null
select
Studentname,scorescore
from
Student
left
join
score
-----------------先写的为左表
on
Studentid=score
id
-----------------连接条件
-------------------------------------------------------外连接
右连接
--------------右表数据完全显示,左表中相同的数据显示,不同数据显示null
select
Studentname,scorescore
from
Student
right
join
score
on
Studentid=score
id
-----------------------------------全连接
full
join
-----------------------------------左、右表的数据完全显示,相同的数据显示一次
select
Studentname,scorescore
from
Student
full
join
score
on
Studentid=score
id
-------------------------------交叉联接
---------------------------------交叉联接得到的是两表联接所有的数据组合
------------------------------------------(A表的数据记录
B
表的数据记录)
---------------------方式一
select
Student,score
from
Student,score
------------------------方式二
select
score
,Student
from
Student
cross
join
score
-------------------------------多表联接
-----------要求查出张三
C#的考试成绩,涉及student,score,subject三个表
---------方式一:
select
studentname,subjectsname
,score
score
from
Student
inner
join
score
on
studentid=
scoreid
inner
join
subject
on
scoreid=subjectid
where
Studentname='张三'
and
subjectsname='C#'
---------方式二:等值联接
select
studentname,subjectsname
,score
score
from
Student,score
,subject
where
StudentDBid=scoreid
and
score
id=subjectid
and
Studentname='张三'
and
subjectsname='C#'
后面可以追加 Where 条件,形式如下:
SELCET FROM A LEFT JOIN B on Aid = Bid LEFT JOIN C on Bname = Cname Where Aid > 1 AND Bname is not null AND Cage > 20
结果肯定是可以精确查询到的,至于效率,那是后面需要考虑的问题了。
以上就是关于论关系型数据库中 NULL 值对 SQL 查询语句的影响全部的内容,包括:论关系型数据库中 NULL 值对 SQL 查询语句的影响、sql数据库多表怎么查询、SQL server数据库里查询时新建查询怎么进行多表查询等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)