主頁 > 後端開發 > 【手把手從 MySQL 安裝到基礎 SQL 語法全講】

【手把手從 MySQL 安裝到基礎 SQL 語法全講】

2022-01-07 07:37:05 後端開發

2021-1-3 ~ 2021-1-6

本文比較長,這也是我第一次嘗試發長篇博客(24000余字),本文會從MySQL的安裝到SQL語言基礎,帶你入門資料庫,如果覺得對你有幫助的話,點個贊,點個關注吧,這將會給予我更多的動力,Thanks?(・ω・)ノ!!!

文章目錄

  • 2021-1-3 ~ 2021-1-6
  • 本文比較長,這也是我第一次嘗試發長篇博客(24000余字),本文會從MySQL的安裝到SQL語言基礎,帶你入門資料庫,如果覺得對你有幫助的話,點個贊,點個關注吧,這將會給予我更多的動力,Thanks?(・ω・)ノ!!!
  • 一、Java Web 簡介
    • Web:
    • Java Web :
    • 結構組成:
  • 二、資料庫:
    • MySQL
      • 下載安裝:
        • 1. 下載鏈接:
        • 2. 配環境變數
        • 3. 配置 MySQL 的組態檔
        • 4. 啟動下 MySQL 資料庫:
          • 1. 初始化MySQL
          • 2. 注冊MySQL服務
          • 3. 啟動MySQL服務
          • 4. 改密碼:
          • 5. 登錄 mysql
          • 6. 退出 mysql
        • 5. 卸載 MySQL 資料庫:(提桶跑路)
      • MySQL資料模型
        • 優點:
    • SQL :
      • SQL通用語法
      • SQL分類
        • 1. DDL (Data Definition Language)資料定義語言
          • DDL--查詢庫
          • DDL--操作表
            • 1. 查詢表
            • 2. 創建表
            • 3. 洗掉表
            • 4. 修改表
        • 2. DML (Data Manipulation Language)資料操作語言
          • 添加資料
          • 修改資料
          • 洗掉資料
        • 3. DQL (Data Query Language)資料查詢語言
          • 資料準備
          • 查詢語法
          • 查詢全部
          • 查詢部分
            • 多個欄位查詢
            • 去除重復查詢
            • 計算列的值(四則運算)
            • 起別名
          • 條件查詢
            • 條件分類
            • 條件查詢語法
          • 排序查詢
            • 排序分類
            • 排序語法
          • 聚合函式
            • 聚合函式分類
            • 聚合函式語法
          • 分組查詢
          • 分頁查詢
        • 4. DCL (Data Control Language)資料控制語言
          • MySQL 用戶設定
  • 以下內容將在后續更新,敬請期待!!!!
    • JDBC
    • Maven
    • MyBatis

一、Java Web 簡介

Web:

Web (World Wide Web) 即全球廣域網,也稱為萬維網,它是一種基于超文本和HTTP的、全球性的、動態互動的、跨平臺的分布式圖形資訊系統,是建立在Internet上的一種網路服務,為瀏覽者在Internet上查找和瀏覽資訊提供了圖形化的、易于訪問的直觀界面,其中的檔案及超級鏈接將Internet上的資訊節點組織成一個互為關聯的網狀結構,能夠通過瀏覽器訪問的網站,

web包括:web服務器和web客戶端兩部分,

Java Web :

是用Java技術來解決web互聯網領域的技術堆疊

結構組成:

  1. 網頁:展現資料
  2. 資料庫:存盤和管理資料
  3. Java web 程式:邏輯處理

二、資料庫:

  • 存盤資料的倉庫,資料是有組織的進行存盤,英文:DateBase(DB)
  • 資料管理系統:管理資料庫的大型軟體,英文:DateBase Management System( DBMS)
    • 資料庫: 資料庫是一些關聯表的集合,.
    • 資料表: 表是資料的矩陣,在一個資料庫中的表看起來像一個簡單的電子表格,
    • : 一列(資料元素) 包含了相同的資料, 例如郵政編碼的資料,
    • :一行(元組,或記錄)是一組相關的資料,例如一條用戶訂閱的資料,
    • 冗余:存盤兩倍資料,冗余可以使系統速度更快,
    • 主鍵:主鍵是唯一的,一個資料表中只能包含一個主鍵,你可以使用主鍵來查詢資料,
    • 外鍵:外鍵用于關聯兩個表,
    • 復合鍵:復合鍵(組合鍵)將多個列作為一個索引鍵,一般用于復合索引,
    • 索引:使用索引可快速訪問資料庫表中的特定資訊,索引是對資料庫表中一列或多列的值 進行排序的一種結構,類似于書籍的目錄,
    • 參照完整性: 參照的完整性要求關系中不允許參考不存在的物體,與物體完整性是關系模型必須滿足的完整性約束條件,目的是保證資料的一致性,
  • SQL: (Structured Query Language)結構化查詢語言,操作關系型資料庫的編程語言,定義操作所有關系型資料庫的統一標準
    在這里插入圖片描述

MySQL

MySQL是一個關系型資料庫管理系統,由瑞典MySQL AB 公司開發,目前屬于 Oracle 旗下產品,MySQL 最流行的關系型資料庫管理系統,在 WEB 應用方面MySQL是最好的 RDBMS (Relational Database Management System,關系資料庫管理系統) 應用軟體之一,MySQL是一種關聯資料庫管理系統,關聯資料庫將資料保存在不同的表中,而不是將所有資料放在一個大倉庫內,這樣就增加了速度并提高了靈活性,MySQL所使用的 SQL 語言是用于訪問資料庫的最常用標準化語言,

