MySQL数据库【查询详解】

在这里插入图片描述

表结构 

mysql> desc stus;
+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| id      | int(11)      | NO   | PRI | NULL    | auto_increment |
| gradeId | int(11)      | YES  | MUL | NULL    |                |
| NAME    | varchar(100) | NO   |     | NULL    |                |
| age     | int(3)       | YES  |     | NULL    |                |
| bir     | date         | YES  |     | NULL    |                |
| english | int(3)       | YES  |     | NULL    |                |
| chinese | int(3)       | YES  |     | NULL    |                |
+---------+--------------+------+-----+---------+----------------+

mysql> select * from stus;
+----+---------+--------------+------+------------+---------+---------+
| id | gradeId | NAME         | age  | bir        | english | chinese |
+----+---------+--------------+------+------------+---------+---------+
|  1 |       1 | 周棋洛       |   18 | 2001-06-01 |      78 |    NULL |
|  2 |       2 | 张郁苗       |   18 | 2002-11-07 |     130 |     120 |
|  3 |       1 | 小猪佩奇     |    6 | 2015-06-10 |      34 |    NULL |
|  4 |       3 | 猪爸爸       |    8 | 2012-09-12 |      34 |      56 |
|  5 |       3 | 猪妈妈       |    7 | 2012-09-11 |      56 |      78 |
+----+---------+--------------+------+------------+---------+---------+

简单查询 

在这里插入图片描述 

单列查询

select 列名 from 表;

从stus表中查询名字的字段

mysql> select name from stus;
+--------------+
| name         |
+--------------+
| 周棋洛       |
| 张郁苗       |
| 小猪佩奇     |
| 猪爸爸       |
| 猪妈妈       |
+--------------+

多列查询

select 列名,列名…… from 表;

从stus表中查询名字和年龄这两个字段

mysql> select name,age from stus;
+--------------+------+
| name         | age  |
+--------------+------+
| 周棋洛       |   18 |
| 张郁苗       |   18 |
| 小猪佩奇     |    6 |
| 猪爸爸       |    8 |
| 猪妈妈       |    7 |
+--------------+------+

查询所有列 *

select * from 表;

从stus表查询所有字段

mysql> select * from stus;
+----+---------+--------------+------+------------+---------+---------+
| id | gradeId | NAME         | age  | bir        | english | chinese |
+----+---------+--------------+------+------------+---------+---------+
|  1 |       1 | 周棋洛       |   18 | 2001-06-01 |      78 |    NULL |
|  2 |       2 | 张郁苗       |   18 | 2002-11-07 |     130 |     120 |
|  3 |       1 | 小猪佩奇     |    6 | 2015-06-10 |      34 |    NULL |
|  4 |       3 | 猪爸爸       |    8 | 2012-09-12 |      34 |      56 |
|  5 |       3 | 猪妈妈       |    7 | 2012-09-11 |      56 |      78 |
+----+---------+--------------+------+------------+---------+---------+ 

distinct去重

distinct关键字可以出去重复出现的内容,注意:不能部分使用distinct

 mysql> select distinct age from stus;
+------+
| age  |
+------+
|   18 |
|    6 |
|    8 |
|    7 |
+------+

起别名 as

我们在查询时,如果对原有字段名不满意,这时就可以通过as关键字对字段起别名,注意:as是可省略的,如下所示

mysql> select name as "姓名" from stus;
+--------------+
| 姓名         |
+--------------+
| 周棋洛       |
| 张郁苗       |
| 小猪佩奇     |
| 猪爸爸       |
| 猪妈妈       |
+--------------+

mysql> select name "姓名" from stus;
+--------------+
| 姓名         |
+--------------+
| 周棋洛       |
| 张郁苗       |
| 小猪佩奇     |
| 猪爸爸       |
| 猪妈妈       |
+--------------+ 

条件查询

大于判断 >

😀 : 查找stus表中年龄大于18岁的学生姓名

mysql> select name from stus where age > 18;
Empty set (0.00 sec)

小于判断 <

😀 : 查找stus表中年龄小于18岁的学生姓名

mysql> select name from stus where age < 18;
+--------------+
| name         |
+--------------+
| 小猪佩奇     |
| 猪爸爸       |
| 猪妈妈       |
+--------------+ 

大于等于判断 >=

😀 : 查找stus表中年龄大于等于18岁的学生姓名

mysql> select name from stus where age >= 18;
+-----------+
| name      |
+-----------+
| 周棋洛    |
| 张郁苗    |
+-----------+ 

小于等于判断 <=

😀 : 查找stus表中年龄小于等于18岁的学生姓名

