JavaEE 之 數據庫技術 MySQL(1)

資料 ? 青牛 ? 于 2019-06-28 16:01:51 ? 611 閱讀

課程安排

(一) 數據庫概述

(二) MySql概述

(三) MySql使用

(四) SQL的應用

(五) 案例編寫

(六) 課程總結

課程目標

通過MySql的學習,要熟練的掌握使用數據庫對數據的操作;
file
第1章 數據庫介紹

1.1 數據庫概述

前言 : 前一階段,我們學習了HTML的相關知識,可以對數據進行簡單的添加 修改 刪除,但是很遺憾的是我們對數據的處理只是暫時的,一刷新什么都沒有 了,究其原因是因為我們不能

對我們的操作的數據進行永久性的存儲,那么這時候我們就想有沒有永久存儲數據的技術呢?

1.1.1 什么是數據庫

數據庫就是存儲數據的倉庫,其本質是一個文件系統,數據按照特定的格式將數據存儲起來,用戶可以對數據庫中的數據進行增加,修改,刪除及查 詢操作。

數據庫軟件

file
1.1.2 什么是數據庫管理系統

數據庫管理系統(DataBase Management System,DBMS):指一種操作和管理數據庫的大型軟件,用于建立、使用和維護數據庫,對數據庫進 行統一管理和控制,以保證數據庫的安全性和完整性。

用戶通過數據庫管理系統訪問數據庫中表內的數據。

一大坨數據(文件) --> 數據庫管理系統(系統) MYSQL --> 操作數據庫管理系統的人(管理員) DBA 自己 (分鐘算工資) 6W/月

最終 : 永久的保存數據

管理數據庫操作系統的程序員叫做數據庫管理員 英文簡稱 DBA(database administrator),以后看見這樣的人一定要多跟他玩耍,這都是一個企業里大佬級人物

數據庫與數據庫管理系統的關系

file
如果你想往數據庫里存儲一條數據

1) 安裝一個數據庫軟件 mysql 5.5

2) 創建一個數據庫 MYSQL

3) 統一大數據庫 MYSQL 大數據庫下創建自己的小數據庫 來存儲我們自己的數據

學生管理系統 student_db

考試管理系統 exam_db

天氣管理系統 weather_db

交通管理系統 jiaotong_db

最起碼 需要管理孫建國 和 趙文明的數據 person_db person(字段 id name sex age from) = java類

4) 有了自己的小數據庫之后 我們還需要按類型存儲數據 按類型 --> 數據庫創建數據庫表的過程

5) 真正存儲數據

1.2 數據庫表

java是以類來進行數據的封裝,數據庫中以表為組織單位存儲數據。

表類似我們的Java類,表里面有字段就相當于是類中的屬性。

舉個例子 :

我們操作過的人員對應的類叫人員類

person

屬性如下

id 數字 編號

name 字符串 名字

.........

數據庫中也有類似的結構,叫做表

類名 person --> 數據庫 perosn 表

屬性 --> 字段

id Integer --> id number

name String --> name varchar

總結,就會發現以下對應關系。

類----------表

類中屬性----------表中字段

對象----------記錄
file

1.3 表數據

根據表字段所規定的數據類型,我們可以向其中填入一條條的數據,而表中的每條數據類似類的實例對象。表中的一行一行的我們稱之為記錄。

表記錄與java類對象的對應關系
file

1.4 常見數據庫

常見的數據庫管理系統

MYSQL :開源免費的數據庫,小型的數據庫.已經被Oracle收購了.MySQL6.x版本也開始收費。

Oracle :收費的大型數據庫,Oracle公司的產品。Oracle收購SUN公司,收購MYSQL。

DB2 :IBM公司的數據庫產品,收費的。常應用在銀行系統中.

SQLServer:MicroSoft 公司收費的中型的數據庫。C#、.net等語言常使用。

SyBase :已經淡出歷史舞臺。提供了一個非常專業數據建模的工具PowerDesigner。

SQLite : 嵌入式的小型數據庫,應用在手機端。

常用數據庫:MYSQL,Oracle(DBA認證 OCA OCP OCM).

這里使用MySQL數據庫。MySQL中可以有多個數據庫,數據庫是真正存儲數據的地方。

