数据库 查询之单表查询

数据查询

  1. 单表查询

选择表中的若干列

  1. 查询指定列

查询全体学生的学号与姓名

Select sno,sname

From student;

查询全体学生的姓名、学号、所在系

Select sname,sno,sdept

From student ;

(2) 查询全部列

查询全体学生的详细记录

 Select *

From student ;.

等价于

Select sno , sname ,ssex ,sage ,sdept

From student ;

(3) 查询经过计算的值

查询全体学生的姓名及其出生年份

Select sname,2014-sage /*查询结果的第2列是一个算数表达式,是用当前的年份(假设是2014年)减去学生的年龄,这样所得的是学生的出生年份*/

From student ;

 选择表中的若干元组

  1. 消除取值重复的行(如果想去掉表中的重复行,必须指定distinct

查询选修了课程的学生学号

Select distinct sno

From sc ;

  1. 查询满足条件的元组
  1. 比较大小      用于比较大小的运算符一般包括 = , > ,< ,>= ,<= ,!= 或<>(不等于) , !> ,!<

查询计算机科学系全体学生的名单

Select name

From student

Where sdept=’计算机科学系’ ;

查询所有年龄在20岁以下的学生姓名及年龄

Select sname ,sage

From student

Where sage<20 ;

查询考试成绩不及格的学生的学号

Select distinct sno

From sc

Where grade<60 ;

b.确定范围

 谓词 between ....and 和 not between...and ...可以用来查找属性值在(或不在)指定范围内的元组,其中between后是范围的下限(即低值),and后是范围的上限(即高值)

查询年龄在20~35岁之间的学生的姓名、系别、年龄

Select sname,sage,sdept

From student

Where sage between 20 and 35 ;

     C.确定集合

     谓词in 可以用来查找属性值属于指定集合的元组,与in相对的谓词是 not in ,用于查找属性值不属于指定集合的元组。

     查询计算机科学系cs ,数学系ma,信息系is 学生的姓名和性别。

Select sname ,sex

From student

Where sdept in (‘cs’,’ma’,’is’) ;

D.字符匹配

谓词 like 可以用来进行字符串的匹配

其含义是查找指定的属性列值与<匹配串>相匹配的元组。<匹配串>可以是一个完整的字符串,也可以含有通配符%和 _

 %(百分号)代表任意长度(长度可以是0)的字符串。例如a%b表示以a开头,以b结尾的任意长度的字符串。如acb ,addagb ,ab 等都满足该匹配串。

  _ (下横线)代表任意单个字符。如a_b 表示以a 开头,以 b 结尾 的长度为3 的任意字符串。 如acb ,afb 等都满足该匹配串 。

查询学号为 201215121 的学生的详细情况。

Select *

From student

Where sno  like ‘201215121’ ;

查询所有姓刘的学生的姓名、学号、性别

Select sno, sage , ssex

From student

Where sname  like ‘刘%’ ;

 

e.涉及空值的查询

查询缺少成绩的学生的学号和相应的课程号

Select sno,cno

From sc

Where grade is null ;

f.  多重条件查询

查询计算机科学系年龄在20岁以下的学生姓名

Select sname

From student

Where sdept = ‘计算机科学系’ and sage<20 ;

3. Oeder by 子句

用户可以使用order by 子句对查询结果按照一个或多个属性列的升序(ASC) 或降序(desc)排列,默认值为升序

4.聚集函数

Count(*)     统计元组个数

Count( [distinct|all] )    统计一列中值的个数

sum( [distinct|all] )      计算一列值的总和(此列必须是数值型)

avg( [distinct|all] )       计算一列值的平均值(此列必须是数值型)

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

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

注意:where子句中不能用聚集函数作为条件表达式 ,聚集函数只能能用于select子句和group by中的having子句

5.group by子句

group by 子句将查询结果按某一列或多列的值分组,值相等的为一组。

 求各个课程号及相应的选课人数

Select cno ,count(sno)

From sc

 Group by cno ;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值