用MYSQL學習sql第一次總結和作業

總結

數據庫(Database)
理解為“文件夾”,里面可以裝很多張表。作業中要求先建一個名字叫 mydb6_product 的數據庫。

表(Table)
理解為“Excel 工作表”,由“列(字段)”和“行(記錄)”組成。

列(Column / Field)
表中的一豎條數據,每列都有:
? 數據類型(整型、字符串、浮點型、日期型)
? 約束(主鍵、非空、默認值、外鍵等)

主鍵(Primary Key)
一列或多列的組合,用來唯一標識一行。相當于“身份證號碼”,不能重復,不能為 NULL。

外鍵(Foreign Key)
一張表里的某列引用另一張表的主鍵。作用:讓兩張表產生“關聯”。
例:involces 表的 order_id 是外鍵 → 指向 orders 表的 id。

自增長(AUTO_INCREMENT)
整型主鍵專用,每插入一行自動 +1,省得手寫編號。

非空(NOT NULL)
該列必須有值,不能留空。

默認值(DEFAULT)
插入數據時如果不給值,系統就自動用默認值填充。

浮點型(FLOAT / DOUBLE)
存小數,如價格、工資、金額。

日期型(DATE)
存年月日,如訂單日期。

SQL 語言
用來“說話”讓數據庫干活的語言。核心就 4 類:
? DDL(數據定義):CREATE / DROP / ALTER
? DML(數據操作):INSERT / UPDATE / DELETE / SELECT
? DCL(權限控制):GRANT / REVOKE(本次作業暫時用不到)

數據類型再認識
? INT(11) —— 整數,括號里的 11 只是“顯示寬度”,跟真正存儲大小無關。
? FLOAT(8,2) —— 最多 8 位,其中小數占 2 位(例如 999999.99)。
? DATE —— 只存年月日,格式 ‘YYYY-MM-DD’。
? VARCHAR(20) —— 可變長度字符串,最多 20 個字符。

列級約束/說明
? NOT NULL —— 這一列必須填值。
? DEFAULT —— 不給值時的默認值。
? PRIMARY KEY —— 主鍵,不能重復。
? COMMENT —— 給列寫中文注釋,方便以后看。

插入數據 INSERT INTO … VALUES …
把一行行真實數據塞進表里。

查詢 SELECT(本次重點)
? 基本查詢:SELECT * FROM 表名;
? 去重:SELECT DISTINCT 列名 …
? 聚合:COUNT()、MAX()、MIN()、AVG()、SUM()
? 排序:ORDER BY 列名 [ASC|DESC]
? 條件:WHERE 列名 BETWEEN … AND …、LIKE、IN、AND/OR 等
? 分組:GROUP BY 列名
? 分組后再過濾:HAVING 條件
? 限制返回行數:LIMIT n

建“新表”并復制數據
CREATE TABLE 新表名 AS SELECT …;

?mysql端口號:3306
mysql體系架構:
?(1)網絡連接層

?(2)數據服務層

?(3)存儲引擎層 (innodb事物管理(MyISAM) )

?(4)文件系統層(物理存儲層)

客戶端的連接指令
mysql

?-u用戶名

?-p密碼

?-h 主機名/ip #(localhost/127.0.0.1默認)

?-P 端口

?-D 庫名

?-e sql語句 #直接在客戶端連接時執行sql語句不登錄mysql管理系統

1.4 sql 4大類別
?? 獲取關鍵字的語法

?\c 清空當前命令,不執行當前命令

?\d 指定sql結束字符 默認結束字符;

?\! 調用系統指令 system

?\q 退出 exit quit

2. DDL數據庫定義語句
2.1 庫
show展示(查看)
show databases|tables|warnings;
show databases like '模糊值'; ? #‘%my%’
?? ??? ??? ?% ?任意長度任意字符
??? ??? ? ? ?_ ?任意單個字符
mysql> create database db2 character set utf8mb4 collate utf8mb4_general_ci;
Query OK, 1 row affected (0.01 sec) ?? ?
mysql> select * from ?information_schema.schemata;
create
create database 數據庫名;
create database if not exists 數據庫名;
use 數據名
use mysql ? 進入mysql數據庫
drop 刪除
drop ?database 庫名;
??mysql引號區別:

?`` 將關鍵字可以引用作為數據值創建

?‘’ “” 引用字符串數據值

2.2 表定義語句
create table 表名 (字段名1 數據類型,字段名2 數據類型,....);
drop ?table ?表名; ? #在對應的數據庫下刪除

show tables; 顯示庫下的所有表

顯示表字段名(列名)
desc|describe|explain ?
desc 表名;
show columns from 表名;

復制表
create table 新表名 like 舊表; ?#僅復制舊表的表結構給新表
insert ?into 新表名 ?select ?* from 舊表; ? #將舊表數據插入到新表 (舊表 和新表字段和數據類型一致)
create table 新表名 select * from ?舊表名; ?#復制舊表的表結構以及表數據給新表
5.5 ?5.8
DQL數據查詢語言 select
select 查詢表數據

?函數結果

select ? ? ? ? ?函數結果
select database();
select version();
? ? ? ?now()
? ? ? ?current_date()
? ? ? ?current_time()
? ? ? ?user()

?

?

創建數據庫

CREATE DATABASE mydb6_product;
USE mydb6_product;

按順序建 3張表

(1)employees 員工表

CREATE TABLE employees (
? ? id INT PRIMARY KEY,
? ? name VARCHAR(50) NOT NULL,
? ? age INT,
? ? gender VARCHAR(10) NOT NULL DEFAULT 'unknown',
? ? salary FLOAT
);

(2)orders 訂單表

CREATE TABLE orders (
? ? id INT PRIMARY KEY,
? ? name VARCHAR(100) NOT NULL,
? ? price FLOAT,
? ? quantity INT,
? ? category VARCHAR(50)
);

(3)involces 發票表(注意拼寫是 involces,作業原圖如此)

CREATE TABLE involces (
? ? number INT PRIMARY KEY AUTO_INCREMENT,
? ? order_id INT,
? ? in_date DATE,
? ? totalamount FLOAT CHECK (totalamount > 0),
? ? FOREIGN KEY (order_id) REFERENCES orders(id)
);

做好之后可以使用SHOW TABLES;?查看庫里的表,用?DESC 表名;?查看表結構。

?

(1)顯示所有職工的基本信息。

SELECT * FROM t_worker;

(2)查詢所有職工所屬部門的部門號,不顯示重復的部門號。

SELECT DISTINCT department_id FROM t_worker;

(3)求出所有職工的人數。

SELECT COUNT(*) AS 總人數 FROM t_worker;

(4)列出最高工和最低工資。

思路:聚合 MAX、MIN。

SELECT MAX(wages) AS 最高工資, MIN(wages) AS 最低工資 FROM t_worker;

列出職工的平均工資和總工資。

思路:聚合 AVG、SUM,保留 2 位小數。

SELECT ROUND(AVG(wages),2) AS 平均工資, ROUND(SUM(wages),2) AS 總工資 FROM t_worker;

(6)創建一個只有職工號、姓名和參加工作的新表,名為工作日期表。
思路:建表并復制三列數據。

CREATE TABLE 工作日期表 AS
SELECT worker_id, name, worker_date FROM t_worker;

(7)顯示所有黨員的年齡。思路:先算年齡 = 今年 - 出生年;篩選 politics='黨員'。

SELECT name, YEAR(CURDATE())-YEAR(borth_date) AS 年齡
FROM t_worker
WHERE politics='黨員';

(8)列出工資在 4000–8000 之間的所有職工姓名。

SELECT name FROM t_worker WHERE wages BETWEEN 4000 AND 8000;

(9)列出所有孫姓和李姓的職工姓名。

SELECT name FROM t_worker
WHERE name LIKE '孫%' OR name LIKE '李%';

(10)列出所有部門號為 102 和 103 且不是黨員的職工號、姓名。
思路:多條件 AND + IN。

SELECT worker_id, name
FROM t_worker
WHERE department_id IN (102,103) AND politics != '黨員';

(11)將職工表 t_worker 中的職工按出生的先后順序排序。

SELECT * FROM t_worker ORDER BY borth_date;

(12)顯示工資最高的前 3 名職工的職工號和姓名。

