日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql学习应用_MySQL学习从这里出发!

發布時間:2024/3/13 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql学习应用_MySQL学习从这里出发! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近我重新整理了這部分 MySQL 的入門知識,更加詳細與梳理,大家可以去看看喔~

MySQL數據庫

開發學習中,想滿足一些需求,無疑需要經常與數據打交道,例如,我們在使用IO的一些技術的時候,常常需要將一些數據存儲到外部文件,可能大家會問,我們初學的時候常常會簡單的保存一些數據到 .txt 文件中,為什么還需要數據庫呢?

(一) 為什么使用數據庫?

(1) 查詢速度

假定我們將數據全部存儲在一個普通文件中(data.txt)_(以逗號間隔)

......

"Eminem",male,1972,"USA"

"Rihanna",female,1988,"Barbados"

"Taylor Swift",1989,female,"USA"

"Aavril Lavigne",1984,female,"Canada"

......

如果在我們的數據極為龐大的情況下,我們需要查詢其中的一些數據,例如,查詢Eminem的國籍,我們一般會使用遍歷,但是毫無疑問,這個響應時間會變得極其緩慢,但是使用數據庫后,它所提供的一些索引技術等就可以解決這樣的問題

(2) 保證數據完整有效

"Rihanna",female,1988,"Barbados"

"Rihanna",female,1995,"USA"

如果數據中出現了重名的情況,又如何判斷是不是同一個人呢?

如果data.txt文件中的數據被錯誤的修改,例如出生年份被修改為其他類型字符串這種無效表達怎么辦?

或許你可以在程序中寫一些邏輯判斷語句進而篩選處理這些問題,但是仍舊在數據較為龐大的情況下,會出現各種各樣的問題,增加了開發者的開發難度,而數據庫本身就制定了一些約束,從而保證了數據的完整且,有效,從而使開發者只需要更加注重于程序本身的設計,而不用花費過多的時間去處理數據上的一些細節問題

(3) 數據共享

常用來簡單存儲數據的 txt/excel 等均屬于單一文件,并且都是無法共享的,只支持當前用戶使用并且修改

而數據庫則允許用戶共享,不同的用戶可以同時存取數據庫中的數據,用戶也可以用各種方式通過接口使用數據庫,并提供數據共享

(4) 數據的安全性

在我們前者中,數據的修改是很隨意的

但是在實際開發中,我們有時候需要面臨,多個用戶檢索、修改同一文件中的數據,或者在并發情況下,寫同一文件或者記錄,而數據庫基于鎖等的一些技術便可以幫助我們解決這些問題

(5) 故障恢復

由于邏輯或者物理上的錯誤,導致了系統的錯誤操作,從而使得數據被皮懷,如何快速恢復數據,我們上面的單一文件系統顯然無法幫助我們解決問題,而數據庫卻有相關機制去彌補、處理相關問題

上面我們僅僅從幾個常見的點分析了為什么使用數據庫,當然遠遠不止這些,所以總的來說就是數據庫其特殊的存儲以及管理方式,既提高了效率,也極大的減少了開發人員的負擔

(二) 數據庫的基本概念

(1) 概述

數據庫(DateBase,簡稱DB)是一種用于存儲和管理數據的倉庫,簡單的說就是一個容器內,內部按照一定方式存儲著一些數據

(2) 特點

持久化存儲數據的。其實數據庫就是一個文件系統

數據獨立存儲,且集中控制,方便存儲和管理數據

使用了統一的方式操作數據庫 -- SQL

實現數據共享

數據一致性和可維護性,保證數據安全可靠

(三) MySQL數據庫的基本操作

MySQL服務啟動(兩種方式)

1. cmd--> services.msc 打開服務的窗口

2. 使用管理員打開cmd

A: net start mysql : 啟動mysql的服務

B: net stop mysql : 關閉mysql服務

MySQL登錄

1. 點擊 MySQL 5.7 Command Line Client,輸入密碼即可

2. 命令行登錄(配置好環境變量)

A: mysql -uroot -p密碼 //root為用戶名

B: mysql -hip -uroot -p連接目標的密碼

C: mysql --host=ip --user=root --password=連接目標的密碼

MySQL退出

1. exit

2. quit

(四) SQL簡單認識

(1) 什么是SQL?

Structured Query Language:結構化查詢語言

SQL就是訪問和處理關系數據庫的計算機標準語言,它定義了操作所有關系型數據庫的規則

大部分數據庫在SQL的標準上進行了擴展。而每一種數據庫操作的方式存在不一樣的地方,稱為方言。

但凡涉及到關系型數據庫就離不開SQL,例如在電商網站中存入商品信息,游戲中存儲裝備道具信息等

補充:

常見的關系型數據庫:Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL

商用:Oracle、DB2、Microsoft SQL Server

開源:MySQL

桌面:Microsoft Access

常見的非關系型數據庫:NoSql、Cloudant、MongoDb、redis、HBase

(2) SQL通用語法

1. SQL語句 單行或多行書寫,以分號結尾,并且可以使用空格和縮進來增強語句的可讀性