mysql> select name from stus where age <= 18;
+--------------+
| name         |
+--------------+
| 周棋洛       |
| 张郁苗       |
| 小猪佩奇     |
| 猪爸爸       |
| 猪妈妈       |
+--------------+ 

不等于判断 <> 或 !=

😀 : 查找stus表中年龄不等于18岁的学生姓名

mysql> select name from stus where age <> 18;
+--------------+
| name         |
+--------------+
| 小猪佩奇     |
| 猪爸爸       |
| 猪妈妈       |
+--------------+

mysql> select name from stus where age != 18;
+--------------+
| name         |
+--------------+
| 小猪佩奇     |
| 猪爸爸       |
| 猪妈妈       |
+--------------+ 

BETWEEN … AND …包含判断

😀 : 查找stus表中年龄在10~18岁的学生姓名

mysql> select name,age from stus where age between 8 and 20;
+-----------+------+
| name      | age  |
+-----------+------+
| 周棋洛    |   18 |
| 张郁苗    |   18 |
| 猪爸爸    |    8 |
+-----------+------+ 

IN(…)

😀 : 查找stus表中年龄为8岁或7岁的学生姓名

mysql> select name,age from stus where age in(7,8);
+-----------+------+
| name      | age  |
+-----------+------+
| 猪爸爸    |    8 |
| 猪妈妈    |    7 |
+-----------+------+ 

IS NULL

😀 : 查找stus表中名字为空的学生信息

mysql> select * from stus where name is null;
Empty set (0.02 sec) 

IS NOT NULL

😀 : 查找stus表中名字不为空的学生信息

 mysql> select * from stus where name is not null;
+----+---------+--------------+------+------------+---------+---------+
| id | gradeId | NAME         | age  | bir        | english | chinese |
+----+---------+--------------+------+------------+---------+---------+
|  1 |       1 | 周棋洛       |   18 | 2001-06-01 |      78 |    NULL |
|  2 |       2 | 张郁苗       |   18 | 2002-11-07 |     130 |     120 |
|  3 |       1 | 小猪佩奇     |    6 | 2015-06-10 |      34 |    NULL |
|  4 |       3 | 猪爸爸       |    8 | 2012-09-12 |      34 |      56 |
|  5 |       3 | 猪妈妈       |    7 | 2012-09-11 |      56 |      78 |
+----+---------+--------------+------+------------+---------+---------+

AND 或 &&

只有多个条件都成立才会返回真,否则就认为false

😀 : 查找stus表中年龄为18岁的周棋洛的学生信息

mysql> select * from stus where name = "周棋洛" AND age = "18";
+----+---------+-----------+------+------------+---------+---------+
| id | gradeId | NAME      | age  | bir        | english | chinese |
+----+---------+-----------+------+------------+---------+---------+
|  1 |       1 | 周棋洛    |   18 | 2001-06-01 |      78 |    NULL |
+----+---------+-----------+------+------------+---------+---------+

mysql> select * from stus where name = "周棋洛" && age = "18";
+----+---------+-----------+------+------------+---------+---------+
| id | gradeId | NAME      | age  | bir        | english | chinese |
+----+---------+-----------+------+------------+---------+---------+
|  1 |       1 | 周棋洛    |   18 | 2001-06-01 |      78 |    NULL |
+----+---------+-----------+------+------------+---------+---------+ 

OR 或 ||

只要有一个条件成立就返回真,都不成立返回false

😀 : 查找stus表中名字叫周棋洛或者叫张郁苗的学生信息

mysql> select * from stus where name = "周棋洛" OR name = "张郁苗";
+----+---------+-----------+------+------------+---------+---------+
| id | gradeId | NAME      | age  | bir        | english | chinese |
+----+---------+-----------+------+------------+---------+---------+
|  1 |       1 | 周棋洛    |   18 | 2001-06-01 |      78 |    NULL |
|  2 |       2 | 张郁苗    |   18 | 2002-11-07 |     130 |     120 |
+----+---------+-----------+------+------------+---------+---------+

mysql> select * from stus where name = "周棋洛" || name = "张郁苗";
+----+---------+-----------+------+------------+---------+---------+
| id | gradeId | NAME      | age  | bir        | english | chinese |
+----+---------+-----------+------+------------+---------+---------+
|  1 |       1 | 周棋洛    |   18 | 2001-06-01 |      78 |    NULL |
|  2 |       2 | 张郁苗    |   18 | 2002-11-07 |     130 |     120 |
+----+---------+-----------+------+------------+---------+---------+ 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Riqk_Qin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值