SELECT worker_id, name
FROM t_worker
ORDER BY wages DESC
LIMIT 3;

(13)求出各部門黨員的人數。

SELECT department_id, COUNT(*) AS 黨員人數
FROM t_worker
WHERE politics='黨員'
GROUP BY department_id;

(14)統計各部門的工資和平均工資并保留 2 位小數。

思路:GROUP BY + SUM/AVG + ROUND。

SELECT department_id,
? ? ? ?ROUND(SUM(wages),2) ? AS 部門總工資,
? ? ? ?ROUND(AVG(wages),2) ? AS 部門平均工資
FROM t_worker
GROUP BY department_id;

(15)列出總人數大于等于 3 的部門號和總人數。

思路:分組后統計人數,再用 HAVING 過濾。

SELECT department_id, COUNT(*) AS 總人數
FROM t_worker
GROUP BY department_id
HAVING 總人數 >= 3;

?

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

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

相關文章

SQLite技術架構解析,適用場景有哪些?

一、SQLite技術架構解析 SQLite是一款輕量級、無服務器、嵌入式關系型數據庫,其架構設計圍繞“簡化復雜性、提升效率”展開,核心由前端(SQL處理)、執行引擎(VDBE)、存儲引擎(B-Tree)…

【Luogu】每日一題——Day3. P6392 中意 (數學 取模)

鏈接:P6392 中意 - 洛谷 題目: 思路: 數論這一塊 題目讓我們求這個結果對 MOD 取模,那么我們肯定是不像看到這個除法,所以考慮如何消除這個除法 我們可以想到,向上取整就是加上一個數,假設其為…

React強大且靈活hooks庫——ahooks入門實踐之DOM類hook(dom)詳解

什么是 ahooks? ahooks 是一個 React Hooks 庫,提供了大量實用的自定義 hooks,幫助開發者更高效地構建 React 應用。其中 DOM 類 hooks 是 ahooks 的一個重要分類,專門用于處理 DOM 相關操作,如事件監聽、元素狀態、拖…

GeoTools 工廠設計模式

前言使用GeoTools開發時有必要了解其工廠設計模式,作為軟件開發核心設計模式,其設計思想具有普遍性和研究性。明白方法原理有助于提高開發效率,達到事半功倍的效果。1. 工廠模式 工廠模式(Factory Pattern)是面向對象中…

npu-smi info命令參數解釋

華為昇騰npu-smi顯示npu-smi工具的幫助信息npu-smi -h字段說明-h命令的幫助信息–help命令的幫助信息-vnpu-smi版本信息info顯示硬件詳細信息set修改設備配置屬性clear清除設備信息upgrade升級MCU固件 npu-smi info 用于監控和管理華為NPU的狀態和性能字段值說明npu-smi24.1.rc…

OneCode3.0 通信架構簡介——MCPServer微內核設計哲學與實現

在數字化轉型加速的今天,低代碼平臺已成為企業快速交付應用的核心基礎設施。然而,通用消息中間件與低代碼開發范式之間存在難以調和的矛盾:標準化協議無法匹配可視化編排的動態性,通用架構難以滿足低代碼場景下高頻短消息的性能需…

Android14 Launcher3 修改All App上下滑動頭部顯示陰影

