[TOC]
查询:我们在sql中最常见也是使用最多的就是select
**查询的特点:**
select中间可以查询我们想要的字段信息,也是一个结果集例如:
查询列表可以是:表中的字段,常量值,表达式,函数
查询的结果是一张虚拟的表
<br>
<br>
>[success] ## **一:查询单个字段**
```sql
select `name` from gin_user;
```
结果:
```
WW
风清扬
洪七公
降龙十八掌
张无忌
张三丰
杨过
小龙女
```
<br>
<br>
>[success] ## **二:查询多个字段**
```sql
select `name`,age from gin_user;
```
结果:
```
WW 25
风清扬 67
洪七公 77
降龙十八掌 19
张无忌 90
张三丰 800
杨过 40
小龙女 43
```
<br>
<br>
>[success] ## **三:查询所有字段**
```sql
select * from gin_user;
```
结果:
```
1 WW 25
2 风清扬 67
3 洪七公 77
4 降龙十八掌 19
5 张无忌 90
6 张三丰 800
7 杨过 40
8 小龙女 43
```
<br>
<br>
>[success] ## **四:查询表达式**
> 可以用于统计
```sql
SELECT 100 * 10;
```
:-: ![](https://img.kancloud.cn/a3/7b/a37b8d4e2e0fd895f382a2a63ff72574_225x95.png)
<br>
<br>
>[success] ## **五:查询函数**
```sql
select version();
```
<br>
<br>
>[success] ## **六:起别名**
> (1)起别名是为了,方便理解
> (2)如果查询中有重复的数据可以使用别名区分开来
### **方式1:使用as**
```sql
SELECT 100 * 10 as 结果;
```
:-: ![](https://img.kancloud.cn/ff/1d/ff1d293c7189f80f4710db99c38a116e_246x105.png)
```sql
select `name` as 我叫什么,age as 我年龄多大 from gin_user;
```
:-: ![](https://img.kancloud.cn/0f/51/0f5112f7eb5e1b18429063c0d3be18a7_399x216.png)
<br>
<br>
### **方式2:使用空格**
```sql
select `name` 我叫什么,age 我年龄多大 from gin_user;
```
![](https://img.kancloud.cn/53/53/53534cbb0ad72eee8de102ab54f71622_334x196.png)
结果还是一样
<br>
<br>
### 案例:
查询age,将结果显示为sign
```sql
select age sign from gin_user;
```
<br>
<br>
>[success] ## 七:去重(DISTINCT)
> 案例:查看表中有多少数据
```sql
select `name` from gin_user;
```
:-: ![](https://img.kancloud.cn/ae/cd/aecd0c12ebcd68122f9e37f419fd2d50_270x238.png)
>[danger] 这里我故意插入了几条相同的数据,为了下面做铺垫
> **DISTINCT**去重函数
```sql
select DISTINCT `name` from gin_user;
```
:-: ![](https://img.kancloud.cn/a7/d0/a7d025be2de8758204d42dd01490f8ca_442x204.png)
<br>
<br>
>[success] ## **八:MYSQL中 **+** 作用**
>1:在mysql中+号只有一个作用就是运算
>2:如果其中一方不是数值(是字符串)类型,则会试图将它转换成数值型,如果转换成功则在进行运算.
>3:如果转换失败则,将字符型转换成0
>4:如果其中一方为null,则结果肯定为null
```sql
select 100 + 99
select "321" + 79
select "jack" + 100
```
:-: ![](https://img.kancloud.cn/83/d5/83d5e82288868c149038028fe2cbc6c6_232x77.png)
:-: ![](https://img.kancloud.cn/9e/0a/9e0a94232776d52cbabf17fcba6e75fa_299x110.png)
<br>
<br>
>[success] ## **九:concat实现连接**
> concat是将所有列整合在一个列里面进行展示
查询员工名字和年龄,并显示为名字
```sql
SELECT
CONCAT(`name`,`age`) as 姓名
from gin_user;
```
<br>
<br>
<br>
>[success] ## **十:ifnull判断为空**
> 来判断该字段是否为空,需填写两个参数,第一个参数是要判断为空的列名,第二个是为空后需要返回什么
需求:-- 显示出表gin_user中所有的列,每个列用逗号隔开连接,列头显示成OUT_PUT
**写的方法1:**
```sql
SELECT
IFNULL(money, 0 ) AS 奖金, money
FROM
gin_user;
```
**写的方法2:**
```sql
SELECT
CONCAT(
`id`,
",",
`name`,
",",
age,
",",
money,
",",
IFNULL( money, 0 )) AS OUT_PUT
FROM
gin_user;
```
:-: ![](https://img.kancloud.cn/6b/20/6b200889bcde65d49c08920c88a7cccf_438x268.png)
<br>
<br>
<br>
>[success] ## **十一:条件运算符----查询**
> 逻辑运算符:and,or,not
> 条件运算符:>,<,>=,<=,!=,<> ,==
> 模糊查询:like,between,in,is,null
**案例1:查询员工工资大于12000的员工信息**
```sql
select * from gin_user where money < 12000;
```
:-: ![](https://img.kancloud.cn/81/10/8110004dd36adb0371667d22575c3b36_497x288.png)
<br>
**案例2:查询部门编号不等于50的员工名和部门编号**
```sql
SELECT
`name`,
Department_id
FROM
gin_user
WHERE
Department_id != 50;
```
:-: ![](https://img.kancloud.cn/1a/f5/1af5d724357aa8cf005c81755115151a_482x359.png)
<br>
案例3:查询工资在10000-20000之间,的员工名,工资,奖金
```sql
SELECT
`name`,
money,
bonus
FROM
gin_user
WHERE
money > 10000
AND money < 20000;
```
:-: ![](https://img.kancloud.cn/26/08/260841733f31a39f339cf77b9bc2070e_515x173.png)
<br>
**案例4:查询部门编号不是在50到70之间,或者工资离于15000的员工信息**
```sql
SELECT
*
FROM
gin_user
WHERE
NOT ( Department_id > 50 AND Department_id < 70 )
OR money > 15000
```
:-: ![](https://img.kancloud.cn/0d/a8/0da858e95b7b4f0c1b61df6f2cf00c5e_500x349.png)
>[info] ### **(1):条件运算符----模糊查询**
>一般和通配符搭配使用
>通配符:% 的意思是任意多个字符
**案例1:查询员工名中包含“小”的员工信息**
```sql
SELECT
*
FROM
gin_user
WHERE
`name` LIKE "%小%";
```
:-: ![](https://img.kancloud.cn/e0/a0/e0a0cb3133b6ae61f12d948e4f5ff2c3_471x106.png)
<br>
<br>
**案例2:查询员工名中第二个字符为d,第4个字符为F的员工名和工资**
```sql
SELECT
*
FROM
gin_user
WHERE
`name` LIKE '_d__F%';
```
:-: ![](https://img.kancloud.cn/2d/33/2d33240a88e4f61430fe47d73f772687_519x71.png)
<br>
<br>
>[info] ### **(2):条件运算符----in**
> 含义:in就是判断查询列表中的值是否属于in列表中的某一项
> 特点:in类型中的值类型必须统一
#### **案例1:**
**查询员工id是13,15,17的员工姓名和薪资**
```sql
SELECT
`name`,
money
FROM
gin_user
WHERE
`id` IN ( 13, 15, 17 );
```
<br>
#### **案例2:**
**查询有多少个没有奖金的员工名和奖金**
```sql
SELECT
`name`,
bonus
FROM
gin_user
WHERE
bonus IS NULL;
```
:-: ![](https://img.kancloud.cn/38/62/386202ad776ac374b7ea03e8b0b93055_347x135.png)
>[danger] 注意:这里不能写成,bonus = null,错误,因为= 不能判断null类型
<br>
#### **案例3:**
**查询有奖金的员工名和奖金 **
```sql
SELECT
`name`,
bonus
FROM
gin_user
WHERE
bonus IS NOT NULL;
```