Mysql學習筆記(更新至4.2 SELECT語句)

来源:https://www.cnblogs.com/wutong666/archive/2023/04/06/17291722.html
-Advertisement-
Play Games

Mysql 01 使用CMD連接資料庫 -- 在控制台連接資料庫(需將位置切換到mysql所在地址) mysql -u root -p password:12345 -- 修改mysql賬戶密碼及許可權,安裝配置完後慎用 update mysql.user set authentication_str ...


Mysql

01 使用CMD連接資料庫

-- 在控制台連接資料庫(需將位置切換到mysql所在地址)
mysql -u root -p
password:12345

-- 修改mysql賬戶密碼及許可權,安裝配置完後慎用
update mysql.user set authentication_string = password('12345') where user = 'root' and Host = 'localhost';-- 修改用戶密碼
flush privileges; -- 刷新許可權

--------------------------------------------------
-- 所有語句需要使用;作為結尾
show databases; -- 查看所有資料庫

use test01; -- 切換資料庫 use+資料庫名

show tables; --查看資料庫中所有的表
describe `user`; --顯示某張表的信息

create database test01; -- 創建一個資料庫

exit; -- 退出連接

-- 單行註釋
-- 下麵是多行註釋
/*
hello
*/
  • 資料庫xxx語言 CRUD 增刪改查
    • DDL 定義
    • DML 操作
    • DQL 查詢
    • DCL 控制

02 操作資料庫

操作資料庫>操作資料庫中的表>操作資料庫中表的數據

mysql關鍵字不區分大小寫!!

2.1 操作資料庫

  • 創建資料庫
CREATE DATABASE test01; -- 創建資料庫01
-- 但問題是如果test01存在,系統會報錯
-- 所以一般會加入一個判斷條件
CREATE DATABASE IF NOT EXISTS test01;
  • 刪除資料庫
DROP DATABASE IF EXISTS test01;
  • 使用資料庫
-- tab鍵上方有一個``,如果資料庫的表名或者欄位名是一個特殊字元,就需要添加
USE `test01`;
  • 查詢資料庫
SHOW DATABASES; -- 查看所有資料庫

2.2 資料庫列數據類型

數字

2.3 資料庫欄位屬性(重要)

  • unsigned:

    • 無符號的整數
    • 聲明瞭該列不能填充負數
  • zerofill:

    • 0填充的
    • 不足位數在前面用0來填充,例如int(3),5-->005
  • 自增

    • 通常理解為自增,自動在上一條記錄的基礎上+1(預設)
    • 通常用來設計唯一的主鍵~index,必須是整數類型
    • 可以自定義自增步長
    • Navicat中Mysql自增設置在選項中

  • 非空 NULL not NULL
    • 假如設置為not null ,如果不給他賦值就會報錯!
    • NULL,如果不填寫值,預設就是NULL!
  • 預設:
    • 設置預設的值
    • 例如 sex,預設值為男性,如果沒有特別指定該列的值,則會有預設的值!
    • 需要註意,在Navicat中,預設值設置,自增,無符號以及填充零都在下方

  • 拓展
/*每一個表都必須存在以下五個欄位,未來做項目都有用,表示一個記錄存在的意義
id 主鍵
is_delete 偽刪除
gmt_create 創建時間
gmt_update 更新時間
*/

2.4 創建資料庫表(重點)

-- 目標:創建一個school資料庫
-- 創建學生表(列,欄位) 使用SQL語句創建
-- 學號int 登陸密碼varchar(20) 姓名 性別varchar(2) 出生日期(datetime) 家庭住址 email
-- 註意點,使用英文(),表的名稱和欄位儘可能使用``括起來
-- AUTO_INCREMENT 自增
-- 字元串使用單引號括起來;
-- 所有的語句後面加,(英文的),最後一個不用加
-- PRIMARY KEY 主鍵,一般一個表只有一個唯一的主鍵

