SQL数据查询

一.单表查询

1.选择表中的若干列

  • 查询列

从Student表中查询全体学生的学号和姓名:

select Sno,Sname from Student;
  • 查询所有列

从Student表中查询学生所有信息

select * from Student   等价于   select Sno,Sname,Ssex from Student;
  • 查询经过计算的值

从Student表中查询学生出生信息

select Sname,2014 - Sage from Student;   #用2014年减去年龄

输出是:
这里写图片描述

可以使用别名代替 2014-Sage

select Sname,2014 - Sage birthDay from Student;   #2014 - Sage birthDay 用birthDay代替

2.选择表中的若干元组

  • 消除取值重复的行

从Student表中查询选修了课程的学生学号

select distinct Sno from Student;    #distinct去重   默认值all
  • 查询满足条件的元组

从Student表中查询软件工程系的学生姓名

select Sname from Student where Sdept = 'RJ';   

这里写图片描述

字符匹配
- % 代表任意长度的字符串,如a%b,有acb,adddhhb,afnhb等以a开头,b结尾都满足该匹配值
- _ 代表任意单个字符,如a_b,有 acb,ahb等

从Student表中查询姓刘的学生姓名、学号

select Sname,Sno from Student where Sname like '刘%';
注: ‘\’斜杠转义字符 ,将%、_ 转为普通的 %、_

查询DB_Design课程的课程号和学分

select Cno,Ccredit from Course where Cname like 'DB\_Design' escape '\';  #'DB\_Design' escape '\'

3.order by 子句

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

查询选修3号课程学生学号和成绩,按成绩降序排列

select Sname,Grade from SC where Cno = '3' order by Grade desc;

4.聚集函数

如下
这里写图片描述

注: where子句中不能用聚集函数,聚集函数只能用于select子句和group by子句中

5.group by子句

它是将查询结果按某一列或多列的值分组,值相等的为一组

查询选修了3门课程学生学号

select Sno from SC group by Sno having COUNT(*)>3;

二.连接查询

查询每个学生及其选修课程的情况(学生情况存在Student表中,学生选课情况存在SC表中)


select Student.*,SC.* from Student,SC where Student.Sno = SC.Sno;
输出为这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值