下載安裝:

1. 下載鏈接:

MySQL官方鏈接https://downloads.mysql.com/archives/community/

2. 配環境變數

高級系統設定中的環境變數,設定path路徑
在這里插入圖片描述

3. 配置 MySQL 的組態檔

打開剛剛解壓的檔案夾 D:\MySQL\mysql-5.7.24-winx64 ,在該檔案夾下創建 my.ini 組態檔,編輯 my.ini 配置以下基本資訊:

[mysql]
# 設定mysql客戶端默認字符集
default-character-set=utf8
[mysqld]
# 設定3306埠
port = 3306
# 設定mysql的安裝目錄
basedir=D:\\MySQL\\mysql-5.7.24-winx64  
# 設定mysql資料庫的資料的存放目錄
datadir= D:\\MySQL\\mysql-5.7.24-winx64\data
# 允許最大連接數
max_connections=20
# 服務端使用的字符集默認為8位元編碼的latin1字符集
character-set-server=utf8
# 創建新表時將使用的默認存盤引擎
default-storage-engine=INNODB
# 跳過登錄密碼驗證
skip-grant-tables

4. 啟動下 MySQL 資料庫:

以管理員的身份打開cmd
在這里插入圖片描述

1. 初始化MySQL

在命令列輸入如下命令:

mysqld --initialize-insecure

結果顯示:
在這里插入圖片描述
命令列里沒有輸出

注意:

如果顯示:由于找不到MSVCR120.dll,無法繼續執行代碼,重新安裝程式可能會解決此問題,

解決辦法:這是因為沒有安裝如下軟體導致的,點擊如下鏈接,下載vcredist.
https://www.microsoft.com/zh-CN/download/details.aspx?id=40784
無腦安裝就好了

2. 注冊MySQL服務

在命令列輸入如下命令:

mysqld -install

結果顯示:
在這里插入圖片描述
現在你的計算機上已經安裝好了MySQL服務,計算機可以稱其為:MySQL服務器

3. 啟動MySQL服務

在命令列輸入如下命令:

net start mysql//啟動服務
net stop mysql //停止服務

結果顯示:
在這里插入圖片描述

4. 改密碼:

在命令列輸入如下命令:

mysqladmin -u root password 1234

結果顯示:
在這里插入圖片描述

mysqladmin: [警告] 在命令列界面上使用密碼可能不安全,
警告:由于密碼將以明文形式發送到服務器,請使用 ssl 連接以確保密碼安全,
mysql管理員:
您不能在 mysqld 運行時使用“密碼”命令
  禁用授權表(以 --skip-grant-tables 開始),
使用:“mysqladmin flush-privileges password '*'”代替
5. 登錄 mysql

在命令列輸入如下命令:

mysql -uroot -p

結果顯示:

在這里插入圖片描述

6. 退出 mysql

在命令列輸入如下命令:

exit

在這里插入圖片描述

5. 卸載 MySQL 資料庫:(提桶跑路)

1.敲入net stop mysql,回車
2.敲入mysqld -remove mysql,回車
3.洗掉MySQL目錄以及相關配置的環境變數,

MySQL資料模型

關系型資料庫:是建立在關系結構基礎上的資料庫,簡單來說,關系型資料庫是由多張能相互連接的二維表組成的資料庫

優點:

  1. 都是使用表結構,格式一致,便于維護,
  2. 使用通用的SQL語言操作,使用方便,可用于復雜查詢
  3. 資料存盤在磁盤中,安全,

在這里插入圖片描述
資料庫就是檔案夾,資料表是檔案

SQL :

  • 什么是SQL

    • Structured Query Language:結構化查詢語言
    • 其實就是定義了操作所有關系型資料庫的規則,每一種資料庫操作的方式可能會存在一些不一樣的地方,我們稱為“方言”,
  • SQL分類

    • DDL(Data Definition Language)資料定義語言
      • 用來定義資料庫物件:資料庫,表,列等,關鍵字:create, drop,alter 等
    • DML(Data Manipulation Language)資料操作語言
      • 用來對資料庫中表的資料進行增刪改,關鍵字:insert, delete, update 等
    • DQL(Data Query Language)資料查詢語言
      • 用來查詢資料庫中表的記錄(資料),關鍵字:select, where 等
    • DCL(Data Control Language)資料控制語言(了解)
      • 用來定義資料庫的訪問權限和安全級別,及創建用戶,關鍵字:GRANT, REVOKE 等
  1. 英文: Structured Query Language,簡稱SQL
  2. 結構化查詢語言,一門操作關系型資料庫的編程語言
  3. 定義操作所有關系型資料庫的統一標準
  4. 對于同一個需求,每一種資料庫操作的方式可能會有所不同,

SQL通用語法

  1. 單行或多行書寫,以分號結尾;
  2. MySQL資料庫的SQL陳述句不區分大小寫,關鍵字建議使用大寫
  3. 注釋:單行注釋:-- 注釋內容#注釋內容;多行注釋:/* 注釋內容 */
mysql> show databases;-- 資料結束
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> show databases;#資料結束
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> show databases;/*資料結束
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

   /*> asjjfha
   /*> hasjh
   /*> */

