友快網

導航選單

白嫖!大廠年薪50W程式設計師分享的MySQL工作筆記,Github上都找不到

今日分享開始啦,請大家多多指教~

1、什麼是MySQL

MySQL是一個關係型資料庫管理系統

MySQL所使用的 SQL 語言是用於訪問資料庫的最常用標準化語言。由於其體積小、速度快、總體擁有成本低,尤其是開放原始碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站資料庫。

1。2、連線資料庫

命令列連線!

資料庫xxx語言

DDL 定義

DML 操作

DCL 控制

DQL 查詢

1。3操作資料庫

操作資料庫>操作資料庫中的表>操作資料庫中表的資料

建立資料庫

CREATE DATABASE IF NOT EXISTS school;如果不存在資料庫school則建立

刪除資料庫

DROP DATABASE IF EXISTS hello;如果存在資料庫hello則刪除

使用資料庫

——tab鍵上面,如果你的表名或者欄位名是一個特殊字元,就需要到反引號

USE `SCHOOL`

1。4、資料庫列型別

數值

tinyint 十分小的資料 1個位元組

smalint 較小的資料 2個位元組

mediumint 中等大小的資料 3個位元組

==int 標準的整數 4個位元組 java的int ==

bigint 較大的資料 8個位元組

float 浮點數 4個位元組

double 浮點數 8個位元組

decimal 字串形式的浮點數 金融計算的時候,一般使用decimal

字串

char 字串固定大小的 0~255

==varchar 可變字串 0~65535 ** 常用的   String==

tinytext 微型文字 2^8-1

text 文字串 2^16-1 儲存大文字

時間日期

date YYYY-MM-DD,日期格式

time HH:mm:ss 時間格式

==datetime YY-MM-DD HH:mm:ss 最常用的時間格式 ==

timestamp 時間戳     1970。1。1到現在的毫秒值!

year 年份表示

null

沒有

,未知

注意,不用使用NULL進行運算,跟NULL運算結果為NULL

1。5、資料庫的欄位屬性(重點)

Unsigned:

●無符號的整數

●聲明瞭該列不能宣告為負數

zerofill:

●0填充的

●不足的位數,使用0來填充, int(3) , 005

autoincrement:

● 通常理解為自增,自動在上一條記錄的基礎上+1(預設)

●通常來設計唯一的主鍵~ index,必須是整數型別

非空 NULL not null

●假如設定為not null,如果不給他賦值,就會報錯!

●NULL,如果不填寫值,預設就是null!

預設:

●設定預設的值!

●sex,預設值是

,如果不指定該列的值,則會有預設的值!

拓展:

id 主鍵

`version` 樂觀

is_delete

刪除

gmt_create 建立時間

gmt_update 修改時間

1。6、建立資料庫表

格式

常用命令

1。7、資料表的型別

——關於資料庫的引擎

INNODB 預設使用

MYISAM 早些年使用的

常規使用操作:

MYISAM 節約空間,速度較快

INNODB 安全性高,事務的處理,多表多使用者操作

在物理空間存在的位置

所有的資料庫檔案都存在data目錄下,一個資料夾就對應一個數據庫

本質還是檔案的儲存!

MySQL引擎在物理檔案上的區別

INNODB在資料庫表中只有一個*。frm檔案,以及上級目錄下的ibdata1檔案

MYISAM對應檔案

*。frm - 表結構的定義檔案

*。MYD - 資料檔案(data)

*。MYI - 索引檔案(index)

設定資料庫表的字符集編碼

CHARSET=utf8

不設定的話,會是MySQL預設的字符集編碼latin-1(不支援中文)

在my。ini中配置預設的編碼

character-set-server=utf8

2、修改刪除表

2。1、修改

2。2、刪除

——刪除表(如果表存在則刪除)

DROP TABLE IF EXISTS teacher1

所有的建立和刪除操作儘量加上判斷,以免報錯~

注意點:

`反引號,欄位名使用這個括起來

註釋—— /* */

sql大小寫不敏感,建議寫小寫

所有的符號都用英文!

3、MySQL資料管理

3。1、外來鍵

方式一:在建立表的時候增加約束(麻煩,比較複雜)

刪除有外來鍵關係的表的時候,必須先刪除引用別人的表(從表),再刪除被引用的表(主表)

方式二:建立表成功後,新增外來鍵約束

以上的操作都是物理外來鍵,資料庫級別的外來鍵,我們不建議使用!(避免資料過多造成困擾)

最佳實現

資料庫就是單純的表,只用來存資料,只有行(資料)和列(欄位)

我們想使用多張表的資料,想使用外來鍵(程式去實現)

3。2、DML語言

資料庫意義:資料儲存,資料管理

DML語言:資料操作語言

INSERT

UPDATE

DELETE

3.2.1、新增

insert

語法:INsert into 表名(欄位名1,欄位名2,欄位名3,……) values (‘值1’,‘值2’,‘值3’,。。。)

注意事項:

1。欄位和欄位使用英文逗號隔開

2。欄位是可以省略的,但是後面的值要一一對應,不能少

3。可以同時插入多條語句,VALUES後面的值需要使用逗號隔開VALUES (),(),……

3.2.2、修改

update 修改

(條件) set原來的值=新值

條件:where子句 運算子 id等於某個值,大於某個值,在某個區間內修改

—— 透過多個條件定位資料

UPDATE `student` SET `name`=‘長江七號’ WHERE `name`=‘RYGAR’ AND `sex`=‘女’

語法:UPDATE 表名 SET 欄位名1=‘值1’,欄位名2=‘值2’,… WHERE 條件

注意:

欄位名儘量帶上反引號`

