SQL數據分析原代碼--創建表與簡單查詢

  • CREATE TABLE:創建表,定義字段名、類型、注釋
  • INSERT INTO:插入數據,支持單條或批量插入
  • SELECT:查詢數據,*表示所有字段,AS可起別名,DISTINCT去重
  • WHERE:條件篩選,支持=<=IS NULLBETWEENANDORIN
  • LIKE:模糊查詢,_匹配單個字符,%匹配任意字符
  • 聚合函數:COUNT()(計數)、AVG()(平均值)、MAX()(最大值)、MIN()(最小值)、SUM()(求和)
  • GROUP BY:分組查詢,結合聚合函數使用;HAVING用于分組后篩選(區別于WHERE的分組前篩選)

1. 創建員工表(emp)

-- 創建名為emp的員工表,定義表結構及各字段信息
create table emp(id          int                comment '編號',  -- id字段:整數類型,用于唯一標識員工workno      varchar(10)        comment '工號',  -- workno字段:字符串類型(最長10字符),存儲員工工號name        varchar(10)        comment '姓名',  -- name字段:字符串類型(最長10字符),存儲員工姓名gender      char(1)            comment '性別',  -- gender字段:定長字符串(1字符),存儲性別(如'男'/'女')age         tinyint unsigned   comment '年齡',  -- age字段:無符號tinyint類型(范圍0-255),存儲年齡idcard      char(18)           comment '身份證號',  -- idcard字段:定長18字符,存儲身份證號(18位)workaddress varchar(50)        comment '工作地址',  -- workaddress字段:最長50字符,存儲工作地址entrydate   date               comment '入職時間'  -- entrydate字段:日期類型,存儲入職日期
) comment '員工表';  -- 表注釋:說明該表為員工表

2. 插入數據(INSERT)

-- 向emp表插入一條員工數據,指定插入的字段及對應值
insert into emp(id, workno, name, gender, age, idcard, emp.workaddress, entrydate)
VALUES (10,'10','it10','女',56,null, '北京', '2016-01-01');  -- id=10的員工,idcard為null(未填寫)-- 批量插入多條員工數據(一次性插入9條記錄)
insert into emp(id, workno, name, gender, age, idcard, emp.workaddress, entrydate)
VALUES (1,'1','itcast','男',10,123456789012345678, '北京', '2000-01-01'),  -- 每條記錄對應字段順序與上方一致(2,'2','張無忌','男',30,123456789012345345, '上海', '2008-01-01'),(3,'3','留言','女',19,673456789012345678, '南京', '2011-01-01'),(4,'4','小昭','女',15,123456745612345678, '北京', '2000-01-01'),(5,'5','楊曉','男',43,123455489012345678, '河南', '2009-01-01'),(6,'6','范冰冰','女',32,123459089012345678, '河北', '1999-01-01'),(7,'7','itc','男',14,123412789012345678, '北京', '2000-01-01'),(8,'8','i6','男',76,123456789012345678, '天津', '1920-01-01'),(9,'9','it76t','男',43,123468789012345678, '西安', '2021-01-01');

3. 查詢數據(SELECT 基礎)

-- 查詢員工的姓名、工號、年齡(只返回指定字段)
select emp.name, emp.workno, emp.age from emp;-- 查詢員工表中所有字段的所有記錄(*表示所有字段)
select * from emp;-- 查詢員工的工作地址,并為字段起別名為“地址”(AS用于起別名,增強可讀性)
select emp.workaddress as '地址' from emp;-- 查詢不重復的工作地址(DISTINCT用于去除重復記錄,只保留唯一值)
select distinct emp.workaddress as '地址' from emp;  -- AS可省略,此處保留是為了明確別名

4. 條件查詢(WHERE 子句)

-- 查詢年齡等于14的員工
select * from emp where age = 14;-- 查詢年齡小于等于43的員工
select * from emp where age <= 43;-- 查詢身份證號為null的員工(IS NULL判斷字段值是否為空)
select * from emp where idcard is null;-- 查詢身份證號不為null的員工(IS NOT NULL判斷字段值是否非空)
select * from emp where idcard is not null;-- 查詢年齡不等于43的員工(!= 等同于 <>,表示不等于)
select * from emp where age != 43;-- 查詢年齡在15到40之間的員工(BETWEEN a AND b 包含a和b邊界值)
select * from emp where age between 15 and 40;-- 查詢性別為女且年齡小于25的員工(AND表示“且”,需同時滿足兩個條件)
select * from emp where gender = '女' and age < 25;-- 查詢年齡為18、19或43的員工(OR表示“或”,滿足任一條件即可)
select * from emp where age = 18 or age = 19 or age = 43;
-- 等價于上面的OR查詢(IN表示“在指定列表中”,更簡潔)
select * from emp where age in (18,19,43);

5. 模糊查詢(LIKE)

-- 查詢姓名為2個字符的員工(_表示單個任意字符,兩個_即匹配2個字符)
select * from emp where name like '__';-- 查詢身份證號以7結尾的員工(%表示任意長度的任意字符,%7即匹配“任意字符+7結尾”)
select * from emp where idcard like '%7';

