? 簡介:大家好,我是zy阿二,是一名對(duì)知識(shí)充滿渴望的自由職業(yè)者。
?? 最近我沉溺于Python的學(xué)習(xí)中。你所看到的是我的學(xué)習(xí)筆記。
?? 如果對(duì)你有幫助,請(qǐng)關(guān)注我,讓我們共同進(jìn)步。有不足之處請(qǐng)留言指正!
Mysql系列文章傳送門,建議循序漸進(jìn)的學(xué)習(xí):
1. Mysql入門安裝 & Pycharm可視化鏈接MySQL。入門篇【本文】
2. 用Pycharm熟悉MySQL命令,實(shí)現(xiàn)增刪改查基本操作。基礎(chǔ)篇
數(shù)據(jù)庫的基本概念:
Q: | A: |
---|---|
什么是數(shù)據(jù)庫? | DB(DataBase)數(shù)據(jù)倉庫,軟件,安裝在操作系統(tǒng)之上 |
有什么用? | 存儲(chǔ)數(shù)據(jù),管理數(shù)據(jù) 。在服務(wù)端讀寫數(shù)據(jù) |
數(shù)據(jù)庫分類 | SQL關(guān)系型數(shù)據(jù)庫:MySQL、Oracle、Sql Server、DB2、SQLlite |
為什么要選MySQL | 主流,可以免費(fèi)使用 |
關(guān)系型數(shù)據(jù)庫概念 | 通過表和表之間,行和列之間的關(guān)系進(jìn)行數(shù)據(jù)的存儲(chǔ),通過外鍵關(guān)聯(lián)來建立表與表之間的關(guān)系 |
那有其他類型的數(shù)據(jù)庫嗎? | 非關(guān)系型數(shù)據(jù)庫:NoSQL。 代表:MongoDB、Redis |
什么是非關(guān)系型數(shù)據(jù)庫 | 數(shù)據(jù)以鍵值對(duì)的形式存儲(chǔ),而對(duì)象之間的關(guān)系通過每個(gè)對(duì)象自身的屬性來決定 |
數(shù)據(jù)庫的構(gòu)成 | (MySQL)軟件本身(我的電腦) → (database)數(shù)據(jù)庫(文件夾) → (table)表(文件),我們的數(shù)據(jù)都是寫入到表里的,父子關(guān)系。 |
一、 Mysql下載安裝和初始化操作
1. 下載Mysql官方地址
本教程演示版本:5.7.38。也是當(dāng)下最為主流的版本。
2. 解壓到自定義路徑。
本教程解壓的的路徑為:D:\mysql-5.7.38-winx64
3. 在 D:\mysql-5.7.38-winx64 下新建一個(gè)txt文件,并寫入:
[mysql]
# 設(shè)置mysql客戶端默認(rèn)字符集
default-character-set=utf8
[mysqld]
# 設(shè)置3306端口
port = 3306
# 設(shè)置mysql的安裝目錄
basedir = D:\\mysql-5.7.38-winx64
# 設(shè)置mysql數(shù)據(jù)庫的數(shù)據(jù)的存放目錄
datadir = D:\\mysql-5.7.38-winx64\\data
# 允許最大連接數(shù)
max_connections=20
# 服務(wù)端使用的字符集默認(rèn)為8比特編碼的latin1字符集
character-set-server=utf8
5. 保存并關(guān)閉后 重命名 新建.txt 為 my.ini
重要??! 務(wù)必確保文件的類型是 .ini
右擊重命名后的文件,點(diǎn)擊查看屬性,可以看到下圖窗口畫面。
6. 加環(huán)境變量。
- 按win鍵
- 直接打字“環(huán)境變量”
- 回車
- 進(jìn)入如下畫面后按圖所示步驟
- 最終在 path中加入 D:\mysql-5.7.38-winx64\bin 然后確定即可。
注: 此操作的目的是后面使用cmd是可以直接輸入mysql,而不需要寫完整的路徑。
7. 打開命令行(cmd),輸入如下命令
enter鍵 = 執(zhí)行命令。
1.
>mysqld –install mysql57
>//創(chuàng)建mysql服務(wù),我寫mysql57是因?yàn)槲业陌姹臼?.7.x。名字沒有要求,可以隨便寫。
>//后面 開啟服務(wù)、刪除服務(wù)、停止服務(wù) 時(shí),都需要用這個(gè)名字。
2.
>mysqld --initialize -insecure
>//在剛剛設(shè)置環(huán)境變量的D:\mysql-5.7.38-winx64目錄下創(chuàng)建一個(gè)data的文件夾,用于后續(xù)存放數(shù)據(jù)庫文件
>//必須要?jiǎng)?chuàng)建,如果沒有創(chuàng)建的話,后面是無法開啟服務(wù)
3.
>net start mysql57
>//開啟mysql服務(wù)命令。 至此,基本已經(jīng)完成了MySQL的安裝。
// 用管理員方式啟動(dòng) CMD
>關(guān)閉服務(wù)輸入:net stop mysql57
>刪除服務(wù)命令:sc delete mysql57
出現(xiàn)上述情況:
一、可能沒有創(chuàng)建my.ini,或者命名錯(cuò)誤,文件類型不是ini
二、缺少data文件夾,執(zhí)行mysqld --initialize-insecure
三、可能有多個(gè)MySQL服務(wù),全部刪除重新安裝,再操作
8. 鏈接數(shù)據(jù)庫
1. cmd命令行鏈接MySQL
>mysql -u root -p**
//鏈接數(shù)據(jù)庫。 首次鏈接會(huì)看到下圖內(nèi)容
// 提示Enter password,輸入密碼。 不用管,直接按回車即可。
2. 首次連接MySQL后設(shè)置一個(gè)密碼。以便數(shù)據(jù)安全以及后面第三方鏈接數(shù)據(jù)庫時(shí)都需要一個(gè)密碼。
> set password = password("000000");
> //注: 此處密碼按自己習(xí)慣設(shè)置。 設(shè)置好后,下次鏈接數(shù)據(jù)庫的時(shí)候就需要用到它。如果忘記將無法鏈接?!就浢艽a重置方法后續(xù)在此附上傳送門】
> //附言: 現(xiàn)在正式進(jìn)入mysql命令的輸入,基本所有的語句結(jié)束都需要加 ; (英文的分號(hào)) 再回車。如果忘記加了可以回車后再加 ; 再回車。我剛開始接觸到時(shí)候總是忘記寫。
4. 首次連接MySQL后設(shè)置一個(gè)密碼。以便數(shù)據(jù)安全以及后面第三方鏈接數(shù)據(jù)庫時(shí)都需要一個(gè)密碼。
> create test;
> //注: 創(chuàng)建一個(gè)databese (數(shù)據(jù)庫文件夾)在以后的Python的連接數(shù)據(jù)庫的時(shí)候都需要選擇鏈接的databese名字。所以在這里事先創(chuàng)建好一個(gè)。方便后面調(diào)用。
5. 查看當(dāng)前已有數(shù)據(jù)
> show databases;
> //查看一下當(dāng)前MySQL中所有的database
二、Pycharm 可視化連接 MySQL 圖形界面
1. 按圖示Pycharm 連接 MySQL
首次連接需要安裝mysql的驅(qū)動(dòng),第11步“測(cè)試連接”按鈕的上方會(huì)提示“下載”,點(diǎn)擊下載,等待完成即可。(我已經(jīng)安裝過,所以沒有提示了。)
2. 鏈接表 & 創(chuàng)建表。
2.1 鏈接已有的結(jié)構(gòu)database
2.2 新建結(jié)構(gòu)database和表table
3. 查看表數(shù)據(jù)
4. 進(jìn)入Mysql控制臺(tái)
三、列的數(shù)據(jù)類型
注:解釋均建立在嚴(yán)格模式下。
4.1 整數(shù)
int
- 表示 取值范圍 -21474836848 ~21474836848,可以寫入這個(gè)區(qū)間的任意一個(gè)整數(shù)
- 最常用的整數(shù)類型
int unsigned
- 表示 取值范圍 0 ~ 4294967295,不支持負(fù)數(shù)。可以寫入這個(gè)區(qū)間的任意一個(gè)整數(shù)
int(5) zerofill
- 長度位5的整數(shù),當(dāng)寫入的數(shù)據(jù)不滿足5位時(shí),會(huì)在左邊用0填充。> 例如:2 會(huì)顯示為 00002。
- 如果滿足條件則正常顯示。> 例如:12345 會(huì)顯示 12345
4.2. 小數(shù)
decimal(m,n)
- m 表示數(shù)字的總位數(shù),最大65位。寫入的位數(shù)超過了設(shè)置的位數(shù)時(shí),會(huì)報(bào)錯(cuò)。
- n表示小數(shù)點(diǎn)后的位數(shù)。最大30位。當(dāng)寫入的位數(shù)超過了設(shè)置的位數(shù)時(shí),會(huì)自動(dòng)四舍五入保留n位
- 最常用的小數(shù)類型
float[(m,n)]
- 單精度浮點(diǎn)數(shù),非準(zhǔn)確小數(shù)值,m是數(shù)字總位數(shù),n是小數(shù)點(diǎn)后的位數(shù)。32位二進(jìn)制存儲(chǔ)
- 和Python的float類似,不常用。
double[(m,n)]
- 雙精度浮點(diǎn)數(shù),非準(zhǔn)確小數(shù)值,m是數(shù)字總位數(shù),n是小數(shù)點(diǎn)后的位數(shù)。64位二進(jìn)制存儲(chǔ)
- 比float存儲(chǔ)的數(shù)據(jù)多一點(diǎn),不常用。
4.3. 字符串
char(m)
- 定長字符串,m代表字符串的長度,最多可容納255個(gè)字符。
- 表現(xiàn):即使寫入的內(nèi)容長度小于m,底層也會(huì)占用m個(gè)字符。
- 例如:char(5) , 寫入一個(gè)“NO” 實(shí)際只有2個(gè)字符,但是底層數(shù)據(jù)庫中NO占了5個(gè)字符。如果寫入“Happy birthday” 超過了5個(gè)字符就會(huì)報(bào)錯(cuò)。
varchar(m)
變長字符串,m 代表字符串的長度,最多可容納 65535個(gè)字符。
表現(xiàn): 即使寫入的內(nèi)容小于m,也會(huì)按照數(shù)據(jù)的真實(shí)長度存儲(chǔ),如果超出m長度限制,則會(huì)報(bào)錯(cuò)。
例如: varchar(5) , 寫入一個(gè)“NO” 沒有任何問題。底層數(shù)據(jù)庫中占2個(gè)字符。但是如果寫入“Happy birthday” 超過了5個(gè)字符就會(huì)報(bào)錯(cuò)。
最常用的字符串?dāng)?shù)據(jù)類型
text
- 用于保存變長的長字符串,最多可容納65535(2**16 -1)個(gè)字符
- 一般情況下,長文本會(huì)用text類型。 例如:文章、新聞、等。。
mediumtext
- 用于保存變長的長字符串,最多可容納16,777,215(2**24 -1)個(gè)字符
- 相比text,能容納的字符更多。 (幾乎用不到)
longtext
- 用于保存變長的長字符串,最多可容納4,294,967,295 或4GB(2**32 -1)個(gè)字符
- 相比mediumtext,能容納的字符更多。(更幾乎用不到)
4.4. 時(shí)間
datetime
- 格式:YYYY-MM-DD HH:MM:SS
- 容納區(qū)間:1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
- 最常用的時(shí)間類型
timestamp
- 格式:YYYY-MM-DD HH:MM:SS
- 容納區(qū)間:1970-01-01 00:00:00 ~ 2037-12-31 23:59:59
- 相比datetime它容納的區(qū)間更小。并且他會(huì)將寫入的時(shí)間從當(dāng)前時(shí)區(qū)轉(zhuǎn)換到UTC(世界標(biāo)準(zhǔn)時(shí)間)進(jìn)行存儲(chǔ),查詢的時(shí)候又轉(zhuǎn)化為客戶當(dāng)?shù)貢r(shí)間進(jìn)行返回。
- 而datetime不做任何改變。寫入時(shí)間是什么,返回的就是什么。
- 也就是軟件在需要跨地域使用的時(shí)候,需要用到這個(gè)參數(shù)。
date
- 格式:YYYY-MM-DD
- 容納區(qū)間:1000-01-01~ 9999-12-31
- 只有年月日,沒有分時(shí)秒
time
- 格式:YYYY-MM-DD HH:MM:SS
- 容納區(qū)間:-838:59:59 ~ 838:59:59
- 只有時(shí)分秒,沒有年月日。
Mysql還有很多其他類型的數(shù)據(jù),例如tinyint、smallint、mediumint、set、enum、Blob … 詳見官方文檔
五、列的附加屬性
命令 | 作用 |
---|---|
UnSigned |
無符號(hào)的,代表不能為負(fù)數(shù) |
ZEROFILL |
位數(shù)不足時(shí)用0填充,如:往int(5)類型的列里寫入1 ,數(shù)據(jù)庫會(huì)儲(chǔ)存為00001用0湊足5位 |
Auto_InCrement |
自增,代表該列數(shù)據(jù)會(huì)自動(dòng)遞增無需手動(dòng)寫入,默認(rèn)每次遞增1。 通常用來設(shè)計(jì)唯一的主鍵,必須是整數(shù)類型 |
AUTO_INCREMENT=5 |
設(shè)置步長,即每次遞增5。只影響當(dāng)前表 |
SET @@auto_increment_increment=5 |
設(shè)置全局步長,影響所有使用遞增的表 |
not null |
設(shè)置該列必須填上數(shù)據(jù) (NOT NULL),默認(rèn)可以為空(NULL) |
default |
設(shè)置默認(rèn)值,如:設(shè)定性別列的默認(rèn)值=“男” 。寫入時(shí)該列未指定數(shù)值 , 那么就是默認(rèn)值為"男"。 |
五、基本命令
show databases; --查看當(dāng)前已有數(shù)據(jù)庫名
create database 數(shù)據(jù)庫名; --創(chuàng)建數(shù)據(jù)庫
show create database 數(shù)據(jù)庫名;-- 查看create database創(chuàng)建數(shù)據(jù)庫用的語句
drop database 數(shù)據(jù)庫名; --刪除數(shù)據(jù)庫
use 數(shù)據(jù)庫名; --打開、進(jìn)入數(shù)據(jù)庫
show tables; --查看當(dāng)前數(shù)據(jù)庫所有的表
create table 表名(); --創(chuàng)建一個(gè)表
show create table 表名;-- 查看create table用的語句
describe表名; --顯示表的信息。方法1
desc 表名; --顯示表的信息。方法2
exit --退出連接
-- --單行注釋
# --單行注釋
/*...*/ --多行注釋
六、 創(chuàng)建一個(gè)表
嘗試創(chuàng)建一個(gè)表,了解表的基本構(gòu)成。并嘗試寫入一行數(shù)據(jù),看看結(jié)果。
首先一個(gè)表需要擁有列名,以及對(duì)應(yīng)的數(shù)據(jù)類型,適當(dāng)?shù)膫渥?,以及一個(gè)主鍵,主鍵在表中具有唯一性,可理解為行名。類似在execl中,列名+行名就能定位一個(gè)精準(zhǔn)的單元格。這是一個(gè)表必要的內(nèi)容。文章來源:http://www.zghlxwxcb.cn/news/detail-817056.html
create table if not exists tb2 #如 果 tb 不存在則創(chuàng)建一個(gè)名為 tb 的表
(
# not null=不能為null,auto_increment=自增類型數(shù)據(jù),comment后面跟的是備注
id int(4) not null auto_increment comment '學(xué)號(hào)',
name varchar(30) not null default '未知' comment '姓名', # default '匿名' 代表這列有默認(rèn)值是匿名
password varchar(20) not null default '000000' comment '密碼',
gender varchar(2) not null default '男' comment '性別',
birthday DATETIME default null comment '出生日期', # default null 代表默認(rèn)為空
primary key (id) # 最后申明主鍵,也可以寫直接寫在id的屬性中
) engine = InnoDB # 設(shè)置存儲(chǔ)的引擎為innodb。能提高并發(fā)性能。
default CHARSET = utf8 # 設(shè)置表的編碼。不過我們?cè)趍y.ini中已經(jīng)設(shè)置了,所以也不需要寫。
comment '創(chuàng)建一個(gè)表';
# 寫入一行示例數(shù)據(jù),僅輸入了name和birthday2個(gè)數(shù)據(jù)
insert into tb2(name, birthday) values ('張狗剩', '2000-01-01 12:12:12')
# 查詢表內(nèi)數(shù)據(jù)命令
select * from tb2
如下圖所示,我們得到的數(shù)據(jù)中包含了5列。id列自增為1,password未寫入,所以為默認(rèn)值0,gender同理也是默認(rèn)值‘男’文章來源地址http://www.zghlxwxcb.cn/news/detail-817056.html
到了這里,關(guān)于MySQL篇一,初始化安裝,Pycharm可視化鏈接MySQL數(shù)據(jù)庫,Pycharm執(zhí)行MySQL命令,MySQL的基礎(chǔ)命令和數(shù)據(jù)類型的認(rèn)識(shí),最后嘗試創(chuàng)建一張表和寫入一行數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!