條件,篩選的條件,如果沒有指定,則會修改所有的列

值可以是一個具體的值,也可以是一個變數

UPDATE `student` SET `name`=‘孫悟空’,`password`=‘sunwukong123’,`birthday`=NOW() WHERE `name`=‘長江七號’ AND `password`=‘lisi123’

這個now()和current_time都是當前時間

3.2.3、刪除

delete命令

語法:`delete from 表名[where 條件]

TRUNCATE命令

作用:完全清空一個數據庫表,表的結構和索引約束不會變!

——清空student表

——語法: TRUNCATE 表名

TRUNCATE `student`

DELETE和TRUNCATE的區別

相同點:都能刪除資料,都不會刪除表結構

不同點:

1。TRUNCATE重新設定自增列,計數器會歸零

2。TRUNCATE不會影響事務

DELETE刪除的問題,重啟資料庫,現象(MySQL5。0版本有這些現象,但MySQL8。0版本修復了這些問題)

INNODB 自增列會從1開始(存在記憶體當中的,斷點即失)

MYISAM 繼續從上一個自增量開始(存在檔案中的,不會丟失)

3.2.4、DQL查詢資料(重點)

DQL(Data Query Language:資料查詢語言)

所有的查詢操作都用它SELECT

簡單的查詢,複雜的查詢它都能做

資料庫中最核心的語言,最重要的語句

使用頻率最高的語句

有的時候,列名字不是那麼的見名知意。我們起別名 AS 欄位名 AS 別名

去重 DISTINCT

作用:去除SELECT查詢出來的結果中重複的資料,只顯示一條

—— 查詢一下哪些同學參加了考試,成績

SELECT * FROM result  —— 查詢全部的考試成績

SELECT `StudentNO` FROM result ——查詢有哪些同學參加了考試

發現有重複資料,去重使用DISTINCT關鍵詞

SELECT DISTINCT `studentNo` FROM result —— 發現重複資料,去重

檢視MySQL版本

SELECT version();

資料庫的列(表示式)

白嫖!大廠年薪50W程式設計師分享的MySQL工作筆記,Github上都找不到

資料庫中的表示式:文字值,列,null,函式,計算表示式,系統變數…

select 表示式 from 表

3.2.5、where條件子句

作用:檢索資料中符合條件的值

搜尋的條件由一個或者多個表示式組成! 結果為布林值

邏輯運算子

| 運算子 | 語法 | 描述 |

|–|——|–|

| and && | a and b / a&&b | 邏輯與,兩個都為真,結果為真 |

| or || | a or b / a || b | 邏輯或,其中一個為真,結果為真 |

| Not ! | not a / !a | 邏輯非,真為假,假為真! |

儘量使用英文字母

白嫖!大廠年薪50W程式設計師分享的MySQL工作筆記,Github上都找不到

白嫖!大廠年薪50W程式設計師分享的MySQL工作筆記,Github上都找不到

查詢出了1000號學生的成績

白嫖!大廠年薪50W程式設計師分享的MySQL工作筆記,Github上都找不到

白嫖!大廠年薪50W程式設計師分享的MySQL工作筆記,Github上都找不到

模糊查詢:比較運算子

白嫖!大廠年薪50W程式設計師分享的MySQL工作筆記,Github上都找不到

查詢姓劉的學生

—— LIKE關鍵詞,%(代表0到任意個字元) _(一個字元)

SELECT `StudentNo`,`StudentName` FROM `student` WHERE `StudentName` LIKE ‘劉%’;

白嫖!大廠年薪50W程式設計師分享的MySQL工作筆記,Github上都找不到

查詢姓劉的學生,姓名為兩個字的學生

SELECT `StudentNo`,`StudentName` FROM `student` WHERE `StudentName` LIKE ‘劉_’;

白嫖!大廠年薪50W程式設計師分享的MySQL工作筆記,Github上都找不到

查詢姓劉的學生,姓名為三個字的學生

SELECT `StudentNO`,`StudentName` FROM `student` WHERE `StudentName` LIKE ‘劉__’;

白嫖!大廠年薪50W程式設計師分享的MySQL工作筆記,Github上都找不到

查詢名字包含“嘉”字的學生

SELECT `StudentNo`,`StudentName` FROM `student` WHERE `StudentName` LIKE ‘&嘉&’;

白嫖!大廠年薪50W程式設計師分享的MySQL工作筆記,Github上都找不到

==IN(具體的一個或者多個值)==關鍵字

查詢1001,1003,1003號學生

SELECT `StudentNo`,`StudentName` FROM `student` WHERE `StudentNo` IN (1001,1002,1003);

白嫖!大廠年薪50W程式設計師分享的MySQL工作筆記,Github上都找不到

查詢在安徽的學生和在河南洛陽的學生

白嫖!大廠年薪50W程式設計師分享的MySQL工作筆記,Github上都找不到

白嫖!大廠年薪50W程式設計師分享的MySQL工作筆記,Github上都找不到

查詢有出生日期的學生,不為空

SELECT `StudentNo`,`StudentName` FROM `student` WHERE `BornDate` IS NOT NULL;

查詢沒有出生日期的學生(為空)

SELECT `StudentNo`,`StudentName` FROM `student` WHERE `BronDate` IS NULL;

白嫖!大廠年薪50W程式設計師分享的MySQL工作筆記,Github上都找不到

今日份分享已結束,請大家多多包涵和指點!

上一篇:全網首發!阿里p7私藏的ZooKeeper面試題萬字總結,擼完加薪10k
下一篇:AirPods 新增助聽器功能,加入查詢網路增強定位