第2章 MySql數據庫

2.1 MySql安裝

  1. 點開mysql安裝包,會提示安裝mysql,點擊下一步即可,我們這里應用的是5.0 windows32位的安裝程序
    file

  2. 點擊 next 之后,會出現安裝類型選項 一共有“Typical(默認)”、“Complete(完全)”、“Custom(用戶自定義)”三個選項,我們選擇 Typical(默認)即可
    file

  3. 是確定你的安裝類型 和 安裝位置 有的同學可能不想安裝在C盤,其實大可以放心,重新安裝系統之后數據庫肯定也得重裝,所以安裝在C,格式化的時 候一波帶走豈不美滋滋
    file

  4. 正在安裝中耐心等候
    file

  5. 安裝好了之后,會彈出一個mysql的廣告,會告訴你mysql非常非常好用之類的,直接next即可
    file

  6. 補充說明mysql在各個領域都好用,直接點next

file

  1. 到此已經安裝完成mysql的安裝程序,然后出現這個頁面,這個頁面是告訴你馬上要開始配置一個mysql數據庫了,此處點擊finsh完成mysql軟件的安裝
    file

  2. 開始配置mysql的數據庫

file

  1. 此處問你是要詳細的配置一個mysql數據庫(Detailed Configuration)還是標準化配置一個mysql數據庫(StandardConfiguration)

作為一個mysql的專業從業人員來說,我們肯定是選擇詳細配置的

file

  1. 選擇服務器類型,“Developer Machine(開發測試類,mysql占用很少資源)”、“Server Machine(服務器類型,mysql占用較多資 源)”、

“Dedicated MySQL Server Machine(專門的數據庫服務器,mysql占用所有可用資源)”,

大家根據自己的類型選擇了,一般選“Server Machine”,不會太少,也不會占滿。但是我們作為helloworld來說,開發環境就夠用
file

  1. 選擇mysql數據庫的大致用途,

“Multifunctional Database(通用多功能型,好)”、

“Transactional Database Only(服務器類型,專注于事務處理,一般)”、

“Non-Transactional Database Only(非事務處理型,較簡單,主要做一些監控、記數用),

隨自己的用途而選擇了,我這里選擇“Multifunctional Database”,按“Next”繼續。
file

關于Innodb數據庫引擎,可參見https://baike.baidu.com/item/innodb/8970025?fr=aladdin

  1. 對InnoDB Tablespace進行配置,就是為InnoDB 數據庫文件選擇一個存儲空間,此處不建議修改,否則可能會造成數據庫損壞,

當然,對數據庫做個備份就沒問題了,這里不詳述。我這里沒有修改,使用用默認位置,直接按“Next”繼續

還有要注意,此處真的不建議修改,修改了會導致你的數據庫安裝失敗,其實裝在C盤也沒有什么,換句話說,你才能操作多少條數據呀,對不對,

也沒有什么,換句話說,你才能操作多少條數據呀,對不對,
file

  1. 選擇您的網站的一般mysql訪問量,同時連接的數目,

“Decision Support(DSS)/OLAP(20個左右)”、

“Online Transaction Processing(OLTP)(500個左右)”、

“Manual Setting(手動設置,自己輸一個數)”,我這里選“Online Transaction Processing(OLTP)”,

自己的服務器,應該夠用了,按“Next”繼續
file

  1. 是否啟用TCP/IP連接,設定端口,如果不啟用,就只能在自己的機器上訪問mysql數據庫了,

我這里啟用,把前面的勾打上,Port Number:3306,在這個頁面上,您還可以選擇“啟用標準模式”(Enable Strict Mode),

這樣MySQL就不會允許細小的語法錯誤。如果您還是個新手,我建議您取消標準模式以減少麻煩。但熟悉MySQL以后,

盡量使用標準模式,因為它可以降低有害數據進入數據庫的可能性。還有就是后面的"Add firewall exception for this port",這句話是說將3306 加入防火墻

如果你是win10的系統或者你沒有關閉防火墻,這步就一定要去掉那個勾,否則會導致你安裝失敗,一定要切記,按“Next”繼續
file

15 . 這一步也很關鍵,設置字符集,

