[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;
```