SQL学习之查询
查询实例:
1.创建数据库并使用:
create database school;
use school;
2.创建表并插入内容:
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的不重复记录。
select distinct * from SC;
(2) 改变查询结果的标题名:sno为学号,sname为姓名,ssex 为性别,sdept 为系名。
select sno as "学号", sname as "姓名", ssex as "性别", sdept as "系名" from student;
(3) 查询STUDENT表的前3条记录。
select * from student limit 3;
2. 选择查询
(1) 查询成绩在60-80之间的姓名、系名和成绩。
select sname,sdept,grade from student, SC where grade > 60 and grade < 90;
(2) 查询信息系和计算机系的姓名和成绩。
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) 查询计算机系或女同学的记录。
select * from student join sc on student.sno = sc.sno join course on course.cno = sc.cno where sdept = 'cs' or ssex = '女';
(4) 查询李姓同学的记录。
select * from student join sc on student.sno = sc.sno join course on course.cno = sc.cno where sname like '%李%';
(5) 查询计算机系女同学的记录。
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表的所有字段和记录按年龄由大到小排序。
select * from student order by sage;
(2)查询STUDENT表的所有字段和记录按年龄由小到大排序。
select * from student order by sage desc;
4. 结合统计函数
(1) 查询SC表的最高分。
select max(grade) from sc;
(2) 统计SC表95001学生的平均分。
select avg(sc.grade) from student join sc on student.sno = sc.sno where student.sno='95001';
(3)统计SC表各课程的最低分。
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)查询超过平均分的学生姓名和系名。
select sname, sdept from student join sc on student.sno=sc.sno where sc.grade>87;
(5)查询低于平均分的学生姓名、系名和课程名。
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)查询其他系中比信息技术系某一学生小的学生姓名和年龄。
select sname,sage from student where sno not in (select sno from student where sdept='is' or sage >=19);
**由于使用mysql,无except语句,于是用not in代替。
(2) 查询其他系中比计算机系所有学生年龄都小的学生姓名和年龄。
select sname,sage from student where sno not in (select sno from student where sdept='cs' or sage>=20);
(3) 查询每一门课的间接先修课(先修课的先修课)。
select cname from course,sc where course.cpno=sc.cno;
***SQL和mysql语法有些是不一样的,如查询前几条数据的 top 和 limit,mysql中也没有except的用法,用 not in 替代。
SQL学习之查询的更多相关文章
- SQL学习:查询的用法(1)
在SQL servre的使用中,查询的用法是最多的.最重要的,也是最难学习的,因此掌握查询的用法很重要. 先将表的示例上图 员工表: 部门表: ...
- SQL学习_查询重复数据和连接多个表数据的方法
进行数据库测试时需要根据不同场景查询数据,以便验证发现的问题是否为脏数据引起的.记录一下最近常用的查询方法: 1. 查询表中重复数据(id不同,多个字段值相同) select P1.* from pr ...
- SQL之联合查询学习笔记
定义: 联合查询可合并多个相似的选择查询的结果集.等同于将一个表追加到另一个表,从而实现将两个表的查询组合到一起,使用谓词为UNION或UNION ALL. 语法格式 UNION 可以将两个或两个以上 ...
- SQL 数据分页查询
最近学习了一下SQL的分页查询,总结了以下几种方法. 首先建立了一个表,随意插入的一些测试数据,表结构和数据如下图: 现在假设我们要做的是每页5条数据,而现在我们要取第三页的数据.(数据太少,就每页5 ...
- 【转】Sql Server参数化查询之where in和like实现之xml和DataTable传参
转载至: http://www.cnblogs.com/lzrabbit/archive/2012/04/29/2475427.html 在上一篇Sql Server参数化查询之where in和li ...
- 转载 50种方法优化SQL Server数据库查询
原文地址 http://www.cnblogs.com/zhycyq/articles/2636748.html 50种方法优化SQL Server数据库查询 查询速度慢的原因很多,常见如下几种: 1 ...
- JAVAEE——Mybatis第二天:输入和输出映射、动态sql、关联查询、Mybatis整合spring、Mybatis逆向工程
1. 学习计划 1.输入映射和输出映射 a) 输入参数映射 b) 返回值映射 2.动态sql a) If标签 b) Where标签 c) Sql片段 d) Foreach标签 3.关联查询 a) 一对 ...
- TERADATA SQL学习随笔<一>
此博客内容简介及目录 http://www.cnblogs.com/weibaar/p/6644261.html 最近在TERADATA环境学习SQL.在这里记录一下学习中查过的知识点,作为备案. 目 ...
- 【转】MongoDB学习笔记(查询)
原文地址 MongoDB学习笔记(查询) 基本查询: 构造查询数据. > db.test.findOne() { "_id" : ObjectId("4fd58ec ...
随机推荐
- JS常见操作,日期操作,字符串操作,表单验证等
复制代码 //第一篇博文,希望大家多多支持 /***** BasePage.js 公共的 脚本文件 部分方法需引用jquery库 *****/ //#region 日期操作 //字符串转化为时间. f ...
- (译文)React----React应用程序流式服务端渲染
好处 React16推出了流式服务端渲染,它允许你并行地分发HTML片段.这样可以让渲染 出的首字节有意义的内容给用户速度更快. (例子1,上面部分是一次性转换,下面是流渲染,两种方式) 而且相对re ...
- 编写简单的辅助脚本来在 Google 表格上记账
我的第二份工作入职在即,而这一次则真的是完全跑到了一个陌生的城市了.租房,购置相关用品,还尚未工作钱就花掉一堆.尽管我个人之前一直都没有过记账的习惯,但为了让自己能够搞清楚自己的钱都花在哪里了,于是还 ...
- 连接数据后,当执行查询语句报错:ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询
参考博客:http://blog.csdn.net/lanchengxiaoxiao/article/details/40982771 1.在cmd窗口通过sqlplus连接数据库 C:\Users\ ...
- 【福大软工】 W班级总成绩排名3
评分链接: alpha测试 软件产品案例分析 总分排名: 团队千帆竞发图 总结: 本次排名是alpha测试 软件产品案例分析 两次排名的汇总. 1.alpha测试小组评价: 听说:10篇冲 ...
- Beta 第三天
今天遇到的困难: 组员对github极度的不适应 github的版本控制和协同化编程确实操作起来需要一定的熟练度,我们缺乏这种熟练度 Android Studio版本不一致项目难以打开的问题仍然无法解 ...
- day-4 python多进程编程知识点汇总
1. python多进程简介 由于Python设计的限制(我说的是咱们常用的CPython).最多只能用满1个CPU核心.Python提供了非常好用的多进程包multiprocessing,他提供了一 ...
- php中函数和方法的区别
php的方法就是定义在类里面的方法,一般不建议在方法内部定义方法,但是这种也可以这种叫做内部方法,一般只能本方法调用. 如果定义在同一个类中的方法,在同类的其他方法中调用是$this->方法名就 ...
- php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中
php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中 1.phalcon框架的安装: phalcon框架在windows本地安装可以利用wamp软件,安装之后可以查看对应 ...
- 算法题丨Two Sum
描述 Given an array of integers, return indices of the two numbers such that they add up to a specific ...