MySQL學習筆記(3):SQL

来源:https://www.cnblogs.com/garvenc/archive/2020/06/18/mysql_learning_3_sql.html
-Advertisement-
Play Games

本文章更新於2020-06-14,使用MySQL 5.7,操作系統為Deepin 15.9。 說明:下文中,小寫為自定義變數,根據實際情況填寫(個別小寫的參數除外)。使用[]引起表示內容可選,使用{}引起表示內容為一個整體,|表示使用左側或右側內容,...表示重覆之前內容。 實際上,所有語句和命令的 ...


本文章更新於2020-06-14,使用MySQL 5.7,操作系統為Deepin 15.9。

目錄

說明:下文中,小寫為自定義變數,根據實際情況填寫(個別小寫的參數除外)。使用[]引起表示內容可選,使用{}引起表示內容為一個整體,|表示使用左側或右側內容,...表示重覆之前內容。

實際上,所有語句和命令的關鍵字(文中大寫)都不區分大小寫。

以下部分語句是MySQL擴展,非標準SQL。

DDL語句

DDL語句,即數據定義語句(Data Definition Languages)。其關鍵字包括:CREATEDROPALTER

在MySQL中,資料庫和表對應於數據目錄中的目錄和文件,所以操作系統的大小寫敏感性決定資料庫名和表名的大小寫敏感性。這意味著二者在Windows中是大小寫不敏感的,在Linux中是大小寫敏感的。

類似於表名,表別名在Windows中是大小寫不敏感的,在Linux中是大小寫敏感的。

列名、索引名、存儲過程名、觸發器名等在任何平臺都是大小寫不敏感的。

創建資料庫

CREATE DATABASE dbname
[[DEFAULT] [CHARSET [=] charset] [COLLATE [=] collation]]

刪除資料庫

DROP DATABASE dbname

修改資料庫

ALTER DATABASE dbname
[[DEFAULT] [CHARSET [=] charset] [COLLATE [=] collation]]

創建表

CREATE TABLE tablename (
{colname type [[CHARSET [=] charset] [COLLATE [=] collation]] [[NOT] NULL] [DEFAULT value]}[, ...]
[PRIMARY KEY (colname[, ...]),]
[{KEY keyname (colname[, ...])}[, ...]]
[CONSTRAINT fkname FOREIGN KEY (colname[, ...])
	REFERENCES tablename2(colname2[, ...]) [ON DELETE reference_option] [ON UPDATE reference_option]]
)
[[STORAGE] ENGINE=engine [UNION=(tablename[, ...]) [INSERT_METHOD=insert_method]]]
[[DEFAULT] [CHARSET [=] charset] [COLLATE [=] collation]]
[partition_declaration]

如不指定NOT NULLDEFAULT value,欄位預設是可空的。

reference_option可取如下值,表示本表有關聯記錄時,關聯表更新或刪除採取何種操作:

  • RESTRICTNO ACTION:禁止關聯表更新或刪除。
  • CASCADE:更新或刪除本表對應記錄。
  • SET NULL:本表的對應欄位設置為NULL
  • SET DEFAULT:本表的對應欄位設置為預設值。

如使用MERGE存儲引擎,則可使用UNION=(tablename[, ...]) INSERT_METHOD=insert_methodINSERT_METHOD可取以下值:

  • FIRST:插入操作被作用在第一個表上。
  • LAST:插入操作被作用在最後一個表上。
  • NO:預設值,不能執行插入操作。

partition_declaration表示分區語句,會在“分區”文章中細述。

根據已存在的表創建新的表:

CREATE TABLE tablename1
LIKE tablename2

刪除表

DROP TABLE tablename

修改表

添加欄位:

ALTER TABLE tablename
ADD [COLUMN] colname1 type [CHARSET [=] charset] [COLLATE [=] collation] [[NOT] NULL] [DEFAULT value]
[FIRST|{AFTER colname2}]

修改欄位定義:

ALTER TABLE tablename
MODIFY [COLUMN] colname1 type [CHARSET [=] charset] [COLLATE [=] collation] [[NOT] NULL] [DEFAULT value]
[FIRST|{AFTER colname2}]

