今日內容:
認識資料庫 (mysql)
啟動伺服器 註冊系統服務
修改與破解密碼
編碼設定
sql語句基礎
資料儲存引擎
資料庫:儲存資料的倉庫儲存資料的方式:python中變數 , 檔案處理
為什麼不用變數和檔案儲存資料?
變數是儲存於記憶體中無法永久儲存
檔案處理:效率問題,檔案處理是操作硬碟的,是乙個io操作
假設我們的程式所有的元件全都運⾏在同⼀臺計算機使⽤⽂件來作為資料庫
但是這都是我們的假設 在正常的⽣產環境中我們必須要考慮⽂件操作所帶來的效率問題而且我們不可能
把所有的元件執行在同一計算機上,首先不穩定,而且一台機器的效能是有上限的,因此我們需要對計算機
進行擴充套件,擴充套件分為兩種:1. 垂直擴充套件 提公升硬體效能(不太可取) 2. 水平擴充套件: 新增更多的計算機(分布式計算)
分布式帶來的好處就是提高了效能和穩定性,但是這些計算機操作的是乙個整體,也就是說處理的資料是同乙份
因此我們需要解決資料共享的問題,就要通過網路,使用socket來配套伺服器和客戶端,從而完成資料的共享
我們在用socket共享資料時,肯定要實現併發,考慮資料安全(需要加互斥鎖) 資料的讀取速度等,因此我們就需要
乙個用來運算元據的程式,也就是資料庫程式 ,但我們不可能做程式前都去寫乙個資料庫程式,因此就有人做出了
資料庫程式
常見資料庫
關係型 :
mysql :免費開源 ⽀持中⼤型企業
oracle :收費閉源 更能強⼤ 分布式資料庫
sqlserver: 微軟 僅⽀持 windows系統 太侷限
⾮關係型:通過key value儲存資料各個資料之間沒有關係 不是通⽤性資料庫 有侷限性
mongodb
redis
memcache
資料庫相關概念
資料: ⽤於記錄事物的狀態資訊 可以輸數字 字元 聲⾳ 影象等等記錄⻓什麼樣呢
記錄: ⼀條記錄⽤於儲存⼀個事物的典型特徵 就相當於⽂件中的⼀⾏
表: 本質就是⼀個⽂件 建立表的時候其實就是在建立⼀個⽂件 為了降低耦合性 ⽅便管理 都應該把資料分⻔別類 放到不同⽂件中
庫: 就是乙個資料夾
dbms: 資料庫管理軟體 就是⼀個套接字伺服器端軟體
資料庫伺服器:運⾏有資料庫管理軟體的計算機
安裝mysql之後在cmd 中 輸入cd 位址 mysql啟動伺服器socket 並監聽埠 預設繫結當前ip 預設埠3306
啟動客戶端
在cmd 中 輸入 mysql -h位址 -p埠 -u使用者名稱 -p密碼
命令總結:
啟動伺服器:mysqld
啟動客戶端:mysql -h位址 -p埠 -u使用者 -p密碼 簡寫 mysql -u使用者 -p密碼
關閉伺服器
tasklist | findstr mysqld
taskkill /f /pid 伺服器程序
在終端執行 mysqld --install
services.msc 可以檢視系統服務
修改密碼在cmd mysqladmin -u使用者名稱 -p原密碼 password 新密碼破解密碼
跳過授權表 進⼊系統修改授權表
1.停⽌服務
2.啟動伺服器並新增引數
mysqld --skip-grant-tables
3.使⽤客戶端登入伺服器 執⾏修改命令 此時不需要輸⼊密碼
update mysql.user set password = password("123456") where user="root" and host="localhost"
重新整理許可權
flush privileg
檢視當前伺服器的設定資訊登入客戶端執行 \s
解決亂碼需要保證編碼⽅式⼀致,修改配置檔案
我們如果要⾃⼰編寫配置⽂件,需要⼀個叫做my.ini的⽂件來編寫
編寫格式
分割槽 和 選項
[section]
option = value
要設定客戶端的內容就寫在mysql分割槽
要設定伺服器的內容就寫在mysqld分割槽下
[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
[mysql]
default-character-set = utf8
[client]
default-character-set = utf8
注意:修改了mysqld配置需要重啟伺服器
原理:mysql在啟動的時候會⾃動到安裝⽬錄下找my.ini⽂件 找到命令對應的標題載入⾥⾯的設定項
庫相關增 : create database mydb(資料庫名) charset utf8;查: show databases;
改: alter database mydb charset gbk;
刪: drop database mydb
表相關
增:use mydb;(選擇資料庫)
create table t1(id int ,name char); t1 是表名,建立表必需要建立字段(欄位名 型別)
查:show tables;
show create table t1;
desc t1 ;
改:改欄位
alter table 表名 add | modify | drop | change
add 跟 列名和型別 (新增字段)
modify 跟 列名 和 型別 (更改型別)
drop 跟列名 (刪除字段)
change 跟 舊列名 新列名 型別 (修改列名)
改字元編碼
alter table 表名 default character set gbk
改名稱rename table tname1 to tname2
刪:drop table t1;
記錄相關
增:insert into 表名 values(新增的值匹配表中的字段)
查:select 查詢字段 from 表名; 查詢字段可用* ,表示查詢全部字段
改:update 表名 set 列名 = 值 where 條件; 可同時修改多個字段,沒有條件修改全部
刪:delete from 表名 where 條件; 沒有條件則刪除所有
truncate table t1; 重建表,清空所有資料
Day38 資料庫入門學習
怎麼才能把資料永久儲存下來,根據我們以前的所學,檔案處理就可以將資料永久儲存。但是檔案處理有很大的問題 1.管理不方便 2.檔案操作效率問題 3.乙個程式不太可能僅執行在同一臺電腦上 那麼為了解決這些問題,採取了提高計算機效能的方式 1.垂直擴充套件 指的是更換效能更好的硬體 2.水平擴充套件 指的...
每日演算法 day 38
那些你早出晚歸付出的刻苦努力,你不想訓練,當你覺的太累了但還是要咬牙堅持的時候,那就是在追逐夢想,不要在意終點有什麼,要享受路途的過程,或許你不能成就夢想,但一定會有更偉大的事情隨之而來。mamba out 2020.3.24 如果 k n 那麼就要思考怎樣去選擇了 1.k 如果是偶數的話,選出來的...
day38 併發程式設計 理論
目錄 三 程序理論 四 開啟程序的兩種方式 參考部落格即可 總結 補充 我們直接假設單核就是乙個核,幹活的就乙個人,不要考慮cpu裡面的核心數 時間上的復用 切換 cpu 分為兩種情況 1.當乙個程式遇到io操作的時候,作業系統會剝奪該程式的cpu執行許可權 作用 提高了cpu的利用率 並且也不影響...