【Standard Character Set】默認字符集,支持的其它字符的很少;

【Best Support For Multilingualism】能支持大部分語系的字符,主要是以UTF-8的形式存儲,所以一般選擇這一項;

【Manual Selected Default Character Set/ Collation】,手動設置字符集

其實此處也可以手動設置為UTF-8 或者 GBK (當然需要看下你的eclipse的編碼是GBK還是UTF-8,最后和eclipse保持一致)
file

  1. 設置Windows的操作,

【Install AS Windows Service】,設置Service Name,一般默認的就可以,這個名字會出現在windows服務里。

【Include Bin Directory in Windows PATH】,

把Bin目錄放在Windows Path路徑中,建議選擇上它,這樣在Dos窗口里直接可以訪問MySQL,不需要到MySQL的bin目錄下進,方便,快速。 按【Next】繼續。
file

  1. 這一步詢問是否要修改默認root用戶(超級管理)的密碼(默認為空),

“New root password”如果要修改,就在此填入新密碼(如果是重裝,并且之前已經設置了密碼,

在這里更改密碼可能會出錯,請留空,并將“Modify Security Settings”前面的勾去掉,安裝配置完成后另行修改密碼),

“Confirm(再輸一遍)”內再填一次,防止輸錯。 “Enable root access from remote machines(是否允許root用戶在其它的機器上登陸,如果要安全,就不要勾 上,如果要方便,就勾上它)”。

最后“Create An Anonymous Account(新建一個匿名用戶,匿名用戶可以連接數據不能操作數據,包括查詢)”,一般就不用勾了,設置完畢,按“Next”繼續。
file

  1. 確認設置無誤,如果有誤,按“Back”返回檢查。按“Execute”使設置生效。

file
file
到此 mysql數據庫軟件和mysql數據庫都已經安裝到位了,也是美滋滋

安裝后,MySQL會以windows服務的方式為我們提供數據存儲功能。開啟和關閉服務的操作:右鍵點擊我的電腦→管理→服務→可以找到MySQL服 務開啟或停止。
file

也可以在DOS窗口,通過命令完成MySQL服務的啟動和停止(必須以管理員身份運行cmd命令窗口)
file

2.2 登錄MySQL數據庫

MySQL是一個需要賬戶名密碼登錄的數據庫,登陸后使用,它提供了一個默認的root賬號,使用安裝時設置的密碼即可登錄。

格式1:cmd>mysql –u用戶名 –p

代碼

file

接下來輸入密碼即可登錄

file
登錄成功效果
file

格式2:cmd>mysql -hip地址 --user=用戶名 --password=密碼

例如:mysql -h127.0.0.1 --user=root --password=root

代碼:
file

Java --> java語言

網頁 --> HTML語言

數據庫 --> SQL語言
file

第3章 SQL語句

3.1SQL概述

3.1.1SQL語句介紹

數據庫是不認識JAVA語言的,但是我們同樣要與數據庫交互,這時需要使用到數據庫認識的語言SQL語句,它是數據庫的代碼。

SQL語言 是有規范的 是我們操作數據庫的特定語言 和 java一樣

java語言 是用來編寫應用程序(網站類應用程序)

SQL 專門操作數據庫的

結構化查詢語言(Structured Query Language)簡稱SQL,是關系型數據庫管理系統都需要遵循的規范。不同的數據庫生產廠商都支持SQL語句,但都有特有內容。

SQL 語言 標準 所有數據庫都會遵循的標準 各種不同的數據庫都會在標準之上建立一些自己的規范

SQL 方言

MYSQL limit 分頁 Oracle rownum 分頁

結構化查詢語言(Structured Query Language)簡稱SQL(發音:/?es kju? ?el/ "S-Q-L"),是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用于存取數據以 及查詢、更新和管理關系數據庫系統;同時也是數據庫腳本文件的擴展名。

結構化查詢語言是高級的非過程化編程語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有 完全不同底層結構的不同數據庫系統, 可以使用相同的結構化查詢語言作為數據輸入與管理的接口。結構化查詢語言語句可以嵌套,這使它具有極大的靈活性和強大的功能。

