MySQL資料庫(一)
阿新 • • 發佈:2022-02-17
一.資料的演變史
# 1.單獨的文字檔案 沒有固定的存放位置和格式 檔名:user.txt userinfo.txt data.txt 資料格式:jason|123 tony~123 kevin$123 """程式彼此之間無法相容""" # 2.軟體開發目錄規範 規定了檔名和儲存位置 """檔案的查詢變得簡單了 並沒有解決核心問題""" # 3.資料庫階段 規定了檔案的儲存位置和資料格式 """目前正在使用的階段 解決了核心問題"""
二.資料儲存發展史
# 1.單機遊戲階段 資料各自儲存在各自的計算機上 無法實現共享# 2.多機遊戲階段 資料統一儲存在某個固定的伺服器上(計算機) 實現資料共享 前提:必須有網路 '''為了資料的安全 還會採用叢集策略來分擔風險'''
三.資料庫的本質
# 本質也是一款cs架構的軟體 既然資料庫本質是一款cs架構的軟體 也就意味著我們每個人都可以編寫一個數據庫軟體 在目前地球上有很多牛逼的程式設計師 他們都具備編寫資料庫軟體的能力 並且目前市面上真的有很多款資料庫軟體 """ 資料庫在狹義層面上來說 指的是處理資料的底層程式 資料庫在廣義層面上來說 指的是操作這些底層程式的便捷應用軟體 其實學習資料庫很多時候學習的是配套的資料庫軟體"""
四.資料庫的分類
# 市面上有很多資料庫軟體 但是大致就分為兩類 1.關係型資料庫 MySQL、Oracle、PostgreSQL、MariaDB、sqlite、sql server、db2 MySQL:開源免費 使用非常規範 Oracle:收費 維護成本高 大型公司可能會使用 PostgreSQL:支援二次開發 MariaDB:MySQL的替代產品(並且有自己的特性) sqlite:小型資料庫(django框架自帶該資料庫) 2.非關係型資料庫 Redis、mongoDB、memcache Redis:目前最火的快取資料庫 具有很多資料結構 功能強大 mongoDB:文件型資料庫 可以用在大資料和爬蟲領域 memcache:已經被redis淘汰""" 1.兩類資料庫的區別 關係型資料庫 擁有固定的表結構 並且表與表之間可以建立程式碼層面的關係 非關係型資料庫 沒有固定的表結構 資料儲存採用的是K:V鍵值對的形式 2.這麼多資料庫如何學習 兩大類資料庫操作邏輯基本一致 每一類學習一個基本就可以掌握所有 關係型學MySQL 非關係型學redis、mongodb """
五.SQL和NoSQL
資料庫的服務端為了能夠相容不同型別的客戶端實現資料互動 所以規定了統一的互動方式 關係型資料庫>>>:SQL語句 非關係型資料庫>>>:NoSQL語句 # NoSQL有時候也表示 非關係型資料庫
六.MySQL
1.主要版本 5.6:使用頻率較高的版本 5.7:目前正在過渡的版本 8.0:目前最新的版本 """不同的版本主要區別在於底層的邏輯 SQL語句幾乎是一模一樣的""" # 學習階段可以使用5.6的版本(如果已經下載了其他版本也沒問題) 2.軟體下載 mac:https://www.cnblogs.com/Dominic-Ji/articles/15402755.html linux:部落格置頂文章 windows:瞪大眼睛看 訪問官網:https://www.mysql.com/ 具體步驟: DOWNLOADS MySQL Community (GPL) Downloads MySQL Community Server Archives 選擇版本下載壓縮包(客服端 服務端) 3.目錄介紹 bin資料夾 mysqld.exe 服務端 mysql.exe 客服端 data資料夾 儲存使用過程中需要儲存的資料 my-default.ini 配置檔案 redadme 說明檔案 4.基本使用 # 一定要先啟動服務端再啟動客戶端 """前期在操作的時候最好使用管理員cmd操作""" 1.環境變數的配置 2.直接輸入mysqld啟動服務端(當前cmd視窗不要關閉) 3.開設一個新的cmd視窗操作客戶端 mysql # 遊客模式登陸 mysql -u使用者名稱 -p密碼 # 賬號登入(本地使用) mysql -hIP地址 -P埠號 -u使用者名稱 -p密碼 # 完整命令 """第一次登入 root使用者沒有密碼 直接連續回車即可"""
七.系統服務
# 將MySQL的服務端製作成系統服務 開機自啟動 關機自關閉 1.先關閉之前的服務端 2.檢視當前計算機系統服務列表 services.msc 3.以管理員身份執行cmd並製作系統服務 mysqld --install # 僅僅是新增到了系統服務 第一次需要手動啟動 4.啟動服務 方式1:滑鼠右鍵選擇啟動即可 方式2:命令列方式啟動 net start mysql """ 停止服務 net stop mysql 移除系統服務 mysqld --remove """
八.密碼相關
# 針對管理員使用者需要設定密碼 方式1:直接在cmd視窗內使用mysqladmin命令 mysqladmin -uroot -p原密碼 password 新密碼 eg: mysqladmin -uroot -p password 123 mysqladmin -uroot -p123 password 666 方式2:直接在登入狀態下修改當前登入使用者的密碼 set password=PASSWORD('密碼') # 忘記密碼如何解決(瞭解) 方式1:前期資料庫裡面也沒有資料 乾脆重來!!! 方式2:稍作了解 1.關閉服務端 2.以跳過授權表的方式重新啟動服務端 只需要提供使用者名稱就可以登入 mysqld --skip-grant-tables 3.以管理員身份登入 mysql -uroot -p 4.修改管理員使用者密碼 update mysql.user set password=password(123) where user="root" and host="localhost"; 5.關閉服務端再正常啟動 ctrl + C net start mysql 6.使用修改之後的密碼登入
九.重要概念介紹
庫 資料夾
表 資料夾裡面的檔案
記錄 資料夾裡面的檔案裡面的一行行內容
十.基本SQL語句
"""SQL語句的結束必須使用分號""" # 1.如何檢視所有的資料庫名稱 show databases; '''會有一個臨時產生在記憶體的庫:in...sc''' # 2.如何檢視所有的表名稱 use 庫名; '''切換庫(類似於雙擊了資料夾)''' show tables; # 3.如何檢視所有的記錄 select * from 表名; 如果內容較多展示補全出現錯亂的情況 可以在語句後面加\G
十一.針對庫的SQL語句
"""辛辛苦苦一個月 換來的就是一條SQL語句""" # 增 create database 資料庫名; # 查 show databases; # 檢視所有的庫名 show create database 資料庫名; # 定向檢視某個庫 # 改 alter database 資料庫名 charset='gbk'; # 刪 drop database 資料庫名;
十二.針對表的SQL語句
""" 要想操作表必須得先有庫 1.先建立庫 create database db1; 2.檢視當前所在的庫名 select database(); 3.切換庫 use bd1; """ # 增 create table 表名(欄位名1 欄位型別1,欄位2 欄位型別2); # 查 show tables; # 檢視當前庫下面所有的表名 show create table 表名; # 檢視指定的表資訊 describe 表名; # 查看錶的具體資訊(常用) 簡寫 desc 表名; # 改 alter table t1 rename ttt; # 修改表名 alter table ttt change id nid int; # 修改欄位名和型別 alter table ttt modify nid char(4); # 修改欄位型別 # 刪 drop table 表名;
十三.針對記錄操作
""" 肯定得先確定庫和表 """ # 增 insert into 表名 values(資料,資料,資料); '''單條資料''' insert into 表名 values(),(),(); '''多條資料''' # 查 select * from 表名; '''查詢表中所有的資料''' # 改 update 表名 set 欄位名='新資料' where 篩選條件; # 刪 delete from 表名 where 篩選條件;
十四.字元編碼問題
# 檢視MySQL內部預設的編碼情況 \s """MySQL預設的配置檔案>>>:mydefault.ini""" 1.拷貝預設的配置檔案並且重新命名為my.ini 2.拷貝固定的配置資訊 [mysqld] character-set-server=utf8 collation-server=utf8_general_ci [client] default-character-set=utf8 [mysql] default-character-set=utf8 3.重啟MySQL服務端