主頁 > 後端開發 > python進階十——mysql初識

python進階十——mysql初識

2020-09-11 14:45:17 後端開發

1.MySQL是什么

1.1:MYSQL簡介

MySQL 是最流行的資料庫之一,是一個免費開源的關系型資料庫管理系統,但也不意味著該資料庫是完全免費的,MySQL 由瑞典 MySQL AB 公司開發,目前屬于 Oracle 公司,MySQL 適合中小型軟體,被個人用戶以及中小企業青睞,

針對不同的用戶,MySQL 分為兩個版本:
    MySQL Community Server(社區版):該版本是自由下載且完全免費的,但是官方不提供技術支持,
    MySQL Enterprise Server(企業版):該版本是收費的,而且不能下載,但是該版本擁有完善的技術支持(官方提供電話技術支持),
注意:MySQL Cluster 主要用于架設群服務器,需要在社區服務或企業版的基礎上使用,

 

MySQL 的命名機制由 3 個數字和 1 個后綴組成,例如 mysql-5.7.20:
    第 1 個數字“5”是主版本號,用于描述檔案的格式,所有版本 5 的發行版都有相同的檔案夾格式,
    第 2 個數字“7”是發行級別,主版本號和發行級別組合在一起便構成了發行序列號,
    第 3 個數字“20”是在此發行系列的版本號,隨每次新發行的版本遞增,通常選擇已經發行的最新版本,

1.2:MySQL的特點、優勢

MySQL 資料庫管理系統具有很多的優勢,下面總結了其中幾種,

1)MySQL 是開放源代碼的資料庫

MySQL 是開放源代碼的資料庫,任何人都可以獲取該資料庫的源代碼,這就使得任何人都可以修正 MySQL 的缺陷,并且任何人都能以任何目的來使用該資料庫,MySQL 是一款可以自由使用的資料庫,

2)MySQL 的跨平臺性

MySQL 不僅可以在 Windows 系列的作業系統上運行,還可以在 UNIX、Linux 和 Mac OS 等作業系統上運行,因為很多網站都選擇 UNIX、Linux 作為網站的服務器,所以 MySQL 的跨平臺性保證了其在 Web 應用方面的優勢,雖然微軟公司的 SQL Server 資料庫是一款很優秀的商業資料庫,但是其只能在 Windows 系列的作業系統上運行,因此,MySQL 資料庫的跨平臺性是一個很大的優勢,

3)價格優勢

MySQL 資料庫是一個自由軟體,任何人都可以從 MySQL 的官方網站上下載該軟體,這些社區版本的 MySQL 都是免費試用的,即使是需要付費的附加功能,其價格也是很便宜的,相對于 Oracle、DB2 和 SQL Server 這些價格昂貴的商業軟體,MySQL 具有絕對的價格優勢,

1.3:RDBMS 術語

學習一下RDBMS的一些術語:

    資料庫: 資料庫是一些關聯表的集合,
    資料表: 表是資料的矩陣,在一個資料庫中的表看起來像一個簡單的電子表格,
    列: 一列(資料元素) 包含了相同型別的資料, 例如郵政編碼的資料,
    行:一行(=元組,或記錄)是一組相關的資料,例如一條用戶訂閱的資料,
    冗余:存盤兩倍資料,冗余降低了性能,但提高了資料的安全性,
    主鍵:主鍵是唯一的,一個資料表中只能包含一個主鍵,你可以使用主鍵來查詢資料,
    外鍵:外鍵用于關聯兩個表,
    復合鍵:復合鍵(組合鍵)將多個列作為一個索引鍵,一般用于復合索引,
    索引:使用索引可快速訪問資料庫表中的特定資訊,索引是對資料庫表中一列或多列的值進行排序的一種結構,類似于書籍的目錄,
    參照完整性: 參照的完整性要求關系中不允許參考不存在的物體,與物體完整性是關系模型必須滿足的完整性約束條件,目的是保證資料的一致性,

MySQL 為關系型資料庫(Relational Database Management System), 這種所謂的"關系型"可以理解為"表格"的概念, 一個關系型資料庫由一個或數個表格組成,

    表頭(header): 每一列的名稱;
    列(col): 具有相同資料型別的資料的集合;
    行(row): 每一行用來描述某條記錄的具體資訊;
    值(value): 行的具體資訊, 每個值必須與該列的資料型別相同;
    鍵(key): 鍵的值在當前列中具有唯一性,

2.MySQL 安裝

2.1:Linux/UNIX 上安裝 MySQL