1986年10月,美國國家標準協會對SQL進行規范后,以此作為關系式數據庫管理系統的標準語言(ANSI X3. 135-1986),1987年得到國際標準組織的支持下成為國際標 準。不過各種通行的數據庫系統在其實踐過程中都對SQL規范作了某些編改和擴充。所以,實際上不同數據庫系統之間的SQL不能完全相互通用。

3.1.2 SQL語句分類

SQL分類:

1) 數據定義語言: 主要對數據存儲的結構進行定義 存儲一個數據 --> 表 --> 數據庫 創建 銷毀 修改 DDL

簡稱DDL(Data Definition Language),用來定義數據庫對象:數據庫,表,列等。關鍵字:create,alter,drop等 DDL 數據定義語言 主要定義 結構的

(創建(create)一個結構,修改(alter)一個結構,刪除(drop 摧毀)一個結構)

教室 DDL構建或者修改或者刪除這個教室(結構)

表 結構 DDL create table alter table drop table

對數據本身的操作

2) 數據操作語言:簡稱DML(Data Manipulation Language),用來對數據庫中表的記錄進行更新。 關鍵字:insert,delete,update等 對內容上進行操作(數據) 數據操作語言 DML 你對一條數據的操作 添加(INSERT) 修改(UPDATE) 刪除(DELETE)

對數據本身的查詢 3) 數據查詢語言:簡稱DQL(Data Query Language),用來查詢數據庫中表的記錄。關鍵字:select,from,where等 查詢(SELECT)

mysql select

hbase/hive select

公司 DCL DBA-->Java/BD 開發 Java運維 Java測試 老板

1) 數據控制語言:簡稱DCL(Data Control Language),用來定義數據庫的訪問權限和安全級別,及創建用戶。 權限操作(DBA)

root用戶 mysql中最高級的數據庫管理員賬戶

2) TCL 事務控制語言(不常用)

3.1.3 SQL通用語法

  1. SQL語句可以單行或多行書寫,以分號結尾

  2. 可使用空格和縮進來增強語句的可讀性

  3. MySQL數據庫的SQL語句不區分大小寫,關鍵字建議使用大寫
    例如:SELECT * FROM user。

  4. 同樣可以使用/**/的方式完成注釋,也可以用 -- 的形式完成注釋
    -- 注釋

2種
數值 和 非數值
4中基本數據類型

3.1.4 MySql的數據類型

MySQL中的我們常使用的數據類型如下

char 字符類型 固定長度 char(10) 一

varchar 可變長度的字符串 varchar(10) 一

date 日期
file
datetime 日期 時間

詳細的數據類型如下

file
file
file
操作數據庫的 --> SQL --> 分 3 類

1) DDL 數據定義語言 定義數據存儲結果 表 數據庫 create alter drop show

2) DML 數據操作語言 對數據進行 添加(insert) 修改(update) 刪除(delete)

3) DQL 重要 數據查詢語句 select

最終目的 存儲數據 并 操作數據

數據存儲在哪里? --> 表 --> 數據庫

3.2 DDL之數據庫操作:database

3.2.1 創建數據庫

格式:

  • create database 數據庫名;

  • create database 數據庫名 character set 字符集;

例如:

創建數據庫 數據庫中數據的編碼采用的是安裝數據庫時指定的默認編碼 utf8

file

創建數據庫 并指定數據庫中數據的編碼

file

效果 :
file

3.2.2 查看數據庫

查看數據庫MySQL服務器中的所有的數據庫:
file

效果:
file

查看某個數據庫的定義的:

show create database 數據庫名;

例如:

file
file
3.2.3 刪除數據庫

drop database 數據庫名稱;

例如:
file
file

3.2.4 使用數據庫

l 查看正在使用的數據庫:

file
file
此處因為我們沒有使用數據庫,所以顯示當前使用的數據庫為 NULL 其他的數據庫操作命令

使用某個數據庫:

use 數據庫名;

例如:
file
file

3.3 DDL之表操作:table

3.3.1創建表

格式:

file
舉例 : 比如對京東商城進行數據庫表分析
file

從上圖我們可以知道京東的商品是先分成大類,然后大類中再分成小類小類中再保存具體商品
file

那么接下來我們也按照這種思路來進行表的學習

