MySQL資料庫_數據

来源:https://www.cnblogs.com/start20180703/archive/2019/01/15/10273209.html
-Advertisement-
Play Games

一、增加數據 普通的插入 查詢出來的數據可以作為數據添加到列表中 二、刪除數據 刪除部分數據 刪除表中全部的數據1,表的結構不變,但不刪除表的自增主鍵 刪除表中全部的數據2,表的結構不變。刪除表的自增主鍵 還有一種刪除表中全部內容的方法,它不像delete那樣還要逐條看看再刪,而是直接清空掉,可以聯 ...


1、增加數據

 普通的插入

INSERT INTO info1 VALUES(1,'愛因斯坦','相對論')
有一種情況是只插入部分數據,如下:
INSERT INTO info1(id,name) VALUES(2,'愛迪生')
一次插入多條數據
INSERT INTO info1 VALUES(3,'圖靈','人工智慧'),(4,'達芬奇','美學'),(5,'尼采','美學');
查詢數據
SELECT * FROM info1 WHERE id=2;

查詢出來的數據可以作為數據添加到列表中

2、刪除數據

  刪除部分數據

DELETE FROM info1 WHERE name='小澤瑪利亞';

  刪除表中全部的數據1,表的結構不變,但不刪除表的自增主鍵

DELETE FROM info1;

  刪除表中全部的數據2,表的結構不變。刪除表的自增主鍵。它不像delete那樣還要逐條看看再刪,而是直接清空掉,可以聯想到磁碟的格式化。如下:

TRUNCATE info1;

3、修改數據

  有選擇的修改1

UPDATE info1 SET contribution='哲學、美學' WHERE id=5;

   多列時以逗號隔開

UPDATE info1 SET named='達·芬奇',contribution='藝術家、發明家、醫學家' WHERE id=4;

4、查詢數據

4.1、簡單查詢

4.1.1查詢全部

SELECT * FROM info1  

但是*的效率通常比寫表頭慢,正常開發一般不寫*

4.1.2查詢指定項

SELECT named,country FROM info1 

使用別名

SELECT named,contribution AS '貢獻' FROM info1;

 可以進行數據列運算

SELECT named,lifetime-20 FROM info1;

去重覆查詢

SELECT DISTINCT contribution FROM info1;

  

4.2、條件查詢

4.2.1比較運算符  >  <  >=  <=  =  <>不等於

SELECT * FROM info1 WHERE lifetime>60;

 

4.2.2NULL關鍵字 查詢

註意這裡不能用=或<>來判斷是否為空

SELECT * FROM info1 WHERE country IS NOT NULL;

SELECT * FROM info1 WHERE country IS NULL;

 查詢空字元串

SELECT * FROM info1 WHERE named='';

 4.2.3邏輯運算符

SELECT * FROM info1 WHERE lifetime=67 AND country='義大利';

SELECT * FROM info1 WHERE lifetime=67 OR country='英國';

SELECT * FROM info1 WHERE NOT(lifetime=67 AND country='義大利');

 

 4.3區間查詢

SELECT * FROM info1 WHERE lifetime BETWEEN 50 and 60;

 

 

4.4、集合查詢

SELECT * FROM info1 WHERE id in(1,3,5);

 

  4.5 模糊查詢

SELECT * FROM info1 WHERE named LIKE '%愛%'     #包含什麼

SELECT * FROM info1 WHERE named LIKE '愛%'    #以什麼開頭

SELECT * FROM info1 WHERE named LIKE '%愛'    #以什麼結尾

SELECT * FROM info1 WHERE named LIKE '__愛%'    #單個下劃線表示一個字元

 

 

4.6 排序查詢

 

SELECT * FROM info1 ORDER BY lifetime ASC; #ASC可以省略,預設正序

SELECT * FROM info1 ORDER BY lifetime DESC;    #倒序

SELECT * FROM info1 ORDER BY CONVERT(named USING gbk) DESC; #中文排序

 

# 註意:utf8編碼中,中文不能作為排序依據;gbk支持中文排序


   附:查詢編碼集

SHOW VARIABLES LIKE 'char%';

 

 

 

 4.7分組查詢 

SELECT SUM(income),country FROM info1 GROUP BY country;

SELECT SUM(income) AS sums,country FROM info1 GROUP BY country HAVING sums>100000;    #加入條件

SELECT MAX(income),country FROM info1 GROUP BY country;    #最大值

#SELECT AVG(income),country,GROUP_CONCAT(expr) FROM info1 GROUP BY country;    #平均,並且看看跟income與avg數相同的還有誰

 

 

WHERE 與 HAVING區別:

  執行優先順序從高到低:WHERE>GROUP BY>HAVING

4.8分頁查詢  

SELECT * FROM info1 LIMIT 2,2;

 

4.9多表聯合查詢

SELECT * FROM person p,dept d WHERE p.dept_id=d.did;

 

 

  如果不符合後面的條件,就不會顯示出來。

4.10多表連接查詢

SELECT * FROM person LEFT JOIN dept ON person.dept_id=dept.did;#左連接查詢:左邊表的數據都出來,即使跟右邊不匹配

#右連接查詢:LEFT換成RIGHT

#內連接查詢:LEFT換成INNER,類似於多表聯合查詢

 

全連接查詢

SELECT * FROM person LEFT JOIN dept ON person.dept_id=dept.did
UNION
SELECT * FROM person RIGHT JOIN dept ON person.dept_id=dept.did;
#龍洋與夢想部都出來了

 

 

 例題

#查詢每個部門中最高工資和最低工資是多少,顯示部門名稱
SELECT MAX(salary),MIN(salary),dname FROM person LEFT JOIN dept on person.dept_id=dept.did GROUP BY dept_id;

 

 4.11子語句查詢