SQL分類

  • DDL (Data Definition Language)資料定義語言,用來定義資料庫物件:資料庫,表,列;
  • DML (Data Manipulation Language)資料操作語言,用來對資料庫中表的資料進行增刪改;
  • DQL (Data Query Language)資料查詢語言,用來查詢資料庫中表的記錄(資料);
  • DCL (Data Control Language)資料控制語言,用來定義資料庫的訪問權限和安全級別,及創建用戶,

在這里插入圖片描述

1. DDL (Data Definition Language)資料定義語言

DDL–查詢庫

1.查詢
在命令列輸入如下命令:

show databases;

2.創建
創建資料庫

create database 資料庫名稱;

創建資料庫(判斷,如果不存在則創建)

create database if not exists 資料庫名稱;

3.洗掉
洗掉資料庫:

drop database 資料庫名稱;

洗掉資料庫(判斷,如果存在則洗掉)

drop database if exists 資料庫名稱;

4.使用資料庫
查看當前使用的資料庫:

select database();

使用資料庫:

use 資料庫名稱;
DDL–操作表
1. 查詢表

查詢當前資料庫下所有表的名稱

show tables;

查詢表結構

desc 表名稱;
2. 創建表
create table 表名(
	欄位名1 資料型別1,
	欄位名2 資料型別2,
	...
	欄位名n 資料型別n
);

注意:最后一行末尾不加逗號,

樣例展示:

mysql> create database db1
    -> ;
Query OK, 1 row affected (0.00 sec)

mysql> use db1
Database changed
mysql>
mysql>
mysql> create table tb_user(
    -> id int,
    -> username varchar(20),
    -> password varchar(32)
    -> );
Query OK, 0 rows affected (0.04 sec)

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| tb_user       |
+---------------+
1 row in set (0.00 sec)

mysql> desc tb_user
    -> ;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| username | varchar(20) | YES  |     | NULL    |       |
| password | varchar(32) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

mysql>

資料型別:數值,日期,字串
在這里插入圖片描述

3. 洗掉表

洗掉表:

drop table 表名稱;

洗掉表(判斷,如果存在則洗掉)

drop table if exists 表名稱;

測驗樣例輸出:

mysql> show databases
    -> ;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db1                |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

mysql> use db1; -- 使用資料庫
Database changed
mysql> select database(); -- 查看當前使用的資料庫
+------------+
| database() |
+------------+
| db1        |
+------------+
1 row in set (0.00 sec)

mysql> show tables;-- 查詢當前資料庫下所有表的名稱
+---------------+
| Tables_in_db1 |
+---------------+
| tb_user       |
+---------------+
1 row in set (0.00 sec)

mysql> desc tb_user;-- 查詢表結構
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| username | varchar(20) | YES  |     | NULL    |       |
| password | varchar(32) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

mysql> drop tb_user;-- 洗掉表
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'tb_user' at line 1
mysql> drop table tb_user;
Query OK, 0 rows affected (0.03 sec)

mysql> show tables;
Empty set (0.00 sec)

4. 修改表

1.修改表名

alter table 表名 rename to 新的表名;

測驗樣例:

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| hello         |
+---------------+
1 row in set (0.01 sec)

mysql> desc hello;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| username | varchar(20) | YES  |     | NULL    |       |
| pass     | int(11)     | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

mysql> alter table hello rename to user;\
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| user          |
+---------------+
1 row in set (0.00 sec)

2.添加一列:

alter table 表名 add 列名 資料型別;

測驗樣例:

mysql> alter table user add sex int;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc user;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| username | varchar(20) | YES  |     | NULL    |       |
| pass     | int(11)     | YES  |     | NULL    |       |
| sex      | int(11)     | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)

3.修改資料型別:

alter table 表名 modify 列名 新資料型別;

測驗樣例:

mysql> alter table user modify sex varchar(10);
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc user;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| username | varchar(20) | YES  |     | NULL    |       |
| pass     | int(11)     | YES  |     | NULL    |       |
| sex      | varchar(10) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

4.修改列名和資料型別

alter table 表名 change 列名 新列名 新資料型別;

測驗樣例:

mysql> desc hello;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| username | varchar(20) | YES  |     | NULL    |       |
| password | varchar(32) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> alter table hello change password pass int;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc hello;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| username | varchar(20) | YES  |     | NULL    |       |
| pass     | int(11)     | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

5.修改字符集

-- 標準語法
alter table 表名 character set 字符集名稱;

-- 查看資料庫中資料表字符集
show table status from 資料庫名 like '資料表名';

6.洗掉列

 alter table 表名 drop 列名;

測驗樣例:

mysql> alter table hello drop sex;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc hello;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| username | varchar(20) | YES  |     | NULL    |       |
| password | varchar(32) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

2. DML (Data Manipulation Language)資料操作語言

添加資料

新增格式1:給指定列添加資料

-- 標準語法
INSERT INTO 表名(列名1,列名2,...) VALUES (1,2,...);

-- 查看表中所有資料
SELECT * FROM 表名;

測驗樣例:

mysql> insert into user(id,username) values(1,'zhangsan');
Query OK, 1 row affected (0.01 sec)

mysql> select * from user;
+------+----------+------+------+
| id   | username | pass | sex  |
+------+----------+------+------+
|    1 | zhangsan | NULL | NULL |
+------+----------+------+------+
1 row in set (0.01 sec)

新增格式2:默認給全部列添加資料

-- 標準語法
INSERT INTO 表名 VALUES (1,2,3,...);

