MySQL基礎 py全棧 [TOC] 一、引言 1、什麼是數據? 描述事物的符號記錄,可以使數字,也可以是文字,圖形、圖像等,數據有多種形式,它們都可以經過數字化存入電腦,數據的含義成為數據的語義 2、什麼是資料庫(DB)? 存儲數據的倉庫,是長期存放電腦內、有組織、可共用的大量數據的集合,數據 ...
目錄
MySQL基礎----py全棧
一、引言
1、什麼是數據?
描述事物的符號記錄,可以使數字,也可以是文字,圖形、圖像等,數據有多種形式,它們都可以經過數字化存入電腦,數據的含義成為數據的語義
2、什麼是資料庫(DB)?
存儲數據的倉庫,是長期存放電腦內、有組織、可共用的大量數據的集合,資料庫中的數據是按照一定數據模型組織的,描述和存儲,具有較小的冗餘度,較高的獨立性和易擴展性,併為各種用戶共用,即資料庫有永久存儲、有知識和可共用的三個基本特點。
3、什麼是資料庫管理系統(DBMS)?
資料庫管理系統又稱DBMS(Database Management System ),顧名思義,位於用戶和操作系統之間的一層數據管理軟體。資料庫管理系統主要有以下功能:
- 數據定義功能:提供數據定義語言(DDL),讓用戶方便地對資料庫中數據對象進行定義
- 數據組織、存儲和管理:要提高存儲空間利用率和存儲效率
- 數據操縱功能:提供數據操縱語言(DML),實現對資料庫基本操作,如增刪改查
- 資料庫的建立和維護功能:統一管理控制,以保證安全、完整、多用戶併發使用。
- 其他功能:與網路中中的其他軟體系統通信功能,異構資料庫之間的互訪和互操作功能。
常聽說的資料庫管理系統有MySQL、Oracle、SQLite、Access、MS SQL Server等,他們均是軟體,它們屬於關係型資料庫。他們都有兩個主要功能:
- 將數據保存到文件或記憶體
- 接受client特定的命令,然後對文件進行相應的操作
4、什麼是資料庫系統?
指的是電腦系統中引入資料庫後的系統,一般有資料庫、資料庫管理系統、應用系統、資料庫管理員(DBA)構成,常簡稱為資料庫。
5、資料庫管理系統由來
資料庫管理系統由來
我們思考幾個問題,在網路編程中我們的遠端Client的用戶產生的數據,我們要存放到什麼地方,比較數據保存在本地硬碟,來分析,下麵是分析過程:
數據存放位置 在本地管理數據 在遠端管理數據 功能實現 1、創建本地目錄、存放文件
2、有多個目錄,用來歸類存放不同類型的數據文件
3、不同用戶有不同的許可權,用戶可以訪問,修改自己的數據1、用戶只要有socketClient客戶端,就可以訪問遠端拿到數據
2、遠端存放數據的位置有socket服務端接受數據,並保存數據。
3、不同用戶可以在遠端伺服器通過socket執行命令(來操作保存數據文件)
4、不能 用戶有不同的許可權,對文件
6、什麼是數據模型?
是對現實世界數據特征的抽象,是對現實世界的模擬,是資料庫系統的核心和基礎。數據模型應滿足三方面需求:1.真是模擬現實世界;2.容易為人理解;3.便於在電腦上實現。數據模型按應用目的分為兩類:
- 第一類是概念模型:按用戶觀點對數據和信息建模,主要用於資料庫設計,也稱信息模型。
- 第二類是邏輯模型和物理模型:邏輯模型是按電腦觀點對數據建模,主要包括層次模型、網路模型、關係模型、面向對象模型、對象關係模型;物理模型是對數據最底層的抽象,它描述數據在系統內部的表示方式和存取方法。
數據模型通常由數據結構、數據操作和完整性約束三部分組成,是嚴格定義的一組概念的集合,精確的描述了系統的靜態特寫、動態特性和完整性約束條件。
7、什麼是概念模型?
用於信息世界的建模,是現實世界到信息世界的第一層抽象,是資料庫設計人員進行資料庫設計的有力的工具,也是設計人員與用戶之間進行交流的語言。信息世界涉及的概念主要有:
- 實體(Entity):客觀存在並可相互區別的事物成為實體。可以是人、事、物,也可以是抽象的概念和聯繫。
- 屬性(Attribute):實體所具有的某一特性。一個實體可以又若幹個屬性來刻畫。
- 碼(Key):唯一標識實體的屬性集。
- 域(Domain):域是一組具有相同數據類型的值的集合。屬性的取值範圍來自某個域。
- 實體型(Entity Type):具有相同屬性的實體必然具有共同的特征和性質。用實體名和屬性名集合來抽象和刻畫同類實體,稱為實體型。
- 實體集(Entity Set):同一類型實體的集合。
- 聯繫(Relationship):實體內部和實體之間的聯繫。實體之間的聯繫有一對一,一對多、多對多三種。
8、什麼是關係型資料庫?
指建立在關係模型基礎上的,而關係模型本質上就是若幹個存儲數據的二維表。
二、MySQL資料庫的安裝以及服務配置
MySQL是一個關係型資料庫管理系統,目前屬於Oracle旗下,MySQL最流行的關係型資料庫管理系統(又稱RDBMS,Relational Database Management System),想要使用MySQL資料庫我們需要以下步驟:
- 安裝mysql服務端
- 安裝mysql客戶端
- 客戶端連接服務端
- 客戶端發送命令給服務端,服務端根據指令執行對數據的相應操作。
1、windows版本
windows下載地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
安裝
我們下載的是zip版本,解壓之後,就可以了,即可。
MySQL目錄解釋:
bin -----存放mysql的可執行文件,如:mysql、mysqld等。
data -----用於防止一些日誌文件以及資料庫,預設沒有,初始化之後生成
docs ------存放,mysql用法的說明文檔
include ----用於放置一些頭文件
lib -----用於放置一些mysql要用到的庫文件
share ------用於放置一些字元集、語言等信息。
服務配置
初始化mysql資料庫,生成data目錄
cd D:\Download\mysql-5.7.25-winx64\bin mysqld --initialize-insecure
啟動MySQL服務端
#----------------------方法一----------- #打開命令視窗 #進入可執行文件目錄 cd D:\Download\mysql-5.7.25-winx64\bin #啟動mysql服務 mysqld #-------------------方法二---------------- #將mysql的可執行文件目錄添加到系統的環境變數PATH中 #步驟: #控制面板->系統和安全->系統->高級系統設置,打開【系統屬性】面板 #在【系統屬性】面板中,選中高級選項卡,點擊環境變數,打開【環境變數】面板 #在【環境變數】面板中,在【系統變數】里查找選中變數為PATH的一行,點擊編輯, #在變數值得末尾,添加值【;D:\Download\mysql-5.7.25-winx64\bin】,註意一點要加上分號。 # 在任意目錄,打開命令視窗,直接輸入mysqld命令,即可開啟服務 #---------------------方法三------------ #步驟: #在命令視窗執行以下命令,註冊mysqld為windows服務 "D:\Download\mysql-5.7.25-winx64\bin" --install #執行以下命令,移除mysqld服務。 "D:\Download\mysql-5.7.25-winx64\bin" --remove #註冊成功之後,以後再啟動和關閉mysql服務時,僅需在命令行輸入 #啟動服務 net start mysqld #關閉服務 net stop mysqld
對比三種方法:
1、方法一:在命令行開啟服務,關閉命令視窗,服務停止,並且每次需要進入到bin目錄下執行命令
2、方法二:不需要進入bin目錄下執行命令,但是關閉命令視窗,服務也停止
3、方法三:不需要進入並bin目錄下執行命令,並且關閉命令視窗,服務仍然在執行。
總結:
最佳方式是結合方法二和方法三,
將bin目錄添加到path路徑下,然後註冊mysqld為windows服務。
啟動MySQl客戶端
我們下載的軟體中,包含了mysql服務端程式,也包含了客戶端程式,統一放到了bin目錄下,如果我們已經將bin添加到path路徑下的話,我們執行下麵的命令去連接資料庫:
#連接MySQL伺服器,之後敲兩個回車就行了,一開始預設沒有設置密碼 mysql -u root -p #本地登陸(客戶端和服務端在一起) #命令解釋: #mysql -u 用戶名 -h 伺服器ip地址 -p 密碼
2、linux系統
安裝
這裡我們介紹CentOS7以上系統,預設自帶yum包管理工具。
yum install mariadb-server mariadb # mariadb-server 主要提供mysql服務 # mariadb 主要提供一些客戶端命令行工具
配置
#初始化資料庫, mysql_secure_installation #設置root密碼。刪除車市資料庫,修改匿名用戶等操作。 #啟動服務 systemctl start mariadb
3、client端連接遠程資料庫(Mysql資料庫)
使用命令行工具
#命令解釋: mysql -u 用戶名 -h 伺服器ip地址 -p 密碼 -P 埠號 # 註意前提是安裝mysql自帶的客戶端工具。windows預設安裝,linux只需要安裝mariadb這個包 #預設埠號3306 #預設本地ip地址
使用一些資料庫連接軟體
windows:phpMyAdmin、Navicat 、DBeaver
一些庫支持
python語言版本:pymysql、MySQLsb、mysqlclient
三、MySQL資料庫
1、一些概念解釋
什麼是SQL?
MySQL、Oracle等軟體可以接受命令,並作出相應的操作,由於命令中可以包含刪除文件、獲取文件內容等眾多操作,對於編寫的命令就是SQL語句。SQL是結構化語言的縮寫,用來專門與資料庫進行通信的語言。
2、資料庫基本命令
顯示資料庫
show databases; #顯示當前登錄用戶可以查看的資料庫列表。
預設root用戶有四張表:
information_schema :提供了訪問資料庫元數據的方式。(元數據是關於數據的數據,如資料庫名或表名,列的數據類型,或訪問許可權等。有時用於表述該信息的其他術語包括“數據詞典”和“系統目錄”。)
mysql :mysql的核心資料庫,主要負責存儲資料庫的用戶、許可權設置、關鍵字等mysql自己需要使用的控制和管理信息
performance_schema :主要用於收集資料庫伺服器性能參數。主要用於收集資料庫伺服器性能參數。
sys:Sys庫所有的數據源來自:performance_schema。目標是把performance_schema的把複雜度降低創建資料庫:
# utf8編碼 CREATE DATABASE test1 DEFAULT CHARSET utf8 COLLATE utf8_general_ci; #整條語句語義:創建資料庫名為test1,設置預設的編碼格式(字元集)為utf8,按照utf8進行排序,比較等操作。 #gbk編碼 CREATE DATABASE test DEFAULT CHARACTER SET gbk COLLATE gbk_general_ci; #整條語句語義:創建資料庫名為test1,設置預設的編碼格式(字元集)為gbk,按照gbk編碼進行排序 #欄位解釋: #collate:設置比較操作,用什麼編碼方式進行比較。 #charset utf8 :設置資料庫使用utf8字元集 #character set gbk:設置資料庫使用gbk字元集 #sql語句不強制使用大小寫,但是為了便於觀看,我們將系統欄位寫成大寫,用戶輸入寫成小寫
數據表簡單操作
#進入資料庫 USE test1; #顯示test2資料庫中所有的表 SHOW TABLES;
3、資料庫用戶管理
創建用戶
#格式: create user '用戶名'@'ip地址' identified by '密碼'; #例子 create user 'dman'@'localhost' identified by 'password'; #創建用戶名為dman,密碼為password。該用戶只能通過在本地登陸。
刪除用戶
#格式 drop user '用戶名'@'IP地址'; #例子 drop user 'dman'@'localhost';
修改用戶
#格式 rename user '用戶名'@'IP地址' to '新用戶名'@'IP地址'; #例子 rename user 'dman'@'localhost' to 'test'@'localhost';
修改密碼
#格式 set password for '用戶名'@'IP地址' = password('新密碼') #例子 set password for 'test'@'localhost' = password('redhat');
註意事項:
1、用戶許可權相關數據保存在mysql資料庫的user表中,在root用戶下可以對其直接進行操作,但是不建議這樣做。
2、當用戶創建之後,用戶只能登陸到mysql,但是不能幹任何事情,需要我們去授權之後才可以。
4、資料庫用戶授權
查看用戶許可權
show grants for '用戶'@'IP地址';
授予某用戶什麼許可權
grant 許可權 on 資料庫.表 to '用戶'@'IP地址'
取消某用戶許可權
revoke 許可權 on 資料庫.表 from '用戶'@'IP地址'
立刻刷新數據到記憶體,使許可權更改立刻生效
flush privileges #將數據讀取到記憶體中,從而立即生效。
all privileges 除grant外的所有許可權
select 僅查許可權
select,insert 查和插入許可權
...
usage 無訪問許可權
alter 使用alter table
alter routine 使用alter procedure和drop procedure
create 使用create table
create routine 使用create procedure
create temporary tables 使用create temporary tables
create user 使用create user、drop user、rename user和revoke all privileges
create view 使用create view
delete 使用delete
drop 使用drop table
execute 使用call和存儲過程
file 使用select into outfile 和 load data infile
grant option 使用grant 和 revoke
index 使用index
insert 使用insert
lock tables 使用lock table
process 使用show full processlist
select 使用select
show databases 使用show databases
show view 使用show view
update 使用update
reload 使用flush
shutdown 使用mysqladmin shutdown(關閉MySQL)
super