CREATE TABLE IF NOT EXISTS `studentinformation`(
    `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '學號',
		`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT'姓名',
		`pwd` VARCHAR(20) NOT NULL DEFAULT '12345' COMMENT'密碼',
		`sex` VARCHAR(2) NOT NULL DEFAULT'男' COMMENT'性別',
		`birthday` DATETIME DEFAULT NULL COMMENT'出生日期',
		`address` VARCHAR(100) DEFAULT NULL COMMENT'家庭地址',
		`email` VARCHAR(50) DEFAULT NULL COMMENT'電子郵箱',
		PRIMARY KEY(`id`)
)ENGINE = INNODB DEFAULT CHARSET=utf8

格式

CREATE TABLE [IF NOT EXISTS] `表名`(
    `欄位名` 列類型 [屬性] [索引][註釋],
    `欄位名` 列類型 [屬性] [索引][註釋],
    ·······
    `欄位名` 列類型 [屬性] [索引][註釋]
)[表類型][字元集設置][註釋]

2.5 數據表的類型

-- 關於資料庫引擎
/*
INNODB 預設使用~
MYISAM 早些年使用
*/
MYISAM INNODB
事務支持 不支持 支持
數據行鎖定(同步) 不支持 支持
外鍵約束 不支持 支持
全文索引 支持 不支持
表空間大小 較小 較大,約為前者2倍

常規使用操作:

  • MYISAM 節約空間,速度較快
  • INNODB 安全性高,事務的處理,多表多用戶操作

在物理空間的位置

所有的資料庫文件都存在data目錄下

所以資料庫的本質還是文件的存儲

Mysql引擎在物理文件上的區別

  • InnoDB在資料庫表中只有一個*.frm文件,以及上級目錄下的ibdata1文件
  • MYISAM對應文件
    • *.frm 表結構的定義文件
    • *.MYD 數據文件(data)
    • *.MYI 索引文件(index)
  • 這裡有必要提到的是,MySQL8開始刪除了原來的frm文件,並採用 Serialized Dictionary Information (SDI), 是MySQL8.0重新設計數據詞典後引入的新產物,並開始已經統一使用InnoDB存儲引擎來存儲表的元數據信息。SDI信息源記錄保存在ibd文件中。
    如何可以查看表結構信息,官方提供了一個工具叫做ibd2sdi,在安裝目錄下可以找到,可以離線的將ibd文件中的冗餘存儲的sdi信息提取出來,並以json的格式輸出到終端。可參考一篇CSDN博客。https://blog.csdn.net/philipslu/article/details/102499234

設置資料庫表的字元集編碼

CHARSET = utf8

也可以採取在資料庫安裝目錄下新建一個ini文件的方式進行預設設置。不如不單獨設置,系統會預設為一個latin字元集,我的ini文件格式如下:

#設置3306埠
port=3306
#設置mysql的安裝目錄   ----------是你的文件路徑-------------
basedir=E:\WorkappPackage\Mysql\mysql-8.0.32-winx64
#設置mysql資料庫的數據的存放目錄  ---------是你的文件路徑data文件夾自行創建
#datadir=E:\WorkappPackage\Mysql\mysql-8.0.32-winx64\data
#允許最大連接數
max_connections=200
#允許連接失敗的次數。
max_connect_errors=10
#服務端使用的字元集預設為utf8mb4
character-set-server=utf8mb4
#創建新表時將使用的預設存儲引擎
default-storage-engine=INNODB
#預設使用“mysql_native_password”插件認證
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
#設置mysql客戶端預設字元集
default-character-set=utf8mb4
[client]
#設置mysql客戶端連接服務端時預設使用的埠
port=3306
default-character-set=utf8mb4

2.6 修改刪除表

修改

-- 修改表名:ALTER TABLE 舊表名 RENAME AS 新表名
ALTER TABLE test01 Rename AS test02

-- 增加表的欄位:ALTER TABLE 表名 ADD 欄位名 列屬性
ALTER TABLE test02 ADD age INT(10)

