mysql包含的數據庫對象(mysql包含的數據庫對象是)

本文目錄一覽:

MySQL(2)數據庫對象與應用

庫建立好之後基本不動,和我們接觸最頻繁的是表. 建表就是聲明字段的過程!

選擇合適的類型[速度快 減少硬盤佔用]

存儲空間,還是存儲範圍有區別?

答案: 兩者本質完全一樣 ,只是在一些特殊情況下兩者顯示有區別(只是在顯示的時候補全0的位數不一樣)

實驗

*zerofill 零填充(本字段同時即自動帶有unsigned屬性,因為負數不能零填充)

如 數字2在固定寬度4時 零填充 即為0002

M值是一個整數(固定寬度值),只有在字段有零填充zerofill屬性時 規定M值才有意義!

M值只是 顯示效果 ,不會影響實際數據值!

如M值為1,實際值255,一樣會顯示255

列可以聲明默認值(推薦聲明)

因為null無法和別的值比較

null = 0 返回null

null 0 返回null

null只能用is或is not比較 null is null當然對的。

例子:

【浮點型】有誤差,不穩定!定點數更精確。

實際測試數據

Float(M,D)

M精度(總位數,不包含點) 精度值M 影響 存儲的 值的範圍.

D標度(小數位) 小數點後有幾位(mysql比較特殊,mssql/oracle都不能指定)

testcolumn float(5,2) unsigned; 範圍0到999.99

float(5,2)的範圍-999.99到999.99

給float(5,2)這樣的字段插入值在進位時有一些規矩:暫時沒搞清楚,不是簡單的四捨五入

插入值688.826實際是688.83 末尾6 進位

插入值688.825實際是688.83 末尾5 進位

插入值688.824實際是688.82 末尾4 捨去

插入值688.005實際是688.00

插入值688.015實際是688.01 末尾5 5前面是1 捨去

插入值688.025實際是688.02 末尾5 5前面是2 捨去

插入值688.035實際是688.03 末尾5 5前面是3 捨去

插入值688.045實際是688.04 末尾5 5前面是4 捨去

一般使用tinyint、char(1)、enum類型。

varchar(M)

M代表寬度 即可容納的【字符數】 (並不是位元組數) varchar佔用的位元組數與編碼有關:

utf-8 一個漢字3位元組 英文字母1位元組

對於utf8mb4號稱佔用4位元組但是並不絕對(在utf8可以覆蓋到的範圍則仍然佔用3位元組)

utf8mb4最有優勢的應用場景:存儲emoji表情

例子:

性能太差,不推薦

MySQL在5.6.4版本之後,TimeStamp和DateTime支持到微妙

一個例子:

以如下這張表為例

show privileges 命令可以查看全部權限

查詢時從user-db-table_pirv-columns_pirv依次驗證,如果通過則執行查詢。

本課程涉及建表SQL

場景1:歌單按時間排序

場景2:統計雲音樂創建歌單的用戶

場景3-1:統計雲音樂創建歌單的用戶列表和每人創建歌單的數量。

場景3-2:統計雲音樂創建歌單的用戶列表和每人創建歌單的數量,並且只顯示歌單數量排序大於等於2的用戶

SQL進階語法-like

場景4:查詢一個月內創建歌單(從第6行開始顯示10條記錄)

場景5:對於未錄入歌曲的歌單(trackcount = null),輸出結果時歌曲數返回0.

連接的作用是用一個SQL語句把多個表中相互關聯的數據查出來

場景6:查詢收藏「老男孩」歌單的用戶列表

子查詢:內層查詢的結果作為外層的比較條件。一般子查詢都可以轉換成連接,推薦使用連接。

場景7:查詢出沒有用戶收藏的歌單

場景8:老闆想看創建和收藏歌單的所有用戶,查詢play_list和play_fav兩表中所有的userid

實例還是上節中的那些表

場景1:查詢每張專輯總的點播次數和每首歌的平均點播次數。

場景2:查詢全部歌曲中的最大的播放次數和最小的播放次數。

