前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL学习之查询

SQL学习之查询

作者头像
希希里之海
发布2018-05-16 15:37:21
9420
发布2018-05-16 15:37:21
举报
文章被收录于专栏:weixuqin 的专栏weixuqin 的专栏

查询实例:

1.创建数据库并使用:

代码语言:javascript
复制
create database school;
use school;

2.创建表并插入内容:

代码语言:javascript
复制
create table student(
  Sno char(9) primary key,
  Sname char(20) unique,
  Ssex char(2),
  Sage int,
  Sdept char(20));

create table Course(
  Cno char(4) primary key,
  Cname char(40),
  Cpno char(4),
  Ccredit int
 );

create table SC(
  Sno char(9),
  Cno char(4),
  Grade int,
  primary key(Sno,Cno),
  foreign key (sno) references Student(sno),
  foreign key (Cno) references Course(Cno));

insert into  student values ('95001','李勇','男',20,'CS');
insert into student values ('95002', '刘晨','女',19,'IS');
insert into  student values('95003', '王敏', '女',18, 'MA');
insert into student values('95004', '张立', '男',19, 'IS');

insert into Course values(1,'数据库', 5,4);
insert into Course values(2, '数学', 3 ,2);
insert into Course values(3, '信息系统', 1, 4);
insert into Course values('4', '操作系统', '6', 3);
insert into Course values('5', ' 数据结构', '7', 4);
insert into Course values('6', '数据处理',  '',  2);
insert into Course values('7',  'PASCAL语言', '6', 4);

insert into SC values('95001', '1', 92);
insert into SC values('95001', '2', 85);
insert into SC values('95001', '3', 88);
insert into SC values('95002', '2', 90);
insert into SC values('95002', '3', 80);

3.查询实例:

1. 投影查询 (1) 查询SC表的sno的不重复记录。 

代码语言:javascript
复制
select distinct * from SC;

(2) 改变查询结果的标题名:sno为学号,sname为姓名,ssex 为性别,sdept 为系名。

代码语言:javascript
复制
select sno as "学号", sname as "姓名", ssex as "性别", sdept as "系名" from student;

(3) 查询STUDENT表的前3条记录。

代码语言:javascript
复制
select * from student limit 3;

2. 选择查询 (1) 查询成绩在60-80之间的姓名、系名和成绩。

代码语言:javascript
复制
select sname,sdept,grade from student, SC where grade > 60 and grade < 90;

(2) 查询信息系和计算机系的姓名和成绩。

代码语言:javascript
复制
select grade, sname from student join sc on student.sno = sc.sno join course on course.cno = sc.cno
where sdept = 'cs' or sdept = 'is';

(3) 查询计算机系或女同学的记录。

代码语言:javascript
复制
select * from student join sc on student.sno = sc.sno join course on course.cno = sc.cno where sdept = 'cs' or ssex = '女';

(4) 查询李姓同学的记录。

代码语言:javascript
复制
select * from student join sc on student.sno = sc.sno join course on course.cno = sc.cno where sname like '%李%';

(5) 查询计算机系女同学的记录。

代码语言:javascript
复制
select * from student join sc on student.sno = sc.sno join course on course.cno = sc.cno where sdept = 'cs' and ssex = '女';

3. 排序查询 (1)查询STUDENT表的所有字段和记录按年龄由大到小排序。

代码语言:javascript
复制
select * from student order by sage;

(2)查询STUDENT表的所有字段和记录按年龄由小到大排序。

代码语言:javascript
复制
select * from student order by sage desc;

4. 结合统计函数 (1) 查询SC表的最高分。

代码语言:javascript
复制
select max(grade) from sc;

(2) 统计SC表95001学生的平均分。

代码语言:javascript
复制
select avg(sc.grade) from student join sc on student.sno = sc.sno where student.sno='95001';

(3)统计SC表各课程的最低分。

代码语言:javascript
复制
select min(grade) from sc join course on sc.cno=course.cno where course.cname='数据库';
select min(grade) from sc join course on sc.cno=course.cno where course.cname='数学';
select min(grade) from sc join course on sc.cno=course.cno where course.cname='信息系统';

(4)查询超过平均分的学生姓名和系名。

代码语言:javascript
复制
select sname, sdept from student join sc on student.sno=sc.sno where sc.grade>87;

(5)查询低于平均分的学生姓名、系名和课程名。

代码语言:javascript
复制
select sname, sdept, cname from student join sc on student.sno=sc.sno join course on sc.cno=course.cno where sc.grade<87;

5.其他 (1)查询其他系中比信息技术系某一学生小的学生姓名和年龄。

代码语言:javascript
复制
select sname,sage from student where sno not in (select sno from student where sdept='is' or sage >=19);

**由于使用mysql,无except语句,于是用not in代替。 (2) 查询其他系中比计算机系所有学生年龄都小的学生姓名和年龄。

代码语言:javascript
复制
select sname,sage from student where sno not in (select sno from student where sdept='cs' or sage>=20);

(3) 查询每一门课的间接先修课(先修课的先修课)。

代码语言:javascript
复制
select cname from course,sc where course.cpno=sc.cno;

***SQL和mysql语法有些是不一样的,如查询前几条数据的 top 和 limit,mysql中也没有except的用法,用 not in 替代。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-04-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档