-- 修改表的欄位(重命名,修改約束)
-- ALTER TABLE 表名 MODIFY 欄位名 列屬性[]
ALTER TABLE test02 MODIFY age VARCHAR(10)
-- ALTER TABLE 表名 CHANGE 舊名字 新名字 列屬性[]
ALTER TABLE test01 CHANGE age age1 INT(1) -- 欄位重命名

-- 刪除表的欄位
ALTER TABLE test01 DROP age1
  • 可以觀察到,所有對於表的修改都是以ALTER開頭的

刪除

-- 刪除表(加入判斷條件,如果存在再刪除)
DROP TABLE IF EXISTS test01
  • 需要註意,所有的創建和刪除儘量加上判斷,以免出現報錯

03 MySQL數據管理

3.1 資料庫級別外鍵(瞭解)

方式一:在創建表的時候,增加外鍵語句和關聯語句等約束(比較複雜)

CREATE TABLE IF NOT EXISTS `studentinformation`(
    `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '學號',
		`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT'姓名',
		`pwd` VARCHAR(20) NOT NULL DEFAULT '12345' COMMENT'密碼',
		`sex` VARCHAR(2) NOT NULL DEFAULT'男' COMMENT'性別',
		`birthday` DATETIME DEFAULT NULL COMMENT'出生日期',
		`gradeid` INT(3) NOT NULL COMMENT'年級id',
		`address` VARCHAR(100) DEFAULT NULL COMMENT'家庭地址',
		`email` VARCHAR(50) DEFAULT NULL COMMENT'電子郵箱',
		PRIMARY KEY(`id`),
		KEY `FK_gradeid`(`gradeid`), -- 外鍵名稱設置
		CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`) -- 關聯約束設置
)ENGINE = INNODB DEFAULT CHARSET=utf8


CREATE TABLE IF NOT EXISTS `grade`(
    `gradeid` INT(3) NOT NULL COMMENT'年級id',
		`gradename` VARCHAR(10) NOT NULL COMMENT'年級名稱',
		PRIMARY KEY(`gradeid`)
)ENGINE = INNODB DEFAULT CHARSET=utf8
  • 運行結果如下

  • 可以看到此時由於外鍵關聯關係的存在,原表在刪除以及對某些欄位內容進行修改時都收到了約束
  • 刪除時需要先刪除引用的表,然後再回來刪除被引用的表

方法二:正如上面所示,可以在外鍵部分手動添加,這裡不做展開,與上面運行結果類似即可

方法三:

CREATE TABLE IF NOT EXISTS `grade`(
    `gradeid` INT(3) NOT NULL COMMENT'年級id',
		`gradename` VARCHAR(10) NOT NULL COMMENT'年級名稱',
		PRIMARY KEY(`gradeid`)
)ENGINE = INNODB DEFAULT CHARSET=utf8


-- 外部創建外鍵約束
CREATE TABLE IF NOT EXISTS `studentinformation`(
    `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '學號',
		`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT'姓名',
		`pwd` VARCHAR(20) NOT NULL DEFAULT '12345' COMMENT'密碼',
		`sex` VARCHAR(2) NOT NULL DEFAULT'男' COMMENT'性別',
		`birthday` DATETIME DEFAULT NULL COMMENT'出生日期',
		`gradeid` INT(3) NOT NULL COMMENT'年級id',
		`address` VARCHAR(100) DEFAULT NULL COMMENT'家庭地址',
		`email` VARCHAR(50) DEFAULT NULL COMMENT'電子郵箱',
		PRIMARY KEY(`id`)
)ENGINE = INNODB DEFAULT CHARSET=utf8

-- 創建表的時候沒有外鍵關係
-- 外部添加外鍵約束
ALTER TABLE `studentinformation`
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`)

-- 結構
ALTER TABLE 表
ADD CONSTRAINT 約束名 FOREIGN KEY(`作為外鍵的列`)
  • 但需要註意的是,以上的操作均為物理外鍵,是在資料庫級別進行操作的外鍵,一般不推薦使用。(避免資料庫過多造成困擾)

