有關Mysql數據庫的總結

  • MySQL

    • 概念

      • MySQL的理論知識

        • 概念

          • 數據庫就是用來存儲和管理數據的倉庫!

        • 數據庫分類

          • 層次型數據庫

            • 樹型結構,一個子記錄可以有一個父記錄,一個父記錄可以有多個子記錄,類似一個二叉樹,但是一個父節點可以不止兩個子節點,可以有多個子節點

          • 網狀型數據庫

            • 以網裝結構的方式,一個節點可以有多個父節點或子節點

          • 關系型數據庫

            • 舉例mysql,數據就是以表格方式存儲,表與表之間通過外鍵維護關系。

        • MySQL語句分類

          • DDL

            • 數據定義語言,用來定義數據庫對象:庫、表、列等;

          • DML

            • 數據操作語言,用來定義數據庫記錄(數據);

          • DCL

            • 數據控制語言,用來定義訪問權限和安全級別

          • DQL

            • 數據查詢語言,用來查詢記錄

        • 字符集編碼分類 (指數據的存儲格式)

          • utf8mb4_bin

            • 將字符串每個字符??進制數據編譯存儲,區分??寫,?且可以存?進制的內容。推薦使用

          • utf8mb4_general_ci:ci

            • 不區分??寫。沒有實現Unicode排序規則,在遇到某些特殊語?或者字符集,排序結果可能不?致。但是,在絕?多數情況下,這些特殊字符的順序并不需要那么精確。

          • utf8mb4_unicode_ci

            • 是基于標準的Unicode來排序和?較,能夠在各種語?之間精確排序,Unicode排序規則為了能夠處理特殊字符的情況,實現了略微復雜的排序算法。

          • utf8mb4_general_ci

            • 是?個遺留的 校對規則,不?持擴展,它僅能夠在字符之間進?逐個?較。

          • utf8_general_ci

            • 校對規則進?的?較速度很快,但是與使用 utf8mb4_unicode_ci的校對規則相比,比較正確性較差。

          • -修改數據庫編碼:

            • ALTER DATABASE mydb1 CHARACTER SET utf8;

          • 查看排序編碼

            • show variables like 'collation_%';

          • 查看字符集

            • show variables like 'character_set_%';

        • 數據類型分類

          • 文本類型(對應java的字符集)

            • CHAR,VARCHAR,TINYBOB,TEXT等

          • 數值類型(對應正數,小數)

            • INT DOUBLE DECIMAL等

          • 日期類型(對應Data類型

            • DATE,TIME,YEAR,DATETIMEDATETIME,TIMESTAMP等

          • 其他類型(二進制文件類型)

        • 數據庫命名規范

          • 在表的命名的過程中,最好在表的前面加個前綴tb,例如tb_user。

          • 表名由多個單詞構成時:a_b create_time

    • sql語句的學習

      • DDL語句

        • 對數據庫的操作

          • 切換數據庫:USE mydb1,切換到mydb1數據庫;

          • 查看當前使用的數據庫的名稱: select database();

          • 查看所有數據庫名稱:SHOW DATABASES

          • CREATE DATABASE [IF NOT EXISTS] 數據庫名稱;

          • 刪除數據庫:DROP DATABASE 數據庫名稱;

          • --修改數據庫編碼:ALTER DATABASE 數據庫名稱 CHARACTER SET 編碼格式

        • 對表的操作

          • 創建表: CREATE TABLE 表名( 列名 列類型, 列名 列類型, ...... );

          • --查看當前數據庫中所有表名稱: SHOW TABLES;

          • -查看指定表的創建語句: 查看emp表的創建語句; SHOW CREATE TABLE emp;

          • --查看表結構: DESC emp; --查看emp表結構;

          • --刪除表: DROP TABLE emp; --刪除emp表;

          • 修改表: --給表添加列:給stu表添加classname列: --1ALTER TABLE stu ADD (classname varchar(100));

          • --2. 修改之修改列類型:修改stu表的gender列類型為CHAR(2): ALTER TABLE stu MODIFY gender CHAR(2);

          • --3. 修改之修改列名:修改stu表的gender列名為sex: ALTER TABLE stu change gender sex CHAR(2);

          • --4. 修改之刪除列:刪除stu表的classname列: ALTER TABLE stu DROP classname;

          • 5. 修改之修改表名稱:修改stu表名稱為student: ALTER TABLE stu RENAME TO student;

      • DML

        • 插入語句

          • INSERT INTO 表名(列名1,列名2, …) VALUES(值1, 值2)

        • 修改語句

          • UPDATE 表名 SET 列名1=值1, … 列名n=值n [WHERE 條件]

        • 刪除數據

          • DELETE FROM 表名 [WHERE 條件]

          • TRUNCATE TABLE 表名 TRUNCATE TABLE stu;

          • 區別:TRUNCATE其實屬性DDL語句,因為它是先DROP TABLE,再CREATE TABLE。而且TRUNCATE刪除的記錄是無法回滾的,但DELETE刪除的記錄是可以回滾的(回滾是事務的知識!)。

      • DCL

        • 查詢所有用戶

          • Select * from mysql.user

        • 創建用戶

          • CREATE USER 用戶名@地址 IDENTIFIED BY '密碼'; --user1用戶只能在localhost這個IP登錄mysql服務器

          • --user2用戶可以在任何電腦上登錄mysql服務器 CREATE USER user2@'%' IDENTIFIED BY '123';

        • 用戶權限操作

          • 給用戶授權

            • GRANT 權限1, … , 權限n ON 數據庫.* TO 用戶名;

          • 撤銷授權

            • REVOKE權限1, … , 權限n ON 數據庫.* FORM 用戶名;

          • 查看用戶權限

            • SHOW GRANTS FOR 用戶名; SHOW GRANTS FOR user1@localhost;

          • 刪除用戶

            • DROP USER 用戶名; DROP USER user1@localhost;

          • 修改用戶密碼

            • USE mysql; UPDATE USER SET authentication_string=PASSWORD('密碼') WHERE User='用戶名' and Host='IP'; FLUSH PRIVILEGES;例如UPDATE mysql.USER SET authentication_string=PASSWORD('123456') WHERE USER='zhangsan' AND HOST='localhost'; FLUSH PRIVILEGES;

      • DQL語句

        • DQL單表查詢

          • 單表查詢的順序

            • Select *(所有列),列名1,列名2... from 表名 【where 字句】 條件查詢 【group by 列名】 #分組 【having 字句】 分組條件篩選 【order by 列名 排序方式】 #排序 【limit [x,y]】 #分頁順序

          • 分析的步驟

            • 1.找表 指定的 根據需要列找出對應的表

            • 2.找查詢條件

            • 3.找查詢的列

          • 聚合函數

            • COUNT() 統計指定列不為NULL的記錄行數

            • MAX() 計算指定列的最大值,如果指定列是字符串類型,那么使用字符串排序運算

            • MIN() 計算指定列的最小值,如果指定列是字符串類型,那么使用字符串排序運算

            • SUM() 計算指定列的數值和,如果指定列類型不是數值類型,那么計算結果為0

            • AVG() 計算指定列的平均值,如果指定列類型不是數值類型,那么計算結果為0

            • ifnull(字段,數據) 如果一個數據為空,則放回指定的數據

          • 注意:

            • where里面不能出現聚合函數

            • 在查詢的過程中null是一個特殊的值,任何與null運算都是null,任何與null比較都是false。

        • DQL多表查詢

          • 表與表的關系

            • 一對一

              • 通過主外鍵連結

            • 多對多

              • 使用中間表存儲兩張表的關系,命名規則:tb_A表名_B表名

            • 一對多

              • 在多方面的表創建外鍵,唯一表創建主鍵

          • 連結方式

            • 聯合查詢

              • 合并結果集就是把兩個select語句的查詢結果合并到一起!

                • 語句:UNION:去除重復記錄SELECT * FROM t1 UNION SELECT * FROM t2; UNION ALL:不去除重復記錄,例如:SELECT * FROM t1 UNION ALL SELECT * FROM t2。

            • 連結查詢

              • 連接查詢就是求出多個表的乘積,例如t1連接t2,那么查詢出的結果就是t1*t2。

                • 語句:SELECT * FROM t1,t2

            • 內連接

              • 一個表跟另外一個表通過join on連結

                • 語句:列如:SELECT * FROM emp e INNER JOIN dept d ON e.deptno=d.deptno;

            • 外連結

              • 左連接

                • join on左邊的表顯示所有的內容,不管跟它連接的表它是否為null

                  • 語句:SELECT 字段列表 FROM 表1 LEFT [ OUTER ] JOIN 表2 ON 條件

              • 右連接

                • join on右邊的表顯示所有的內容,不管跟它連接的表它是否為null

                  • 語句:SELECT 字段列表 FROM 表1 RIGHT [ OUTER ] JOIN 表2 ON 條件 ... ;

            • 自連接

              • 自己跟自己連接

                • 例子:select a.name , b.name from emp a , emp b where a.managerid = b.id;

            • 子查詢

              • 就是嵌套查詢

                • 例子:SELECT * FROM t1 WHERE column1 = ( SELECT column1 FROM t2 );

      • 完整性約束

        • 主鍵約束

          • 唯一且不為空,每一張表只能有一個主鍵約束

            • 關鍵字:PRIMARY KEY

              • 注意:每張表都應該有一個主鍵,主鍵在非業務數據上不允許修改

        • 唯一約束

          • 每一張表都可以有多個唯一約束

            • 關鍵字:UNIQUE

        • 非空約束

          • 限制數據不為null

            • 關鍵字:NOT NULL

        • 外鍵約束

          • 用來讓兩張表的數據之間建立連接,保證數據的一致性和完整性

            • FOREIGN KEY

        • 檢查約束

          • 保證字段值滿足某一個條件

            • 關鍵字:CHECK

        • 默認約束

          • 保存數據時,如果未指定該字段的值,則采用默認值

            • 關鍵字:UNIQUE

    • 系統函數

      • 數值函數

        • ABS

          • 求絕對值

        • SQRT

          • 求二次方根

        • MOD

          • 求余數

        • RAND

          • 生成一個0~1之間的隨機數,傳入整數參數是,用來產生重復序列

      • 字符串函數

        • LENGTH

          • 計算字符串長度函數,返回字符串的字節長度

        • CONCAT

          • 合并字符串函數,返回結果連結字符參數

        • INSERT

          • 替換字符串函數

        • LOWER

          • 將字符串中的字母轉換為小寫

        • UPPER

          • 將字符串中的字母轉換為大寫

      • 日期函數

        • WEEK

          • 獲取指定日期是一年中的第幾周

        • YEAR

          • 獲取年份,返回值范圍是 1970?2069

        • LAST_DAY

          • 獲取指定日期這個月的最后一天的日期

    • 視圖

      • 概念:視圖只保存了查詢的SQL邏輯,不保存查詢結果可以簡化用戶對數據的理解,也可以簡化他們的操作。那些被經常使用的查詢可以被定義為視圖

      • 基本操作

        • 創建視圖

          • 語法:CREATE OR REPLACE VIEW emp_v_1 AS SELECT * FROM emp WHERE sal <= 2000;

        • 查詢

          • 語法:#查看創建視圖語句: SHOW CREATE VIEW 視圖名稱; #查看視圖數據: SELECT * FROM 視圖名稱 ...... ;

        • 修改

          • CREATE [OR REPLACE] VIEW 視圖名稱[(列名列表)] AS SELECT語句 [ WITH [ CASCADED | LOCAL ] CHECK OPTION ]

        • 刪除

          • DROP VIEW [IF EXISTS] 視圖名稱 [,視圖名稱] ...

    • 索引

      • 概念:幫助提升查詢效率的數據結構,還維護著滿足 特定查找算法

      • 優勢及劣勢

        • 優勢

          • 提高數據檢索的效率,降低數據庫的IO成本,通過索引列對數據進行排序,降低數據排序的成本,降低CPU的消耗。

        • 劣勢

          • 降低了更新,插入的效率,索引列也是要占用空間的

      • 索引結構

        • B+Tree索引

          • 最常見的索引類型,大部分引擎都支持 B+ 樹索引(MySQL也是)

        • Hash索引

          • 底層數據結構是用哈希表實現的, 只有精確匹配索引列的查詢才有效, 不支持范圍查詢

        • R-tree(空間索引)

          • 空間索引是MyISAM引擎的一個特殊索引類型,主要用于地理空間數據類型,通常使用較少

        • Full-text(全文索引)

          • 是一種通過建立倒排索引,快速匹配文檔的方式。類似于Lucene,Solr,ES

      • 索引分類

        • 主鍵索引

          • 就是表中主鍵創造的索引。語法:PRIMARY

        • 唯一索引

          • 避免同一個表中某數據列中的值重復。語法:UNIQUE

        • 快速定位特定數據

          • 可以有多個

        • 全文索引

          • 全文索引查找的是文本中的關鍵詞,而不是比較索引中的值

      • 語句

        • 創建索引

          • CREATE [ UNIQUE | FULLTEXT ] INDEX index_name ON table_name ( index_col_name,... ) ;

        • 查看索引

          • SHOW INDEX FROM table_name ;

        • 刪除索引

          • DROP INDEX index_name ON table_name ;

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

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

相關文章

復制docker根目錄遇到的權限問題

環境 ubuntu20.04, 普通用戶使用sudo權限。 需求 linux系統上&#xff0c;默認的docker跟目錄在/var/lib/docker目錄下&#xff0c;但是根分區太小。想要將docker根目錄挪到其它磁盤&#xff0c;防止以后鏡像和容器增加后磁盤滿了。 操作 先停止所有docker容器&#xff0c;然后…

git-子倉操作

為什么為什么要將代碼倉作為子模塊&#xff1f;有什么優勢&#xff1f;精確版本控制&#xff1a;父倉記錄子倉的commit哈希值&#xff0c;確保代碼版本固定&#xff0c;避免隱式升級導致的兼容性問題模塊化管理&#xff1a;將獨立倉庫作為子模塊嵌入父倉&#xff0c;實現代碼物…

代數——第5章——線性算子之應用(Michael Artin)

第 5 章 線性算子之應用 (Applications of Linear Operators) By relieving the brain from all unnecessary work, a good notation sets it free to concentrate on more advanced problems.( 通過減輕大腦所有不必要的工作&#xff0c;良好的符號可以讓大腦集中精力解決…

Pytorch02:深度學習基礎示例——貓狗識別

一、第三方庫介紹庫/模塊功能torch提供張量操作、自動求導、優化算法、神經網絡模塊等基礎設施。torchvision計算機視覺工具集&#xff0c;提供預訓練模型、數據集、圖像轉換等功能。datasets (torchvision)用于加載常見數據集&#xff08;如 ImageNet、CIFAR-10、MNIST&#x…

spring簡單項目實戰

項目路徑 modelspackage com.qcby.demo1;import com.qcby.service.UserService; import com.qcby.service.UserServiceImpl;public class Dfactory {public UserService createUs(){System.out.println("實例化工廠的方式...");return new UserServiceImpl();} }pack…

ServBay for Windows 1.4.0 發布:新增MySQL、PostgreSQL等數據庫自定義配置

各位 Windows 平臺的開發者們&#xff0c; ServBay 始終致力于為您打造一個強大、高效且靈活的本地開發環境。距離上次更新僅過去短短一周&#xff0c;經過我們技術團隊的快速開發&#xff0c;我們正式推出了 ServBay for Windows 1.4.0 版本。 專業開發者不僅需要一個能用的環…

python網絡爬蟲小項目(爬取評論)超級簡單

python網絡爬蟲小項目&#xff08;爬取評論&#xff09;超級簡單 學習python網絡爬蟲的完整路徑&#xff1a; &#xff08;第一章&#xff09; python網絡爬蟲(第一章/共三章&#xff1a;網絡爬蟲庫、robots.txt規則&#xff08;防止犯法&#xff09;、查看獲取網頁源代碼)-…

本周大模型新動向:獎勵引導、多模態代理、鏈式思考推理

點擊藍字關注我們AI TIME歡迎每一位AI愛好者的加入&#xff01;01Iterative Distillation for Reward-Guided Fine-Tuning of Diffusion Models in Biomolecular Design本文提出了一種用于生物分子設計中獎勵引導生成的擴散模型微調框架。擴散模型在建模復雜、高維數據分布方面…

JAVA+AI教程-第三天

我將由簡入繁&#xff0c;由零基礎到詳細跟大家一起學習java---------------------------------------------------------------------01、程序流程控制&#xff1a;今日課程介紹02、程序流程控制&#xff1a;if分支結構if分支有三種形式&#xff0c;執行順序就是先執行if&…

自定義命令行解釋器shell

目錄 一、模塊框架圖 二、實現目標 三、實現原理 四、全局變量 五、環境變量函數 六、初始化環境變量表函數 七、輸出命令行提示符模塊 八、提取命令輸入模塊 九、填充命令行參數表模塊 十、檢測并處理內建命令模塊 十一、執行命令模塊 十二、源碼 一、模塊框架圖…

uniapp使用uni-ui怎么修改默認的css樣式比如多選框及樣式覆蓋小程序/安卓/ios兼容問題

修改 uni-ui 多選框 (uni-data-checkbox) 的默認樣式 在 uniapp 中使用 uni-ui 的 uni-data-checkbox 組件時&#xff0c;可以通過以下幾種方式修改其默認樣式&#xff1a; 方法一&#xff1a;使用深度選擇器格式一&#xff1a;在頁面的 style 部分使用深度選擇器 >>>…

《Linux 環境下 Nginx 多站點綜合實踐:域名解析、訪問控制與 HTTPS 加密部署》?

綜合練習:請給openlab搭建web網站&#xff0c;網站需求&#xff1a; 1.基于域名www.openlab.com可以訪問網站內容為 welcome to openlab!!&#xff0c; 2.給該公司創建三個子界面分別顯示學生信息&#xff0c;教學資料和繳費網站&#xff0c;基于www.openlab.com/student 網站訪…

網絡基礎1-11綜合實驗(eNSP):vlan/DHCP/Web/HTTP/動態PAT/靜態NAT

注&#xff1a;在華為模擬器&#xff08;eNSP&#xff09;上做的實驗其中&#xff0c;在內網實驗&#xff1a;Vlan/DHCP/VWeb/HTTP&#xff0c;在外網實驗&#xff1a;動態PAT/靜態NAT一、拓撲結構1. 核心設備與連接設備接口連接對象VLAN/IP角色LSW2/LSW3Ethernet 0/0/1-2PC1/P…

Mac上安裝Claude Code的步驟

以下是基于現有信息的簡明安裝指南&#xff0c;適用于macOS系統。請按照以下步驟操作&#xff1a; 前提條件 操作系統&#xff1a;macOS 10.15或更高版本。Node.js和npm&#xff1a;Claude Code基于Node.js&#xff0c;需安裝Node.js 18和npm。請檢查是否已安裝&#xff1a; …

MybatisPlus-15.擴展功能-邏輯刪除

一.邏輯刪除配置邏輯刪除的字段時&#xff0c;logic-delete-field字段配置的是邏輯刪除的實體字段名。字段類型可以是boolean和integer。在java中默認是boolean類型。邏輯已刪除值默認為1&#xff0c;而邏輯未刪除值默認為0。當是1時代表已刪除(1在數據庫表中為true&#xff0c…

IDEA 同時修改某個區域內所有相同變量名

在 IntelliJ IDEA 中&#xff0c;同時修改某個區域內所有 相同變量名 的快捷鍵是&#xff1a; ? Shift F6&#xff08;重命名變量&#xff09; 但這個快捷鍵默認是 全局重命名&#xff0c;如果你想 僅修改某個方法或代碼塊內的變量名&#xff0c;可以這樣做&#xff1a;&…

Telink BLE 低功耗學習

低功耗管理&#xff08;Low Power Management&#xff09;也可以稱為功耗管理&#xff08;Power Management&#xff09;&#xff0c;本?檔中會簡稱為PM。Telink低功耗解惑我查閱多連接SDK開發手冊時&#xff0c;低功耗管理章節看了兩三遍也沒太明白&#xff0c;有以下幾個問題…

設備管理系統(MMS)如何在工廠MOM功能設計和系統落地

一、核心系統功能模塊設備管理系統圍繞設備全生命周期管理設計&#xff0c;涵蓋基礎數據管理、設備運維全流程管控及統計分析功能&#xff0c;具體如下&#xff1a;基礎數據管理設備與備件臺賬&#xff1a;包含設備臺賬&#xff08;設備編號、識別碼、型號、生產日期等&#xf…

低空經濟展 | 牧羽天航空攜飛行重卡AT1300亮相2025深圳eVTOL展

為深入推動低空經濟產業高質量發展&#xff0c;構建全球eVTOL&#xff08;電動垂直起降飛行器&#xff09;產業交流合作高端平臺&#xff0c;2025深圳eVTOL展定于2025年9月23日至25日在深圳坪山燕子湖國際會展中心隆重舉辦。本屆展會以“低空經濟?eVTOL?航空應急救援?商載大…

CS231n-2017 Lecture4神經網絡筆記

神經網絡&#xff1a;我們之前的線性分類器可以接受輸入&#xff0c;進而給出評分&#xff0c;這是一種線性變換&#xff0c;再此基礎上&#xff0c;我們對這種線性變換結果進行非線性變換&#xff0c;并輸入到下一層線性分類器中&#xff0c;這個過程就像是人類大腦神經的運作…