2. MySQL 數據庫的 SQL 語句不區分大小寫,關鍵字建議使用大寫

3. 3 種注釋

A: 單行注釋: -- 注釋內容 或 # 注釋內容(mysql 特有)

B: 多行注釋: /* 注釋 */

(五) SQL分類

數據定義語言——DDL(Data Definition Language)

允許用戶定義 (創建) 數據庫對象:數據庫,表,列等

數據操作語言——DML(Data Manipulation Language)

允許用戶對數據庫中表的數據進行增刪改

數據查詢語言——DQL(Data Query Language)

允許用戶查詢數據庫中表的記錄(數據)

數據控制語言——DCL(Data Control Language)

用來定義數據庫的訪問權限和安全級別,及創建用戶

(1) DDL:操作數據庫、表

1. 操作數據庫 —— CRUE

-- CURE ---> C(Create):創建 + R(Retrieve):查詢 + U(Update):修改 + D(Delete):刪除

1. C(Create):創建

-- 創建數據庫

CREATE DATABASE 數據庫名稱;

-- 創建數據庫,判斷不存在,再創建

CREATE DATABASE IF NOT EXISTS 數據庫名稱;

-- 創建數據庫,并且制定字符集

CREATE DATABASE 數據庫名稱 CHARACTER SET 字符集名;

2. R(Retrieve):查詢

-- 查詢所有數據庫名稱

SHOW DATABASES

-- 查詢某個數據庫的字符集 : 查詢某個數據庫的創建語句

SHOW CREATE DATABASE 數據庫名稱;

3. U(Update):修改

-- 修改數據庫的字符集

ALTER DATABASE 數據庫名稱 CHARACTER SET 字符集名稱;

4. D(Delete):刪除

-- 刪除數據庫

DROP DATABASE 數據庫名稱;

-- 判斷數據庫存在,存在再刪除

DROP DATABASE IF EXISTS 數據庫名稱;

5. 使用數據庫

-- 查詢當前正在使用的數據庫名稱

SELECT DATABASE();

-- 使用數據庫

USE 數據庫名稱;

2. 操作表

1. C(Create):創建

-- 語法 * 注意最后一行不需要加逗號(,)

CREATE TABLE 表名(

列名1 數據類型1,

列名2 數據類型2,

......

列名n 數據類型n

);

-- 數據類型

1. INT:整數類型

2. DOUBLE:小數類型

3. DATE:日期,只包含年月日,yyyy-MM-dd

4. DATETIME:日期,包含年月日時分秒 yyyy-MM-dd HH:mm:ss

5. TIMESTAMP:時間錯類型 包含年月日時分秒 yyyy-MM-dd HH:mm:ss

6. VARCHAR:字符串

-- 注意:time如果將來不給這個字段賦值,或賦值為null,則默認使用當前的系統時間來自動賦值

-- DOUBLE(6,3) 代表共保留6位數字,小數點后保留3位

-- 復制表

CREATE TABLE 表名 LIKE 被復制的表名;

2. R(Retrieve):查詢

-- 查詢某個數據庫中所有的表名

SHOW TABLES;

-- 查詢表結構

DESC 表名;

3. U(Update):修改

-- 修改表名

ALTER TABLE 表名 RENAME TO 新表名

-- 修改表的字符集

ALTER TABLE 表名 CHARACTER SET 字符集名稱;

-- 添加一列

ALTER TABLE 表名 ADD 列名 數據類型

-- 修改列名稱 類型

ALTER TABLE 表名 CHANGE 列名 新列名 新數據類型;

ALTER TABLE 表名 MODIFY 列名 新數據類型;

-- 刪除列

DROP TABLE 表名;

DROP TABLE IF EXISTS 表名;

4. D(Delete):刪除

DROP TABLE 表名;

Drop TABLE IF EXISTS 表名;

(2) DML:增刪改表中的數據

1. 表中添加數據

-- 語法:

INSERT INTO 表名(列名1,列名2,...列名n) VALUES(值1,值2,...值n);

-- 注意:

A: 列名和值要一一對應。

B: 如果表名后,不定義列名,則默認給所有列添加值

Eg:INSERT INTO 表名 Values(值1,值2,...值n);

C: 除了數字類型,其他類型需要使用引號(單雙都可以)引起來

2. 刪除表中數據

-- 語法:

DELETE FROM 表名 [WHERE 條件]

-- 注意:

若不加條件,則刪除表中所有記錄

-- 刪除所有記錄的兩種方式

A: DELETE FROM 表名; -- 不推薦使用,有多少條記錄就會執行多少次刪除操作

B: TRUNCATE TABLE 表名; -- 推薦使用,先刪除表,然后再創建一張一樣的表,效率更高

3. 修改表中數據

-- 語法:

UPDATE 表名 SET 列名1 = 值1, 列名2 = 值2,... [WHERE 條件];

-- 注意:

若不限定條件,則會修改表中的所有記錄

(3) DQL:查詢表中的記錄

SELECT * FROM 表名;

1. 語法:

SELECT

字段列表

FROM

表名列表

WHERE

條件列表

GROUP BY

分組字段

HAVING

分組之后的條件