1、用結果集作為表名來查詢的形式

SELECT * FROM (SELECT * FROM person) AS aaa;

 

 2、求最大值行的其他列,例如求最大工資的那個人的姓名和薪水

SELECT * FROM person WHERE salary=(SELECT MAX(salary) FROM person);

 

3、求工資大於平均工資的人員

SELECT * FROM person WHERE salary>(SELECT AVG(salary) FROM person);

 

4、關鍵字

  ANY

假設any內部的查詢語句返回的結果個數是三個,如:result1,result2,result3,那麼,

SELECT ...FROM ... WHERE a > ANY(...);
->
SELECT...FROM ... WHERE a > result1 OR a > result2 OR a > result3;

 

  ALL

ALL關鍵字與any關鍵字類似,只不過上面的or改成and。即:

SELECT ...FROM ... WHERE a > ALL(...);
->
SELECT ...FROM ... WHERE a > result1 AND a > result2 AND a > result3;

 

  EXISTS

SELECT ... FROM table WHERE  EXISTS (subquery);
該語法可以理解為:主查詢(外部查詢)會根據子查詢驗證結果(TRUE 或 FALSE)來決定主查詢是否得以執行。

 

 4.12其他查詢

  1、臨時表查詢

  #查詢高於本部門平均工資的人員

SELECT * FROM person p1,
(SELECT dept_id,AVG(salary) as '平均工資' FROM person GROUP BY dept_id) as p2
WHERE p1.dept_id=p2.dept_id AND p2.`平均工資`<p1.salary; 

  2、判斷查詢

#根據工資高低,將人員劃分為兩個級別,分別為高端人群和低端人群
#顯示效果:姓名、年齡、性別、工資、級別

SELECT p.name,p.age,p.sex,p.salary, 
IF(salary>10000,'高端人群','低端人群') AS '級別'
FROM person p;

 

多條件判斷

語法如下

#語法一:
SELECT
    CASE WHEN STATE = '1' THEN '成功'
         WHEN STATE = '2' THEN '失敗'
         ELSE '其他' END 
FROM 表;
 
#語法二:
SELECT CASE age
           WHEN 23 THEN '23歲'
           WHEN 27 THEN '27歲'
           WHEN 30 THEN '30歲'
        ELSE '其他歲' END
FROM person;

 

#根據工資高低,統計每個部門人員收入情況,劃分為富人、小資、平民、屌絲 四個級別,要求統計四個級別分別有多少人?

SELECT dname,
    SUM(CASE WHEN person.salary>10000 THEN 1 ELSE 0 END) AS '富人',
    SUM(CASE WHEN person.salary BETWEEN 5000 AND 10000 THEN 1 ELSE 0 END) AS '小資',
    SUM(CASE WHEN person.salary BETWEEN 3000 AND 5000 THEN 1 ELSE 0 END) AS '平民',
    SUM(CASE WHEN person.salary<3000 THEN 1 ELSE 0 END) AS '屌絲'
FROM dept,person WHERE dept.did=person.dept_id GROUP BY dept.did;

 

 

 

 

 

 

 

 







 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 快捷鍵 作用 ctrl+A 把游標移動到命令行開頭。如果我們輸入的命令過長,想要把游標移動到命令行開頭時使用。 ctrl+E 把游標移動到命令行結尾。 ctrl+C 強制終止當前的命令。 ctrl+L 清屏,相當於clear命令。 ctrl+U 刪除或剪切游標之前的命令。我輸入了一行很長的命令,不用... ...
  • 什麼是Windows To Go? https://en.wikipedia.org/wiki/Windows_To_Go 微軟為瞭解決企業用戶的需求而推出,可以在u盤或者移動硬碟啟動window系統,顧名思義,移動的windows。 那這個東西有啥用呢? 1.移動辦公 比如程式員,有時候公司pc開 ...
  • 通過yum等軟體倉庫都可以直接安裝RabbitMQ,但版本一般都較為保守。 RabbitMQ官網提供了新版的rpm包(http://www.rabbitmq.com/download.html),但是安裝的時候會提示需要erlang版本>=19.3,然而預設yum倉庫中的版本較低。 其實Rabbit ...
  • 在下載文件時,如果遇到重覆文件,windows的預設做法時 文件名(數字) 這樣的方式重命名的。那麼我們在排除重覆文件時,可以使用 windows文件瀏覽器提供的查找功能, 用通配符 ~="(1)" 來將重覆的文件找出來,然後刪掉。 ...
  • 本文收錄在容器技術學習系列文章總目錄 1、限制容器的資源 預設情況下,容器沒有資源限制,可以使用主機內核調度程式允許的儘可能多的給定資源。Docker提供了控制容器可以使用多少記憶體或CPU的方法,設置docker run命令的運行時配置標誌。本篇提供有關何時應設置此類限制的詳細信息以及設置這些限制的 ...
  • 系統組成 版本XX.XX.XX XX主版本,XX副版本(奇數為測試版,偶數為穩定版),修訂版本號 , 表示修改的次數(debug) linux主流分支 硬碟分區 /dev/hda5 硬體設備所在分區 hd 表示IDE設備,sd表示SCSI設備 硬碟的順序號,以字母abcd...... 分區的順序號1 ...
  • 在tomcat下部署項目,第一次訪問成功。但是發現有一個頁面沒有成功載入,發現是部署時少了一些東西。也不想去找出具體少了什麼,直接把原來的項目移除,重新載入項目。重啟tomcat,這時驚喜來了。 重啟完tomcat,用瀏覽器訪問https://XXXXXXX:8443。結果是訪問請求被拒絕。 先看防 ...
  • 查看系統中shell的類型 cat /etc/shells 切換用戶使用的shell chsh s /bin/bash username sudo usermod s ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...