【必知必會的MySQL知識】③DML語言

来源:https://www.cnblogs.com/xiezhr/archive/2023/05/02/17343314.html
-Advertisement-
Play Games

(DML語言) 前言 前面的兩篇文章中,我們已經對MySQL有了基本瞭解。 並且知道了怎麼用工具連接資料庫?怎麼創建資料庫?怎麼創建表? 這一篇呢我們就來看看怎麼在我們創建的表中插入數據、刪除數據和修改數據。也就是上一篇文章中提到的DML 數據操作語言 準備 根據上一章所說的,我們創建一個db_xi ...


目錄

前言

前面的兩篇文章中,我們已經對MySQL有了基本瞭解。
並且知道了怎麼用工具連接資料庫?怎麼創建資料庫?怎麼創建表?
這一篇呢我們就來看看怎麼在我們創建的表中插入數據、刪除數據和修改數據。也就是上一篇文章中提到的DML 數據操作語言

準備

根據上一章所說的,我們創建一個db_xiezhr 資料庫,並向資料庫中添加一張用戶信息表。

① 通過命令行建庫,建表

mysql> create database if not exists db_xiezhr;
Query OK, 1 row affected (0.00 sec)
mysql> use db_xiezhr
Database changed
mysql> drop table if exists user_profile;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CREATE TABLE `user_profile` 
				   (`id` int NOT NULL,
				   `device_id` int NOT NULL,
				   `user_name` varchar(100) NOT NULL ,
				   `gender` varchar(14) NOT NULL,
				   `age` int ,
				   `user_email` varchar(50) ,
				   `user_zip` varchar(10),
				   `university` varchar(32) NOT NULL,
				   `province` varchar(32)  NOT NULL,);
Query OK, 0 rows affected (0.01 sec)

② 當然了,我們可以通過上一篇文章中說到的工具之一建庫、建表

這裡以sqlyog工具為例,建立db_xiezhr資料庫,並創建用user_profile戶信息表

  • 建立db_xiezhr資料庫
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 創建用user_profile戶信息表
    在這裡插入圖片描述
    在這裡插入圖片描述
    以上,我們資料庫和數據表就都已經創建成功了

插入數據

語法格式

#方式一:
INSERT INTO 表名 VALUES(值,...);
#方式二:
INSERT INTO 表名(欄位名,...) VALUES(值,...);
#方式三:
INSERT INTO 表名(欄位名,...) SELECT (欄位名,...) FROM 表名;

插入完整行數據

①簡單寫法

  • 存儲到每個裡表中的數據在VALUES子句中給出,值得順序也必須要與定義時候的欄位順序一致,沒有的值需要使用NULL。
  • 這種寫法簡單,但並不安全,應儘量避免使用。一旦表結構變化了,可能就會出問題
# 向user_profile用戶信息表中添加一條數據
insert into user_profile 
values( 
	1,
	1,
	'張三',
	'male',
	'28',
	null,
	null,
	'北京大學',
	'BeiJing'
);

② 安全寫法

  • 跟上面簡單寫法效果一樣,往用戶信息表中插入一條數據
  • 在表名後括弧中明確給出了列名,在插入數據時,將用VALUES列表中的相應值填入對應的列名中。第一個列名對應第一個值,第二個列名對應第二個值......
  • 因為提供了列名,所以值也不需要按照表中的次序來插入。即使表結構變化了,sql語句也能正常執行。
  • 不需要插入的列user_email和user_zip 列,值也可以不用寫出來了,也比較靈活
INSERT INTO `db_xiezhr`.`user_profile` (
  `id`,
  `device_id`,
  `user_name`,
  `gender`,
  `age`,
  `university`,
  `province`
) 
VALUES
  (
    1,
    1,
    '張三',
    'male',
    '28',
    '北京大學',
    'BeiJing'
  ) ;

註:

  • 不管使用哪種insert語法,都必須給出values的正確數目。
  • 如果不提供列名,則必須給每個列都提供一個值
  • 如果提供列名,則必須對每個寫出的列提供一個值
  • 在insert語法中省略某列時,需要具備兩個條件,一是該列被定義為允許NULL值二是表定義中給出了預設值

插入多行數據

這裡你可能說我多寫幾條sql語句不就可以了麽,哈哈,這也可以實現了麽?