場景2續:查詢播放次數最多的歌曲

count(*) 和 count(1) 基本一樣,沒有明顯的性能差異。

count(*) 和 count(song_name) 差別在於 count(song_name) 會除去song_name is null的情況

場景3:顯示每張專輯的歌曲列表

實例:查詢一個月內userid為1,3,5的用戶創建的歌單

學生表:

用於更正成績的觸發器:

數據庫(mysql)關鍵知識

Mysql是目前互聯網使用最廣的關係數據庫,關係數據庫的本質是將問題分解為多個分類然後通過關係來查詢。 一個經典的問題是用戶借書,三張表,一個用戶,一個書,一個借書的關係表。當需要查詢某個用戶借書情況或者是書被那些人借了,就用關係查詢來實現。

關係數據庫範式

來自英文Normal form,簡稱NF。要想設計—個好的關係,必須使關係滿足一定的約束條件,滿足這些規範的數據庫是簡潔的、結構明晰的,同時,不會發生插入(insert)、刪除(delete)和更新(update)操作異常。總共有六種範式:第一範式(1NF)、第二範式(2NF)、 第三範式 (3NF)、巴斯-科德範式(BCNF)、 第四範式 (4NF)和 第五範式 (5NF,又稱完美範式)。

1NF是指數據庫表的每一列都是不可分割的原子數據項。2NF必須滿足1NF,要求數據庫表中的每行記錄必須可以被唯一地區分。3NF在2NF基礎上,任何非主 屬性 不依賴於其它非主屬性(在2NF基礎上消除傳遞依賴)。BCNF是在3NF基礎上,任何非主屬性不能對主鍵子集依賴(在3NF基礎上消除對主碼子集的依賴), 滿足BCNF不再會有任何由於函數依賴導致的異常,但是我們還可能會遇到由於多值依賴導致的異常。4NF的定義很簡單:已經是BC範式,並且不包含多值依賴關係。5NF處理的是無損連接問題,這個範式基本沒有實際意義,因為無損連接很少出現,而且難以察覺。而域鍵範式試圖定義一個終極範式,該範式考慮所有的依賴和約束類型,但是實用價值也是最小的,只存在理論研究中。

Catalog和Schema

是數據庫對象命名空間中的層次,主要用來解決命名衝突的問題。從概念上說,一個數據庫系統包含多個Catalog,每個Catalog又包含多個Schema,而每個Schema又包含多個數據庫對象(表、視圖、字段等)。但是Mysql的數據庫名就是Schema,不支持Catalog。

Mysql的數據庫引擎主要有兩種MyISAM和InnoDB,MyISAM支持全文檢索,InnoDB支持事務。

SQL中的通配符『%』代表任意字符出現任意次數。『_』代表任意字符出現一次。SQL與正則表達式結合查詢一般用在WHERE table_name REGEXP ‘^12.34’。子查詢是從裡到外執行。

數據庫聯結(join)涉及到外鍵,外鍵是指一個表的列是另一個表的主鍵,那麼它就是外鍵。笛卡爾積聯結(不指定聯結條件時)生成的記錄條目是單純的第一個表的行乘以第二個表的列數。用得最多的是等值聯結也叫內部聯結。

高級聯結還有自連接,是指查詢中的兩張表是同一張表,它通常作為外部語句用來代替從相同表中檢索數據時使用的子查詢。自然聯結使每個列只返回一次。外部聯結是指聯結包含了那些在相關表中沒有關聯行的行。例如列出所有產品及其訂購數量,包括沒有人訂購的產品。LEFT OUTER JOIN指選擇左邊表的所有行。

組合查詢是指採用UNION等將兩個查詢結果取並集。

視圖是查看存儲在別處的數據的一種工具,它本身並不包含數據,因此表的數據修改了,視圖返回的數據也將隨之修改,因此如果使用了複雜或嵌套視圖會對性能有較大的影響。視圖的作用之一是隱藏複雜的SQL通常會涉及到聯結查詢。

存儲過程類似於批處理,包含了一條或多條SQL語句。語法:

CREATE PROCEDURE name()

