[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;
```
:-: 
<br>
<br>
>[success] ## **五:查询函数**
```sql
select version();
```
<br>
<br>
>[success] ## **六:起别名**
> (1)起别名是为了,方便理解
> (2)如果查询中有重复的数据可以使用别名区分开来
### **方式1:使用as**
```sql
SELECT 100 * 10 as 结果;
```
:-: 
```sql
select `name` as 我叫什么,age as 我年龄多大 from gin_user;
```
:-: 
<br>
<br>
### **方式2:使用空格**
```sql
select `name` 我叫什么,age 我年龄多大 from gin_user;
```

结果还是一样
<br>
<br>
### 案例:
查询age,将结果显示为sign
```sql
select age sign from gin_user;
```
<br>
<br>
>[success] ## 七:去重(DISTINCT)
> 案例:查看表中有多少数据
```sql
select `name` from gin_user;
```
:-: 
>[danger] 这里我故意插入了几条相同的数据,为了下面做铺垫
> **DISTINCT**去重函数
```sql
select DISTINCT `name` from gin_user;
```
:-: 
<br>
<br>
>[success] ## **八:MYSQL中 **+** 作用**
>1:在mysql中+号只有一个作用就是运算
>2:如果其中一方不是数值(是字符串)类型,则会试图将它转换成数值型,如果转换成功则在进行运算.
>3:如果转换失败则,将字符型转换成0
>4:如果其中一方为null,则结果肯定为null
```sql
select 100 + 99
select "321" + 79
select "jack" + 100
```
:-: 
:-: 
<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;
```
:-: 
<br>
<br>
<br>
>[success] ## **十一:条件运算符----查询**
> 逻辑运算符:and,or,not
> 条件运算符:>,<,>=,<=,!=,<> ,==
> 模糊查询:like,between,in,is,null
**案例1:查询员工工资大于12000的员工信息**
```sql
select * from gin_user where money < 12000;
```
:-: 
<br>
**案例2:查询部门编号不等于50的员工名和部门编号**
```sql
SELECT
`name`,
Department_id
FROM
gin_user
WHERE
Department_id != 50;
```
:-: 
<br>
案例3:查询工资在10000-20000之间,的员工名,工资,奖金
```sql
SELECT
`name`,
money,
bonus
FROM
gin_user
WHERE
money > 10000
AND money < 20000;
```
:-: 
<br>
**案例4:查询部门编号不是在50到70之间,或者工资离于15000的员工信息**
```sql
SELECT
*
FROM
gin_user
WHERE
NOT ( Department_id > 50 AND Department_id < 70 )
OR money > 15000
```
:-: 
>[info] ### **(1):条件运算符----模糊查询**
>一般和通配符搭配使用
>通配符:% 的意思是任意多个字符
**案例1:查询员工名中包含“小”的员工信息**
```sql
SELECT
*
FROM
gin_user
WHERE
`name` LIKE "%小%";
```
:-: 
<br>
<br>
**案例2:查询员工名中第二个字符为d,第4个字符为F的员工名和工资**
```sql
SELECT
*
FROM
gin_user
WHERE
`name` LIKE '_d__F%';
```
:-: 
<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;
```
:-: 
>[danger] 注意:这里不能写成,bonus = null,错误,因为= 不能判断null类型
<br>
#### **案例3:**
**查询有奖金的员工名和奖金 **
```sql
SELECT
`name`,
bonus
FROM
gin_user
WHERE
bonus IS NOT NULL;
```