INSERT INTO `user_profile` (
  `id`,
  `device_id`,
  `user_name`,
  `gender`,
  `age`,
  `university`,
  `province`
) 
VALUES
  (
    2,
    2,
    '李四',
    'male',
    '36',
    '天津大學',
    'TianJin'
  ) ;
  
INSERT INTO `user_profile` (
  `id`,
  `device_id`,
  `user_name`,
  `gender`,
  `age`,
  `university`,
  `province`
) 
VALUES
  (
    3,
    3,
    '王五',
    'female',
    '25',
    '天津大學',
    'TianJin'
  ) ;  
  

但這裡提供另一種語法,一條語句就可以完成


INSERT INTO `user_profile` (
  `id`,
  `device_id`,
  `user_name`,
  `gender`,
  `age`,
  `university`,
  `province`
) 
VALUES
  (
    2,
    2,
    '李四',
    'male',
    '36',
    '天津大學',
    'TianJin'
  ),
  (
    3,
    3,
    '王五',
    'female',
    '25',
    '天津大學',
    'TianJin'
  ) ;  
  

將檢索出來的數據插入表

這裡有兩張表,一張是user_profile,數據如下
在這裡插入圖片描述
一張表是tmp_user_profile,數據如下
在這裡插入圖片描述
我們需要將tmp_user_profile 表中數據插入到user_profile 表中,可以通過如下腳本實現

INSERT INTO `user_profile` (
  `id`,
  `device_id`,
  `user_name`,
  `gender`,
  `age`,
  `university`,
  `province`
) 
SELECT 
  `id`,
  `device_id`,
  `user_name`,
  `gender`,
  `age`,
  `university`,
  `province` 
  FROM tmp_user_profile;

執行完上面腳本後,user_profile表中數據
在這裡插入圖片描述

更新數據

準備兩張表

  • 下麵我們建兩張表,一張表為 product 表,用來存放產品信息,其中有產品價格欄位 saleprice;另外一張表是 product_price 表。
# 產品信息表product
mysql> select * from product;
+----+-----------+--------------------------------------------+-----------+--------+
| id | productid | productname                                | saleprice | author |
+----+-----------+--------------------------------------------+-----------+--------+
|  1 | 10001     | 公眾號XiezhrSpace【Oralce從入門到放棄】    |       100 | xiezhr |
|  2 | 10002     | 公眾號XiezhrSpace【MySQL從入門到放棄】     |        99 | xiezhr |
|  3 | 10003     | 公眾號XiezhrSpace【快速上手Linux核心命令】 |        88 | xiezhr |
|  4 | 10004     | 公眾號XiezhrSpace【Java從入門到精通】      |       150 | xiezhr |
|  5 | 10005     | 公眾號XiezhrSpace【Idea從入門到上癮】      |       200 | xiezhr |
|  6 | 10006     | 公眾號XiezhrSpace【如何快速搭建個人博客】  |       120 | xiezhr |
+----+-----------+--------------------------------------------+-----------+--------+
6 rows in set (0.02 sec)

# 產品價格表product_price 
mysql> select * from product_price;
+----+-----------+-------+
| id | productid | price |
+----+-----------+-------+
|  1 | 10001     |  NULL |
|  2 | 10002     |  NULL |
|  3 | 10003     |  NULL |
|  4 | 10004     |  NULL |
|  5 | 10005     |  NULL |
|  6 | 1006      |  NULL |
+----+-----------+-------+
6 rows in set (0.00 sec)

語法

# 1、單表更新
UPDATE 表名 SET 列 = 值,... WHERE 查詢條件;
# 2、根據一張表更新另一張表
# ① 使用update
UPDATE 
  表1 別名,
  表2 別名 
SET
  列 = 值,
  ...
WHERE 連接條件 AND 篩選條件 ;
# ②通過INNER JOIN
UPDATE
  表1 別名
INNER JOIN 表2 別名
ON 連接條件 AND 篩選條件
SET
  列 = 值,
  ...;
# ③ 通過LEFT JOIN
UPDATE
  表1 別名
LEFT JOIN  表2 別名
ON 連接條件 AND 篩選條件
SET
  列 = 值,
  ...;
# ③ 通過子查詢
UPDATE
  表2 別名