6. 聚合函數(統計計算)

-- 統計員工總數(COUNT(emp.id)統計id字段非空的記錄數,等同于COUNT(*))
select count(emp.id) from emp;-- 計算員工的平均年齡(AVG(age)求age字段的平均值)
select avg(emp.age) from emp;-- 查詢員工中的最大年齡(MAX(age)求age字段的最大值)
select max(emp.age) from emp;-- 查詢員工中的最小年齡(MIN(age)求age字段的最小值)
select min(emp.age) from emp;-- 計算工作地址為“北京”的員工年齡總和(SUM(age)求和,帶WHERE條件篩選范圍)
select sum(emp.age) from emp where workaddress = '北京';

7. 分組查詢(GROUP BY)

-- 根據性別分組,統計每組(男性/女性)的員工數量
-- GROUP BY gender:將數據按gender字段分組(相同性別為一組)
-- count(id):統計每組的記錄數(即該性別的員工數量)
select gender, count(id) from emp group by gender;-- 根據性別分組,計算每組的平均年齡
select gender, avg(age) from emp group by gender;-- 復雜分組查詢:先篩選年齡<45的員工,再按工作地址分組,最后保留員工數>=3的地址
-- 1. WHERE age < 45:分組前先過濾出年齡小于45的員工
-- 2. GROUP BY workaddress:按工作地址分組
-- 3. HAVING count(*) >=3:分組后過濾,只保留員工數量>=3的地址(HAVING用于分組后篩選)
select workaddress, count(*) from emp where age < 45 group by workaddress having count(*) >= 3;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/98999.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/98999.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/98999.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

k8s查詢ServiceAccount有沒有列出 nodes 的權限

要檢查 ServiceAccount xxxxxx:default 是否具有列出 nodes 的權限&#xff0c;可以使用以下方法&#xff1a;1. **使用 kubectl auth can-i 命令**這是最直接的方法&#xff0c;可以檢查特定用戶或 ServiceAccount 是否具有特定權限&#xff1a;kubectl auth can-i list nodes…

調試Python程序時,控制臺一直打印SharedMemory read faild

from tkinter import filedialog filedialog.askopenfilename()在使用 tkinter 時&#xff0c;只要一處罰&#xff0c;控制臺就不停打印 SharedMemory read faild &#xff0c;雖然能用&#xff0c;但是大大的破壞了調試體驗&#xff0c;看到如下的提示&#xff0c;你說煩不煩&…

QRCode React 完全指南:現代化二維碼生成解決方案

前言 在數字化時代&#xff0c;二維碼已經成為連接線上線下的重要橋梁。無論是分享鏈接、支付碼、還是身份驗證&#xff0c;二維碼都扮演著不可或缺的角色。qrcode.react 是一個專門為 React 應用設計的二維碼生成庫&#xff0c;它能夠快速、靈活地生成各種樣式的二維碼&#…

xxe外部實體注入漏洞

https://owasp.org/www-project-top-ten XXE基礎 xxe外部實體注入 外部實體 xml&#xff08;用于傳輸和存儲數據&#xff09; html&#xff08;用于顯示數據&#xff09; 注入&#xff1a; SQL注入&#xff1a;用戶輸入數據被當做代碼執行 1輸入點 2.輸入數據可以結合到數據庫…

ros2獲取topic信息解析

ros2 ros_discovery_info topic 發布邏輯疑問&#xff1a; 在運行ros2 topic info -v /topic時&#xff0c;運行的是p3&#xff0c;如何與p1進程通訊的呢&#xff1f; 進程間理論上應該是IPC

FFmpeg合成mp4

本章主要介紹如何使用FFmpeg來將一個音頻文件和一個視頻文件合成一個MP4文件&#xff0c;以及在這個過程中我們如何對編碼過程進行封裝以及sample_rate 重采樣的過程&#xff08;由于提供的音頻文件的編碼類型為S16&#xff0c;所以我們需要轉化為MP4支持的FLTP浮點類型&#x…

第十九章 使用LAMP架構部署動態網站環境

第十九章 使用LAMP架構部署動態網站環境 文章目錄第十九章 使用LAMP架構部署動態網站環境一、安裝Httpd服務1、安裝httpd服務2、啟動httpd服務3、設置允許通過防火墻4、驗證http服務是否成功二、安裝Mariadb服務1、安裝Mariadb服務2、啟動Mariadb服務三、安裝PHP服務1、列出可用…

Selenium應用中的核心JavaScript操作技巧

Selenium是一款強大的瀏覽器自動化測試工具&#xff0c;其操作瀏覽器的能力部分來自于其內嵌的JavaScript執行引擎。這使得Selenium不僅能夠模擬用戶在瀏覽器中的各種操作&#xff0c;還能執行復雜的JavaScript腳本&#xff0c;以實現更為精細的控制。本文將探討如何通過Seleni…

《Linux 基礎指令實戰:新手入門的命令行操作核心教程(第一篇)》

