Python學習日記(三十三) Mysql資料庫篇 一

来源:https://www.cnblogs.com/Fantac/archive/2019/09/21/11563528.html
-Advertisement-
Play Games

背景 Mysql是一個關係型資料庫,由瑞典Mysql AB開發,目前屬於Oracle旗下的產品。Mysql是目前最流行的關係型資料庫管理系統之一,在WEB方面,Mysql是最好的RDBMS(Relational Database Management System)。Mysql是一種關係資料庫管理系 ...


背景

Mysql是一個關係型資料庫,由瑞典Mysql AB開發,目前屬於Oracle旗下的產品。Mysql是目前最流行的關係型資料庫管理系統之一,在WEB方面,Mysql是最好的RDBMS(Relational Database Management System)。Mysql是一種關係資料庫管理系統,關係資料庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。

 

其他類似軟體:

關係型資料庫:sqllite、db2、Oracle、access、sql sever、Mysql

非關係型資料庫:MongoDB、redis

 

安裝

在Windows系統上,我們下載完Mysql後安裝到任意目錄下,可以看到裡面有一個bin文件,打開

裡面有mysql.exe和mysqld.exe兩個執行檔,它們分別是客戶端和服務端

 

啟用

在取得bin目錄路徑後,初始化服務端

輸入上面語句後我們會發現原目錄下會多出一個data的文件夾

然後再啟動服務端

之後我們再打開一個新的command,實現客戶端連接到服務端

這裡預設的用戶名是root密碼為空,執行時按回車跳過就好

使用show databases;去看data文件下的文件:

也可以創建一個新的db文件:

 

添加環境變數

如果覺得每次執行時都要加上一長串的路徑很麻煩我們可以直接在系統上添加環境變數

獲取bin的路徑:F:\mysql-8.0.11-winx64\mysql-8.0.11-winx64\bin

然後右鍵電腦->高級系統設置->高級->環境變數->找到系統變數的Path在後面加上;路徑

這樣我們在執行服務端和客戶端就不用再加上路徑了

服務端:

客戶端:

 

製作Windows上的Mysql服務

這樣我們就可以在服務的進程上看到了Mysql服務,我們就可以點擊左上的啟動此服務

或者我們輸入下麵語句也可以啟動服務

如果要停止Mysql服務

移除Mysql服務

 

 

創建用戶及授權

首先在data文件夾下的文件夾(比如db1)我們可以稱為資料庫,而db1文件夾下的文件(Excel文件),我們稱為表,在這個表中的一行行排列的就是數據行

預設的用戶是root,那麼這個root被放在哪裡呢?

 

Mysql在一個用戶登錄的時候會在user中查看裡面是否有這個用戶的信息

那如何創建新的用戶?

語法:

create user 'username'@'IP addres' identified by 'password';             #限制只能在這台機器上登錄
create user 'username'@'192.168.43.%' identified by 'password';             #%表示在最後一位數沒有要求,只需要考慮前三尾數相同即可
create user 'username'@'%' identified by 'password';                   #表示所有機器都可以登入

授權用戶

grant 許可權名 on db1.t1 to 'username'@'%';     #只能讓該用戶訪問db1文件夾下的表t1
grant 許可權名 on db1.* to 'username'@'%';      #能讓該用戶訪問db1文件夾下的所有表
grant 許可權名 on *.* to 'username'@'%';        #表示可以讓該用戶訪問所有資料庫的內容

許可權名稱:

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                   使用change master、kill、logs、purge、master和set global。還允許mysqladmin調試登陸
replication client      伺服器位置的訪問
replication slave       由複製從屬使用

使用

創建一個新用戶並給他授權

然後我們重新開啟一個客戶端並登入新用戶資料查看他能夠看到的數據

其他用戶管理語法:

刪除用戶:drop user 'username'@'IP address';
修改用戶:rename user 'username'@'IP address';
修改密碼:set password for 'username'@'IP address' = Password('new password')

其他授權語法:

查看許可權:show grants for 'username'@'IP address';
取消授權:revoke 許可權名 on 'Database'.'Table' from 'username'@'IP address';

查看用戶登錄資料

 

操作資料庫及數據表

1.操作文件夾

<1>create database 新的資料庫名; 創建一個新的資料庫

增加編碼的要求:create database 新的資料庫名 charset utf8; 這樣寫這個資料庫的預設編碼是以utf-8

