一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

MySQL數(shù)據(jù)庫學(xué)習(xí)

 飛絮輕 2021-03-17

雖然筆者從事的是Android客戶端的開發(fā),平時和數(shù)據(jù)庫打的交道并不多,但是我們對于數(shù)據(jù)庫這一塊的學(xué)習(xí)還是很重要的,今天筆者想總結(jié)下MySQL關(guān)系型數(shù)據(jù)庫的一些常用知識點(diǎn)

數(shù)據(jù)庫概述

一、常見的概念

數(shù)據(jù)庫(DataBase):數(shù)據(jù)庫是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫。數(shù)據(jù)庫管理系統(tǒng)(Database Management SystemDBMS):是專門用于管理數(shù)據(jù)庫的計(jì)算機(jī)系統(tǒng)軟件。數(shù)據(jù)庫管理系統(tǒng)能夠?yàn)閿?shù)據(jù)庫提供數(shù)據(jù)的定義、建立、維護(hù)、查詢和統(tǒng)計(jì)等操作功能,并完成對數(shù)據(jù)完整性、安全性進(jìn)行控制的功能。

二、發(fā)展歷程

我們一般說的數(shù)據(jù)庫,就是指的DBMS: 數(shù)據(jù)庫服務(wù)器。數(shù)據(jù)庫技術(shù)發(fā)展歷程如下:

  • 層次數(shù)據(jù)庫和網(wǎng)狀數(shù)據(jù)庫技術(shù)階段:使用指針來表示數(shù)據(jù)之間的聯(lián)系。

  • 關(guān)系數(shù)據(jù)庫技術(shù)階段:經(jīng)典的里程碑階段。代表DBMS有Oracle、DB2、MySQL、SQL Server等。

  • 后關(guān)系數(shù)據(jù)庫技術(shù)階段:關(guān)系型數(shù)據(jù)庫存在數(shù)據(jù)模型,性能,拓展伸縮性的缺點(diǎn),出現(xiàn)了:

    • ORDBMS:面向?qū)ο髷?shù)據(jù)庫技術(shù)。

    • NoSQL :結(jié)構(gòu)化數(shù)據(jù)庫技術(shù)。

隨著大數(shù)據(jù)的不斷發(fā)展,非關(guān)系型的數(shù)據(jù)庫現(xiàn)在成了一個極其熱門的新領(lǐng)域,非關(guān)系數(shù)據(jù)庫產(chǎn)品的發(fā)展非常迅速,產(chǎn)生了一系列出色的NoSQL數(shù)據(jù)庫。

常見的NoSQL數(shù)據(jù)庫分為四大類

  • 鍵值存儲數(shù)據(jù)庫:Oracle BDB,Redis,BeansDB

  • 列式儲數(shù)數(shù)據(jù)庫:HBase,Cassandra,Riak

  • 文檔型數(shù)據(jù)庫:MongoDB,CouchDB

  • 圖形數(shù)據(jù)庫:Neo4J,InfoGrid,Infinite Graph

常見的關(guān)系數(shù)據(jù)庫:

數(shù)據(jù)庫系所屬公司
OracleOracle
DB2IBM
SQL ServerMS
MySQLAB–>SUN–>Oracle

特點(diǎn)比較:

  • Oracle:運(yùn)行穩(wěn)定,可移植性高,功能齊全,性能超群!適用于大型企業(yè)領(lǐng)域,但是價格昂貴。

  • DB2:速度快、可靠性好,適于海量數(shù)據(jù),恢復(fù)性極強(qiáng)。適用于大中型企業(yè)領(lǐng)域,但是價格昂貴。

  • SQL Server:全面,效率高,界面友好,操作容易,但是不跨平臺。適用于中小型企業(yè)領(lǐng)域。

  • MySQL:開源,體積小,速度快。適用于中小型企業(yè)領(lǐng)域。

三、SQL:結(jié)構(gòu)化查詢語言(Structured Query Language)。