SET 列 = (SELECT 表達式 FROM 表1 WHERE 連接條件 AND 篩選條件);
# 2、同時更新兩張表
UPDATE
  表1
INNER JOIN 表2
ON 連接條件 AND 篩選條件
SET 表1.列=值1,
	表2.列=值2;

實踐操作

① 將產品信息表product 中10001 號產品價格更新為999

mysql> UPDATE product t SET t.`saleprice` =999 WHERE t.`productid` = '10001';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from product;
+----+-----------+--------------------------------------------+-----------+--------+
| id | productid | productname                                | saleprice | author |
+----+-----------+--------------------------------------------+-----------+--------+
|  1 | 10001     | 公眾號XiezhrSpace【Oralce從入門到放棄】    |       999 | xiezhr |
|  2 | 10002     | 公眾號XiezhrSpace【MySQL從入門到放棄】     |        99 | xiezhr |
|  3 | 10003     | 公眾號XiezhrSpace【快速上手Linux核心命令】 |        88 | xiezhr |
|  4 | 10004     | 公眾號XiezhrSpace【Java從入門到精通】      |       150 | xiezhr |
|  5 | 10005     | 公眾號XiezhrSpace【Idea從入門到上癮】      |       200 | xiezhr |
|  6 | 10006     | 公眾號XiezhrSpace【如何快速搭建個人博客】  |       120 | xiezhr |
+----+-----------+--------------------------------------------+-----------+--------+
6 rows in set (0.00 sec)

② 將 product_price 表中的價格欄位 price 更新為 product 表中價格欄位 price 的 80%。

# 使用“UPDATE table1 t1,table2,...,table n”的方式來多表更新
mysql> UPDATE product t1, product_price t2 SET t2.price = t1.`saleprice` * 0.8 WHERE t1.productid= t2.productId;
Query OK, 5 rows affected, 2 warnings (0.01 sec)
Rows matched: 5  Changed: 5  Warnings: 2

mysql> select * from product_price;
+----+-----------+-------+
| id | productid | price |
+----+-----------+-------+
|  1 | 10001     |    80 |
|  2 | 10002     |    79 |
|  3 | 10003     |    70 |
|  4 | 10004     |   120 |
|  5 | 10005     |   160 |
|  6 | 1006      |  NULL |
+----+-----------+-------+
6 rows in set (0.00 sec)

# 通過INNER JOIN
mysql> select * from product_price;
+----+-----------+-------+
| id | productid | price |
+----+-----------+-------+
|  1 | 10001     |    80 |
|  2 | 10002     |    79 |
|  3 | 10003     |    70 |
|  4 | 10004     |   120 |
|  5 | 10005     |   160 |
|  6 | 1006      |  NULL |
+----+-----------+-------+
6 rows in set (0.00 sec)
#  通過LEFT JOIN
mysql> UPDATE product t1 LEFT JOIN product_price t2 ON t1.productid= t2.productid SET t2.price = t1.`saleprice` * 0.8 WHERE t1.productid='10001';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from product_price;
+----+-----------+-------+
| id | productid | price |
+----+-----------+-------+
|  1 | 10001     |    80 |
|  2 | 10002     |  NULL |
|  3 | 10003     |  NULL |
|  4 | 10004     |  NULL |
|  5 | 10005     |  NULL |
|  6 | 1006      |  NULL |
+----+-----------+-------+
6 rows in set (0.00 sec)
# 通過子查詢
mysql> UPDATE product_price t2 SET t2.price=(SELECT t1.`saleprice` *0.8 FROM product t1 WHERE t1.productid = t2.productid);
Query OK, 5 rows affected, 2 warnings (0.01 sec)
Rows matched: 6  Changed: 5  Warnings: 2

mysql> select * from product_price;
+----+-----------+-------+
| id | productid | price |
+----+-----------+-------+
|  1 | 10001     |    80 |
|  2 | 10002     |    79 |
|  3 | 10003     |    70 |
|  4 | 10004     |   120 |
|  5 | 10005     |   160 |
|  6 | 1006      |  NULL |
+----+-----------+-------+
6 rows in set (0.00 sec)

③ 同時更新兩張表(正式開發中用得比較少)

  • 兩張表做關聯,同時更新了 product_price 表的 price 欄位和 product 表的 author兩個欄位。