例如:

創建一張商品類別表

此處需要注意的是表都是在不同的數據庫中,所以需要先指定要使用的數據庫

file
file
指定完數據庫就可以創建自己的表了

代碼:
file

效果

file

3.3.2 查看表

查看數據庫中的所有表:

格式:
file

file
查看表結構:

格式:desc 表名;
file
file

3.3.3 刪除表

格式:drop table 表名;
file
file

3.3.4 修改表結構格式:

1) alter table 表名 add 列名 類型(長度) [約束];

作用:修改表添加列.

例如:

為商品類別表添加一個新的字段為 分類描述 varchar(20)
file
file

注意 : desc 是SQL關鍵字,所以你要想用這個關鍵字作為列名必須轉移,也就是在列名上加 進行轉移,注意這不是單引號 而是 請詳見下圖
file

機械鍵盤這個鍵的位置可能有所不同,大家要細心查找

2) alter table 表名 modify 列名 類型(長度) 約束;

作用:修改表修改列的類型長度及約束.

例如:

為商品類別表的描述字段進行修改,類型varchar(50) 添加約束 not null(該字段的值不能為null)
file

file
3) alter table 表名 change 舊列名 新列名 類型(長度) 約束;

作用:修改表修改列名.

例如:

為商品類別表的分類名稱字段進行更換 更換為 cdesc varchar(30)
file
file

4) alter table 表名 drop 列名;

ALTER TABLE category CHANGE desccdesc VARCHAR(30);1

作用:修改表刪除列.

例如:

刪除商品分類表中cdesc這列

file
file
5) rename table 表名 to 新表名;

作用:修改表名

例如:

為分類表category 改名成 producttype
file
file

問題 : 這么操作實在是適應不了,mysql有沒有什么好操作一點的客戶端呢?

答案 : 有的

3.3.4 安裝mysql的第三方客戶端Navicat:

1.: 解壓第三方客戶單Navicat
file

  1. 因為這個客戶端是綠色版的所以點開直接就能用我們直接點開

file

  1. 找到Navicat的可執行程序雙擊打開即可,點開之后問你是試用還是注冊,可以點擊注冊,我們選擇注冊
    file

  2. 在剛才解壓的文件夾里找到注冊碼
    file

  3. 填入注冊碼即可

file

3.4 DML數據操作語言

3.4.1插入表記錄:insert

語法:

-- 向表中插入某些字段

insert into 表 (字段1,字段2,字段3..) values (值1,值2,值3..);

--向表中插入所有字段,字段的順序為創建表時的順序

insert into 表 values (值1,值2,值3..);

注意:

值與字段必須對應,個數相同,類型相同

值的數據大小必須在字段的長度范圍內

除了數值類型外,其它的字段類型的值必須使用引號引起。(建議單引號)

如果要插入空值,可以不寫字段,或者插入 null。

首先我們先把表名改回來,代碼
file

然后添加數據,代碼:
file

3.4.2 更新表記錄:update

用來修改指定條件的數據,將滿足條件的記錄指定列修改為指定值

語法:

--更新所有記錄的指定字段

update 表名 set 字段名=值,字段名=值,...;

--更新符合條件記錄的指定字段

update 表名 set 字段名=值,字段名=值,... where 條件;

注意:

列名的類型與修改的值要一致.

修改值得時候不能超過最大長度.

除了數值類型外,其它的字段類型的值必須使用引號引起

代碼 :
file

注意 : 更新的時候一定要按照某種條件再更新,一定要注意,因為更新全表數據這種需求根本就沒有,如果是因為你忘記寫條件而導致的全表數據更新那 么更新壞的數據你是需要按條的!

3.4.3 刪除記錄:delete

刪除有兩種情況

如果刪除表中的部分數據
語法
delete from 表名 where 條件;

如果刪除表中所有數據
語法:
delete from 表名;
或者
truncate table 表名;

