MySQL学习之路3

六.子查询,联结和组合检索

0.创建新表

首先创建个新表grade(成绩表):

CREATE TABLE `grade` (
  `no` int(10) NOT NULL,
  `subject` char(32) DEFAULT NULL COMMENT '科目',
  `personid` int(10) DEFAULT NULL COMMENT '人员id',
  `grade` int(10) DEFAULT NULL COMMENT '成绩',
  PRIMARY KEY (`no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

然后插入数据:

INSERT INTO `grade` VALUES (1, 'math', 1, 80),(2, 'math', 2, 90),(3, 'math', 3, 70),(4, 'chinese', 1, 75),(5, 'chinese', 2, 95),(6, 'chinese', 3, 85),(7, 'english', 1, 70),(8, 'chinese', 2, 80),(9, 'chinese', 3, 95);

插入后验证插入的数据,查询如下:

1.子查询

select name from person where id in (select personid from grade where subject = "math" and grade > 70);

查找数学成绩大于70的人员名

select name, (select SUM(grade) from grade where personid = person.id) as 'all_grade' from person;

2.联结检索

select name, subject, grade from person, grade where person.id = grade.personid; 或

select name, subject, grade from person join grade where person.id = grade.personid;

3.组合检索

select * from person where age > 20 union select * from person where sex = 0;

注:

1)union必须有两条以上select语句组成

2)union每个查询的列,表达式或聚集函数必须相同

3)union默认去掉重复的行,若想要全部则可以用union all

4)可以与order by同时使用

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值