mysql> UPDATE product t1 INNER JOIN product_price t2 ON t1.productid= t2.productid SET t2.price = t1.`saleprice` * 0.8, t1.`author` = 'xiezhr001';
Query OK, 5 rows affected, 2 warnings (0.00 sec)
Rows matched: 10  Changed: 5  Warnings: 2

mysql> select * from product;
+----+-----------+--------------------------------------------+-----------+-----------+
| id | productid | productname                                | saleprice | author    |
+----+-----------+--------------------------------------------+-----------+-----------+
|  1 | 10001     | 公眾號XiezhrSpace【Oralce從入門到放棄】    |       100 | xiezhr001 |
|  2 | 10002     | 公眾號XiezhrSpace【MySQL從入門到放棄】     |        99 | xiezhr001 |
|  3 | 10003     | 公眾號XiezhrSpace【快速上手Linux核心命令】 |        88 | xiezhr001 |
|  4 | 10004     | 公眾號XiezhrSpace【Java從入門到精通】      |       150 | xiezhr001 |
|  5 | 10005     | 公眾號XiezhrSpace【Idea從入門到上癮】      |       200 | xiezhr001 |
|  6 | 10006     | 公眾號XiezhrSpace【如何快速搭建個人博客】  |       120 | xiezhr    |
+----+-----------+--------------------------------------------+-----------+-----------+
6 rows in set (0.00 sec)

mysql> select * from product_price;
+----+-----------+-------+
| id | productid | price |
+----+-----------+-------+
|  1 | 10001     |    80 |
|  2 | 10002     |    79 |
|  3 | 10003     |    70 |
|  4 | 10004     |   120 |
|  5 | 10005     |   160 |
|  6 | 1006      |  NULL |
+----+-----------+-------+
6 rows in set (0.00 sec)

刪除數據

語法

# 1、單表刪除 
DELETE FROM 表名 【WHERE 篩選條件 】;
# 2、多表刪除(級聯刪除)
① 關聯刪除
DELETE 
  表1的別名,
  表2的別名 
FROM
  表1 別名,
  表2 別名 
WHERE 連接條件 AND 篩選條件 ;
② 內連接、左右連接刪除
DELETE 
  表1的別名,
  表2的別名 
FROM
  表1 別名 
INNER | LEFT | RIGHT JOIN 表2 別名 ON 連接條件 
WHERE 篩選條件 ;

實踐操作

① 單表刪除

# 刪除產品id為10005的產品信息
mysql> select * from product;
+----+-----------+--------------------------------------------+-----------+-----------+
| id | productid | productname                                | saleprice | author    |
+----+-----------+--------------------------------------------+-----------+-----------+
|  1 | 10001     | 公眾號XiezhrSpace【Oralce從入門到放棄】    |       100 | xiezhr001 |
|  2 | 10002     | 公眾號XiezhrSpace【MySQL從入門到放棄】     |        99 | xiezhr001 |
|  3 | 10003     | 公眾號XiezhrSpace【快速上手Linux核心命令】 |        88 | xiezhr001 |
|  4 | 10004     | 公眾號XiezhrSpace【Java從入門到精通】      |       150 | xiezhr001 |
|  5 | 10005     | 公眾號XiezhrSpace【Idea從入門到上癮】      |       200 | xiezhr001 |
|  6 | 10006     | 公眾號XiezhrSpace【如何快速搭建個人博客】  |       120 | xiezhr    |
+----+-----------+--------------------------------------------+-----------+-----------+
6 rows in set (0.00 sec)

mysql> delete from product where productid = '10005';
Query OK, 1 row affected (0.02 sec)

mysql> select * from product;
+----+-----------+--------------------------------------------+-----------+-----------+
| id | productid | productname                                | saleprice | author    |
+----+-----------+--------------------------------------------+-----------+-----------+
|  1 | 10001     | 公眾號XiezhrSpace【Oralce從入門到放棄】    |       100 | xiezhr001 |
|  2 | 10002     | 公眾號XiezhrSpace【MySQL從入門到放棄】     |        99 | xiezhr001 |
|  3 | 10003     | 公眾號XiezhrSpace【快速上手Linux核心命令】 |        88 | xiezhr001 |
|  4 | 10004     | 公眾號XiezhrSpace【Java從入門到精通】      |       150 | xiezhr001 |
|  6 | 10006     | 公眾號XiezhrSpace【如何快速搭建個人博客】  |       120 | xiezhr    |
+----+-----------+--------------------------------------------+-----------+-----------+
5 rows in set (0.00 sec)