修改欄位定義,也可修改欄位名:

ALTER TABLE tablename
CHANGE [COLUMN] oldcolname newcolname type [CHARSET [=] charset] [COLLATE [=] collation] [[NOT] NULL] [DEFAULT value]
[FIRST|{AFTER colname}]

刪除欄位:

ALTER TABLE tablename
DROP [COLUMN] colname

修改表名:

ALTER TABLE tablename
RENAME [TO] newtablename

修改表的自動增長列初始值:

ALTER TABLE tablename
AUTO_INCREMENT = n

修改表的存儲引擎:

ALTER TABLE tablename
ENGINE=engine

修改表的字元集:

ALTER TABLE tablename
[[DEFAULT] [CHARSET [=] charset] [COLLATE [=] collation]]

創建索引

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX indexname
[USING HASH|BTREE]
ON tablename({colname[(len)] [ASC|DESC]} [, ...])

僅當創建首碼索引的時候才使用len,len為位元組數。

或:

ALTER TABLE tablename
ADD INDEX indexname(column[, ...])

刪除索引

DROP INDEX indexname ON tablename

或:

ALTER TABLE tablename DROP INDEX indexname

創建視圖

CREATE [OR REPLACE] [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] VIEW viewname [(colname[, ...])]
AS select_statement [WITH [CASCADE|LOCAL] CHECK OPTION]

WITH [CASCADE|LOCAL] CHECK OPTION表示允許更新記錄的條件,預設是CASCADE

  • LOCAL表示更新後的記錄只要滿足本視圖的條件就可以更新。
  • CASCADE表示更新後的記錄必須滿足本視圖關聯的所有視圖(包括創建本視圖使用的視圖)的條件才可以更新。

修改視圖

ALTER [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] VIEW viewname [(colname[, ...])]
AS select_statement [WITH [CASCADE|LOCAL] CHECK OPTION]

刪除視圖

DROP VIRW [IF EXISTS] viewname[, ...] [RESTRICT|CASCADE]

存儲過程和函數

存儲過程和函數相關DDL語句於“存儲過程和函數”文章中描述。

創建事件

CREATE EVENT eventname
ON SCHEDULE {AT timestamp [+ INTERVAL n interval]}|{EVERY n interval}
DO
statement_list

interval可為:YEARQUARTERMONTHDAYHOURMINUTEWEEKSECONDYEAR_MONTHDAY_HOURDAY_MINUTEDAY_SECONDHOUR_MINUTEHOUR_SECONDMINUTE_SECOND,與函數DATE_ADD類似。

如果事件調度器狀態是關閉的,需使用SET GLOBAL event_scheduler = 1打開,事件才能生效。

修改事件

禁用事件:

ALTER EVENT eventname DISABLE

刪除事件

DROP EVENT eventname

創建觸發器

CREATE TRIGGER triggername BEFORE|AFTER INSERT|UPDATE|DELETE
ON tablename FOR EACH ROW
statement_list

觸發時間如下:

  • BEFORE指在檢查約束前觸發。
  • AFTER指在檢查約束後觸發。

觸發器只能創建在永久表上,不能對臨時表創建觸發器。對同一個表相同觸發時間的相同觸發事件,只能定義一個觸發器。

刪除觸發器

DROP TRIGGER [dbname.]triggername

DML語句

DML語句,即數據操縱語句(Data Manipulation Languages)。其關鍵字包括:INSERTUPDATEDELETESELECT

插入記錄

INSERT [LOW_PRIORITY|DELAYED|HIGH_PRIORITY] INTO tablename [(colname1[, ...])] VALUES
(record1_value1[, ...])[, ...]
[ON DUPLICATE KEY UPDATE colname2=value2[, ...]]

當不指定欄位名時,值的順序需與表定義的欄位排列順序一致。

也可以使用如下的方式指定欄位值:

INSERT INTO tablename SET {colname = value}[, ...]

使用查詢的結果插入記錄:

INSERT INTO tablename select_statement

更新記錄

