MySql

1. 為什么要存儲數(shù)據(jù)?

? 注冊登錄為例: 用戶注冊之后,我們需要在數(shù)據(jù)庫服務(wù)上保存用戶信息下次用戶登錄的時候,就可以查詢驗(yàn)證。

2.存儲數(shù)據(jù)的方式

1.文本文件 (插入較麻煩) 需要IO操作

2. excel表格 (最多支持約53000行數(shù)據(jù))? Jar

3. 數(shù)據(jù)庫管理系統(tǒng) (關(guān)系型數(shù)據(jù)庫) (存放數(shù)據(jù)格式類似excel, 但可以處理的量很大)

上述三種方式, 數(shù)據(jù)都存儲在硬盤上, 電腦開關(guān)機(jī),數(shù)據(jù)不受影響。

但程序中變量存儲在內(nèi)存中,內(nèi)存中數(shù)據(jù)開關(guān)機(jī)之后會重置。

3. 關(guān)系型數(shù)據(jù)庫

? 1. mysql

mysql 分為收費(fèi)版和社區(qū)版 (收費(fèi)版的提供技術(shù)支持),mysql 是開源的,市場很大,應(yīng)用很多,很多問題都有解決方案。

單個服務(wù)超過3百萬條數(shù)據(jù)之后就會變慢,但是我們可以采用分布式解決。

? 2. oracle

? ? ? 1. 收費(fèi)的(國企中,壟斷行業(yè))? ? ? 2. 單個節(jié)點(diǎn)處理很大量數(shù)據(jù)

4.什么是數(shù)據(jù)庫服務(wù)器,數(shù)據(jù)庫管理系統(tǒng)

? 1. 如果一個電腦安裝了mysql數(shù)據(jù)庫管理系統(tǒng),我們稱這個電腦為mysql服務(wù)器

? ? 2. mysql數(shù)據(jù)庫管理系統(tǒng),安裝的mysql服務(wù)程序、連接mysql, 備份數(shù)據(jù)庫...等工具

5.連接MySQL

? mysql -uroot -p? (mysql 代表執(zhí)行的bin目錄中 mysql.exe,-u+用戶名,-p+密碼)

容易遇到的問題 :

1. mysql不是內(nèi)部或外部命令

? ? 解決方案: 1. 每次進(jìn)入mysql的bin目錄,然后執(zhí)行。 2. 把bin目錄添加到環(huán)境變量。

2. 忘記密碼

? ? 解決方案:1. 如果沒有更改過密碼可以在日志中找到。

? ? 2. 如果更改過密碼,建議重裝,或者可以進(jìn)入無密碼模式進(jìn)行修改。

? ? eg: 修改mysql的加密方式, 然后設(shè)置 123456

? ? ALTER USER 'root'@'localhost' identified by '123456' ;

? ? flush privileges ;? 刷新

6.SQL語句

1.基本概念

數(shù)據(jù)庫(database)

表(sheet)

字段(相當(dāng)于對象中的一個屬性? col)

行(記錄? row)

createdatabasestudb; //創(chuàng)建stu數(shù)據(jù)庫

usestudb; //選擇studb

create? ? table? ? stu(id? int,name? varchar(100),gender? varchar(20),age? int); //創(chuàng)建stu表

insert? ? into? ? stu? ? (id,name,gender,age)? ? values? ? ('1','小明','男',12);

update? ? stu? ? set? ? name? ? =? ? 'zs'? ? where? ? id =? ? '? ? '? ? ;

?select? ? *? ? from? ? stu;

?delete? from? stu? where? id ="?";

2.數(shù)據(jù)類型

整數(shù)(無符號數(shù) unsigned ,有符號數(shù))

tinyint

int(常用 4字節(jié)? )

bigint

egg:# demo? (00000-999*23*23)

# create table aa(id int primary key auto_increment)

id 不會重復(fù),自增長類型的id是有順序的,

# 1. 當(dāng)別人知道一個之后,就可以通過暴力導(dǎo)出數(shù)據(jù)庫中其他數(shù)據(jù),

# 2. 不利于數(shù)據(jù)庫遷移

# 3. int 有一定的取值范圍 (數(shù)據(jù)比較多的時候很容易到取值范圍)

# 項(xiàng)目中解決問題: id設(shè)置成字符串類型,id的值通過程序生成(例如:雪花算法)

字符型(長度在5.5之前是字節(jié),5.5之后是字符)

char 指定長度

eg: name char(20),? 即使這個name占不了20個字符,也會開辟20個字符的空間。

varchar 指定長度

eg: varchar(20)? 如果name的值只能占8個字符,只會開辟8個字符空間,如果值超過了長度, 插入的時候會報(bào)錯。

如何選取:? 如果值的長度變化比較大,從節(jié)省空間的角度來考慮,我們可以使用varcahr,但是在計(jì)算長度的過程中會消耗一定的性能,如果值的長度變化不大,例如手機(jī)號碼,就可以用char。

text 不需要指定長度,一般用來存儲大段的文本

浮點(diǎn)型

float(3,2)? 前邊數(shù)字表示總長度,后邊數(shù)字表示小數(shù)點(diǎn)后面的長度

double(10,4)

decimal(7,2)

float 單精度,精確到小數(shù)點(diǎn)后7位,double雙精度,精確到小數(shù)點(diǎn)后15位? 不用來存儲重要數(shù)據(jù)。? 重要數(shù)據(jù)用decimal, decimal本質(zhì)是字符串。

時間格式

date 格式 YYYY-MM-DD? 日期 年月日

datetime 格式 yyyy-mm-dd? HH:MM:SS 存儲日期和時間

timestamp 格式? ? yyyymmdd? hhmmss 存儲日期和時間,時間戳

insert into dog values(1,'damao',5,'13535356363','fotball',20.06,500.25,'2020-07-13 16:00:00');

3.約束

非空 not Null(價格)

default '' 設(shè)置默認(rèn)值 (性別)

unique 唯一? (學(xué)號)

primary? key? ? 主鍵(not null? +? 唯一)

foreign? ? key? ? ? 外鍵? (表關(guān)聯(lián)中,該字段在其他表中為主鍵)

整數(shù)類型的可以設(shè)置? auto_increment? ? 自增

4.條件語句

where語句

//需要什么字段查詢什么字段

?select? name,age? from? person? where? name? like? '%c%';? %是通配符

?select? name,age? from? person where? age? >? 3;

?select? name,age? from? person? where? age? between? 2? and? 5;

order by 排序

order by? 字段? 【asc升序/desc降序】

order by? 字段一,字段二? 如果字段一值一樣,按照字段二進(jìn)行排序。

limit? begin(從0開始),count? (多用于分頁)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容