② 多表級聯刪除

mysql> select * from product;
+----+-----------+--------------------------------------------+-----------+-----------+
| id | productid | productname                                | saleprice | author    |
+----+-----------+--------------------------------------------+-----------+-----------+
|  1 | 10001     | 公眾號XiezhrSpace【Oralce從入門到放棄】    |       100 | xiezhr001 |
|  2 | 10002     | 公眾號XiezhrSpace【MySQL從入門到放棄】     |        99 | xiezhr001 |
|  3 | 10003     | 公眾號XiezhrSpace【快速上手Linux核心命令】 |        88 | xiezhr001 |
|  4 | 10004     | 公眾號XiezhrSpace【Java從入門到精通】      |       150 | xiezhr001 |
|  6 | 10006     | 公眾號XiezhrSpace【如何快速搭建個人博客】  |       120 | xiezhr    |
+----+-----------+--------------------------------------------+-----------+-----------+
5 rows in set (0.00 sec)

mysql> select * from product_price;
+----+-----------+-------+
| id | productid | price |
+----+-----------+-------+
|  1 | 10001     |    80 |
|  2 | 10002     |    79 |
|  3 | 10003     |    70 |
|  4 | 10004     |   120 |
|  5 | 10005     |   160 |
|  6 | 1006      |  NULL |
+----+-----------+-------+
6 rows in set (0.00 sec)

mysql> DELETE  t1,  t2 FROM  product t1,  product_price t2 WHERE t1.`productid` = t2.`productid` AND t1.`productid` = '10002';
Query OK, 2 rows affected (0.01 sec)

mysql> select * from product;
+----+-----------+--------------------------------------------+-----------+-----------+
| id | productid | productname                                | saleprice | author    |
+----+-----------+--------------------------------------------+-----------+-----------+
|  1 | 10001     | 公眾號XiezhrSpace【Oralce從入門到放棄】    |       100 | xiezhr001 |
|  3 | 10003     | 公眾號XiezhrSpace【快速上手Linux核心命令】 |        88 | xiezhr001 |
|  4 | 10004     | 公眾號XiezhrSpace【Java從入門到精通】      |       150 | xiezhr001 |
|  6 | 10006     | 公眾號XiezhrSpace【如何快速搭建個人博客】  |       120 | xiezhr    |
+----+-----------+--------------------------------------------+-----------+-----------+
4 rows in set (0.00 sec)

mysql> select * from product_price;
+----+-----------+-------+
| id | productid | price |
+----+-----------+-------+
|  1 | 10001     |    80 |
|  3 | 10003     |    70 |
|  4 | 10004     |   120 |
|  5 | 10005     |   160 |
|  6 | 1006      |  NULL |
+----+-----------+-------+
5 rows in set (0.00 sec)
mysql> select * from product;
+----+-----------+--------------------------------------------+-----------+-----------+
| id | productid | productname                                | saleprice | author    |
+----+-----------+--------------------------------------------+-----------+-----------+
|  1 | 10001     | 公眾號XiezhrSpace【Oralce從入門到放棄】    |       100 | xiezhr001 |
|  3 | 10003     | 公眾號XiezhrSpace【快速上手Linux核心命令】 |        88 | xiezhr001 |
|  4 | 10004     | 公眾號XiezhrSpace【Java從入門到精通】      |       150 | xiezhr001 |
|  6 | 10006     | 公眾號XiezhrSpace【如何快速搭建個人博客】  |       120 | xiezhr    |
+----+-----------+--------------------------------------------+-----------+-----------+
4 rows in set (0.00 sec)

mysql> select * from product_price;
+----+-----------+-------+
| id | productid | price |
+----+-----------+-------+
|  1 | 10001     |    80 |
|  3 | 10003     |    70 |
|  4 | 10004     |   120 |
|  5 | 10005     |   160 |
|  6 | 1006      |  NULL |
+----+-----------+-------+
5 rows in set (0.00 sec)

mysql> DELETE   t1,  t2 FROM  product_price t2 INNER JOIN product t1 ON t1.`productid` = t2.`productid` WHERE t1.`productid` = '10003';
Query OK, 2 rows affected (0.01 sec)

