SQL 查询数据

查询数据

这一章主要学习数据查询,这也是数据库最重要的内容,也是数据库的核心之一,学好数据库的查询对于学好数据库至关重要。我也将花费不少时间来学习。

一、使用简单SELECT查询数据:

1.1查询表决中所有数据

SELECT *

FROM table_source

例子:

SELECT *

FROM STU_INFO

1.2查询表中指定字段的数据

SELECT 字段名

FROM table_source

例子:

SELECT SNAME

FROM STU_INFO

1.3查询结果中除去重复信息

SELECT DISTINCT 字段名

FROM table_source

1.4根据现有列值计算新列值

SELECT sname,DATEDIFF(year,birth,GETDATE())

FROM stu_info

GETDATE()函数用于获取当前系统时间,DATEDIFF()函数用于获取两个日期之间的差

1.5命名新列

SELECT 列名 AS 新列名

FROM stu_info

例子:

SELECT SNAME AS ‘姓名’

FROM STU_INFO

1.6将查询结果保存为新表

SELECT *(或字段列表)

INTO 新表名

FROM table_source

1.7连接字段

SELECT sname+depart

FROM stu_info

例子:

SELECT SNAME+DEPART AS NEW

FROM STU_INFO

这里含有几个地方需要进一步更改:

(1)需要给字段设置字段名

(2)使用RTRIM()函数去除字段值右侧的空格

(3)应当将来源地放进括号

二、使用SELECT语句获取满足查询条件的数据:

2.1指针域字段变量的概念

指针是人们虚拟出来的一个箭头(或者标记),实际上他并不存在。指针可以指向数据表中的任何一条记录,当指针指向某一条记录时该记录就被称为当前记录。

在表达式中出现的字段名其实就是字段变量,称其为字段变量的原因是字段名的值会随着指针的移动而变化。

2.2条件表达式

条件表达式是使用条件运算符将变量、字段值、函数及字段名连接起来的表达式。条件表达式的值只有两种,分别是真和假。因为只要用到条件表达式就要用到条件表达式,所以了解条件表达式的组成、掌握其编写方法非常重要。在学习编写条件表达式之前,首先应当了解条件运算符。

条件运算符

运算符

说明

举例

1.关系运算符

=

等于

学分=3

<

小于

考试成绩<90

<=

小于等于

出生日期<=‘01/01/1992

>

大于

平时成绩>90

>=

大于等于

平时成绩>=90

<>或!=

不等于

所属院系<>‘中文系’

2.逻辑运算符

NOT

NOT 考试成绩<90

AND

分数>60 AND 分数<90

OR

年龄=29 OR 年龄=30

3.SQL特殊运算符

IN

在某个集合中

学分 IN(2,3,4)

NOT IN

不在某个集合中

所属院系 NOT IN(‘中文系’)

BETWEEN

在某个范围内

分数 BETWEEN 80 AND 90

NOT BETWEEN

不在某个范围内

学分 NOT BETWEEN 8 AND 9

LIKE

与某种模式匹配

姓名 LIKE‘%三%’

NOT LIKE

不与某种模式匹配

课名 NOT LIKE‘%基础%’

IS NULL

是NULL值

年龄 IS NULL

IS NOT NULL

不是NULL值

联系方式 IS NOT NULL

2.3 WHERE子句用法

SELECT *

FROM table_name

WHERE 条件表达式

例子:

SELECT *

FROM table_name

depart=‘中文系’

2.4根据条件查询数值数据

SELECT *

FROMtable_name

WHERE credit>3

例子:

SELECT *

FROM STU_INFO

WHERE YEAR>20

2.5根据条件查询字符数据

SELECT *

FROMtable_name

WHERE sname=‘张三’

2.6根据条件查询日期数据

SELECT *

FROMtable_name

WHERE birth>‘01/03/1992’

2.7按范围查询数据

SELECT *

FROMtable_name

WHERE credit BETWEEN 2 AND 5

例子:

SELECT *

FROM STU_INFO

WHERE YEAR BETWEEN 21 AND 23

2.8查询NULL值

SELECT *

FROMtable_name

WHERE credit IS NULL

三、排序查询结果

3.1按单列排序

SELECT *

FROM stu_table

ORDER BY 成绩

例子:

SELECT *

FROM STU_INFO

ORDER BY YEAR

3.2设置排序方向

SELECT *

FROMtable_name

ORDER BY 分数 DESC

3.3按多列排序

SELECT *

FROMtable_name

ORDER BY 分数 DESC,年龄 ASC

3.4按字段位置排序

SELECT *

FROM stu_name

ORDER BY 3 DESC

3.5查询前五行数据

SELECT TOP 5 SNAME,BIRTH,TELEPHONE

FROM stu_name

ORDER BY BIRTH

例子:

SELECT TOP 3 SNAME,SEX

FROM STU_INFO

3.6 WHERE与ORDER BY的结合使用

SELECT *

FROM stu_name

WHERE telephone IS NOT NULL

ORDER BY 学号

四、高级查询条件

4.1 AND运算符

SELECT *

FROM stu_name

WHERE NAME=‘张三’AND 年龄=39

4.2 OR运算符

SELECT *

FROM stu_name

WHERE NAME=‘张三’OR 年龄=39

4.3 AND与OR的优先顺序问题

SELECT *

FROM stu_name

WHERE depart=‘中文系’

ORdepart=‘外语系’

AND sex=‘女’

ORDER BY sno

AND优先于OR

4.4 NOT运算符

SELECT *

FROM stu_name

WHERE birth NOT BETWEEN‘01/01/1983’AND‘12/02/1998’

查询birth不在‘01/01/1983’到‘12/02/1998’的所有学生。

4.5 IN 运算符

SELECT *

FROM cource

WHERE credit IN(2,3,4)

ORDER BY credit DESC,cno

查询credit等于2,3,4的所有学生。

4.6 LIKE运算符与“%”通配符

SELECT *

FROM stu_info

WHERE sname LIKE‘%三%’

查询sname中中间有‘三’的所有学生。

4.7 “_”通配符的使用

SELECT *

FROM stu_name

WHERE RTRIM(sname) LIKE‘刘_’

“_”代表一个字符,‘刘_’代表由两个字符组成的字符串

4.8“[]”通配符的使用

SELECT *

FROM stu_name

WHERE sname LIKE‘[张李刘]%’

ORDER BY sname

查询结果集中,包含了所有姓张、李和刘的学生。

4.9定义转义字符

SELECT *

FROM stu_name

WHERE sname LIKE‘%5#%’ESCAPE‘#’

其中,

ESCAPE‘#’

定义了转移字符“#”,他表示紧跟着“#”后的“%”为普通字符,而并非通配符。

总结:学习这一章花了不少时间,但也有不少斩获,虽然大多数的知识点都练了一遍,但这只是掌握了这些语法知识,要真正的灵活应用还要经过不少的练习才行。有些知识点由于自己建的表有问题,所以没能练习,有些则在Access中无法练习,以后装上SQL Server后再练习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值