正常情況下的樣子: 下拉App抽屜后的樣子:修改方案:qssi14/packages/apps/Launcher3/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.javaprotected void updateHeaderScroll(int scrolledOffset) {float prog1 Utilities…

Zookeeper入門安裝與使用詳解

文章目錄一、簡介二、下載安裝1、安裝jdk2、windows(1)下載(2)配置與啟動一、簡介 略。 二、下載安裝 1、安裝jdk 安裝jdk8,高版本可能會有問題。 2、windows (1)下載 官網地址&#xff…

設計模式之適配器模式:讓不兼容的接口協同工作的藝術

適配器模式:讓不兼容的接口協同工作的藝術在軟件開發中,我們經常會遇到系統整合的挑戰——如何讓新舊組件協同工作?適配器模式正是解決這類接口不兼容問題的利器,本文將深入探討這一經典設計模式。1. 引言:接口不兼容的…

AI驅動的軟件工程(中):文檔驅動的編碼與執行

📚 系列文章導航 AI驅動的軟件工程(上):人機協同的設計與建模 AI驅動的軟件工程(中):文檔驅動的編碼與執行 AI驅動的軟件工程(下):AI輔助的質檢與交付 大家好…

HTML應用指南:利用GET請求獲取河南省胖東來超市門店位置信息

胖東來作為中國知名的零售企業,自1995年成立以來,始終致力于為消費者提供豐富、新鮮的商品選擇與優質的購物體驗。經過近30年的穩步發展,目前已在河南省內的許昌、新鄉等地共開設13家門店,涵蓋大型綜合百貨商場、中型社區超市及服…

8.服務通信:Feign深度優化 - 解密聲明式調用與現代負載均衡內核

讓服務調用更優雅 在微服務架構中,服務間通信如同血液流動般重要。傳統方式中,開發者需要手動拼接URL、處理負載均衡、管理連接池——這些重復性工作不僅效率低下,還容易出錯。Spring Cloud OpenFeign 的誕生,正是為了解決這一核心痛點。它通過聲明式接口將HTTP請求模板化…

Docker入門指南(超詳細)

一、什么是docker 在云計算和微服務架構盛行的今天,Docker 作為容器技術的標桿,徹底改變了應用部署和運行的方式。簡單來說,Docker 是一個開源的容器化平臺,它通過將應用程序及其依賴環境打包成一個輕量級、可移植的容器&#xff…

學習秒殺系統-實現秒殺功能(商品列表,商品詳情,基本秒殺功能實現,訂單詳情)

文章目錄前言數據庫設計秒殺商品列表頁秒殺商品詳情實現簡單秒殺訂單詳情前言 由于慕課課程中是先實現最基本的功能然后對其壓測,壓測那個地方出問題,然后在對其優化。所以本文記錄的也是實現的是簡單的秒殺功能沒有涉及到高并發的優化。 數據庫設計 …

React 的常用鉤子函數在Vue中是如何設計體現出來的。

1、定義響應式數據: React 通過 useState 和 useReducer Vue 通過 ref 和 reactiveconst [state, setState] useState(initialState)const [state, dispatch] useReducer(reducer, initialState)2、定義緩存數據: React 通過 memo 和 useMemo useCal…

開源的 H.264/AVC 視頻編碼器庫-x264 的交叉編譯 和 程序測試

一、環境準備 安裝交叉編譯工具鏈 根據目標ARM架構選擇對應工具鏈(如arm-linux-gnueabihf-):# Ubuntu/Debian系統 sudo apt-get install gcc-arm-linux-gnueabihf g-arm-linux-gnueabihf# 驗證安裝 arm-linux-gnueabihf-gcc --version或者手動…

自由學習記錄(69)

RectToPolar() 是 將直角坐標系 (笛卡爾坐標系) 的 uv 坐標,轉化為極坐標系(θ,r) uv - centerUV:將坐標原點平移,使 (0.5, 0.5) 變成原點。 r length(uv):距離中心點的半徑(從中…

Spring Boot 敏感信息入庫加密全面解決方案

Spring Boot 敏感信息入庫加密全面解決方案 在當今數據驅動的時代,保護用戶隱私數據已成為系統設計的必備要求。本文將詳細介紹 Spring Boot 應用中敏感數據加密存儲的完整方案,涵蓋從基礎實現到生產級落地的全流程。 一、加密方案選型 1.1 常見加密類型對比 加密類型特點…

docker0網卡沒有ip一步解決

正常查看ip的時候一直顯示沒有ip這里先刪除docker0網卡ip link delete docker0然后重啟服務systemctl restart docker再次查看顯示有ip了并且查看配置文件也是正常的cat /etc/docker/daemon.json {"registry-mirrors": ["https://docker.m.daocloud.io",&q…

MYSQL-索引篇

索引結構概述MySQL 的索引是在存儲引擎層實現的,不同的存儲引擎有不同的索引結構,主要包含以下幾種:索引結構描述BTree索引最常見的索引類型,大部分引擎都支持 B 樹索引Hash索引底層數據結構是用哈希表實現的,只有精確…