BEGIN

SQL

END

————————-

CALL name()//來調用存儲過程

游標有DECLARE定義,游標與存儲過程是綁定的,存儲過程處理完成,游標就會消失。游標被打開後可以使用FETCH語句訪問每一行。

觸發器是在某個時間發生時自動執行某條SQL語句。語法:

CREATE TRIGGER name AFTER INSERT ON talbe_name FOR EACH ROW

事務處理可以維護數據庫的完整性,保證批量的操作要麼完全執行,要麼完全不執行。包括事務、回退、提交、保留點幾個關鍵術語。ROLLBACK只能在一個事務處理內使用。他不能回退CREATE和DROP操作。使用COMMIT保證事務提交。複雜的事務處理需要部分提交或回退,因此我們需要使用保留點SAVEPOINT。可以使用ROLLBACK TO savepoint_name。保留點越多越好。保留點在事務執行完成後自動釋放。

mysql數據類型

數據庫類型可分為層次型、網狀型和關係型。

層次型數據庫是把數據根據層次構造(樹結構)的方法呈現;網狀型數據庫是採用網狀原理和方法,以網狀數據模型為基礎建立的數據庫;關係型數據庫是指採用了關係模型來組織數據的數據庫。

數據庫的作用

1、實現數據共享:數據共享包含所有用戶可同時存取數據庫中的數據,也包括用戶可以用各種方式通過接口使用數據庫,並提供數據共享。

2、減少數據的冗餘度:同文件系統相比,由於數據庫實現了數據共享,從而避免了用戶各自建立應用文件。減少了大量重複數據,減少了數據冗餘,維護了數據的一致性。

3、保持數據的獨立性:數據的獨立性包括邏輯獨立性(數據庫中數據庫的邏輯結構和應用程序相互獨立)和物理獨立性(數據物理結構的變化不影響數據的邏輯結構)。

4、數據實現集中控制:文件管理方式中,數據處於一種分散的狀態,不同的用戶或同一用戶在不同處理中其文件之間毫無關係。利用數據庫可對數據進行集中控制和管理,並通過數據模型表示各種數據的組織以及數據間的聯繫。

MySQL備份數據庫時需要備份的對象有哪些?

數據庫備份對象包含數據,表結構,創建存儲過程,日誌等。

1、 mysqldump命令備份數據

在MySQL中提供了命令行導出數據庫數據以及文件的一種方便的工具mysqldump,我們可以通過命令行直接實現數據庫內容的導出dump,首先我們簡單了解一下mysqldump命令用法:

#MySQLdump常用

mysqldump -u root -p –databases 數據庫1 數據庫2 xxx.sql

2、 mysqldump常用操作實例

2.1備份全部數據庫的數據和結構

mysqldump -uroot -p123456 -A /data/mysqlDump/mydb.sql

2.2備份全部數據庫的結構(加 -d 參數)

mysqldump -uroot -p123456 -A -d /data/mysqlDump/mydb.sql

2.3 備份全部數據庫的數據(加 -t 參數)

mysqldump -uroot -p123456 -A -t /data/mysqlDump/mydb.sql

2.4 備份單個數據庫的數據和結構(,數據庫名mydb)

mysqldump -uroot-p123456 mydb /data/mysqlDump/mydb.sql

2.5 備份單個數據庫的結構

mysqldump -uroot -p123456 mydb -d /data/mysqlDump/mydb.sql

2.6 備份單個數據庫的數據

mysqldump -uroot -p123456 mydb -t /data/mysqlDump/mydb.sql2

2.7 備份多個表的數據和結構(數據,結構的單獨備份方法與上同)

mysqldump -uroot -p123456 mydb t1 t2 /data/mysqlDump/mydb.sql

2.8 一次備份多個數據庫

mysqldump -uroot -p123456 –databases db1 db2 /data/mysqlDump/mydb.sql

什麼是數據庫對象

什麼是數據庫對象

數據庫對象是數據庫的組成部分,常見的有以下幾種:

1 表(Table )