前引&#xff1a;當你第一次面對 Linux 系統中那片閃爍著光標、只有黑白字符的終端界面時&#xff0c;或許會和很多初學者一樣感到些許茫然&#xff1a;這些由字母和符號組成的 “指令” 究竟該如何輸入&#xff1f;它們又能完成哪些神奇的操作&#xff1f;其實&#xff0c;Lin…

03.【Linux系統編程】基礎開發工具1(yum軟件安裝、vim編輯器、編輯器gcc/g++)

目錄 1. 軟件包管理器 1.1 什么是軟件包 1.2 Linux軟件生態 1.3 yum具體操作 1.3.1 查看軟件包 1.3.2 安裝軟件 1.3.3 卸載軟件 1.3.4 注意事項(測試網絡) 1.3.5 yum指令集總結 1.4 yum源目錄、安裝源 2. Vim編輯器的使用 2.1 Linux編輯器-vim使用 2.2 vim的基本概…

3DMAX自動材質開關插件AutoMaterial安裝和使用方法

3DMAX自動材質開關AutoMaterial&#xff0c;是一個3dMax腳本插件&#xff0c;它根據材質編輯器中當前活動的材質自動將材質應用于3dMax中新創建的對象&#xff0c;也適用于您復制的沒有材質的對象。它作為一個開關&#xff0c;可以綁定到按鈕或菜單來打開和關閉它。該工具的創建…

Linux內核調優實戰指南

內核調優通常通過修改內核運行時參數來實現&#xff0c;這些參數的配置文件是 Linux 系統中核心的性能調整點。 內核調優配置文件名稱 /etc/sysctl.conf: 這是最傳統和主要的內核參數配置文件。系統啟動時或手動執行 sysctl -p 命令時會讀取并應用其中的設置。/etc/sysctl.d/*.…

Java基礎常見知識點

Java 中 和 equals() 的區別詳解_java中與equals的區別及理解-CSDN博客https://blog.csdn.net/m0_64432106/article/details/142026852深入理解Java中方法的參數傳遞機制 - 悟小天 - 博客園https://www.cnblogs.com/sum-41/p/10799555.html浮點型精度是什么意思&#xff1f;為…

OD C卷 -【高效貨運】

文章目錄高效貨運高效貨運 貨車的額定載貨量為wt&#xff1b;貨物A單件重量為wa&#xff0c;單件運費利潤為pa;貨物B單件重量wb&#xff0c;單件運費利潤為pb;每次出車必須包含A、B貨物&#xff0c;且單件貨物都不可分割&#xff0c;總重量達到額定的載貨量wt;每次出車能夠獲取…

手動解壓并讀取geo 文件 series_matrix_table_begin series_matrix_table_end之間的數據

手動解壓并讀取geo 文件 series_matrix_table_begin series_matrix_table_end之間的數據 1. 手動解壓并讀取文件內容 file_path <- “K:/download/geo/raw_data/GEO/GSE32967_series_matrix.txt.gz” 使用latin1編碼讀取文件所有行 con <- gzfile(file_path, “r”) all_…

主板硬件研發基礎--DP/DP++

現在的主板大多數使用的是比DP功能更加強大的DP++。 DisplayPort++(DP++)是 DisplayPort 技術的增強版,旨在提升與多種視頻接口的兼容性和連接性能。以下是關于它的詳細介紹: 功能特性 多協議兼容:DP++ 接口不僅支持 DisplayPort 標準的信號傳輸,還可以通過內部的轉換電…

科技行業新聞發布平臺哪家好?多場景推廣專業方案服務商推薦

面對海量得新聞發布平臺和碎片化的傳播場景&#xff0c;如何精準選擇推廣方案無疑是企業主面臨的一大難題&#xff0c;對于技術迭代迅速的科技行業更是如此。針對復雜的市場環境&#xff0c;一些專業的新聞發布平臺往往能夠針對性地給出營銷方案&#xff0c;并提供一定技術支持…

SystemVerilog 學習之SystemVerilog簡介

SystemVerilog簡介SystemVerilog是一種硬件描述和驗證語言&#xff08;HDVL&#xff09;&#xff0c;由Accellera開發并于2005年成為IEEE標準&#xff08;IEEE 1800&#xff09;。它在傳統Verilog基礎上擴展了高級驗證和設計功能&#xff0c;廣泛應用于數字電路設計、驗證及系統…

JavaWeb--day3--AjaxElement路由打包部署

&#xff08;以下內容全部來自上述課程及課件&#xff09; Ajax &#xff08;此章節純粹演示&#xff0c;因服務器端url鏈接失效&#xff0c;所以無法實戰&#xff09; 1. 同步與異步 同步&#xff1a; 瀏覽器頁面在發送請求給服務器&#xff0c;在服務器處理請求的過程…

IMF GDP的bug

IMF GDP 數據底子是官方數字&#xff0c;基本是沿用官方的&#xff0c;雖然經過修訂或估算&#xff0c;存在4大“bug”&#xff1a;1. 依賴官方上報&#xff0c;真實性不保證2. PPP GDP 虛高&#xff0c;居民實際消費力低很多ppp gdp高&#xff0c;甚至gdp高的地方&#xff0c;…