最佳實踐

  • 資料庫就是單純的表,只用來存數據,只有行(數據)和列(欄位)
  • 如果想使用多張表的關聯操作,即使用外鍵(在程式中實現)

參考文章:https://www.cnblogs.com/rjzheng/p/9907304.html

3.2 DML語言(需要全部記住)

資料庫意義:數據存儲、數據管理

DML語言:數據操作語言

  • INSERT
  • UPDATE
  • DELETE

3.3 添加INSERT

格式

-- 插入語句(添加)
-- INSERT INTO 表名 (`欄位名1`,`欄位名2`,`欄位名3`) VALUES('第一條數據欄位1數據','第一條數據欄位2數據','第一條數據欄位3數據'),('第二條數據欄位1數據','第二條數據欄位2數據','第二條數據欄位3數據')····

-- 例:
INSERT INTO `grade`(`gradename`)VALUES('大一')
-- 需註意的是,跟在表名後面的括弧內容可以選擇表中的部分欄位,但是需要觀察表結構,那些非空且沒有預設值的或者沒設置自增的欄位必須包括在內,否則會報錯。還需註意,選定了括弧內容後,VALUES後面的括弧內的結構需與前面保持一致。如果想一次性添加多條數據,需要在括弧中間用“,”隔開。

-- 錯誤示例:
INSERT INTO `grade` VALUES('大二')
-- 此處在表名`grade`後面沒有括弧,因此Mysql就會預設格式為全部欄位。依照上面所述,資料庫會對VALUES後面數據進行匹配。因此會報錯。
-- 正確示例:
INSERT INTO `grade` VALUES(2,'大二')

-- 插入多條數據
INSERT INTO `grade`(`gradename`)
VALUES ('大三'),('大四')
  • 再次強調,必須註意標點符號的中英文格式!

註意事項:

  • 欄位和欄位之間用英文逗號隔開
  • 欄位是可以省略的,但是後面括弧內的值需要一一對應,不能少
  • 可以同時插入多條數據,VALUES後面的值,需要使用隔開即可

3.4 修改UPDATE

UPDATE 修改誰 set 原來的值 = 新值 WHERE 條件

-- 修改某條數據的某一個欄位信息的格式
UPDATE `studentinformation1` SET `pwd`= 11111 WHERE `id` = 2200935

-- 需要註意,如果不加入判斷條件,就會修改整張表的全部該欄位信息
UPDATE `studentinformation1` SET `address`='XX大學XX校區' 

-- 如果想要一次修改某條數據的多個欄位信息,則需要在不同欄位之間用逗號隔開
UPDATE `studentinformation1` SET `name` = 'wutong',`pwd` = 'wt677099' WHERE `id`= 2200936

-- 語法:
-- UPDATE 表名 SET column_name1 = value1,column_name2 = value2······WHERE 條件

條件:WHERE 子句 運算符 id等於某個值,大於某個值,在某個區間內修改.....

註意,WHERE後的判斷語句會返回一個布爾值

操作符 含義 示例 結果
= 等於 5=6 false
<>或!= 不等於 5<>6 true
> 大於 5>6 false
< 小於 5<6 true
<= 小於等於 5<=6 true
>= 大於等於 5>=6 false
BETWEEN...AND... 在範圍內 BETWEEN 2 AND 5 [2,5]
AND 3>1 AND 3>5 false
OR 3>1 OR 3>5 true
-- 多個條件查詢數據示例:
UPDATE `studentinformation1` SET `name` = 'ZhangSan' WHERE `id`<5 AND `pwd` = 12347

註意:

  • column_name是資料庫的列,儘量帶上``
  • 條件,篩選的條件,如果沒有指定,則會修改所有的列
  • value,是一個具體的值,也可以是一個變數
  • 多個設置屬性之間,使用英文逗號隔開
  • 在編寫條件時一定要註意參數的屬性

3.5 刪除DELETE

DELETE命令

語法:DELETE FROM表名 [where 條件]

-- 刪除數據(避免這樣寫,會把數據全部幹掉,而且會有遺留問題)
DELETE FROM `test02`