-- 查看表中所有資料
SELECT * FROM 表名;

測驗樣例:

mysql> insert into user values(4,'xiaoyan',6666,'female');
Query OK, 1 row affected (0.01 sec)

mysql> select * from user;
+------+----------+------+--------+
| id   | username | pass | sex    |
+------+----------+------+--------+
|    1 | zhangsan | NULL | NULL   |
|    2 | lisi     | 1234 | male   |
|    3 | wangwu   | 1234 | female |
|    4 | xiaoyan  | 6666 | female |
+------+----------+------+--------+
4 rows in set (0.00 sec)

新增格式3:批量添加資料

-- 默認添加所有列資料 標準語法
INSERT INTO 表名 VALUES (1,2,3,...),(1,2,3,...),(1,2,3,...);
-- 查看表中所有資料
SELECT * FROM 表名;


-- 給指定列添加資料 標準語法
INSERT INTO 表名(列名1,列名2,...) VALUES (1,2,...),(1,2,...),(1,2,...);
-- 查看表中所有資料
SELECT * FROM 表名;

測驗樣例:

mysql> insert into user(id,username,pass,sex) values(2,'lisi',1234,'male'),(3,'wangwu',1234,'female');
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from user;
+------+----------+------+--------+
| id   | username | pass | sex    |
+------+----------+------+--------+
|    1 | zhangsan | NULL | NULL   |
|    2 | lisi     | 1234 | male   |
|    3 | wangwu   | 1234 | female |
+------+----------+------+--------+
3 rows in set (0.00 sec)