ORDER BY

排序

LIMIT

分頁限定

2. 基礎查詢

-- 多個字段的查詢

SELECT 字段名1,字段名2... FROM 表名;

注意:

如果查詢所有字段,則可以使用*來替代字段列表。

-- 去除重復:

DISTINCT

-- 計算列

一般可以使用四則運算計算一些列的值。(一般只會進行數值型的計算)

IFNULL(表達式1,表達式2):null參與的運算,計算結果都為null

表達式1:哪個字段需要判斷是否為null

如果該字段為null后的替換值。

-- 起別名:

as:as也可以省略

3. 條件查詢

1. where子句后跟條件

2. 運算符

> 、< 、<= 、>= 、= 、<>

BETWEEN...AND

IN( 集合)

LIKE:模糊查詢

占位符:

_:單個任意字符

%:多個任意字符

IS NULL

AND 或 &&

OR 或 ||

NOT 或 !

-- 查詢年齡不等于20歲

SELECT * FROM student WHERE age != 20;

SELECT * FROM student WHERE age <> 20;

-- 查詢年齡大于等于20 小于等于30(三種方式)

SELECT * FROM student WHERE age >= 20 && age <=30;

SELECT * FROM student WHERE age >= 20 AND age <=30;

SELECT * FROM student WHERE age BETWEEN 20 AND 30;

-- 查詢年齡22歲,18歲,25歲的信息

SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25

SELECT * FROM student WHERE age IN (22,18,25);

-- 查詢英語成績為null

-- 下面第一句是錯誤的,null值不能使用 = 和(!=) 判斷

SELECT * FROM student WHERE english = NULL; (×)

SELECT * FROM student WHERE english IS NULL; (√)

-- 查詢英語成績不為null

SELECT * FROM student WHERE english IS NOT NULL;

-- 查詢姓張的有哪些? like

SELECT * FROM student WHERE NAME LIKE '張%';

-- 查詢姓名第二個是杰的人

SELECT * FROM student WHERE NAME LIKE "_杰%";

-- 查詢姓名是3個字的人

SELECT * FROM student WHERE NAME LIKE '___';

-- 查詢姓名中包含文的人

SELECT * FROM student WHERE NAME LIKE '%文%';

DQL:查詢語句

1. 排序查詢

-- 語法:

ORDER BY 子句

* ORDER BY 排序字段1 排序方式1 ,排序字段2 排序方式2...

-- 排序方式:

ASC:升序,默認的。

DESC:降序

-- 注意:如果有多個排序條件,則當前邊的條件值一樣時,才會判斷第二條件。

2. 聚合函數:將一列數據作為一個整體,進行縱向的計算。

COUNT:計算個數

-- 一般選擇非空的列:主鍵

-- count(*)

MAX:計算最大值

MIN:計算最小值

SUM:計算和

AVG:計算平均值

-- 注意:聚合函數的計算,排除null值。

解決方案:

1. 選擇不包含非空的列進行計算

2. IFNULL函數

3. 分組查詢:

-- 語法:

group BY 分組字段;

-- WHERE 和 HAVING 的區別?

WHERE 在分組之前進行限定,不滿足則不分組

HAVING在分組之后進行限定,不滿足則查不到

WHERE 后不可以跟聚合函數,having可以進行聚合函數的判斷

-- 常見舉例,鞏固一下語法

-- 按照性別分組,分別查詢男、女同學的平均分

SELECT sex , AVG(math) FROM student GROUP BY sex;

-- 按照性別分組,分別查詢男、女同學的平均分,人數

SELECT sex , AVG(math),COUNT(id) FROM student GROUP BY sex;

-- 按照性別分組,分別查詢男、女同學的平均分,人數 要求:分數低于60分的人,不參與分組

SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 60 GROUP BY sex;

-- 按照性別分組,分別查詢男、女同學的平均分,人數

-- 要求:分數低于60分的人,不參與分組或分組之后,人數要大于2個人

SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 60 GROUP BY sex HAVING COUNT(id) > 2;

SELECT sex , AVG(math),COUNT(id) 人數 FROM student WHERE math > 60 GROUP BY sex HAVING 人數 > 2;

4. 分頁查詢

-- 語法:

limit 開始的索引,每頁查詢的條數;

-- 公式:

開始的索引 = (當前的頁碼 - 1) * 每頁顯示的條數

每頁顯示5條記錄

SELECT * FROM student LIMIT 0,5; -- 第1頁

SELECT * FROM student LIMIT 5,5; -- 第2頁

SELECT * FROM student LIMIT 10,5;-- 第3頁

-- LIMIT 是一個MySQL"方言"

結尾:

如果內容中有什么不足,或者錯誤的地方,歡迎大家給我留言提出意見, 蟹蟹大家 !^_^

如果能幫到你的話,那就來關注我吧!(系列文章均會在公眾號第一時間更新)

在這里的我們素不相識,卻都在為了自己的夢而努力 ?

一個堅持推送原創Java技術的公眾號:理想二旬不止

總結

以上是生活随笔為你收集整理的mysql学习应用_MySQL学习从这里出发!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。