SQL的使用總結

来源:https://www.cnblogs.com/Lucky-only/archive/2022/12/15/16985396.html
-Advertisement-
Play Games

select * from emp select * from dept select * from job select * from salarygrade -- 1.查詢所有員工信息。查詢員工編號,員工姓名,工資,職務名稱,職務描述 SELECT t1.mgr, t1.ename, t1.sa ...


select * from emp
select * from dept
select * from job
select * from salarygrade



-- 1.查詢所有員工信息。查詢員工編號,員工姓名,工資,職務名稱,職務描述
SELECT
	t1.mgr,
	t1.ename,
	t1.salary,
	t2.jname,
	t2.description
FROM
	emp AS t1,
	job AS t2
WHERE
	t1.job_id = t2.id 
-- 2.查詢員工編號,員工姓名,工資,職務名稱,職務描述,部門名稱,部門位置
SELECT
	t1.ename,
	t1.salary,
	t2.jname,
	t2.description,
  t3.dname,
  t3.loc
FROM
	emp AS t1,
	job AS t2,
  dept AS t3
WHERE
	t1.job_id = t2.id and 
  t1.dept_id = t3.id


-- 3.查詢員工姓名,工資,工資等級
SELECT
	t1.ename,
	t1.salary,
  t2.grade
FROM
	emp AS t1,
  salarygrade as t2
where t1.salary BETWEEN t2.losalary and hisalary
	

-- 4.查詢員工姓名,工資,職務名稱,職務描述,部門名稱,部門位置,工資等級
SELECT
	t1.ename,
	t1.salary,
  t2.jname,
	t2.description,
  t3.dname,
  t3.loc,
  t4.grade
FROM
  emp AS t1,
	job AS t2,
  dept AS t3,
  salarygrade as t4
WHERE
	t1.job_id = t2.id 
   and 
  t1.dept_id = t3.id
 and t1.salary BETWEEN t4.losalary and t4.hisalary

-- 5.查詢出部門編號、部門名稱、部門位置、部門人數
SELECT
	t1.*, COUNT(t2.id) 部門人數
FROM
	dept AS t1,
	emp AS t2
WHERE
	t2.dept_id = t1.id
GROUP BY
	t2.dept_id



SELECT dept.*,t1.num 
from dept,(select dept_id,COUNT(*) num from emp GROUP BY  dept_id) t1
where t1.dept_id = dept.id



  

SQL總結:
********************************************************************************
           1.ddl語句: 操作資料庫或表
               //創建資料庫
             create Database if not 資料庫名稱;
              
               //刪除資料庫
             drop database if exists 資料庫名稱

               //使用資料庫
             use 資料庫名稱

               //查看資料庫
              show database

               //查看當前使用的資料庫
              select database()

               

---------------------------------------------------------------------
               //查詢該資料庫下的所有表
               select tables
               
               //查詢表結構
               desc 表的名稱
           
               //創建表
                create table 表的名稱(欄位1名稱 數據類型  約束 ,
																			欄位2名稱 數據類型  約束,
																			欄位3名稱 數據類型  約束
                                      ) 

               //刪除表
                drop table if exists 表的名稱

               //修改表的名稱
               alter table 表的名稱 rename to 新的表名
            
               //添加列
              alter table 表的名稱 add 列名 數據類型;
      
               //修改列的數據類型
               alter table 表的名稱 modify 列名 新的數據類型;

               //修改列的名稱以及數據類型
                alter table 表的名稱 change 列名 新列名 新數據類型

               //刪除列
              alter table 表的名稱 drop 列名 ;      
             

  

********************************************************************************
           2.dml語句:對數據進行操作
             //添加數據【指定列添加】
            insert into 表的名稱 (欄位名1,欄位名2,欄位名3,……)
                           values(欄位名1值,欄位名2值,欄位名3值,……)

            //添加數據【給全部列添加數據】
            insert into 表的名稱 values(欄位名1值,欄位名2值,欄位名3值,……)

						//添加數據【給全部列添加數據,多條數據同時添加】
            insert into 表的名稱 values(欄位名1值,欄位名2值,欄位名3值,……),
																				(欄位名1值,欄位名2值,欄位名3值,……),
																				(欄位名1值,欄位名2值,欄位名3值,……);
 
            //修改數據【指定列修改】
						update  表的名稱 set 列名1=值1,列名2=值2,列名3=值3,……
             where 條件【不指定條件就會將所有行的數據全部更改】

            //刪除數據
             delete from 表的名稱 where 條件【不指定條件就會將所有行的數據刪除】
 


********************************************************************************
           3.dql語句:資料庫查詢語言
                     ①select  from              查詢
                     ②distinct                  去重
                     ③as                        別名

                     ④條件{
                             > 									大於
                            >=                  大於或等於
                            != / <>             不等
                            <                   小於
                            <=                  小於或等於
                            between …… and ……    在……範圍內
                            in()                 多選一
                            like                 模糊查詢【_代表單個任意字元 %代表多個任意字元】
                            is null/is not null  不為空
                            and /&&               和
                             or /||               或
                             not/!               非
                           }

											⑤排序 order by 【ASC升序 DESC降序】

                      ⑥聚合函數{
                             count()  統計數量【不統計為null的列】
                             max()      最大值
                             min()      最小值
                             sum()      求和
                             avg()      平均值
                           }
                      ⑦分組  group by
                 
                      ⑧分組後限定條件  having
                      ⑨分組前的限定條件 where 

                      ⑩分頁查詢 limit 起始索引 , 查詢條目數;


                  