結(jié)構(gòu)化查詢語言是關(guān)系型數(shù)據(jù)庫標(biāo)準(zhǔn)語言。特點(diǎn):簡單,靈活,功能強(qiáng)大。

SQL包含6個部分:

  • 數(shù)據(jù)查詢語言(DQL):
    其語句,也稱為“數(shù)據(jù)檢索語句”,用以從表中獲得數(shù)據(jù),確定數(shù)據(jù)怎樣在應(yīng)用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其他類型的SQL語句一起使用。

  • 數(shù)據(jù)操作語言(DML):
    其語句包括動詞INSERT,UPDATE和DELETE。它們分別用于添加,修改和刪除表中的行。也稱為動作查詢語言。

  • 事務(wù)處理語言(TPL):
    它的語句能確保被DML語句影響的表的所有行及時得以更新。TPL語句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。

  • 數(shù)據(jù)控制語言(DCL):
    它的語句通過GRANT或REVOKE獲得許可,確定單個用戶和用戶組對數(shù)據(jù)庫對象的訪問。某些RDBMS可用GRANT或REVOKE控制對表單個列的訪問。

  • 數(shù)據(jù)定義語言(DDL):
    其語句包括動詞CREATE和DROP。在數(shù)據(jù)庫中創(chuàng)建新表或刪除表(CREAT TABLE 或 DROP TABLE);為表加入索引等。DDL包括許多與人數(shù)據(jù)庫目錄中獲得數(shù)據(jù)有關(guān)的保留字。它也是動作查詢的一部分。

  • 指針控制語言(CCL):
    它的語句,像DECLARE CURSOR,F(xiàn)ETCH INTO和UPDATE WHERE CURRENT用于對一個或多個表單獨(dú)行的操作。

四、書寫規(guī)則

1.數(shù)據(jù)庫中,SQL語句大小寫不敏感 2.SQL語句可單行或多行書寫 3.在SQL語句中,關(guān)鍵字不能跨多行或縮寫 4.為了提高可讀性,一般關(guān)鍵字大寫,其他小寫 5.空格和縮進(jìn)使程序易讀
  • 1

  • 2

  • 3

  • 4

  • 5

  • 1

  • 2

  • 3

  • 4

  • 5

五、表的理解

什么是表?表是用來干嘛的?表又叫二維表(有行和列) ,用來存儲數(shù)據(jù),
表具有固定的列數(shù)和任意的行數(shù),在數(shù)學(xué)上稱為“關(guān)系”。
二維表是同類實(shí)體的各種屬性的集合,每個實(shí)體對應(yīng)于表中的一行,在關(guān)系中稱為一條記錄
表中的列表示屬性,稱為Field,相當(dāng)于通常記錄中的一個數(shù)據(jù)項(xiàng),也叫列、字段。
解釋表結(jié)構(gòu)和面向?qū)ο蟮年P(guān)系
能不能使用面向?qū)ο蟮姆绞絹聿僮鲾?shù)據(jù)庫呢?

MySQL安裝和配置

一、MySQL安裝過程中注意:

  • MySQL的默認(rèn)端口是:3306

  • 數(shù)據(jù)庫默認(rèn)字符集就是utf8

  • 設(shè)置密碼:(盡量簡單能記住,忘記后很麻煩)

  • MySQL的運(yùn)行要基于 .Net framework 4和VC 庫

  • 如果沒有安裝以上兩個庫則在安裝過程中會出錯,必須先安裝以上程序

  • 解決MySQL占內(nèi)存的問題:

  • 找到:my.ini文件:

  • table_definition_cache=400

  • table_open_cache=200

二、操作數(shù)據(jù)庫的流程

  • 建立連接(認(rèn)證身份)

  • 客戶端向服務(wù)器端發(fā)送SQL命令

  • 服務(wù)器端執(zhí)行SQL,并返回執(zhí)行的結(jié)果

  • 客戶端接收結(jié)果(并顯示)

  • 斷開連接

三、啟動和連接MySQL

1.啟動MySQL服務(wù):打開數(shù)據(jù)庫連接之前:一定要保證MySQL服務(wù)已經(jīng)開啟了.在服務(wù)中找到MySQL的服務(wù),查看是否處于正在運(yùn)行的狀態(tài)

