【一天学会MySQL课程 64集完整阶段二 P54 ~P64 】 _MySQL数据库(学习记录及拓展)

查询练习
43. 现查询所有同学的Sno、Cno和grade列。
select sno, cno, grade from score, grade where degree between low and upp;

54. 查询练习-按等级查询

  1. 现查询所有同学的Sno、Cno和grade列。

– 43、假设使用如下命令建立了一个grade表:

mysql> create table grade(
    -> low int(3),
    -> upp int(3),
    -> grade char(1)
    -> );
Query OK, 0 rows affected (0.04 sec)

mysql> insert into grade values(90, 100, 'A');
Query OK, 1 row affected (0.01 sec)

mysql> insert into grade values(80, 89, 'B');
Query OK, 1 row affected (0.00 sec)

mysql> insert into grade values(70, 79, 'C');
Query OK, 1 row affected (0.01 sec)

mysql> insert into grade values(60, 69, 'D');
Query OK, 1 row affected (0.00 sec)

mysql> insert into grade values(0, 59, 'E');
Query OK, 1 row affected (0.00 sec)

mysql> select * from grade;
+------+------+-------+
| low  | upp  | grade |
+------+------+-------+
|   90 |  100 | A     |
|   80 |   89 | B     |
|   70 |   79 | C     |
|   60 |   69 | D     |
|    0 |   59 | E     |
+------+------+-------+
5 rows in set (0.00 sec)

– 现查询所有同学的sno、cno 和 grade列

mysql> select sno, cno, grade from score, grade where degree  between low  and  upp;
+-----+-------+-------+
| sno | cno   | grade |
+-----+-------+-------+
| 101 | 3-105 | A     |
| 101 | 9-888 | B     |
| 102 | 3-105 | A     |
| 103 | 3-105 | A     |
| 103 | 3-245 | B     |
| 103 | 6-166 | B     |
| 104 | 3-105 | B     |
| 105 | 3-105 | B     |
| 105 | 3-245 | C     |
| 105 | 6-166 | C     |
| 109 | 3-105 | C     |
| 109 | 3-245 | D     |
| 109 | 6-166 | B     |
+-----+-------+-------+
13 rows in set (0.00 sec)

55. 连接查询-内连接、左连接、右连接

SQL 的四种连接查询
内 连 接 \color{orange}{内连接 }
inner join 或者 join

内联查询,其实就是两张表中的数据,通过某个字段相等,查询出相关记录数据。

外 连 接 \color{orange}{外连接 }

  1. 左连接 left join 或者 left outer join
  2. 右连接 right join 或 right outer join
  3. 完全外连接 full join 或者 full outer join

创建两个表:
– 1、person表

mysql> create table person(
    -> id int,
    -> name varchar(20),
    -> cardId int
    -> );
Query OK, 0 rows affected (0.04 sec)

– 2、card表

mysql> create table card(
    -> id int,
    -> name varchar(20)
    -> );
Query OK, 0 rows affected (0.03 sec)

添加数据

mysql> insert into card values(1, '饭卡');
Query OK, 1 row affected (0.02 sec)

mysql> insert into card values(2, '建行卡');
Query OK, 1 row affected (0.00 sec)

mysql> insert into card values(3, '农行卡');
Query OK, 1 row affected (0.00 sec)

mysql> insert into card values(4, '工商卡');
Query OK, 1 row affected (0.00 sec)

mysql> insert into card values(5, '邮政卡');
Query OK, 1 row affected (0.00 sec)

mysql> select * from card;
+------+-----------+
| id   | name      |
+------+-----------+
|    1 | 饭卡      |
|    2 | 建行卡    |
|    3 | 农行卡    |
|    4 | 工商卡    |
|    5 | 邮政卡    |
+------+-----------+
5 rows in set (0.00 sec)
mysql> insert into person values(1, '张三', 1);
Query OK, 1 row affected (0.01 sec)

mysql> insert into person values(2, '李四', 3);
Query OK, 1 row affected (0.00 sec)

mysql> insert into person values(3, '王五', 6);
Query OK, 1 row affected (0.01 sec)

mysql> select * from person;
+------+--------+--------+
| id   | name   | cardId |
+------+--------+--------+
|    1 | 张三   |      1 |
|    2 | 李四   |      3 |
|    3 | 王五   |      6 |
+------+--------+--------+
3 rows in set (0.00 sec)

/* ------ 没有创建外键!!! ------ */

1. inner join 查询(内连接)/ join on 查询(内联查询)

mysql> select * from person inner join card on person.cardId = card.id;
+------+--------+--------+------+-----------+
| id   | name   | cardId | id   | name      |
+------+--------+--------+------+-----------+
|    1 | 张三   |      1 |    1 | 饭卡      |
|    2 | 李四   |      3 |    3 | 农行卡    |
+------+--------+--------+------+-----------+
2 rows in set (0.00 sec)

join on 查询(内联查询),同 inner join 效果差不多

mysql> select * from person join card on person.cardId = card.id;
+------+--------+--------+------+-----------+
| id   | name   | cardId | id   | name      |
+------+--------+--------+------+-----------+
|    1 | 张三   |      1 |    1 | 饭卡      |
|    2 | 李四   |      3 |    3 | 农行卡    |
+------+--------+--------+------+-----------+
2 rows in set (0.00 sec)

2. 【left join、left outer join】左外连接

左外连接,会把左边表里面的所有数据取出来,而右边表中的数据,如果有相等的,就显示出来;
如果没有,就会补NULL。

left join

mysql> select * from person  left join card on person.cardId = card.id;
+------+--------+--------+------+-----------+
| id   | name   | cardId | id   | name      |
+------+--------+--------+------+-----------+
|    1 | 张三   |      1 |    1 | 饭卡      |
|    2 | 李四   |      3 |    3 | 农行卡    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值