此處有一道面試題:
傳說中的面試題 : 假設表里有一億條記錄,當刪除表中所有數據的時候,你會使用以下哪種方案,并說明原因
A. DELETE FROM 表
B. TRUNCATE TABLE 表?
答案 : B
解釋 : 當刪除表中所有數據的時候
delete from 表 數據DML語句 數據操縱語言 是從表中把數據一條一條的刪除,所以這樣刪除大表數據的時候一條一條刪會很慢
truncate table 數據DDL語句 數據定義語言 它不管表中有多少記錄,它會先摧毀這個表結構,然后重建表結構,所以這樣在刪除大表數據的時候就會很快?
但是需要注意個問題,如果你要是誤操作的話 delete from 是有可能恢復的 但是 truncate table是恢復不了的

代碼 :

file
第4章 SQL 約束

4.1主鍵約束

PRIMARY KEY 約束唯一標識數據庫表中的每條記錄。

主鍵必須包含唯一的值。

主鍵列不能包含 NULL 值。

每個表都應該有一個主鍵,并且每個表只能有一個主鍵。

主鍵的意義與作用

主鍵:表中經常有一個列或多列的組合,其值能唯一地標識表中的每一行。這樣的一列或多列稱為表的主鍵,通過它可強制表的實體完整性。當創建 或更改表時可通過定義 PRIMARY KEY 約束來創建主鍵。

一個表只能有一個 PRIMARY KEY 約束,而且 PRIMARY KEY 約束中的列不能接受空值。由于 PRIMARY KEY 約束確保唯一數據,所以經常用來定義標識列。

作用:
1)保證實體的完整性;
2)加快數據庫的操作速度
3) 在表中添加新記錄時,DBMS會自動檢查新記錄的主鍵值,不允許該值與其他記錄的主鍵值重復。
4) DBMS自動按主鍵值的順序顯示表中的記錄。如果沒有定義主鍵,則按輸入記錄的順序顯示表中的記錄。

4.1.1 添加主鍵約束

創建表時,在字段描述處,聲明指定字段為主鍵:
file

4.2 自動增長列

我們通常希望在每次插入新記錄時,數據庫自動生成字段的值。

我們可以在表中使用 auto_increment(自動增長列)關鍵字,自動增長列類型必須是整形,自動增長列必須為鍵(一般是主鍵)。

下列 SQL 語句把 "persons" 表中的 "pid" 列定義為 auto_increment 主鍵
file

向persons添加數據時,可以不為pId字段設置值,也可以設置成null,數據庫將自動維護主鍵值:
file

擴展:默認AUTO_INCREMENT 的開始值是 1,如果希望修改起始值,請使用下列 SQL 語法:

ALTER TABLE person

MODIFY COLUMN pid int(8) NOT NULL AUTO_INCREMENT FIRST ;

4.3 非空約束

NOT NULL 約束強制列不接受 NULL 值。

NOT NULL 約束強制字段始終包含值。這意味著,如果不向字段添加值,就無法插入新記錄或者更新記錄。

下面的 SQL 語句強制所有列不接受 NULL 值:
file

注意 : 主鍵如果標記為primary key 就已經不為null了,所以此處not null 可以省略?

版權聲明:原創作品,允許轉載,轉載時務必以超鏈接的形式表明出處和作者信息。否則將追究法律責任。來自海牛部落-青牛,http://hainiubl.com/topics/36802
點贊
成為第一個點贊的人吧 :bowtie:
回復數量: 0
    暫無評論~~
    • 請注意單詞拼寫,以及中英文排版,參考此頁
    • 支持 Markdown 格式, **粗體**、~~刪除線~~、`單行代碼`, 更多語法請見這里 Markdown 語法
    • 支持表情,可用Emoji的自動補全, 在輸入的時候只需要 ":" 就可以自動提示了 :metal: :point_right: 表情列表 :star: :sparkles:
    • 上傳圖片, 支持拖拽和剪切板黏貼上傳, 格式限制 - jpg, png, gif,教程
    • 發布框支持本地存儲功能,會在內容變更時保存,「提交」按鈕點擊時清空
    Ctrl+Enter
    江西快三下期预测 聚丰达配资 福建体彩11选523号开奖结果 体彩排列3三天计划投资 中科曙光股票股吧 甘肃11选5网上可以买吗 东商期货配资 江苏快三和值技巧 广东11先5走势图一定牛 黑龙江11选5任5遗漏 靠谱的手机炒股软件