數據庫中的表與我們日常生活中使用的表格類似,它也是由行(Row) 和列(Column)組成的。列由同類的信息組成,每列又稱為一個字段,每列的標題稱為字段名。行包括了若干列信息項。一行數據稱為一個或一條記錄,它表達有一定意義的信息組合。一個數據庫表由一條或多條記錄組成,沒有記錄的表稱為空表。每個表中通常都有一個主關鍵字,用於惟一地確定一條記錄。

2 索引(Index)

索引是根據指定的數據庫表列建立起來的順序。它提供了快速訪問數據的途徑,並且可監督表的數據,使其索引所指向的列中的數據不重複。

3 視圖(View)

視圖看上去同表似乎一模一樣,具有一組命名的字段和數據項,但它其實是一個虛擬的表,在數據庫中並不實際存。在視圖是由查詢數據庫表產生的,它限制了用戶能看到和修改的數據。由此可見,視圖可以用來控制用戶對數據的訪問,並能簡化數據的顯示,即通過視圖只顯示那些需要的數據信息。

4 圖表(Diagram)

圖表其實就是數據庫表之間的關係示意圖。利用它可以編輯表與表之間的關係。

5 缺省值(Default)

缺省值是當在表中創建列或插入數據時,對沒有指定其具體值的列或列數據項賦予事先設定好的值。

6 規則(Rule)

規則是對數據庫表中數據信息的限制。它限定的是表的列。

7 觸發器(Trigger)

觸發器是一個用戶定義的SQL事務命令的集合。當對一個表進行插入、更改、刪除時,這組命令就會自動執行。

8 存儲過程(Stored Procedure)

存儲過程是為完成特定的功能而彙集在一起的一組SQL 程序語句,經編譯後存儲在數據庫中的SQL 程序。

9 用戶(User)

所謂用戶就是有權限訪問數據庫的人。

mysql數據庫schema是什麼

schema在數據庫中表示的是數據庫對象集合,它包含了各種對像,比如:表,視圖,存儲過程,索引等等。

一般情況下一個用戶對應一個集合,為了區分不同的集合就需要給不同的集合起名字。用戶的schema名就相當於用戶名,並作為該用戶缺省schema。

所以說,schema集合看上去像用戶名。例如,當訪問一個數據表時,如果該表沒有指明屬於哪個schema,系統就會自動的加上缺省的schema。

擴展資料

Schema的創建在不同的數據庫中要創建的Schema方法是不一樣的,但是它們有一個共同的特點就是都支持CREATE SCHEMA語句。

在MySQL數據庫中,可以通過CREATE SCHEMA語句來創建一個數據庫Oracle Database在Oracle中,由於數據庫用戶已經創建了一個模式,所以,CREATE SCHEMA語句創建的是一個schema,它允許將schema同表和視圖關聯起來,並在這些多個事務中發出多個SQL語句。

SQL Server在SQL Server中,CREATE SCHEMA會按照名稱來創建一個模式,與MySQL不同,CREATE SCHEMA語句創建了一個單獨定義到數據庫的模式。和Oracle數據庫也有不同,它實際上創建了一個模式,而且一旦創建了模式,就可以往模式中添加用戶和對象。

原創文章,作者:RCYX,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/132746.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
RCYX的頭像RCYX
上一篇 2024-10-03 23:54
下一篇 2024-10-03 23:54

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • 數據庫第三範式會有刪除插入異常

    如果沒有正確設計數據庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係數據庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • 面向對象編程、類和對象

    面向對象編程(Object-Oriented Programming, OOP)是一種編程方法,它將現實世界中的事物抽象為對象(Object),對象的屬性和方法被封裝成類(Clas…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的數據庫存儲引擎

    本文將介紹兩款高性能的數據庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • Python怎麼導入數據庫

    Python是一種高級編程語言。它具有簡單、易讀的語法和廣泛的庫,讓它成為一個靈活和強大的工具。Python的數據庫連接類型可以多種多樣,其中包括MySQL、Oracle、Post…

    編程 2025-04-28
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28

發表回復

登錄後才能評論