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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...