-- 刪除指定數據
DELETE FROM `test02` WHERE `id`= 1

TRUNCATE命令

  • 作用:完全清空一個資料庫表,表的結構和索引約束不會變!而且不影響事務(後面再講)
-- 清空 test02表
TRUNCATE TABLE `test02`

DELETE 和 TRUNCATE 的區別

  • 相同點:都能刪除數據,都不會刪除表結構

  • 不同(在InnoDB引擎下):

    • TRUNCATE 重新設置自增列計數器,即下次再插入數據時會從1開始,而DELETE會從上次的自增終點開始

      • 觀察DELETE操作後使用INSERT插入數據

      image-20230406111139376

      • 觀察TRUNCATE操作後使用INSERT插入數據

      image-20230406111239766

      • 測試源碼如下:
      CREATE TABLE IF NOT EXISTS `test02`(
         `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '序號',
      	 `name` VARCHAR(10) NOT NULL,
      	 PRIMARY KEY(`id`)
      ) ENGINE = InnoDB DEFAULT CHARSET = utf8
      
      INSERT INTO `test02`(`name`) VALUES('張三'),('李四'),('王五')
      
      DELETE FROM `test02` WHERE `id`= 2
      
      DELETE FROM `test02`
      
      TRUNCATE TABLE `test02`
      
    • TRUNCATE 不會影響事務

瞭解內容:DELETE刪除的問題,重啟資料庫現象

  • InnoDB 自增列會從1開始(存在記憶體當中,斷點即失)
  • MyISAM 繼續從上一個自增量開始(存在文件中的,不會丟失)

04 DQL查詢數據(最重點)

4.0 預備

設計一個案例資料庫,之後操作可能都圍繞這個


CREATE DATABASE `studentmanage`;
USE `studentmanage`;


DROP TABLE IF EXISTS `grade`;
CREATE TABLE `grade`(
   `GradeID` INT(11) NOT NULL AUTO_INCREMENT COMMENT'年級編號',
	 `GradeName` VARCHAR(50) NOT NULL COMMENT'年級名稱',
	 PRIMARY KEY(`GradeID`)
)ENGINE = InnoDB DEFAULT CHARSET = utf8;


INSERT INTO `grade`(`GradeID`,`GradeName`) VALUES(1,'大一'),(2,'大二'),(3,'大三'),(4,'大四'),(5,'預科');

drop table if exists `student`;
create table `student`(
	`studentno` int(4) not null comment '學號',
    `loginpwd` varchar(20) default null,
    `studentname` varchar(20) default null comment '學生姓名',
    `sex` tinyint(1) default null comment '性別,0或1',
    `gradeid` int(11) default null comment '年級編號',
    `phone` varchar(50) not null comment '聯繫電話,允許為空',
    `address` varchar(255) not null comment '地址,允許為空',
    `borndate` datetime default null comment '出生時間',
    `email` varchar (50) not null comment '郵箱賬號允許為空',
    `identitycard` varchar(18) default null comment '身份證號',
    primary key (`studentno`),
    unique key `identitycard`(`identitycard`),
    key `email` (`email`)
)engine=myisam default charset=utf8;


DROP TABLE IF EXISTS `subject`;
CREATE TABLE `subject`(
	`subjectno`INT(11) NOT NULL auto_increment COMMENT '課程編號',
    `subjectname` VARCHAR(50) DEFAULT NOT NULL COMMENT '課程名稱',
    `classhour` INT(4) DEFAULT NOT NULL COMMENT '學時',
    `gradeid` INT(4) DEFAULT NOT NULL COMMENT '年級編號',
    PRIMARY KEY (`subjectno`)
)ENGINE = InnoDB AUTO_INCREMENT = 19 DEFAULT CHARSET = utf8;



DROP TABLE IF EXISTS `result`;
CREATE TABLE `result`(
	`studentno` INT(4) NOT NULL COMMENT '學號',
    `subjectno` INT(4) NOT NULL COMMENT '課程編號',
    `examdate` DATETIME NOT NULL COMMENT '考試日期',
    `studentresult` INT(4) NOT NULL COMMENT '考試成績',
     KEY `subjectno` (`subjectno`)
)ENGINE = InnoDB DEFAULT CHARSET = utf8;



INSERT INTO `subject`(`subjectno`,`subjectname`,`classhour`,`gradeid`)VALUES
(1,'高等數學-1',110,1),
(2,'高等數學-2',110,2),
(3,'高等數學-3',100,3),
(4,'高等數學-4',130,4),
(5,'C語言-1',110,1),
(6,'C語言-2',110,2),
(7,'C語言-3',100,3),
(8,'C語言-4',130,4),
(9,'Java程式設計-1',110,1),
(10,'Java程式設計-2',110,2),
(11,'Java程式設計-3',100,3),
(12,'Java程式設計-4',130,4),
(13,'資料庫結構-1',110,1),
(14,'資料庫結構-2',110,2),
(15,'資料庫結構-3',100,3),
(16,'資料庫結構-4',130,4),
(17,'C#基礎',130,1);

INSERT INTO `student` 
VALUES(1000,'zhangsan123','張三',1,1,13800004196,'十舍111','1999-01-01','[email protected]','123456198001011234'),
(1001,'lisi123','李四',1,2,13700002826,'十舍115','1999-03-12','[email protected]','879997879979979'),
(1002,'wangwu123','王五',1,3,15500003231,'十舍223','1999-05-04','[email protected]','29565236989454'),
(1003,'laoliu123','老六',1,5,13300009825,'十舍342','1999-06-11','[email protected]','98898216546546'),
(1004,'xiaomei123','小美',0,2,13200006032,'八舍102','1999-08-15','[email protected]','32165468979797'),
(1005,'xiaonuan123','小暖',0,4,13500007472,'八舍238','1999-10-21','[email protected]','87651351654998'),
(1006,'xiaoqian123','小倩',0,1,15100004312,'八舍313','1999-11-09','[email protected]','32165489756544'),
(1007,'xiaohanhan123','小憨憨',1,3,17100005169,'十舍250','1999-02-28','[email protected]','87979789987781');


-- 學生成績這部分數據根據功能需要自行繼續添加
INSERT INTO `result`
VALUES(1000,1,'2017-12-26',91),
(1000,3,'2018-12-17',86),
(1000,5,'2017-12-15',93),
(1000,7,'2018-12-22',91),
(1000,9,'2017-12-19',82),
(1000,10,'2017-06-08',72),
(1000,15,'2018-12-11',83),
(1000,16,'2019-06-25',77),
(1000,17,'2017-12-23',64),
(1001,1,'2017-12-26',93),
(1002,3,'2018-12-17',79),
(1003,5,'2017-12-15',80),
(1004,7,'2018-12-22',73),
(1005,9,'2017-12-19',69),
(1006,10,'2017-06-08',81),
(1002,15,'2018-12-11',61),
(1004,16,'2019-06-25',86),
(1006,17,'2017-12-23',91);

4.1 DQL簡介

  • Data Query Language,縮寫DQL,直翻就是數據查詢語言
  • 資料庫中所有的查詢語句都用 SELECT
  • 這是資料庫操作中最核心最重要的部分
  • SELECT語句眾多,簡單複雜查詢都可以實現
  • 是資料庫操作中使用頻率最高的語句

4.2 SELECT初識

-- 查詢某張表中的全部信息 
SELECT * FROM student

-- 查詢某張表中指定欄位的信息 SELECT 欄位名1,欄位2...FROM 表名
SELECT `studentno`,`studentname` FROM student

-- 查詢某張表中指定欄位的信息,並將部分欄位名替換掉,使用AS語句
SELECT `studentno` AS 學號,`studentname` AS 學生姓名 FROM student 

-- 利用CONCAT(A,B)函數合併兩個欄位的信息並展示
SELECT CONCAT(`studentno`,`studentname`) AS 姓名 FROM student 

有時候,列名字不是那麼的易於理解,可以使用AS取別名幫助理解

去重 DISTINCT

作用:去除SELECT查詢出來的結果中重覆的數據,重覆的數據只顯示一條。

-- 查詢有哪些同學參加了考試
SELECT * FROM student
SELECT `studentno` FROM student
SELECT DISTINCT `studentno` AS 學號 FROM student

資料庫的列(表達式)

-- 查詢資料庫版本(函數)
SELECT VERSION();

-- 計算結果(表達式)
SELECT 100*3-1 AS 計算結果

-- 查詢某個變數的大小
SELECT @@AUTO_INCREMENT_INCREMENT

-- 對資料庫原數據進行操作
SELECT `studentno` AS 學號,`studentResult`+1 AS 修正成績 FROM result

資料庫中的表達式:文本值,列,NULL,函數,計算表達式,系統變數......

SELECT 表達式 FROM 表


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

-Advertisement-
Play Games
更多相關文章
  • 無論是Window,MacOs,Linux均採用多用戶的管理模式進行許可權管理。 在Linux系統中,擁有最大許可權的賬戶名為:root(超級管理員)。 root用戶擁有最大的系統操作許可權,而普通用戶在許多地方的許可權是受限的。 普通用戶一般在HOME目錄是不受限制的,一旦出了HOME目錄,大多地方,僅有 ...
  • 主要內容 晶元介紹 開發環境 編程舉例 晶元介紹 什麼是NodeMCU? NodeMCU,是一個開源的物聯網平臺。 它使用Lua腳本語言編程。該平臺基於eLua 開源項目,底層使用ESP8266 sdk 0.9.5版本。該平臺使用了很多開源項目, 例如 lua-cjson, spiffs. Node ...
  • 鎖屏面試題百日百刷,每個工作日堅持更新面試題。鎖屏面試題app、小程式現已上線,官網地址:https://www.demosoftware.cn。已收錄了每日更新的面試題的所有內容,還包含特色的解鎖屏幕複習面試題、每日編程題目郵件推送等功能。讓你在面試中先人一步!接下來的是今日的面試題: 1.HBa ...
  • 一、MySQLl和Navicat的關係 Mysql一個關係型資料庫管理系統,由瑞典MysqlLAB公司開發,目前屬於Oracle旗下產品,是目前最流行的關心型資料庫管理系統之一。 Navicat一個資料庫管理工具,用可視化界面提供給用戶操作Mysql資料庫管理系統。 記得我第一次安裝Navicat之 ...
  • 我們知道 Flink 有Table(表)、View(視圖)、Function(函數/運算元)、Database(資料庫)的概念,相對於這些耳熟能詳的概念,Flink 里還有一個 Catalog(目錄) 的概念。 本文將為大家帶來 Flink Catalog 的介紹以及 Flink Catalog 在 ...
  • Hadoop簡介安裝 狹義上Hadoop指的是Apache軟體基金會的一款開源軟體用java語言實現,開源允許用戶使用簡單的編程模型實現跨機器集群對海量數據進行分散式計算處理 Hadoop核心組件 Hadoop HDFS(分散式文件存儲系統):解決海量數據存儲 Hadoop YARN(集群資源管理和 ...
  • 摘要:本文主要通過實例講解如何通過gs_cpuwatcher.sh 腳本尋找CPU占用高語句。 本文分享自華為雲社區《GaussDB(DWS) gs_cpuwatcher.sh 腳本如何尋找CPU占用高語句》,作者:fighttingman。 【工具名稱】 gs_cpuwatcher 【功能描述】 ...
  • 為什麼要分庫分表 用戶請求量太大 單伺服器TPS、記憶體、IO都是有上限的,需要將請求打散分佈到多個伺服器 。 單庫數據量太大 單個資料庫處理能力有限;單庫所在伺服器的磁碟空間有限;單庫上的操作IO有瓶頸 。 單表數據量太大 查詢、插入、更新操作都會變慢,在加欄位、加索引、機器遷移都會產生高負載,影響 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...