<2>show databases; 顯示所有資料庫

<3>drop database 資料庫名; 刪除現有資料庫

2.操作文件

<1>show tables; 顯示出所有表格

<2>create table 表名(第一列數據名 數據類型,第二列數據名 數據類型...); 創建一個新的表名

①增加編碼要求:create table 表名(第一列數據名 數據類型,第二列數據名 數據類型...) default charset=utf8; 

②增加引擎要求:create table 表名(第一列數據名 數據類型,第二列數據名 數據類型...) engine= innodb default charset=utf8;

innodb:支持事務,能恢復到之前的狀態,原子性操作

myisum

③null、not null、default、auto_increment:

null->就是我的數據可以為空

not null->就是我的數據不可以為空

default->可以為我的數據設置一個預設值

auto_increment->用於自增,一般來說要搭配primary key使用;primary key的作用為約束(不能重覆也不能為空)、加速查找,一個表裡面只能有一個自增列,並且要有一個主鍵

3.操作文件中的內容  

<1>insert into 表名(第一列數據名,第二列數據名...) values(值1,值2...); 往表內插入數據

<2>selcet * from 表名; 查看表內所有信息

接上1的步驟結果

再添加一條信息

<3>解決中文數據問題

 

<4>delete from 表名; 清空這個表的數據

若一個表只有一個自增數,它的id已經增加到3,若使用delete from 去清空這個表,再之後又新增了一筆資料後,它的自增值不重新開始

<5>truncate table 表名; 清空這個表的數據,執行速度快

使用trucate table就不會出現自增值不會不重新計算的情況

<6>drop table 表名; 刪除這個表

 

 

數據表基本數據類型

按整數去分:

1.int  

int unsighed:無符號整數 範圍:0 ~ 4294967295

int sighed:有符號整數 範圍:-2147483648 ~ 2147483647

2.tinyint

tinyint unsighed:無符號小整數 範圍:0 ~ 255

tinyint sighed:有符號小整數 範圍:-128 ~ 127

3.bigint

bigint unsighed:無符號大整數 範圍:0 ~ 18446744073709551615

bigint sighed:有符號大整數 範圍:-9223372036854775808 ~ 9223372036854775807

 

按小數去分:

1.FLOAT[(m,d)] 

並不准確的小數 數值越大越不准確,m是數字總個數,d是小數點後個數

 FLOAT unsighed:無符號單精度浮點數 範圍:

-1.7976931348623157E+308 ~ -2.2250738585072014E-308
0
2.2250738585072014E-308 ~ 1.7976931348623157E+308

FLOAT sighed:有符號單精度浮點數 範圍:
0
1.175494351E-38 to 3.402823466E+38

2.DOUBLE[(m,d)]

並不准確的小數 數值越大越不准確,m是數字總個數,d是小數點後個數

DOUBLE unsighed:無符號雙精度浮點數 範圍:

-1.7976931348623157E+308 to -2.2250738585072014E-308
0
2.2250738585072014E-308 to 1.7976931348623157E+308

DOUBLE sighed:有符號雙精度浮點數 範圍: 

 0
 2.2250738585072014E-308 to 1.7976931348623157E+308

3.decimal[(m[,d])]

精準的小數值,m是數字總個數(負號不算),d是小數點後個數,m最大值為65,d最大值為30

 

按字元串去分:

1.char(m)

char數據類型用於表示固定長度的字元串,可以包含最多達255個字元.其中m代表字元串的長度。即使數據小於m長度,也會占用長度。

2.varchar(m)

varchars數據類型用於變長的字元串,可以包含最多達255個字元。其中m代表該數據類型所允許保存的字元串的最大長度,只要長度小於該最大值的字元串都可以被保存在該數據類型中。

雖然varchar使用起來較為靈活,但是從整個系統的性能角度來說,char數據類型的處理速度更快,有時甚至可以超出varchar處理速度的50%。因此,用戶在設計資料庫時應當綜合考慮各方面的因素,以求達到最佳的平衡

創建數據表時把定長的數據往前放置,把不固定長度的數據往後放

3.text

text數據類型用於保存變長的大字元串,可以組多到65535 (2**16 − 1)個字元 

4.mediumtext

範圍:16,777,215 (2**24 − 1)個字元

5.longtext