在Windows中使用命令控制服務(wù)的狀態(tài)(必須使用管理員身份開啟命令行)
開啟服務(wù): net start 服務(wù)名 如: net start mysql
關(guān)閉服務(wù): net stop 服務(wù)名 如: net stop mysql

2.連接MySQL數(shù)據(jù)庫:

  • 方式1:進(jìn)入MySQL, 在命令行中輸入密碼;

  • 方式2:在命令行中:找到安裝目錄下的bin錄制中有個mysql的命令
    格式:mysql -u賬戶 -p密碼 -h數(shù)據(jù)庫服務(wù)器安裝的主機(jī) -P數(shù)據(jù)庫端口
    mysql -uroot -padmin -hlocalhost -P 3306
    若連接的數(shù)據(jù)庫服務(wù)器在本機(jī)上,并且端口是3306。
    則可以

四、MySQL圖形化管理軟件Navicat:

  • Navicat for MySQL是一款強(qiáng)大的 MySQL 數(shù)據(jù)庫管理和開發(fā)工具,它為專業(yè)開發(fā)者提供了一套強(qiáng)大的足夠尖端的工具,但對于新用戶仍然易于學(xué)習(xí)。

  • Navicat for MySQL 基于Windows平臺,為 MySQL 量身訂作,提供類似于 MySQL 的用管理界面工具。此解決方案的出現(xiàn),將解放 PHP、J2EE 等程序員以及數(shù)據(jù)庫設(shè)計(jì)者、管理者的大腦,降低開發(fā)成本,為用戶帶來更高的開發(fā)效率。

MySQL數(shù)據(jù)庫操作

一、數(shù)據(jù)庫操作和存儲引擎

1.數(shù)據(jù)庫和數(shù)據(jù)庫對象

一般來說我們說的數(shù)據(jù)庫(MySQL/Oracle等)指的都是數(shù)據(jù)庫服務(wù)器(DBMS)
數(shù)據(jù)庫:存儲數(shù)據(jù)庫對象的容器。
數(shù)據(jù)庫對象:存儲,管理和使用數(shù)據(jù)的不同結(jié)構(gòu)形式,如:表、視圖、存儲過程、函數(shù)、觸發(fā)器、事件等。
數(shù)據(jù)庫分兩種:

  • 系統(tǒng)數(shù)據(jù)庫(系統(tǒng)自帶的數(shù)據(jù)庫):不能修改

    information_schema:存儲數(shù)據(jù)庫對象信息,如:用戶表信息,列信息,權(quán)限,字符,分區(qū)等信息
    performance_schema:存儲數(shù)據(jù)庫服務(wù)器性能參數(shù)信息。
    mysql:存儲數(shù)據(jù)庫用戶權(quán)限信息。
    sys:系統(tǒng)配置信息。1234512345
  • 用戶數(shù)據(jù)庫(用戶自定義的數(shù)據(jù)庫):一般的,一個項(xiàng)目一個用戶數(shù)據(jù)庫。

2.數(shù)據(jù)庫操作命令
(1)查看和選擇數(shù)據(jù)庫
  • 查看數(shù)據(jù)庫服務(wù)器存在哪些數(shù)據(jù)庫: SHOW DATABASES;

  • 使用指定的數(shù)據(jù)庫:USE database_name;

  • 查看指定的數(shù)據(jù)庫中有哪些數(shù)據(jù)表: SHOW TABLES;

(2)創(chuàng)建和刪除數(shù)據(jù)庫
  • 創(chuàng)建指定名稱的數(shù)據(jù)庫: CREATE DATABASE database_name;

  • 刪除數(shù)據(jù)庫:DROP DATABASE database_name;

3.數(shù)據(jù)庫存儲引擎

數(shù)據(jù)庫存儲引擎.png

二、MySQL常用列類型

1.整數(shù)類型

最常用的整數(shù)類型:

MySQL列類型Java數(shù)據(jù)類型
INTint/Integer
BIGINTlong/Long

整數(shù)類型.png

MySQL 以一個可選的顯示寬度指示器的形式對 SQL 標(biāo)準(zhǔn)進(jìn)行擴(kuò)展,這樣當(dāng)從數(shù)據(jù)庫檢索一個值時,可以把這個值加長到指定的長度。例如,指定一個字段的類型為 INT(6),就可以保證所包含數(shù)字少于 6 個的值從數(shù)據(jù)庫中檢索出來時能夠自動地用空格填充。需要注意的是,使用一個寬度指示器不會影響字段的大小和它可以存儲的值的范圍。一般不用指定位寬。

2.小數(shù)類型

FLOAT[(s,p)] :
DOUBLE[(s,p)] : 小數(shù)類型,可存放實(shí)型和整型 ,精度(p)和范圍(s)
money double(5,2): 整數(shù)和小數(shù)一共占5位.其中小數(shù)占2位.
都不夠精確。
定點(diǎn)數(shù)據(jù)類型: DECIMAL,高精度類型,金額貨幣優(yōu)先選擇。

MySQL列類型Java數(shù)據(jù)類型
FLOATfloat/Float
DOUBLEdouble/Double
DECIMAL(s,p)BigDecimal

小數(shù)類型.png

3.字符類型

char(size) 定長字符,0 - 255字節(jié),size指N個字符數(shù),若插入字符數(shù)超過設(shè)定長度,會被截取并警告。
varchar(size) 變長字符,0 - 255字節(jié),從MySQL5開始支持65535個字節(jié),若插入字符數(shù)超過設(shè)定長度,會被截取并警告。
一般存儲大量的字符串,比如文章的純文本,可以選用TEXT系列類型,這個系列都是變長的。

注意:在MySQL中,字符類型必須指定長度,值要使用單引號引起來。 相當(dāng)于Java中字符串(String,StringBuilder/StringBuffer);

字符類型.png

對比char(4)和varchar(4)占用空間的問題?

4.日期和時間類型

日期和時間類型為DATETIME、DATE、TIMESTAMP、TIME和YEAR。
注意:在MySQL中,日期時間值使用單引號引起來。 相當(dāng)于Java中Date,Calender。

日期時間類型.png

5.二進(jìn)制類型

存放圖形、聲音和影像,二進(jìn)制對象,0-4GB。
開發(fā)中,我們一般存儲二進(jìn)制文件保存路徑。
BIT:我們一般存儲0或1,存儲是Java中的boolean/Boolean類型的值。
其他的大二進(jìn)制類型,開發(fā)中一般都不用

二進(jìn)制類型.png

三、MySQL表的操作

1.創(chuàng)建表

步驟:
1. 先進(jìn)入某一個數(shù)據(jù)庫
2. 輸入建表的命令

CREATE TABLE 表名( 列名1 列的類型 [約束], 列名2 列的類型 [約束], .... 列名N 列的類型 [約束] );

注意:最后一行沒有逗號