mysql> select * from product;
+----+-----------+-------------------------------------------+-----------+-----------+
| id | productid | productname                               | saleprice | author    |
+----+-----------+-------------------------------------------+-----------+-----------+
|  1 | 10001     | 公眾號XiezhrSpace【Oralce從入門到放棄】   |       100 | xiezhr001 |
|  4 | 10004     | 公眾號XiezhrSpace【Java從入門到精通】     |       150 | xiezhr001 |
|  6 | 10006     | 公眾號XiezhrSpace【如何快速搭建個人博客】 |       120 | xiezhr    |
+----+-----------+-------------------------------------------+-----------+-----------+
3 rows in set (0.00 sec)

mysql> select * from product_price;
+----+-----------+-------+
| id | productid | price |
+----+-----------+-------+
|  1 | 10001     |    80 |
|  4 | 10004     |   120 |
|  5 | 10005     |   160 |
|  6 | 1006      |  NULL |
+----+-----------+-------+
4 rows in set (0.00 sec)

小結

  • 這篇文章主要說了MySQL中單表多表的增刪改,在update、delete 使用的時候一定要細心
  • 除非打算更新刪除表中所有數據,否則絕對不要使用不帶where子句的update或delete語句
  • 保證每個表都有主鍵
  • 在對update或delete語句使用where子句之前,先用select進行查詢測試,保證過濾出來的記錄是正確的;
  • update或delete語句執行前,儘量做好數據備份

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

-Advertisement-
Play Games
更多相關文章
  • 嘿嘿嘿、嘿嘿,俺又回來了! github代碼地址 https://github.com/Tom-shushu/work-study 介面文檔有道雲 https://note.youdao.com/s/GShGsYE8 介面文檔離線版本 https://files.cnblogs.com/files/ ...
  • FactoryBean 和 BeanFactory 是兩個不同的概念。前者是一個介面,我們可以在實現該介面時通過調用 getObject 方法來返回實例,同時 FactoryBean 本身也是一個實例。後者是 Spring 容器的工廠,通過其中的 bean 定義 Map 一個一個地實例化我們通過註解... ...
  • Springboot的優點 內置servlet容器,不需要在伺服器部署 tomcat。只需要將項目打成 jar 包,使用 java -jar xxx.jar一鍵式啟動項目 SpringBoot提供了starter,把常用庫聚合在一起,簡化複雜的環境配置,快速搭建spring應用環境 可以快速創建獨立 ...
  • 列印 print("hello world") 註釋 單行註釋 多行註釋 -- 這是單行註釋 --[[ 這是多行註釋 ]] 賦值 s="Hello World" -- 多重賦值 a,b="String a","String b" -- 交換值,類似python a,b="String a","Str ...
  • Redis連環40問,絕對夠全! Redis是什麼? Redis(Remote Dictionary Server)是一個使用 C 語言編寫的,高性能非關係型的鍵值對資料庫。與傳統資料庫不同的是,Redis 的數據是存在記憶體中的,所以讀寫速度非常快,被廣泛應用於緩存方向。Redis可以將數據寫入磁碟 ...
  • Spring的Bean定義環節是Spring IoC容器中的核心流程之一。在這個過程中,Spring會掃描指定的包路徑,找到符合條件的Bean,並將其轉換為Bean定義。在這個過程中,Spring使用了ASM技術來解析類的註解信息,判斷當前類是否符合要求。然後,Spring將符合條件的Bean定義加... ...
  • 簡單字元串加密 編寫一個應用程式用來輸入的字元串進行加密,對於字母字元串加密規則如下: 'a→d’ ‘b'→’e’ ‘w’→z' ...... x'→’a’ ‘y'→b' ‘z→c’ ‘A’→’D’ ‘B'→’E’ ‘W’→’Z’ ‘X’→’A’ ‘Y’→’B’ ‘Z’→’C’ ?對於其他字元,不進 ...
  • 先聲明一下前期的一些手欠欠兒的操作導致oracl登錄不進去了,起先是清理磁碟空間的時候誤刪除了orcle DBF數據文件後無法進入系統,plsql登錄報錯如下: 一般情況下,刪除表空間的正確方法是:DROP TABLESPACE BDCDJ INCLUDING CONTENTS AND DATAFI ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...