範圍:4,294,967,295 or 4GB (2**32 − 1)個字元

將上傳文件存硬碟,DB存路徑

 

按時間類型分:

1.DATE

YYYY-MM-DD(1000-01-01/9999-12-31)

2.TIME

HH:MM:SS('-838:59:59'/'838:59:59')

3.YEAR

YYYY(1901/2155)

4.DATETIME

YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59 Y)

5.TIMESTAMP

YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某時)

按二進位數據分:

1.TinyBlob

2.Blob

3.MediumBlob

4.LongBlob

 

其他:

1.bit[(m)]

二進位位(101001),m表示二進位位的長度(1-64),預設m=1

2.enum

枚舉類型An ENUM column can have a maximum of 65,535 distinct elements.(The practical limit is less than 3000.)
示例:
CREATE TABLE shirts (
      name VARCHAR(40),
      size ENUM('x-small', 'small', 'medium', 'large', 'x-large')
                    );
INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'),('polo shirt','small');

3.set

集合類型A SET column can have a maximum of 64 distinct members.
示例:
CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');

 

基本的增刪改查

1.插入

insert into 表名(第一列數據名,第二列數據名...) values(值1,值2...);

2.刪除

delete from 表名 where id<6; 只刪除id小於6的數據

3.修改

①讓表中所有的這個列下的值都改成一個固定數據:update 表名 set 列名=修改的固定值;

②基於①但有條件得去修改update 表名 set 列名=修改的固定值 where 列名=值;

4.查看

select * from 表名; 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 想要管理多種具體的東西,那麼需要遵守每種東西的規範。如果想要提供一種通用模式來對這些具體的東西統一管理,需要使用一種古老的技術:抽象。 抽象是將多種具體的東西(管理時需要遵守的規範)的共同點抽取出來,放入到更高一層的抽象層。在抽象層不定義或少量定義具體的規範細則,而是讓下層更具體的東西遵守抽象出來的 ...
  • bash基本特性 bash基本介紹 bash是shell的一種,shell是電腦與用戶交互的主要介面,狹義上的shell指的是CLI(command line interface命令行介面),用戶輸入命令,bash判斷並執行。 bash的登陸提示 bash登陸時會有相應的提示,提示內容可以在相關文 ...
  • 安裝虛擬機 VMWare安裝官方網站 https://www.pagesinventory.com/domain/www.vmware.com.html 鏡像文件安裝 http://windows.dmn77.cn/ 安裝虛擬機需要鏡像文件來運行 1.首先下載好vmware軟體包,解壓,點擊運行 2 ...
  • 參考地址: 如何看MS SQLSERVER資料庫的執行計劃https://blog.csdn.net/luoyanqing119/article/details/17022649 SQLserver索引的原理和應用https://www.cnblogs.com/knowledgesea/p/3672 ...
  • redis持久化存儲 是一種記憶體型資料庫,一旦伺服器進程退出,資料庫的數據就會丟失,為瞭解決這個問題, 提供了兩種持久化的方案,將記憶體中的數據保存到磁碟中,避免數據的丟失。 1.RDB持久化 redis提供了RDB持久化的功能,這個功能可以將redis在記憶體中的狀態數據保存到磁碟 觸發機制: 手動執 ...
  • 在SQL Server資料庫中,有時候會建立一些Windows認證的賬號(域賬號),例如,我們公司習慣給開發人員和Support同事開通NT賬號許可權,如果有離職或負責事宜變更的話,那麼要如何正確的刪除這些Windows認證賬號呢?這篇文章就是來探討一下如何正確的刪除Windows認證賬號。如下所示:... ...
  • 1.redis學習 數據預設寫入到記憶體,如果斷電,伺服器宕機,redis進程掛掉,數據會丟失。 selenium操作瀏覽器時,要註意瀏覽器資源釋放,方式記憶體泄露,崩潰 mysql是文件型資料庫,預設持久化到硬碟上 redis 是記憶體型資料庫 2.redis安裝學習 yum安裝,最簡單,配置yum源, ...
  • 2. 資料庫操作 資料庫在創建以後最常見的操作便是 2.1 查詢 為了便於學習和理解,我們預先準備了兩個表分別是 表和 表兩個表的內容和結構如下所示 表的內容: | id | class\_id | name | gender | score | | | | | | | | 1 | 1 | 小明 | ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...