使用使用標(biāo)識符時不要用SQL的關(guān)鍵字,如果用到的話怎么辦呢?比如新建一張訂單表(order),但是order是數(shù)據(jù)庫中的關(guān)鍵字(排序使用).

  • 解決方案一:使用反引號`把自定義的標(biāo)識符引起來.

  • 解決方案二:使用表名的前綴,一般的,習(xí)慣t_order.

2.查看表結(jié)構(gòu)和刪除表
  • 查看表目錄:SHOW TABLES;

  • 查看表結(jié)構(gòu): DESC table_name;

  • 查看DDL語句:SHOW CREATE TABLE table_name;

  • 刪除表:DROP TABLE table_name;

3.表的約束:表的約束(針對于某一列):
  • 非空約束:NOT NULL(NK),不允許某列的內(nèi)容為空。

  • 設(shè)置列的默認(rèn)值:DEFAULT。

  • 唯一約束:UNIQUE(UK),在該表中,該列的內(nèi)容必須唯一。

  • 主鍵約束:PRIMARY KEY(PK), 非空且唯一。

  • 主鍵自增長:AUTO_INCREMENT,從1開始,步長為1。(MySQL特有)

  • 外鍵約束:FOREIGN KEY(FK),A表中的外鍵列的值必須參照于B表中的某一列(B表主鍵)。

主鍵設(shè)計(jì):

1:單列主鍵,單列作為主鍵,建議使用。
     復(fù)合主鍵,使用多列充當(dāng)主鍵,不建議。
2:主鍵分為兩種:   1)自然主鍵:使用有業(yè)務(wù)含義的列作為主鍵(不推薦使用);
   2)代理主鍵:使用沒有業(yè)務(wù)含義的列作為主鍵(推薦使用);1234512345

單表查詢(DQL上)

一、簡單查詢

1.簡單數(shù)據(jù)查詢
語法: SELECT {*, column [alias],...} FROM table_name; 說明: SELECT 選擇查詢列表 FROM 提供數(shù)據(jù)源(表、視圖或其他的數(shù)據(jù)源) 如果為 * 和創(chuàng)建表時的順序一致。 可以自己調(diào)整順序,在select后邊加上要查詢的列名。
2.避免重復(fù)數(shù)據(jù)-DISTINCT
消除結(jié)果中重復(fù)的數(shù)據(jù)。
需求:查詢商品的分類編號。
語法:
SELECT DISTINCT 列名,...FROM  table_name;1234512345
3.實(shí)現(xiàn)數(shù)學(xué)運(yùn)算查詢
對NUMBER型數(shù)據(jù)可以使用算數(shù)操作符創(chuàng)建表達(dá)式( - * /) 對DATE型數(shù)據(jù)可以使用部分算數(shù)操作符創(chuàng)建表達(dá)式 ( -) 運(yùn)算符優(yōu)先級:1、乘法和除法的優(yōu)先級高于加法和減法2、同級運(yùn)算的順序是從左到右3、表達(dá)式中使用'括號'可強(qiáng)行改變優(yōu)先級的運(yùn)算順序
4.設(shè)置列的別名
設(shè)置列名的別名。
1、改變列的標(biāo)題頭;
2、用于表示計(jì)算結(jié)果的含義;
3、作為列的別名;
4、如果別名中使用特殊字符,或者是強(qiáng)制大小寫敏感,或有空格時,都需加雙引號;1234512345

二、過濾查詢

1.比較運(yùn)算符
比較運(yùn)算符 含義 = 等于 > 大于 >= 大于或等于 < 小于 <= 小于或等于 !=(<>) 不等于 注意:字符串和日期要用單引號擴(kuò)起來. 要讓MySQL查詢區(qū)分大小寫,可以:SELECT * FROM table_name WHERE BINARY productName='g9x'SELECT * FROM table_name WHERE BINARY productName='G9X'
2.邏輯運(yùn)算符
邏輯運(yùn)算符        含義AND(&&)          如果組合的條件都是TRUE,返回TRUEOR(||)           如果組合的條件之一是TRUE,返回TRUENOT(!)           如果下面的條件是FALSE,返回TRUE1234512345
3.優(yōu)先級規(guī)則
運(yùn)算優(yōu)先級 運(yùn)算符1 所有比較運(yùn)算符2 NOT3 AND4 OR注意:括號將跨越所有優(yōu)先級規(guī)則 分析SQL:SELECT * FROM product WHERE (NOT productName LIKE '%M%' AND salePrice > 100) OR (dir_id = 2)

4.范圍查詢 -BTEWEEN AND
使用BETWEEN運(yùn)算符顯示某一值域范圍的記錄,這個操作符最常見的使用在數(shù)字類型數(shù)據(jù)的范圍上,但對于字符類型數(shù)據(jù)和日期類型數(shù)據(jù)同樣可用。
格式:SELECT <columnList> FROM table_nameWHERE 列名 BETWEEN minvalue AND maxvalue:閉區(qū)間。12341234
5.集合查詢 -IN
使用IN運(yùn)算符,判斷列的值是否在指定的集合中。 格式: WHERE 列名 IN (值1,值2....);

  • 6.空值查詢 -IS NULL

IS NULL:判斷列的值是否為空。
格式:WHERE  列名 IS NULL;1212
7.模糊查詢
使用LIKE運(yùn)算符執(zhí)行通配查詢,查詢條件可包含文字字符或數(shù)字:%通配符:可表示零或多個字符。 _通配符:可表示一個字符。 通配符:用來實(shí)現(xiàn)匹配部分值得特殊字符。

三、結(jié)果排序

排序通過ORDER BY 實(shí)現(xiàn) ASC升序 DESC降序 默認(rèn)是升序

1.排序語法和規(guī)則
2.按單列排序
3.按多列排序
4.列的別名排序

四、MySQL分頁查詢

分頁設(shè)計(jì):
假分頁(內(nèi)存分頁):所有數(shù)據(jù)已經(jīng)存在內(nèi)容中,只是顯示部分而已,
    優(yōu)點(diǎn):每次翻頁時都從內(nèi)存中取數(shù)據(jù),翻頁速度極快,簡單
    缺點(diǎn):消耗內(nèi)存大,容易內(nèi)存溢出
真分頁(數(shù)據(jù)庫分頁):每次翻頁都去數(shù)據(jù)庫查詢數(shù)據(jù)
    優(yōu)點(diǎn):不會造成內(nèi)存溢出
    缺點(diǎn):翻頁比較慢,復(fù)雜
此時,我們講解MySQL特有的分頁方式(LIMIT,在Oracle12C中也提供類似的語法).
設(shè)置每頁最多3條記錄: 
語法: LIMIT ?, ?
參數(shù)1:
參數(shù)2:
第一頁: 
第二頁: 
第三頁: 
第四頁: 
第N頁:  
演示下公式的分頁查詢效果 LIMIT (currentPage-1)

五、聚合函數(shù)

什么是聚合函數(shù)/統(tǒng)計(jì)函數(shù): 聚合函數(shù)作用于一組數(shù)據(jù),并對一組數(shù)據(jù)返回一條記錄。 COUNT:統(tǒng)計(jì)結(jié)果記錄數(shù) MAX: 統(tǒng)計(jì)計(jì)算最大值MIN: 統(tǒng)計(jì)計(jì)算最小值SUM: 統(tǒng)計(jì)計(jì)算求和 AVG: 統(tǒng)計(jì)計(jì)算平均值

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲熟女乱色一区二区三区| 熟妇人妻av中文字幕老熟妇| 国产又大又猛又粗又长又爽| 国产精品午夜视频免费观看| 久久热九九这里只有精品| 91精品国产av一区二区| 亚洲一区二区三区有码| 91人妻久久精品一区二区三区| 日韩成人高清免费在线| 日韩一区二区三区观看| 国产精品第一香蕉视频| 午夜小视频成人免费看| 内用黄老外示儒术出处| 国产麻豆视频一二三区| 中文字幕中文字幕在线十八区| 大尺度激情福利视频在线观看| 午夜亚洲精品理论片在线观看| 日本视频在线观看不卡| 国产亚洲精品久久99| 免费在线播放不卡视频| 国产亚洲中文日韩欧美综合网| 色涩一区二区三区四区| 日韩人妻欧美一区二区久久| 精品一区二区三区中文字幕| 欧美日韩国产成人高潮| 神马午夜福利免费视频| 日本高清视频在线播放| 人妻少妇系列中文字幕| 欧美一区二区在线日韩| 日韩欧美综合中文字幕| 国产精品内射婷婷一级二级| 富婆又大又白又丰满又紧又硬 | 色婷婷国产精品视频一区二区保健| 亚洲视频偷拍福利来袭| 国产一区二区三区免费福利| 日本午夜乱色视频在线观看| 国产小青蛙全集免费看| 国产欧美日韩在线精品一二区 | 樱井知香黑人一区二区| 国产精品日韩精品一区| 中文字幕高清免费日韩视频|