mysql> insert into user values(4,'xiaoyan',6666,'female'),(4,'xiaoyan',6666,'female'),(4,'xiaoyan',6666,'female');
Query OK, 3 rows affected (0.04 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from user;
+------+----------+------+--------+
| id   | username | pass | sex    |
+------+----------+------+--------+
|    1 | zhangsan | NULL | NULL   |
|    2 | lisi     | 1234 | male   |
|    3 | wangwu   | 1234 | female |
|    4 | xiaoyan  | 6666 | female |
|    4 | xiaoyan  | 6666 | female |
|    4 | xiaoyan  | 6666 | female |
|    4 | xiaoyan  | 6666 | female |
+------+----------+------+--------+
7 rows in set (0.00 sec)
  • 注意事項

    • 列名和值的數量以及資料型別要對應
    • 除了數字型別,其他資料型別的資料都需要加引號(單引雙引都可以,推薦單引)
修改資料
-- 標準語法
UPDATE 表名 SET 列名1 =1,列名2 =2,... [where 條件];

-- 查看所有資料
SELECT * FROM 表名;

測驗樣例:

mysql> update user set id=6,pass=8888 where username='xiaoyan';
Query OK, 4 rows affected (0.02 sec)
Rows matched: 4  Changed: 4  Warnings: 0

mysql> select * from user;
+------+----------+------+--------+
| id   | username | pass | sex    |
+------+----------+------+--------+
|    1 | zhangsan | NULL | NULL   |
|    2 | lisi     | 1234 | male   |
|    3 | wangwu   | 1234 | female |
|    6 | xiaoyan  | 8888 | female |
|    6 | xiaoyan  | 8888 | female |
|    6 | xiaoyan  | 8888 | female |
|    6 | xiaoyan  | 8888 | female |
+------+----------+------+--------+
7 rows in set (0.00 sec)
  • 注意事項
    • 修改陳述句中必須加條件
    • 如果不加條件,則將所有資料都修改
洗掉資料
-- 標準語法
DELETE FROM 表名 [WHERE 條件];

-- 查看所有商品資訊
SELECT * FROM product;

測驗樣例:

mysql> delete from user where id = 6;
Query OK, 4 rows affected (0.00 sec)

mysql> select * from user;
+------+----------+------+--------+
| id   | username | pass | sex    |
+------+----------+------+--------+
|    1 | zhangsan | NULL | NULL   |
|    2 | lisi     | 1234 | male   |
|    3 | wangwu   | 1234 | female |
+------+----------+------+--------+
3 rows in set (0.00 sec)

mysql> delete from user;
Query OK, 3 rows affected (0.00 sec)

mysql> select * from user;
Empty set (0.00 sec)
  • 注意事項
    • 洗掉陳述句中必須加條件
    • 如果不加條件,則將所有資料洗掉

3. DQL (Data Query Language)資料查詢語言

資料準備
-- 創建db1資料庫
CREATE DATABASE db1;

-- 使用db1資料庫
USE db1;

-- 創建資料表
CREATE TABLE product(
	id INT,				-- 商品編號
	NAME VARCHAR(20),	-- 商品名稱
	price DOUBLE,		-- 商品價格
	brand VARCHAR(10),	-- 商品品牌
	stock INT,			-- 商品庫存
	insert_time DATE    -- 添加時間
);

-- 添加資料
INSERT INTO product VALUES (1,'華為手機',3999,'華為',23,'2088-03-10'),
(2,'小米手機',2999,'小米',30,'2088-05-15'),
(3,'蘋果手機',5999,'蘋果',18,'2088-08-20'),
(4,'華為電腦',6999,'華為',14,'2088-06-16'),
(5,'小米電腦',4999,'小米',26,'2088-07-08'),
(6,'蘋果電腦',8999,'蘋果',15,'2088-10-25'),
(7,'聯想電腦',7999,'聯想',NULL,'2088-11-11');

測驗輸出:

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| product       |
+---------------+
1 row in set (0.00 sec)

mysql> select * from product;
+------+--------------+-------+--------+-------+-------------+
| id   | NAME         | price | brand  | stock | insert_time |
+------+--------------+-------+--------+-------+-------------+
|    1 | 華為手機     |  3999 | 華為   |    23 | 2088-03-10  |
|    2 | 小米手機     |  2999 | 小米   |    30 | 2088-05-15  |
|    3 | 蘋果手機     |  5999 | 蘋果   |    18 | 2088-08-20  |
|    4 | 華為電腦     |  6999 | 華為   |    14 | 2088-06-16  |
|    5 | 小米電腦     |  4999 | 小米   |    26 | 2088-07-08  |
|    6 | 蘋果電腦     |  8999 | 蘋果   |    15 | 2088-10-25  |
|    7 | 聯想電腦     |  7999 | 聯想   |  NULL | 2088-11-11  |
+------+--------------+-------+--------+-------+-------------+
7 rows in set (0.00 sec)
查詢語法
select
	欄位串列
from
	表名串列
where
	條件串列
group by
	分組欄位
having
	分組之后的條件
order by
	排序
limit
	分頁限定
查詢全部
-- 標準語法
SELECT * FROM 表名;

-- 查詢product表所有資料
-- 查詢所以列的資料,列名的串列可以使用*代替
SELECT * FROM product;
查詢部分
多個欄位查詢
-- 標準語法
SELECT 列名1,列名2,... FROM 表名;

-- 查詢名稱、價格、品牌
SELECT NAME,price,brand FROM product;

測驗樣例:

mysql> select NAME,price,brand from product;
+--------------+-------+--------+
| NAME         | price | brand  |
+--------------+-------+--------+
| 華為手機     |  3999 | 華為   |
| 小米手機     |  2999 | 小米   |
| 蘋果手機     |  5999 | 蘋果   |
| 華為電腦     |  6999 | 華為   |
| 小米電腦     |  4999 | 小米   |
| 蘋果電腦     |  8999 | 蘋果   |
| 聯想電腦     |  7999 | 聯想   |
+--------------+-------+--------+
7 rows in set (0.00 sec)
去除重復查詢
  • 注意:只有全部重復的才可以去除
-- 標準語法
SELECT DISTINCT 列名1,列名2,... FROM 表名;

-- 查詢品牌
SELECT brand FROM product;
-- 查詢品牌,去除重復
SELECT DISTINCT brand FROM product;

測驗樣例:

mysql> select brand from product;
+--------+
| brand  |
+--------+
| 華為   |
| 小米   |
| 蘋果   |
| 華為   |
| 小米   |
| 蘋果   |
| 聯想   |
+--------+
7 rows in set (0.00 sec)

mysql> select distinct brand from product;
+--------+
| brand  |
+--------+
| 華為   |
| 小米   |
| 蘋果   |
| 聯想   |
+--------+
4 rows in set (0.00 sec)
計算列的值(四則運算)
-- 標準語法
SELECT 列名1 運算子(+ - * /) 列名2 FROM 表名;

/*
	計算列的值
	標準語法:
		SELECT 列名1 運算子(+ - * /) 列名2 FROM 表名;
		
	如果某一列為null,可以進行替換
	ifnull(運算式1,運算式2)
	運算式1:想替換的列
	運算式2:想替換的值
*/
-- 查詢商品名稱和庫存,庫存數量在原有基礎上加10
SELECT NAME,stock+10 FROM product;

-- 查詢商品名稱和庫存,庫存數量在原有基礎上加10,進行null值判斷
SELECT NAME,IFNULL(stock,0)+10 FROM product;
起別名
-- 標準語法
SELECT 列名1,列名2,... AS 別名 FROM 表名;

-- 查詢商品名稱和庫存,庫存數量在原有基礎上加10,進行null值判斷,起別名為getSum
SELECT NAME,IFNULL(stock,0)+10 AS getsum FROM product;
SELECT NAME,IFNULL(stock,0)+10 getsum FROM product;

測驗樣例:

mysql> select NAME,stock from product;
+--------------+-------+
| NAME         | stock |
+--------------+-------+
| 華為手機     |    23 |
| 小米手機     |    30 |
| 蘋果手機     |    18 |
| 華為電腦     |    14 |
| 小米電腦     |    26 |
| 蘋果電腦     |    15 |
| 聯想電腦     |  NULL |
+--------------+-------+
7 rows in set (0.00 sec)

mysql> SELECT NAME,stock+10 FROM product;
+--------------+----------+
| NAME         | stock+10 |
+--------------+----------+
| 華為手機     |       33 |
| 小米手機     |       40 |
| 蘋果手機     |       28 |
| 華為電腦     |       24 |
| 小米電腦     |       36 |
| 蘋果電腦     |       25 |
| 聯想電腦     |     NULL |
+--------------+----------+
7 rows in set (0.00 sec)

mysql> select NAME,IFNULL(stock,0)+10 getsum from product;
+--------------+--------+
| NAME         | getsum |
+--------------+--------+
| 華為手機     |     33 |
| 小米手機     |     40 |
| 蘋果手機     |     28 |
| 華為電腦     |     24 |
| 小米電腦     |     36 |
| 蘋果電腦     |     25 |
| 聯想電腦     |     10 |
+--------------+--------+
7 rows in set (0.01 sec)
條件查詢
條件分類
符號功能
>大于
<小于
>=大于等于
<=小于等于
=等于 ‘==’是錯的
<> 或 !=不等于
BETWEEN … AND …在某個范圍之內(都包含)
IN(…)多選一
LIKE 占位符模糊查詢 _單個任意字符 %多個任意字符
IS NULL是NULL
IS NOT NULL不是NULL
AND 或 &&并且
OR 或 ||或者
NOT 或 !非,不是
條件查詢語法
-- 標準語法
SELECT 列名 FROM 表名 WHERE 條件;

-- 查詢庫存大于20的商品資訊
SELECT * FROM product WHERE stock > 20;

-- 查詢品牌為華為的商品資訊
SELECT * FROM product WHERE brand='華為';

-- 查詢金額在4000 ~ 6000之間的商品資訊
SELECT * FROM product WHERE price >= 4000 AND price <= 6000;
SELECT * FROM product WHERE price BETWEEN 4000 AND 6000;

-- 查詢庫存為14、30、23的商品資訊
SELECT * FROM product WHERE stock=14 OR stock=30 OR stock=23;
SELECT * FROM product WHERE stock IN(14,30,23);

-- 查詢庫存為null的商品資訊
SELECT * FROM product WHERE stock IS NULL;
-- 查詢庫存不為null的商品資訊
SELECT * FROM product WHERE stock IS NOT NULL;

-- 查詢名稱以小米為開頭的商品資訊
SELECT * FROM product WHERE NAME LIKE '小米%';

-- 查詢名稱第二個字是為的商品資訊
SELECT * FROM product WHERE NAME LIKE '_為%';

-- 查詢名稱為四個字符的商品資訊
SELECT * FROM product WHERE NAME LIKE '____';

-- 查詢名稱中包含電腦的商品資訊
SELECT * FROM product WHERE NAME LIKE '%電腦%';

測驗函式:

mysql> SELECT * FROM product WHERE NAME LIKE '_為%';
+------+--------------+-------+--------+-------+-------------+
| id   | NAME         | price | brand  | stock | insert_time |
+------+--------------+-------+--------+-------+-------------+
|    1 | 華為手機     |  3999 | 華為   |    23 | 2088-03-10  |
|    4 | 華為電腦     |  6999 | 華為   |    14 | 2088-06-16  |
+------+--------------+-------+--------+-------+-------------+
2 rows in set (0.01 sec)

mysql> SELECT * FROM product WHERE NAME LIKE '%電腦%';
+------+--------------+-------+--------+-------+-------------+
| id   | NAME         | price | brand  | stock | insert_time |
+------+--------------+-------+--------+-------+-------------+
|    4 | 華為電腦     |  6999 | 華為   |    14 | 2088-06-16  |
|    5 | 小米電腦     |  4999 | 小米   |    26 | 2088-07-08  |
|    6 | 蘋果電腦     |  8999 | 蘋果   |    15 | 2088-10-25  |
|    7 | 聯想電腦     |  7999 | 聯想   |  NULL | 2088-11-11  |
+------+--------------+-------+--------+-------+-------------+
4 rows in set (0.00 sec)
排序查詢
排序分類
  • 注意:多個排序條件,當前邊的條件值一樣時,才會判斷第二條件
關鍵詞功能
ORDER BY 列名1 排序方式1,列名2 排序方式2對指定列排序,ASC升序(默認的) DESC降序
排序語法
-- 標準語法
SELECT 列名 FROM 表名 [WHERE 條件] ORDER BY 列名1 排序方式1,列名2 排序方式2;

-- 按照庫存升序排序,默認升序
SELECT * FROM product ORDER BY stock ASC;

-- 查詢名稱中包含手機的商品資訊,按照金額降序排序
SELECT * FROM product WHERE NAME LIKE '%手機%' ORDER BY price DESC;

-- 按照金額升序排序,如果金額相同,按照庫存降序排列
SELECT * FROM product ORDER BY price ASC,stock DESC;

測驗樣例:

mysql> select * from product order by insert_time asc;
+------+--------------+-------+--------+-------+-------------+
| id   | NAME         | price | brand  | stock | insert_time |
+------+--------------+-------+--------+-------+-------------+
|    1 | 華為手機     |  3999 | 華為   |    23 | 2088-03-10  |
|    2 | 小米手機     |  2999 | 小米   |    30 | 2088-05-15  |
|    4 | 華為電腦     |  6999 | 華為   |    14 | 2088-06-16  |
|    5 | 小米電腦     |  4999 | 小米   |    26 | 2088-07-08  |
|    3 | 蘋果手機     |  5999 | 蘋果   |    18 | 2088-08-20  |
|    6 | 蘋果電腦     |  8999 | 蘋果   |    15 | 2088-10-25  |
|    7 | 聯想電腦     |  7999 | 聯想   |  NULL | 2088-11-11  |
+------+--------------+-------+--------+-------+-------------+
7 rows in set (0.00 sec)

mysql> SELECT * FROM product WHERE NAME LIKE '%手機%' ORDER BY price DESC;
+------+--------------+-------+--------+-------+-------------+
| id   | NAME         | price | brand  | stock | insert_time |
+------+--------------+-------+--------+-------+-------------+
|    3 | 蘋果手機     |  5999 | 蘋果   |    18 | 2088-08-20  |
|    1 | 華為手機     |  3999 | 華為   |    23 | 2088-03-10  |
|    2 | 小米手機     |  2999 | 小米   |    30 | 2088-05-15  |
+------+--------------+-------+--------+-------+-------------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM product ORDER BY price ASC,stock DESC;
+------+--------------+-------+--------+-------+-------------+
| id   | NAME         | price | brand  | stock | insert_time |
+------+--------------+-------+--------+-------+-------------+
|    2 | 小米手機     |  2999 | 小米   |    30 | 2088-05-15  |
|    1 | 華為手機     |  3999 | 華為   |    23 | 2088-03-10  |
|    5 | 小米電腦     |  4999 | 小米   |    26 | 2088-07-08  |
|    3 | 蘋果手機     |  5999 | 蘋果   |    18 | 2088-08-20  |
|    4 | 華為電腦     |  6999 | 華為   |    14 | 2088-06-16  |
|    7 | 聯想電腦     |  7999 | 聯想   |  NULL | 2088-11-11  |
|    6 | 蘋果電腦     |  8999 | 蘋果   |    15 | 2088-10-25  |
+------+--------------+-------+--------+-------+-------------+
7 rows in set (0.00 sec)
聚合函式
  • 將一列資料作為一個整體,進行縱向的計算,null值不參與運算
聚合函式分類
函式名功能
count(列名)統計數量(一般選用不為null的列)
max(列名)最大值
min(列名)最小值
sum(列名)求和
avg(列名)平均值
聚合函式語法
-- 標準語法
SELECT 函式名(列名) FROM 表名 [WHERE 條件];

-- 計算product表中總記錄條數
SELECT COUNT(*) FROM product;

-- 獲取最高價格
SELECT MAX(price) FROM product;
-- 獲取最高價格的商品名稱
SELECT NAME,price FROM product WHERE price = (SELECT MAX(price) FROM product);

-- 獲取最低庫存
SELECT MIN(stock) FROM product;
-- 獲取最低庫存的商品名稱
SELECT NAME,stock FROM product WHERE stock = (SELECT MIN(stock) FROM product);

-- 獲取總庫存數量
SELECT SUM(stock) FROM product;
-- 獲取品牌為蘋果的總庫存數量
SELECT SUM(stock) FROM product WHERE brand='蘋果';

-- 獲取品牌為小米的平均商品價格
SELECT AVG(price) FROM product WHERE brand='小米';
分組查詢
  • 分組之后,查詢的欄位為聚合函式和分組欄位,查詢其他欄位毫無意義,
  • where 和 having 的區別:
    • 執行時機不一致:where 是分組前經行限定,不滿足 where 條件,則不參與分組,而 having 是分組之后對結果進行過濾,
    • 可判斷的條件不一樣:where 不能對聚合函式進行判斷, having 可以,
  • 執行順序:
    • where > 聚合函式 > having
-- 標準語法
SELECT 列名 FROM 表名 [WHERE 條件] GROUP BY 分組列名 [HAVING 分組后條件過濾] [ORDER BY 排序列名 排序方式];

-- 按照品牌分組,獲取每組商品的總金額
SELECT brand,SUM(price) FROM product GROUP BY brand;

-- 對金額大于4000元的商品,按照品牌分組,獲取每組商品的總金額
SELECT brand,SUM(price) FROM product WHERE price > 4000 GROUP BY brand;

-- 對金額大于4000元的商品,按照品牌分組,獲取每組商品的總金額,只顯示總金額大于7000元的
SELECT brand,SUM(price) AS getSum FROM product WHERE price > 4000 GROUP BY brand HAVING getSum > 7000;

-- 對金額大于4000元的商品,按照品牌分組,獲取每組商品的總金額,只顯示總金額大于7000元的、并按照總金額的降序排列
SELECT brand,SUM(price) AS getSum FROM product WHERE price > 4000 GROUP BY brand HAVING getSum > 7000 ORDER BY getSum DESC;

測驗樣例:

mysql> select brand,SUM(price) from product group by brand;
+--------+------------+
| brand  | SUM(price) |
+--------+------------+
| 華為   |      10998 |
| 小米   |       7998 |
| 聯想   |       7999 |
| 蘋果   |      14998 |
+--------+------------+
4 rows in set (0.01 sec)

mysql> select brand,sum(price) from product where price>4000 group by brand;
+--------+------------+
| brand  | sum(price) |
+--------+------------+
| 華為   |       6999 |
| 小米   |       4999 |
| 聯想   |       7999 |
| 蘋果   |      14998 |
+--------+------------+
4 rows in set (0.01 sec)

mysql> select brand,sum(price) as getsum from product where price>4000 group by brand having getsum>7000;
+--------+--------+
| brand  | getsum |
+--------+--------+
| 聯想   |   7999 |
| 蘋果   |  14998 |
+--------+--------+
2 rows in set (0.00 sec)

mysql> select brand,sum(price) as getsum from product where price>4000 group by brand having getsum>7000 order by getsum desc;
+--------+--------+
| brand  | getsum |
+--------+--------+
| 蘋果   |  14998 |
| 聯想   |   7999 |
+--------+--------+
2 rows in set (0.00 sec)
分頁查詢

開始索引從 0 開始,計算公式:起始索引=(當前頁碼-1)*每頁條數

-- 標準語法
SELECT 列名 FROM 表名 [WHERE 條件] GROUP BY 分組列名 [HAVING 分組后條件過濾] [ORDER BY 排序列名 排序方式] LIMIT 開始索引,查詢條數;
-- 公式:開始索引 = (當前頁碼-1) * 每頁顯示的條數

-- 每頁顯示2條資料
SELECT * FROM product LIMIT 0,2;  -- 第一頁 開始索引=(1-1) * 2
SELECT * FROM product LIMIT 2,2;  -- 第二頁 開始索引=(2-1) * 2
SELECT * FROM product LIMIT 4,2;  -- 第三頁 開始索引=(3-1) * 2
SELECT * FROM product LIMIT 6,2;  -- 第四頁 開始索引=(4-1) * 2

測驗樣例:

mysql> SELECT * FROM product LIMIT 0,3;
+------+--------------+-------+--------+-------+-------------+
| id   | NAME         | price | brand  | stock | insert_time |
+------+--------------+-------+--------+-------+-------------+
|    1 | 華為手機     |  3999 | 華為   |    23 | 2088-03-10  |
|    2 | 小米手機     |  2999 | 小米   |    30 | 2088-05-15  |
|    3 | 蘋果手機     |  5999 | 蘋果   |    18 | 2088-08-20  |
+------+--------------+-------+--------+-------+-------------+
3 rows in set (0.00 sec)

mysql> select * from product limit 3,3;
+------+--------------+-------+--------+-------+-------------+
| id   | NAME         | price | brand  | stock | insert_time |
+------+--------------+-------+--------+-------+-------------+
|    4 | 華為電腦     |  6999 | 華為   |    14 | 2088-06-16  |
|    5 | 小米電腦     |  4999 | 小米   |    26 | 2088-07-08  |
|    6 | 蘋果電腦     |  8999 | 蘋果   |    15 | 2088-10-25  |
+------+--------------+-------+--------+-------+-------------+
3 rows in set (0.00 sec)

4. DCL (Data Control Language)資料控制語言

DCL學習

MySQL 用戶設定

如果你需要添加 MySQL 用戶,你只需要在 mysql 資料庫中的 user 表添加新用戶即可,

以下為添加用戶的的實體,用戶名為guest,密碼為guest123,并授權用戶可進行 SELECT, INSERT 和 UPDATE操作權限:

mysql> use mysql;
Database changed

mysql> INSERT INTO user 
          (host, user, password, 
           select_priv, insert_priv, update_priv) 
           VALUES ('localhost', 'guest', 
           PASSWORD('guest123'), 'Y', 'Y', 'Y');
Query OK, 1 row affected (0.20 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 1 row affected (0.01 sec)

mysql> SELECT host, user, password FROM user WHERE user = 'guest';
+-----------+---------+------------------+
| host      | user    | password         |
+-----------+---------+------------------+
| localhost | guest   | 6f8c114b58f2ce9e |
+-----------+---------+------------------+
1 row in set (0.00 sec)

在添加用戶時,請注意使用MySQL提供的 PASSWORD() 函式來對密碼進行加密, 你可以在以上實體看到用戶密碼加密后為: 6f8c114b58f2ce9e.

注意:在 MySQL5.7 中 user 表的 password 已換成了authentication_string

注意:password() 加密函式已經在 8.0.11 中移除了,可以使用 MD5() 函式代替,

注意:在注意需要執行 FLUSH PRIVILEGES 陳述句, 這個命令執行后會重新載入授權表,

如果你不使用該命令,你就無法使用新創建的用戶來連接mysql服務器,除非你重啟mysql服務器,

你可以在創建用戶時,為用戶指定權限,在對應的權限列中,在插入陳述句中設定為 ‘Y’ 即可,用戶權限串列如下:

Select_priv
Insert_priv
Update_priv
Delete_priv
Create_priv
Drop_priv
Reload_priv
Shutdown_priv
Process_priv
File_priv
Grant_priv
References_priv
Index_priv
Alter_priv

另外一種添加用戶的方法為通過SQL的 GRANT 命令,以下命令會給指定資料庫TUTORIALS添加用戶 zara ,密碼為 zara123 :

mysql> use mysql;
Database changed

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
    -> ON TUTORIALS.*
    -> TO 'zara'@'localhost'
    -> IDENTIFIED BY 'zara123';

以上命令會在mysql資料庫中的user表創建一條用戶資訊記錄,

注意: MySQL 的SQL陳述句以分號 ; 作為結束標識,


以下內容將在后續更新,敬請期待!!!!

JDBC

JDBC API 是一個 Java API,它可以訪問任何型別的表格資料,特別是可以訪問存盤在關系資料庫里的資料,JDBC 可以用 Java 語言在各種平臺上實作,

Maven

Apache Maven 是一套軟體工程管理和整合工具,基于專案物件模型(POM)的概念,通過一個中央資訊管理模塊,Maven 能夠管理專案的構建、報告和檔案,

MyBatis

MyBatis 是支持定制化 SQL、存盤程序以及高級映射的優秀的持久層框架,MyBatis 避免了幾乎所有的 JDBC 代碼和手動設定引數以及獲取結果集,MyBatis 可以對配置和原生Map使用簡單的 XML 或注解,將介面和 Java 的 POJOs(Plain Old Java Objects,普通的 Java物件)映射成資料庫中的記錄,


轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/404347.html

標籤:java

上一篇:【Java】資料結構——Map和Collection介面說明

下一篇:【藍橋真題2】藍橋杯不會全排列,那就只能寫10個for回圈了【內附近8年真題資源】

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more