查询实例:

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 替代。

MySQL学习笔记(一):查询的更多相关文章

  1. 【SQL】MySQL学习笔记1-----子查询

    1.什么叫子查询? 通俗的讲就是查询中有查询,SQL语句中有多个select语句. 2.什么地方可以嵌入子查询? SELECT 列 (不在标准之内) FROM 表 (可以嵌入,作为表存在) WHERE ...

  2. Entity Framework with MySQL 学习笔记一(查询)

    参考 : http://msdn.microsoft.com/en-us/data/jj574232.aspx EF 查询基本上有3中 默认是 Lazy Loading 特色是只有在需要数据的时候EF ...

  3. MySQL学习笔记(3) - 查询服务器版本,当前时间,当前用户

    SELECT VERSION(); --显示当前服务器版本 SELECT NOW(); --显示当前日期时间 SELECT USER(); --显示当前用户 MySQL中语句规范: 1.关键字和函数名 ...

  4. MySQL学习笔记(二)—查询

    一.多表连接查询 新建两张表t_user.t_order.              1.内连接      返回满足条件的所有记录. (1)显式内连接      使用inner join关键字,在on ...

  5. MySql学习笔记(一)之DQL常用查询

    MySql学习笔记(一)之DQL常用查询 前言:mysql是中小型的数据库软件,SQL语言分为DDL,DCL,DML,DQL四种,在这里重点讲解DQL的单表查询. 正文:在学习mysql单表查询之前, ...

  6. Mysql学习笔记(三)对表数据的增删改查。

    正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...

  7. MySQL学习笔记一

    MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...

  8. Mysql学习笔记(一)数据类型

    原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型     Mysql数据类型             含义(有符号)     tinyint(m ...

  9. 初识mysql学习笔记

    使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...

  10. MySQL学习笔记-事务相关话题

    事务机制 事务(Transaction)是数据库区别于文件系统的重要特性之一.事务会把数据库从一种一致状态转换为另一个种一致状态.在数据库提交工作时,可以确保其要么所有修改都已经保存了,要么所有修改都 ...

随机推荐

  1. 如何在老惠普电脑上安装windows xp系统

    如何在老惠普电脑上安装windows xp系统 前提,老式的紧凑的惠普台式机,装了linux系统,想要装windows xp系统另作他用.但是使用U盘PE怎么也进不了? 解决办法: 1.拆下惠普主机上 ...

  2. Python 小知识点(1)

    1.Python命名规则------>下划线连接    girl_of_wfb="lgl" 2.常量-----名称全大写->WFB="WFaceBoss&qu ...

  3. JAVA爬取亚马逊的商品信息

    在程序里面输入你想爬取的商品名字,就可以返回这件商品在亚马逊搜索中都所有相关商品的信息,包括名字和价格. 解决了在爬取亚马逊时候,亚马逊可以识别出你的爬虫,并返回503,造成只能爬取几个页面的问题. ...

  4. 02-20 winform 上传图片并读取图片

    建立一个windows窗体应用程序,在form1界面中拖入两个按钮和一个pictureBox,通过输入输出流来上传图片和显示图片.需要添加一下openFileDialog1. 界面如下: 在cs中写上 ...

  5. django表单的字段验证(clean_<fieldname>())和ajax的字段验证

    django中的Form有个很重要的功能:验证用户输入 而验证用户输入也可以分为2种: (1)前端本身的验证,例如:字段是否可为空,手机号码格式是否正确等: (2)前端输入数据和后台数据库数据的验证, ...

  6. SQL语句 表字段的操作 添加,删除,修改表的字段

    alter table 表名 drop constraint 约束名字   //删除字段的原有约束 alter table 表名 add constraint 约束名字 DEFAULT 默认值 for ...

  7. Tornado之自定义session

      面向对象基础 面向对象中通过索引的方式访问对象,需要内部实现 __getitem__ .__delitem__.__setitem__方法 #!/usr/bin/env python # -*- ...

  8. java基础之集合:List Set Map的概述以及使用场景

    本文的整体思路以及部分文字来源:来源一 和 来源二 Java集合类的基本概念: 首先大家要明白集合为什么会出现: 在编程中,常常需要集中存放多个数据.从传统意义上讲,数组是我们的一个很好的选择,前提是 ...

  9. selenium2 定位 窗体切换等等 (二)

    定位用的html素材有两个 demo.html <html> <head> <title>UI Automation Testing</title> & ...

  10. wdcp挂载数据盘为WWW以及之后出现的各种问题解决方法

    昨天晚上突然有客户反映服务器访问不了,经检查后是因为磁盘满了! 购买阿里云的ECS选择linux系统的时候会赠送20G的系统盘,通常来讲自己用的话基本够了,但是我们作为网络公司,安装了一个WDCP后给 ...