基礎SQL-DQL語句-SELECT查詢的簡單使用以及IFNULL函數

2021-03-04 海洋的漁夫
6. 基礎SQL-DQL語句-SELECT查詢的簡單使用以及IFNULL函數分類描述關鍵字DQL(Data Query Language)
數據查詢語言 (掌握)DQL語言並不是屬於MYSQL官方的分類,但是對資料庫的操作最多就是查詢,所以我們的程式設計師把查詢語句的語句稱作為DQL語言SELECT 等

查詢不會對資料庫中的數據進行修改.只是一種顯示數據的方式

1. 簡單查詢

備用數據:

-運行下面的sql語句,生成相關的資料庫表
# 創建商品表:
CREATE TABLE product(
 pid INT,
 pname VARCHAR(20),
 price DOUBLE,
 category_id VARCHAR(32)
);

INSERT INTO product(pid,pname,price,category_id) VALUES(1,'聯想',5000,'c001');
INSERT INTO product(pid,pname,price,category_id) VALUES(2,'海爾',3000,'c001');
INSERT INTO product(pid,pname,price,category_id) VALUES(3,'雷神',5000,'c001');
INSERT INTO product(pid,pname,price,category_id) VALUES(4,'JACK JONES',800,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(5,'真維斯',200,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(6,'花花公子',440,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(7,'勁霸',2000,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(8,'香奈兒',800,'c003');
INSERT INTO product(pid,pname,price,category_id) VALUES(9,'相宜本草',200,'c003');
INSERT INTO product(pid,pname,price,category_id) VALUES(10,'面霸',5,'c003');
INSERT INTO product(pid,pname,price,category_id) VALUES(11,'好想你棗',56,'c004');
INSERT INTO product(pid,pname,price,category_id) VALUES(12,'香飄飄奶茶',1,'c005');
INSERT INTO product(pid,pname,price,category_id) VALUES(13,'果9',1,NULL);
INSERT INTO product(pid,pname,category_id) VALUES(14,'香飄飄奶茶','c005');

1.1 查詢所有

select * from 表名;

-- 需求:查詢所有的商品.
SELECT * FROM product;  

查詢結果如下:

mysql> select * from product;
+-+--+--+---+
| pid  | pname           | price | category_id |
+-+--+--+---+
|    1 | 聯想            |  5000 | c001        |
|    2 | 海爾            |  3000 | c001        |
|    3 | 雷神            |  5000 | c001        |
|    4 | JACK JONES      |   800 | c002        |
|    5 | 真維斯          |   200 | c002        |
|    6 | 花花公子        |   440 | c002        |
|    7 | 勁霸            |  2000 | c002        |
|    8 | 香奈兒          |   800 | c003        |
|    9 | 相宜本草        |   200 | c003        |
|   10 | 面霸            |     5 | c003        |
|   11 | 好想你棗        |    56 | c004        |
|   12 | 香飄飄奶茶      |     1 | c005        |
|   13 | 果9             |     1 | NULL        |
|   14 | 香飄飄奶茶      |  NULL | c005        |
+-+--+--+---+
14 rows in set (0.00 sec)

mysql> 

1.2 查詢指定列

select 欄位名1,欄位名2...  from 表名;

-- 需求:查詢商品名和商品價格.
SELECT pname,price FROM product;

執行如下:

mysql> select pname,price from product;
+--+--+
| pname           | price |
+--+--+
| 聯想            |  5000 |
| 海爾            |  3000 |
| 雷神            |  5000 |
| JACK JONES      |   800 |
| 真維斯          |   200 |
| 花花公子        |   440 |
| 勁霸            |  2000 |
| 香奈兒          |   800 |
| 相宜本草        |   200 |
| 面霸            |     5 |
| 好想你棗        |    56 |
| 香飄飄奶茶      |     1 |
| 果9             |     1 |
| 香飄飄奶茶      |  NULL |
+--+--+
14 rows in set (0.00 sec)

mysql> 

1.3 別名查詢

select 欄位名1 as 別名,欄位名2 別名 from 表名 as 表別名;

as關鍵字可以省去不寫

-- 需求3.別名查詢.使用的關鍵字是as(as可以省略的). 
--   3.1表別名:查詢商品名稱和價格
SELECT pro.pname,pro.price FROM product AS pro;

--   3.2列別名:查詢商品名稱和價格
SELECT pname AS "商品名稱",price "商品價格" FROM product;

執行如下:

--   3.1表別名:查詢商品名稱和價格
mysql> SELECT pro.pname,pro.price FROM product AS pro;
+--+--+
| pname           | price |
+--+--+
| 聯想            |  5000 |
| 海爾            |  3000 |
| 雷神            |  5000 |
| JACK JONES      |   800 |
| 真維斯          |   200 |
| 花花公子        |   440 |
| 勁霸            |  2000 |
| 香奈兒          |   800 |
| 相宜本草        |   200 |
| 面霸            |     5 |
| 好想你棗        |    56 |
| 香飄飄奶茶      |     1 |
| 果9             |     1 |
| 香飄飄奶茶      |  NULL |
+--+--+
14 rows in set (0.00 sec)

--   3.2列別名:查詢商品名稱和價格
mysql> SELECT pname AS "商品名稱",price "商品價格" FROM product;
+--+----+
| 商品名稱        | 商品價格     |
+--+----+
| 聯想            |         5000 |
| 海爾            |         3000 |
| 雷神            |         5000 |
| JACK JONES      |          800 |
| 真維斯          |          200 |
| 花花公子        |          440 |
| 勁霸            |         2000 |
| 香奈兒          |          800 |
| 相宜本草        |          200 |
| 面霸            |            5 |
| 好想你棗        |           56 |
| 香飄飄奶茶      |            1 |
| 果9             |            1 |
| 香飄飄奶茶      |         NULL |
+--+----+
14 rows in set (0.00 sec)

mysql> 

1.4 去重複查詢

select distinct 欄位名 from 表名;

-- 需求:查看商品表中有那些價格.
SELECT DISTINCT price FROM product; 

執行如下:

mysql> SELECT pname AS "商品名稱",price "商品價格" FROM product;
+--+----+
| 商品名稱        | 商品價格     |
+--+----+
| 聯想            |         5000 | -- 可以看到有兩個5000的重複商品價格
| 海爾            |         3000 |
| 雷神            |         5000 | -- 可以看到有兩個5000的重複商品價格
| JACK JONES      |          800 |
| 真維斯          |          200 |
| 花花公子        |          440 |
| 勁霸            |         2000 |
| 香奈兒          |          800 |
| 相宜本草        |          200 |
| 面霸            |            5 |
| 好想你棗        |           56 |
| 香飄飄奶茶      |            1 |
| 果9             |            1 |
| 香飄飄奶茶      |         NULL |
+--+----+
14 rows in set (0.00 sec)

-- 查詢價格去重
mysql> SELECT DISTINCT price FROM product;
+--+
| price |
+--+
|  5000 | 
|  3000 |
|   800 |
|   200 |
|   440 |
|  2000 |
|     5 |
|    56 |
|     1 |
|  NULL |
+--+
10 rows in set (0.00 sec)

mysql> 

1.5 查詢結果參與運算(IFNULL 函數)

在上面查詢 price 價格的時候,存在 NULL 的值,而 NULL 在 mysql 是不算為值的。如果想要計算,此時就需要使用 IFNULL 函數,判斷當查詢的值為 NULL,可以設置為 0 ,操作如下:

select 列名1 + 固定值 from 表名;

-- 需求:將所有商品的價格+10元進行顯示. (查詢結果可參與運算)
SELECT *,IFNULL(price,0)+10 FROM product;

執行如下:

-- 將所有商品的價格+10元進行顯示. (查詢結果可參與運算)
mysql> SELECT *,IFNULL(price,0)+10 FROM product;
+-+--+--+---++
| pid  | pname           | price | category_id | IFNULL(price,0)+10 |
+-+--+--+---++
|    1 | 聯想            |  5000 | c001        |               5010 |
|    2 | 海爾            |  3000 | c001        |               3010 |
|    3 | 雷神            |  5000 | c001        |               5010 |
|    4 | JACK JONES      |   800 | c002        |                810 |
|    5 | 真維斯          |   200 | c002        |                210 |
|    6 | 花花公子        |   440 | c002        |                450 |
|    7 | 勁霸            |  2000 | c002        |               2010 |
|    8 | 香奈兒          |   800 | c003        |                810 |
|    9 | 相宜本草        |   200 | c003        |                210 |
|   10 | 面霸            |     5 | c003        |                 15 |
|   11 | 好想你棗        |    56 | c004        |                 66 |
|   12 | 香飄飄奶茶      |     1 | c005        |                 11 |
|   13 | 果9             |     1 | NULL        |                 11 |
|   14 | 香飄飄奶茶      |  NULL | c005        |                 10 |
+-+--+--+---++
14 rows in set (0.00 sec)

mysql>

相關焦點

  • MySQL之DQL數據查詢語言
    建完庫後,我們就需要導入數據,這時候,我們需要一種擴展名為.sql的文件(這種文件我們稱為sql腳本,裡面存放大量的sql語句),文章中使用的表可以在公眾號中發送【MySQL顧名思義,我們通過字面意思可以知道上述函數的作用分別為:求最大值,求最小值,求平均值,求和,求記錄條數。也叫做分組函數/多行處理函數。那麼該如何使用呢?
  • 基礎SQL-DQL語句-條件查詢-排序-聚合函數-分組-limit語句
    基礎SQL-DQL語句-條件查詢-排序-聚合函數-分組-limit語句1.聚合函數之前我們做的查詢都是橫向查詢,它們都是根據條件一行一行的進行判斷,而使用聚合函數查詢是縱向查詢,它是對一列的值進行計算,然後返回一個結果值。
  • SQL基礎培訓--SQL語言基本概念及簡單查詢
    什麼是SQL語句,及簡單的寫法sql 語句是對資料庫進行操作的一種語言。結構化查詢語言(Structured Query Language)簡稱SQL,結構化查詢語言是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係資料庫系統。
  • 玩轉Mysql系列 - 第6篇:select查詢基礎篇
    基本語法 select 查詢的列 from 表名;注意:select語句中不區分大小寫,SELECT和select、FROM和from效果一樣。查詢的結果放在一個表格中,表格的第1行稱為列頭,第2行開始是數據,類屬於一個二維數組。
  • MySQL數據查詢select語句靈活使用詳解
    第一種:單表查詢語法結構: select 欄位名稱 from 表名稱或者如果我們要查詢表的所以欄位,就直接使用select * from 表名  這個語法即可,這裡的星號*表示所有欄位名稱。案例:查詢用戶表user的所有信息Select * from user第二種:帶有條件篩選的單表查詢 where這個語法只是在select查詢語句的最好加上一條where語句進行數據的進一步過濾。
  • 一道簡單的sql語句題
    結果才發現,數據分析崗位大多注重的是資料庫的能力,比如sql語句的考察,hive的考察,以及一些運營思維的考察,所以第一次面試就很悲劇啦,不過題目還是很有代表性的。其他的不寫了,這裡只分享一個關於sql的題目。1、問題引出現在有兩個數據表,一個數據表記錄司機的信息,比如司機id,司機姓名,司機註冊時間等等,一個數據表記錄一天的訂單情況,比如訂單ID,訂單司機id,訂單時間。
  • SQL查詢:Oracle、mysql、HQL查詢語句差異
    條件函數(nvl()、nvl2()、decode())        nvl(tab.columnName, 0):如果tab.columnName值為空,則返回值取0,否則取tab.columnName;對應的MySQL函數為:ifnull(tab.columnName, 0)。
  • 初學者必看的基礎SQL查詢語句(一)
    SQL查詢語句,都很基礎,但是你不一定都會,所以好好看看吧。Select查詢語句Select查詢語句是SQL中最基本也是最重要的DML語句之一。DML全稱Data Manipulation Language(數據操縱語言命令),它可以使用戶能夠查詢資料庫以及操作已有資料庫中的數據。
  • HiveSql基礎函數使用(三)
    前面兩篇文章介紹了一些常見且非常有用的函數,基本夠實現開發中的需求。本文主要介紹幾個select查詢函數的區別。從執行順序來說,兩者主要存在以下幾點區別 ① distinct只是將重複的行從結果中剔除出去;group by是按指定的列分組,一般這時在select中會用到聚合函數。 ②distinct是把不同的記錄顯示出來;group by是在查詢時先把紀錄按照類別分出來再查詢。
  • SQL語句之Select
    例5:查詢「成績」表中所有「D01」課程的成績,並按升序顯示查詢結果。語句:select * from 成績 where 課程號="D01" order by 成績Select語句中使用「group by 欄位名」,按指定的欄位名分組計算。例6:查詢各課程號的最高分。語句:Select 課程號,max(成績) 最高分 from  成績 group by 課程號
  • 學習MySQL的select語句
    select語句可 以用回車分隔$sql="select * from article where id=1"和  $sql="select * from article where id=1">都可以得到正確的結果,但有時分開寫或許能 更明了一點,特別是當sql語句比較長時。
  • 使用explain和show profile來分析SQL語句實現優化SQL語句
    SQL語句優化是建立在慢查詢分析的基礎上,通過慢查詢定位有問題的SQL語句,關於慢查詢的介紹及其分析工具,可以參考[mysql慢查詢及慢查詢日誌分析工具]一、通過explain查詢1 用法:explain sql2 作用:用於分析sql語句
  • SQL查詢語句場景應用
    以此舉例,如果有了更好的數據資源,利用資料庫以及SQL將其整合與分析,將會受益匪淺。 SQL分為6部分,本文著重MySQL資料庫DQL的場景應用實例,可以為初學者提供適合場景設計的查詢語句,通過分析和學習,積累更多的查詢語句經驗,來應對以後的實際應用場景。DQL語句編寫簡單易懂,難點在於怎樣通過分析與設計將需求轉化為結構化查詢語句,實現數據查詢。
  • mysql常用sql語句總結
    sql的內連接、外連接和交叉連接查詢等。有關使用左或右向外聯接排列表的更多信息,請參見使用外聯接。聯合查詢union查詢語法:sql1 union all sql2;UNION 操作符用於合併兩個或多個 SELECT 語句的結果集。請注意,UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每條 SELECT 語句中的列的順序必須相同。
  • MySQL資料庫SQL查詢優化技巧之SELECT
    查詢語法和使用方法,以及SELECT的執行流程,了解了SELECT的執行流程還是很重要的,重要我們才能有針對性地去進行優化,比如select在執行的時候 會把所以的欄位編程成大寫字母,這樣我們在起初編寫SELECT語句時就可以把所以的字母進行大寫,這樣就省去了程序為把SQL語句變成大寫的消耗,速度自然就會提高。
  • SQL 查詢語句先執行 SELECT?兄弟你認真的麼?
    具體解釋:(註:下面「VT」表示 → 虛擬表 virtual )from:select * from table_1, table_2; 與 select * from table_1 join table_2; 的結果一致,都是表示求笛卡爾積;用於直接計算兩個表笛卡爾積,得到虛擬表VT1,這是所有select語句最先執行的操作
  • MySQL——DQL語言
    MySQL學習筆記(2)——DQL語言一、基礎查詢:查詢列表:表中的欄位、常量值、表達式、函數,查詢的結果是個虛擬的表格。
  • 10個Java初學者必看的基礎SQL查詢語句
    DML全稱Data Manipulation Language(數據操縱語言命令),它可以使用戶能夠查詢資料庫以及操作已有資料庫中的數據。,In_DATE FROM ItemMasters合計函數和標量函數都是SQL Server的內置函數,我們可以在select查詢語句中使用它們,比如Count(), Max(), Sum(), Upper(), lower(), Round()等等。
  • 用Select×進行SQL查詢的七宗罪
    在本文中,讓我向各位初級開發人員詳細解釋,此類SQL查詢最佳實踐背後的具體原因。   首先,我們經常面對的客觀情況是:在Oracle資料庫中,許多SQL開發人員都是從接觸「SELECT * from EMP」(EMP為表的名稱)之類的查詢語句,開始學習SQL語言的。因此,除非能夠給出充分的理由,否則我們很難撼動他們使用此類便捷查詢語句的習慣。
  • SQL 資料庫語句
    小夥伴們,精心找到一份整理SQL語句一、基礎1、說明:創建資料庫CREATE DATABASE