UPDATE tablename SET {colname = value}[, ...] [WHERE condition1 [AND|OR condition2][...]]

或:

UPDATE tablename[, ...] SET {[tablename.]colname = value}[, ...] [WHERE condition1 [AND|OR condition2][...]]

刪除記錄

DELETE FROM tablename [WHERE condition1 [AND|OR condition2][...]]

或:

DELETE tablename1[, ...] FROM tablename1[, ...] [WHERE condition1 [AND|OR condition2][...]]

查詢記錄

SELECT *|{[DISTINCT] {constant|[@|@@]variable|colname1 [AS alias1]}[, ...]}
FROM tablename[, ...]
[WHERE condition1 [AND|OR condition2][...]]
[GROUP BY colname2[, ...]] [WITH ROLLUP]
[HAVING having_condition1 [AND|OR having_condition2][...]]
[ORDER BY NULL|{{colname3 [DESC|ASC]}[, ...]}]
[LIMIT [offset_start,] row_count]
[INTO OUTFILE 'filename'
	[FIEDLS [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char']]
	[LINES [STARTING BY 'string'] [TERMINATED BY 'string']]
]
[{LOCK IN SHARE MODE}|{FOR UPDATE}]

WITH ROLLUP表示對分類聚合後的結果進行再彙總,不能和ORDER BY同時使用。

ORDER BY子句中,NULL為禁止排序,DESC為降序,ASC為升序,預設為ASC

LIMIT子句中,,offset_start預設為0,即第一條記錄。

表別名:

SELECT t.colname FROM table t

表連接:

SELECT *
FROM tablename1
{[INNER]|LEFT|RIGHT JOIN tablename2 ON condition}[ ...]

左連接包含左表中所有記錄,右表可能出現空記錄;右連接包含右表所有記錄,左表可能出現空記錄。預設為內連接,內連接也可以如下形式:

SELECT *
FROM tablename1, tablename2 WHERE condition

常見的子查詢:

SELECT * FROM tablename1 WHERE colname1 [NOT] IN (SELECT colname2 FROM tablename2)
SELECT * FROM tablename1 WHERE colname1 =|!= (SELECT colname2 FROM tablename2)
SELECT * FROM tablename1 WHERE [NOT] EXISTS (SELECT * FROM tablename2 WHERE tablename1.colname1 = tablename2.colname2)
SELECT * FROM tablename1, (SELECT * FROM tablename) tablename2 WHERE condition

第二種用法僅適用於子查詢只返回一行記錄的情況。

聯合:

select_statement1
{UNION [ALL] select_statement2}
[...]

偽表名:

SELECT something [FROM DUAL]

不使用ALL會對記錄進行排重。

SELECT INTO OUTFILE使用的格式選項含義如下:

  • FIELDS TERMINATED BY 'string':欄位分隔字元串,預設為'\t'。
  • FIELDS [OPTIONALLY] ENCLOSED BY 'char':欄位引用符,預設為空。如加上OPTIONALLY則只用在字元串類型欄位上。
  • FIELDS ESCAPED BY 'char':轉義字元,預設為''。
  • LINES STARTING BY 'string':行首字元串,預設為空。
  • LINES TERMINATED BY 'string':行結束字元串,預設為'\n'。

相應的,LOAD DATA INFILE的語句如下:

LOAD DATA [LOCAL] INFILE 'filename' INTO TABLE tablename
[FIEDLS [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char']]
[LINES [STARTING BY 'string'] [TERMINATED BY 'string']]
[IGNORE n LINES]
[(colname[, ...])]
[SET {colname=expr}[, ...]]

LOCAL表示從客戶端本地讀取文件,預設從伺服器讀取文件。

大多數選項都與SELECT INTO OUTFILE相同,新增的選項含義如下:

  • IGNORE n LINES:忽略輸入文件中的前n行數據。
  • (colname[, ...]):按照列出的欄位順序和欄位數量載入數據。
  • SET {colname=expr}[, ...]:將列做一定的值轉換後再載入。

DCL語句

DCL語句,即數據控制語句(Data Control Languages)。其關鍵字包括:GRANTREVOKE

授予許可權

可同時創建用戶。

GRANT {USAGE|ALL|{privtype[, ...]} [(column[, ...]])}[, ...]
ON [TABLE|FUNCTION|PROCEDURE] *|*.*|dbname.*|tablename
TO {{user|'user'}@{host|'host'} [IDENTIFIED BY [PASSWORD] 'password'] [REQUIRE SSL]}[, ...]
[WITH [GRANT OPTION] [resource_option[...]]]

USAGE只用於資料庫登錄,不能執行任何操作。

priv_type為SELECT|INSERT|UPDATE|DELETE|INDEX|ALTER|CREAATE|DROP|GRANT|CREATE VIEW|SHOW VIEW|CREATE ROUTINE|ALTER ROUTINE|REFERENCES|RELOAD|SHUTDOWN|PROCESS|FILE|SHOW DB|SUPER|CREATE TMP TABLE|LOCK TABLES|EXECUTE|REPL SLAVE|REPL CLIENT,大多與mysql資料庫user表的*_priv對應。

管理許可權不能指定資料庫,ON後必須跟*.*

使用PASSWORD表示password是經過PASSWORD函數加密的。

resource_option包括,設置為0表示刪除限制:

  • MAX_QUERIES_PER_HOUR count
  • MAX_UPDATES_PER_HOU count
  • MAX_CONNECTIONS_PER_HOUR count
  • MAX_USER_CONNECTIONS count

回收許可權

REVOKE {ALL|{priv_type|GRANT OPTION[,...]} [colname[, ...]]}[, ...]
ON [TABLE|FUNCTION|PROCEDURE] *|*.*|dbname.*|tablename
FROM {user|'user'}@{host|'host'}[, ...]

USAGE許可權不能被回收,亦即,REVOKE不能刪除用戶。

此外,還有以下用於許可權控制的語句:

創建用戶

CREATE USER {user|'user'}@{host|'host'}
IDENTIFIED [WITH auth_plugin] BY [PASSWORD] 'password'

user為''表示任何用戶。host為''、*、或%(含義與LIKE相同)表示任何外部主機,不包括localhost。

auth_plugin可使用:

  • mysql_native_password
  • caching_sha2_password

使用PASSWORD表示password是經過PASSWORD函數加密的。

修改用戶

ALTER USER {user|'user'}@{host|'host'}
IDENTIFIED [WITH auth_plugin] BY [PASSWORD] 'password'

刪除用戶

DROP USER {user|'user'}@{host|'host'}[, ...]

修改密碼

SET PASSWORD [FOR {user|'user'}@{host|'host'}] = PASSWORD('password')

查看許可權

SHOW GRANTS [FOR {user|'user'}@{host|'host'}]

其他語句

分析、檢查、優化、修複表

ANALYZECHECKOPTIMIZEREPAIR執行期間都會對錶進行鎖定。

分析表,使得SQL能夠生成正確的執行計劃。如果感覺實際的執行計劃並不符合預期,進行分析表可能會解決問題:

ANALYZE [LOCAL|NO_WRITE_TO_BINLOG] TABLE tablename[, ...]

檢查表,用於檢查表或視圖是否有錯誤(如視圖定義中被引用的表不存在):

CHECK TABLE tablename[, ...] [{QUICK|FAST|MEDIUM|EXTENDED|CHANGED}[...]]

優化表,可以將表中的碎片空間進行合併。如果已經刪除表的很大一部分數據,或已經對含有可變長度行(含有VARCHARBLOBTEXT的列)的表進行很多更改,則應該進行優化表:

OPTIMIZE [LOCAL|NO_WRITE_TO_BINLOG] TABLE tablename[, ...]

修複表,對壞表進行修複:

REPAIR [LOCAL|NO_WRITE_TO_BINLOG] TABLE tablename[, ...] [{QUICK|EXTENDED|USE_FRM}[...]]

SHOW

關於SHOW語句的詳情參閱官方文檔:https://dev.mysql.com/doc/refman/5.7/en/show.html

SHOW語句返回元數據信息,元數據信息大多保存在information_schema庫中。

語句 作用
SHOW BINLOG EVENTS [IN 'filename'] [FROM position] 列出二進位日誌事件
SHOW CHARACTER SET [LIKE 'pattern'] 列出伺服器支持的字元集
SHOW COLLATION [LIKE 'pattern'] 列出伺服器支持的字元集校對規則
SHOW [FULL] COLUMNS FROM [dbname.]tablename [LIKE 'pattern'] 列出列
SHOW CREATE DATABASE dbname 列出創建資料庫語句
SHOW CREATE EVENT eventname 列出創建事件語句
SHOW CREATE FUNCTION funcname 列出創建函數語句
SHOW CREATE PROCEDURE procname 列出創建存儲過程語句
SHOW CREATE TABLE [dbname.]tablename 列出創建表語句
SHOW CREATE TRIGGER triggername 列出創建觸發器語句
SHOW CREATE VIEW [dbname.]viewname 列出創建視圖語句
SHOW DATABASES [LIKE 'pattern'] 列出資料庫
SHOW ENGINE engine STATUS 列出存儲引擎狀態(如:INNODB)
SHOW ENGINES 列出伺服器支持的存儲引擎
SHOW ERRORS 列出伺服器出現的錯誤
SHOW EVENTS 列出事件
SHOW FUNCTION CODE funcname 列出函數代碼
SHOW FUNCTION STATUS [LIKE 'pattern'] 列出函數狀態
SHOW GRANTS [FOR {user|'user'}@{host|'host'}] 列出賬號許可權
SHOW INDEX FROM [dbname.]tablename 列出索引
SHOW [BINARY/MASTER] LOGS 列出二進位日誌文件
SHOW MASTER STATUS 列出主庫狀態
SHOW OPEN TABLES [FROM dbname] [LIKE 'pattern'] 列出打開並緩存的表
SHOW PLUGINS 列出已安裝的插件
SHOW PROCEDURE CODE procname 列出存儲過程代碼
SHOW PROCEDURE STATUS [LIKE 'pattern'] 列出存儲過程狀態
SHOW PRIVILEGES 列出許可權
SHOW PROCESSLIST 列出伺服器線程
SHOW PROFILE [ALL|CPU|{BLOCK IO}|{PAGE FAULTS}|SOURCE][, ...] FOR QUERY query_id 列出查詢的分析信息
SHOW PROFILES 列出可分析的查詢
SHOW RELAYLOG EVENTS [IN 'filename'] [FROM position] 列出中繼日誌事件
SHOW SLAVE HOSTS 列出從庫信息
SHOW SLAVE STATUS 列出從庫狀態
SHOW [SESSION|GLOBAL] STATUS [LIKE 'pattern'] 列出狀態變數,預設為SESSION
SHOW TABLE STATUS [FROM dbname] [LIKE 'pattern'] 列出表和視圖狀態
SHOW [FULL] TABLES [FROM dbname] [LIKE 'pattern'] 列出表和視圖
SHOW TRIGGERS [FROM dbname] [LIKE 'pattern'] 列出觸發器
SHOW [SESSION|GLOBAL] VARIABLES [LIKE 'pattern'] 列出系統變數
SHOW WARNINGS 列出伺服器警告

FLUSH

關於FLUSH語句的詳情參閱官方文檔:https://dev.mysql.com/doc/refman/5.7/en/flush.html

語句 作用
FLUSH PRIVILEGES 刷新許可權,會重新讀取許可權表
FLUSH TABLES 刷新表,會關閉所有打開的表,並刷新查詢緩存
FLUSH USER_RESOURCES 刷新用戶資源限制,會重置為0

其他

語句 作用
DESC tablename statement
EXPLAIN tablename statement
KILL processid 殺死線程
SET [SESSION|GLOBAL] [@|@@]variable=value 設置變數值,預設為SESSION
SET NAMES charset 同時修改當前會話的客戶端、連接、返回結果字元集
START SLAVE 啟動從庫複製線程
STOP SLAVE 停止從庫複製線程

命令

上述語句使用mysql工具交互執行時都需要使用語句分隔符(通常為“;”)結尾,但命令不需要。

命令 簡寫 作用
? [topic] ? 同HELP。查看幫助,最頂層主題為contents
CLEAR \c 清除當前語句,不會執行
CONNECT [dbname [host]] \r 重新連接伺服器
DELIMITER delimiter \d 設置語句分隔符
EDIT \e 使用$EDITOR指定的編輯器編輯語句
EGO \G 執行語句,將結果欄位縱向排列
EXIT \q 同QUIT。退出
GO \g 執行語句,將結果欄位橫向排列
HELP [topic] \h 查看幫助
NOPAGER \n 禁用pager,將結果列印至標準輸出
NOTEE \t 禁用tee,不同時將結果追加至文件
PAGER [systemcommand] \P 設置pager,將結果使用指定的系統命令列印,而不是列印至標準輸出
PRINT \p 列印當前命令
PROMPT [prompt] \R 設置交互提示語
QUIT \q 退出
REHASH \# 重建自動完成哈希
SOURCE filename \. 執行SQL文件
STATUS \s 查看伺服器狀態
SYSTEM [systemcommand] \! 執行系統命令
TEE filename \T 設置tee,同時將結果追加至文件
USE dbname \u 切換資料庫
CHARSET charset \C 設置字元集
WARNINGS \W 顯示警告信息
NOWARNING \w 不顯示警告信息
RESETCONNECTION \x 重置連接回話上下文

變數

@開頭的變數為用戶變數,@@開頭的變數為系統變數,預設為系統變數。

註釋

#--起至行末的內容都視為註釋。/**/之間所有行的內容也視為註釋。


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

-Advertisement-
Play Games
更多相關文章
  • 字元編碼相關參數 數據流中的轉碼過程 校驗規則 Tips:字元集和校驗規則總是相伴的 一 從簡單的建庫語句開始 CREATE DATABASE [IF NOT EXISTS] <db_name> [[DEFAULT] CHARACTER SET <db_charset>] [[DEFAULT] CO ...
  • MySQL安裝和啟動 Windows下安裝和啟動服務 下載地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 安裝 1 在MySQL官網下載zip文件, 2 在任意位置保存解壓。這裡在E盤創建MySQL目錄 E:\MySQL\ 3 ...
  • SDS(simple dynamic string),簡單動態字元串。s同時它被稱為 Hacking String。hack 的地方就在 sds 保存了字元串的長度以及剩餘空間。sds 的實現在 sds.c 中。 C語言字元串使用長度為n+1的字元數組來表示長度為n的字元串,並且字元數組的最後一個元 ...
  • SELECT * FROM V$DB_OBJECT_CACHE WHERE name=upper('Fn_JS_DBlink_BM') AND LOCKS!='0';select SID from V$ACCESS WHERE object=upper('Fn_JS_DBlink_BM'); --S ...
  • redisObject redis 是 key-value 存儲系統,其中key類型一般為字元串,而 value 類型則為 redis 對象(redisObject)。Redis 對象可以綁定各種類型的數據,譬如 string、list 和set。因此他能很好的將屬性和數據分離開。 typedef ...
  • Redis集群 ·Redis集群提供了一種運行Redis安裝的方法,在該安裝中,數據會在多個Redis節點之間自動分片。 Redis集群在分區期間還提供了一定程度的可用性,這實際上是在某些節點出現故障或無法通信時有繼續工作的能力。但是,如果發生較嚴重故障(例如,大多數主節點不可用時),集群將停止運行 ...
  • 一個事務執行dml操作,就會自動加上行共用表鎖,以防止其他需要排他鎖的事務訪問。 一個事務對錶新增數據,另一個事務修改表報錯顯示“資源正忙...”,因為修改該表時需要排他鎖。 一個事務修改表數據,或刪除表數據,就是真正的影響記錄數為0,另一個事務依然無法修改該表,因為修改該表時需要排他鎖。 ...
  • 先上個pgsql操作的對比,然後引出ignite的並置處理規則 ddl: drop table student;CREATE TABLE student(sid int PRIMARY KEY ,sname varchar(64), cid int); drop table course;CREAT ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...