关系数据库标准语言SQL(二)

这篇文章主要内容是数据查询(非常重要),查询语句一般格式:

select [all | distinct] <目标列表达式> [,<目标列表达式>,...] 

from <表名或视图名>[,<表名或视图名>,...]

[where <条件表达式>]

[group by <列名1> having <条件表达式>]

[order by <列名2> [asc | desc] ];

一、单表查询

(一)、选择表中的若干列

1、查询指定列:select id,name from student

2、查询全部列:select * from student

3、查询经过计算的值:select子句的<目标列表达式>可以是属性列,也可以是表达式。select id,name,2011-age  from student

(二)、选择表中若干元组

1、消除重复的行:某列可能有重复的行可用关键字distinct去掉,默认是all,select distinct id from sc

2、查询满足条件的元组,where后的条件表达式

比较:=,<,>,>=,<=,!=,<>,!>,!<

确定范围:between...and... , not between...and...

确定集合:in,not in

字符串匹配:like,not  like

空值:is null,is not null

多重条件(逻辑运算):and,or,not

3、使用注意

1)、语句中包含字符串时用单引号括起来

2)、in用来查找属性值指定集合的元组,not in相反

select * from student where sdept in ('cs','ma','is')

3)、字符匹配

通配符%和_,_代表单个字符,因为一个汉子有两个字符,因此_ _ 代表两个汉子

如果字符串本身就含有通配符%和_,这时就要使用escape<转义字符>,对通配符进行转义。例如查找以“DB_”开头,且倒数第三个字符为i的课程的详细信息:

select * from course where cname like 'DB\_'%i_ _' escape '\'; 注意\为转义字符

4)、是否为空用is null或is not null,is不能用=号代替

5)、多重条件查询

and 的优先级高于or但可以用括号来改变优先级

(三)、order by 子句

1、对于空值,若是升序,含空值的元组将最后显示。若按降序排列,空值的元组将最先显示(可将空值比作是无穷大)

2、查询全体学生,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列

select * from student order by sdept [asc],age desc; 其中[asc]可省略,因为默认是升序排列

(四)、聚集函数

count( [distinct | all]  *)      统计元组个数

count( [distinct | all]  <列名>)     统计一列中值的个数

sum( [distinct | all]  <列名>)      计算一列中值的求和(系列必须是数值型)

avg( [distinct | all]  <列名>)        计算一列中值的平均值(系列必须是数值型)

max( [distinct | all]  <列名>)       求一列中的最大值

min( [distinct | all]  <列名>)       求一列中的最小值

聚集函数遇到空值时,除了count( [distinct | all]  *)外,其他的都会跳过空值而只处理非空值;where子句不能用聚集函数作为条件表达式。

(五)、group by子句

1、group by子句江查询的结果按一列或多列的值分组,值相等的为一组

2、对查询结果分组的目的是为了细化聚集函数的作用对象。如果未分组,聚集函数作用于整个查询结果;而分组后,聚集函数将作用于每一个组,即每一组都有一个函数值

3、having短语后跟也是聚集函数,用于指定帅选条件。查询选修了3门以上课程的学生

select id from sc group by Sno having  count(*)>3


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值