Linux平臺上推薦使用RPM包來安裝Mysql,MySQL AB提供了以下RPM包的下載地址:

    MySQL - MySQL服務器,你需要該選項,除非你只想連接運行在另一臺機器上的MySQL服務器,
    MySQL-client - MySQL 客戶端程式,用于連接并操作Mysql服務器,
    MySQL-devel - 庫和包含檔案,如果你想要編譯其它MySQL客戶端,例如Perl模塊,則需要安裝該RPM包,
    MySQL-shared - 該軟體包包含某些語言和應用程式需要動態裝載的共享庫(libmysqlclient.so*),使用MySQL,
    MySQL-bench - MySQL資料庫服務器的基準和性能測驗工具,

安裝前,我們可以檢測系統是否自帶安裝 MySQL:

rpm -qa | grep mysql

如果你系統有安裝,那可以選擇進行卸載:

rpm -e mysql  // 普通洗掉模式
rpm -e --nodeps mysql  // 強力洗掉模式,如果使用上面命令洗掉時,提示有依賴的其它檔案,則用該命令可以對其進行強力洗掉

安裝 MySQL:

接下來我們在 Centos7 系統下使用 yum 命令安裝 MySQL,需要注意的是 CentOS 7 版本中 MySQL資料庫已從默認的程式串列中移除,所以在安裝前我們需要先去官網下載 Yum 資源包,下載地址為:https://dev.mysql.com/downloads/repo/yum/

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server

權限設定:

chown mysql:mysql -R /var/lib/mysql

初始化 MySQL:

mysqld --initialize

啟動 MySQL:

systemctl start mysqld

查看 MySQL 運行狀態:

systemctl status mysqld

注意:如果我們是第一次啟動 mysql 服務,mysql 服務器首先會進行初始化的配置

此外,你也可以使用 MariaDB 代替,MariaDB 資料庫管理系統是 MySQL 的一個分支,主要由開源社區在維護,采用 GPL 授權許可,開發這個分支的原因之一是:甲骨文公司收購了 MySQL 后,有將 MySQL 閉源的潛在風險,因此社區采用分支的方式來避開這個風險,

MariaDB的目的是完全兼容MySQL,包括API和命令列,使之能輕松成為MySQL的代替品
yum install mariadb-server mariadb 

mariadb資料庫的相關命令是:

systemctl start mariadb  #啟動MariaDB
systemctl stop mariadb  #停止MariaDB
systemctl restart mariadb  #重啟MariaDB
systemctl enable mariadb  #設定開機啟動

2.2:驗證 MySQL 安裝

在成功安裝 MySQL 后,一些基礎表會表初始化,在服務器啟動后,你可以通過簡單的測驗來驗證 MySQL 是否作業正常,

使用 mysqladmin 工具來獲取服務器狀態:

使用 mysqladmin 命令來檢查服務器的版本, 在 linux 上該二進制檔案位于 /usr/bin 目錄,在 Windows 上該二進制檔案位于C:\mysql\bin

[root@host]# mysqladmin --version

linux上該命令將輸出以下結果,該結果基于你的系統資訊:

mysqladmin  Ver 8.23 Distrib 5.0.9-0, for redhat-linux-gnu on i386

如果以上命令執行后未輸出任何資訊,說明你的Mysql未安裝成功

2.3:使用 MySQL Client(Mysql客戶端) 執行簡單的SQL命令

你可以在 MySQL Client(Mysql客戶端) 使用 mysql 命令連接到 MySQL 服務器上,默認情況下 MySQL 服務器的登錄密碼為空,所以本實體不需要輸入密碼,

命令如下:

[root@host]# mysql

以上命令執行后會輸出 mysql>提示符,這說明你已經成功連接到Mysql服務器上,你可以在 mysql> 提示符執行SQL命令:

mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql    |
| test     |
+----------+
2 rows in set (0.13 sec)

2.4:Mysql安裝后需要做的

Mysql安裝成功后,默認的root用戶密碼為空,你可以使用以下命令來創建root用戶的密碼:

[root@host]# mysqladmin -u root password "new_password";

現在你可以通過以下命令來連接到Mysql服務器:

[root@host]# mysql -u root -p
Enter password:123456

注意:在輸入密碼時,密碼是不會顯示了,你正確輸入即可

2.5:MySQL 用戶設定

如果你需要添加 MySQL 用戶,你只需要在 mysql 資料庫中的 user 表添加新用戶即可,

以下為添加用戶的的實體,用戶名為guest,密碼為guest123,并授權用戶可進行 SELECT, INSERT 和 UPDATE操作權限:

root@host# mysql -u root -p
Enter password:123456
mysql> use mysql;
Database changed

mysql> INSERT INTO user 
          (host, user, password, 
           select_priv, insert_priv, update_priv) 
           VALUES ('localhost', 'guest', 
           PASSWORD('guest123'), 'Y', 'Y', 'Y');
Query OK, 1 row affected (0.20 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 1 row affected (0.01 sec)

mysql> SELECT host, user, password FROM user WHERE user = 'guest';
+-----------+---------+------------------+
| host      | user    | password         |
+-----------+---------+------------------+
| localhost | guest | 6f8c114b58f2ce9e |
+-----------+---------+------------------+
1 row in set (0.00 sec)

在添加用戶時,請注意使用MySQL提供的 PASSWORD() 函式來對密碼進行加密, 你可以在以上實體看到用戶密碼加密后為: 6f8c114b58f2ce9e.

注意:在 MySQL5.7 中 user 表的 password 已換成了authentication_string

注意:password() 加密函式已經在 8.0.11 中移除了,可以使用 MD5() 函式代替,

注意:在注意需要執行 FLUSH PRIVILEGES 陳述句, 這個命令執行后會重新載入授權表,

如果你不使用該命令,你就無法使用新創建的用戶來連接mysql服務器,除非你重啟mysql服務器,

你可以在創建用戶時,為用戶指定權限,在對應的權限列中,在插入陳述句中設定為 'Y' 即可,用戶權限串列如下:

    Select_priv
    Insert_priv
    Update_priv
    Delete_priv
    Create_priv
    Drop_priv
    Reload_priv
    Shutdown_priv
    Process_priv
    File_priv
    Grant_priv
    References_priv
    Index_priv
    Alter_priv

另外一種添加用戶的方法為通過SQL的 GRANT 命令,以下命令會給指定資料庫TUTORIALS添加用戶 yhh ,密碼為 123456

root@host# mysql -u root -p
Enter password:*******
mysql> use mysql;
Database changed

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
    -> ON TUTORIALS.*
    -> TO 'yhh'@'localhost'
    -> IDENTIFIED BY '123456';

以上命令會在mysql資料庫中的user表創建一條用戶資訊記錄,

注意: MySQL 的SQL陳述句以分號 (;) 作為結束標識,

2.6:/etc/my.cnf 檔案配置

一般情況下,你不需要修改該組態檔,該檔案默認配置如下:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

[mysql.server]
user=mysql
basedir=/var/lib

[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

在組態檔中,你可以指定不同的錯誤日志檔案存放的目錄,一般你不需要改動這些配置

2.7:資料庫命令列操作

1.查看所有資料庫
show databases;
2.切換資料庫
use [資料庫名];
3.創建資料庫
create database [資料庫名] ;
4.洗掉資料庫
drop database [資料庫名];
5.對表的操作
查看所有表
show tables;
6.創建表
create table [表名](欄位1 型別1 約束1,欄位2 型別2 約束2);
7.洗掉表
drop table [表名]
8.修改表名字
rename table [表名] to [新名]

2.8:對欄位的操作

9.查詢欄位(表結構)
desc [表名]
10.增加表的欄位
alter table [表明]add [欄位名 型別 約束]
11.洗掉欄位
alter table [表名]drop[欄位名]
12.修改欄位
alter table [表名] change [欄位名] [新欄位名 型別 約束]
① 、alter table students change id id int;
②、alter table students drop primary key;

2.9:對資料的操作

13.增加資料
插入一個全欄位
insert into students values(0,’xxx’,31,1)
插入多個全欄位
insert into students values(0,’liudehua’,24,0),(0,’yangmi’,31,0)
插入一個部分欄位
insert into students(id,name) values(0,’zhaoliying’)
插入多個部分欄位
insert into students(id,name) values(0,’liushishi’),(0,’linzhiling’)
14.洗掉某一條
delete from students where id=1;
15.清空
delete from students;
16.修改資料
update student set name=’xxx’ where name=’liudehua’
17.查找所有資料
select * from students
18.資料庫備份和恢復
備份: sudo mysqldump –u資料庫名 –p資料庫密碼 備份檔案夾名> ~/Desktop/檔案夾名back.sql
恢復:進入mysql先要創建一個新的資料庫,注意字符集
然后退出mysql
sudo mysql –u資料庫名 –p資料庫密碼 < ~/Desktop/備份檔案夾名back.sql

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/5965.html

標籤:Python

上一篇:PHP獲取客戶端IP

下一篇:Python 實作 udp 網路程式,發送、接收資料

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more