网络编程
位置:首页>> 网络编程>> 数据库>> SQL查询入门(上篇) 推荐收藏(3)

SQL查询入门(上篇) 推荐收藏(3)

 来源:asp之家 发布时间:2011-09-30 11:47:11 

标签:SQL查询入门

由此我们可以看出,这几种运算符是有优先级的,优先级由大到小排列是比较运算符>于(And)>非(Or)

当然,运算符也可以通过小括号来改变优先级,对于上面那个表

对于不加括号时:

代码如下:


SELECT *
FROM [AdventureWorks].[HumanResources].[Department]
WHERE DepartmentID>=1 and DepartmentID<=3 and DepartmentID>=5 or DepartmentID<=7



加了括号改变运算顺序后: 

代码如下:


SELECT *
FROM [AdventureWorks].[HumanResources].[Department]
WHERE DepartmentID>=1 and DepartmentID<=3 and (DepartmentID>=5 or DepartmentID<=7)



很特别的NULL
假如在一个用户注册的表中,一些选填信息并不需要用户必须填写,则在数据库中保存为null,这些null值在利用上面where子句后的运算符时,有可能造成数据丢失,比如一个选填信息是性别(Gender),假设下面两条条件子句:

代码如下:


where Gender="M"
where NOT (Gender="M")


由于null值的存在,这两条语句返回的数据行加起来并不是整个表中的所有数据。所以,当将null值考虑在内时,where后面的条件子句拥有可能的值从真和假,增加为真,假,以及未知(null)。这些是我们在现实世界中想一些问题的时候可能的答案--真的,假的,我不知道。

所以我们如何在这种情况下不丢失数据呢,对于上面的例子来说,如何才能让整个表的数据不被丢失呢,这里必须将除了“真”,“假”以外的“未知”这个选项包含在内,SQL提供了IS NULL来表明未知这个选项:
where Gender IS NULL 将上面语句加入进去,则不会再丢失数据。

排序结果
上面的那些方法都是关于取出数据,而下面是关于将取出的子集进行排序。SQL通过Order by子句来进行排序,Order by子句是Sql查询语句的最后一个子句,也就是说Order by子句之后不能再加任何的子句了。

Order By子句分为升序(ASC)和降序(DESC),如果不指定升序或者降序,则默认为升序(由小到大),而Order by是根据排序依据的数据类型决定,分别为3种数据类型可以进行排序:
字符
数字
时间日期
字符按照字母表进行排序,数字根据数字大小排序,时间日期根据时间的先后进行排序。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com