********************************************************************************
           4.dcl:數據控制語言
                 grant                   授權
                 set                     設置
                 @@autocommit            自動提交事務
                 begin                   開啟事務
                 commit                  提交事務
                 rollback                回滾事務
           


							事務的四大特征:AICO  原子性【要麼同時成功,要麼都失敗】
																		一致性【數據總量不變】
																		隔離性【開啟多個事務查詢數據】
																		持久性【通過commit提交或rollback回滾實現數據更新】

							預設自動提加事務【要手動提交事務方法--》set @@autocommit =0 預設是1】
																一旦設置為手動提交事務則必須自主提交,不然數據無法更新




////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 多表查詢: 1.內連接 inner join on 【inner可以不寫】 2.外連接 left join【左連接:查詢左表的全部數據以及與右表交集部分數據】 right join【右連接:查詢右表的全部數據以及與右表交集部分數據】 3.子查詢 =(子查詢語句【子查詢語句輸出的是單列單行數據時使用=】) in(子查詢語句【子查詢語句輸出的是單列多行數據時使用in】) 約束: 1.非空約束 not null 2.唯一約束[自動添加] unique [auto_increment] 3.主鍵約束 primary key 4.預設約束 default 5.外鍵約束 constraint 外鍵名稱 foreign key(外鍵欄位名) references 主表名(主表列名) 資料庫設計: 1.一對一 【例如:用戶 和 用戶詳情 一對一關係多用於表拆分,將一個實體中經常使用的欄位放一張表, 不經常使用的欄位放另一張表,用於提升查詢性能】 實現方式: 在任意一方加入外鍵,關聯另一方主鍵,並且設置外鍵為唯一(UNIQUE) 2.一對多 【例如:部門 和 員工 一個部門對應多個員工,一個員工對應一個部門】 實現方式: 在多的一方建立外鍵,指向一的一方的主鍵 3.多對多 【例如:商品 和 訂單 一個商品對應多個訂單,一個訂單包含多個商品】 實現方式: 建立第三張中間表,中間表至少包含兩個外鍵,分別關聯兩方主鍵

 


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

-Advertisement-
Play Games
更多相關文章
  • 1、什麼是進程、線程、併發、並行 一、進程線程 1、進程 程式由指令和數據組成,但這些指令要運行,數據要讀寫,就必須將指令載入至CPU,數據載入至記憶體。在指令運行過程中還需要用到磁碟、網路等設備。進程就是用來載入指令、管理記憶體、管理IO的當一個程式被運行,從磁碟載入這個程式的代碼至記憶體,這時就開啟了 ...
  • 前言 本文給大家分享的是如何通過利用Python製作藝術簽名生成器,廢話不多直接開整~ 開發工具 Python版本: 3.6 相關模塊: requests模塊 PIL模塊 PyQt5模塊 環境搭建 安裝Python並添加到環境變數,pip安裝需要的相關模塊即可。 文中實戰教程,評論留言獲取。 思路分 ...
  • unique_lock condition_variable 1:lock_guard 和 unique_lock 2:condition_variable wait 和 notify_all 方式1 std::mutex mtx; mtx.lock(); .. ... mtx.unlock();/ ...
  • 2022.12.12 記錄問題方便以後查看。 一、準備工作 1、本次使用jar包啟動後端,故而準備打包後的jar文件。註意修改配置文件中的路徑,根據需要部署的操作系統進行更改。 2、提前寫bat文件用來啟動jar包。 @echo off start "cmd標題名" java -Dfile.enco ...
  • "I don’t care if it works on your machine! We are not shipping your machine!" - Vidiu Platon “我才不管它能不能在你的機器上運行捏!我們又不會給你提供機器!” —— 韋都·柏拉圖 0x00 大綱 0x01 前 ...
  • 概述 為什麼要用到深拷貝呢?比如我們建了某個類Person,並且實例化出一個對象,然後,突然需要把這個對象複製一遍,並且複製出來的對象要跟之前的一模一樣,來看下我們一般會怎麼做。 方法一(利用反射實現) public static T DeepCopy<T>(T obj) { //如果是字元串或值類 ...
  • 個人名片: 對人間的熱愛與歌頌,可抵歲月冗長:sun_with_face: Github👨🏻‍💻:念舒_C.ying CSDN主頁✏️:念舒_C.ying 個人博客:earth_asia: :念舒_C.ying 1 配置環境 掛載系統ISO,並配置好本地dnf源。(前面的文章講過,這裡就略過. ...
  • 作者:小牛呼嚕嚕 | https://xiaoniuhululu.com 電腦內功、JAVA底層、面試、職業成長相關資料等更多精彩文章在公眾號「小牛呼嚕嚕」 大家好,我是呼嚕嚕,在電腦的早期,Intel奔騰處理器時代,他們的主板上的單個處理器CPU是相當大的。為了提升電腦的整體運算處理能力,一 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...