【MySQL】數據庫和表的操作詳解

目錄

一、數據庫:

1、查看數據庫:

2、創建數據庫:

3、刪除數據庫:

4、數據庫的編碼問題:

5、校驗規則對數據庫的影響:

6、修改數據庫:

7、庫的備份與恢復:

8、查看鏈接情況:

二、表的操作:

1、創建表:

2、查看表:

3、修改表:

插入數據:

修改表名:

增加字段屬性:

?編輯

修改字段的數據類型:

修改字段的名稱:

刪除某一字段:

表的刪除和備份:

刪除表:


一、數據庫:

1、查看數據庫:

首先,在創建數據庫之前,要先查看當前有哪些數據庫:

show databases;

這些本質是在Linux中,/var/lib/mysql目錄下創建的目錄

當創建了很多數據庫,我們無法知道是正在使用哪一個數據庫的,使用需要用SQL語句

select database();

這樣,在use后,使用SQL語句就能夠查看當前正在使用哪一個數據庫了

如何知道創建數據庫時的詳細信息:

show create database 數據庫名;

理解:

test1創建時,可以看到關鍵字是大寫的,可以這樣也可以不這樣

數據庫的名字是用引號引起來了,是為了和關鍵字區分

后面/**/不是注釋,其表示當MySQL版本大于4.1.00的時候,執行其后面SQL語句,當MySQL版本大于8.0.16的時,執行其后面的語句

2、創建數據庫:

使用SQL語句:

create database [if not exists] 數據庫名;

如果創建重復名的數據庫,就會出錯,可以加上if not exists選項,它的意思是如果不存在數據庫就創建

當我們加上這個選項后,可以發現沒有error了,取而代之的是warning

3、刪除數據庫:

使用SQL語句:

drop database 數據庫名;

刪除數據庫在Linux下的體現就是刪除對應路徑下的目錄

如果刪除不存在的數據庫是會報錯的,如果想讓這個報錯改為警告可以加上if exists

注意:

一般不要輕易刪除數據庫,畢竟這里和Linux中刪除目錄差不多,如果刪除,里面的所有數據就都沒了

4、數據庫的編碼問題:

在系統創建的時候,有兩個編碼集合,字符集和校驗集

字符集

字符集表示數據庫的內容寫的時候采用的編碼,用于規定未來存儲時的編碼格式

查看MySQL中默認的字符集用SQL語句:

show variables like 'character_set_database';

查看MySQL支持的所有字符集:

使用SQL語句:

show charset;

校驗集

校驗集表示在已經有數據,進行讀的時候以特定的方式去讀,對讀到的數據做特定的解釋,規定數據查詢時的校驗規則

查看MySQL中默認的校驗集用SQL語句:

show variables like 'collation_database';

查看MySQL支持的所有字符集:

show conllation;

使用SQL語句:(有很長,這里只截取部分)

使用指定編碼創建數據庫

// 設置字符集
create database 數據庫名稱 [charset=字符集 || character set 字符集];
// 設置校驗集
create database 數據庫名稱 charset=utf8mb4 collate 校驗集;

5、校驗規則對數據庫的影響:

首先,我們要知道:表是繼承其所在數據庫的編碼格式的

那么,我們創建兩個數據庫,分別用不同的校驗規則:其中一個是區分大小寫的,一個是不區分大小寫的

//不區分大小寫
create database test1 collation utf8_general_ci;
//區分大小寫
create database test2 collate utf8_bin;

接著,分別在里面創建一張表,并且在表中插入大寫和小寫的a

其中test1是不區分大小寫的,test2是區分大小寫的

在插入后,直接查找表中對應的a,

select * from testtable where id='a';

我們應該會發現:如果是test1的話,查找a會出現a和A;如果是test2的話,查找a只是出現a

如上,結果如期

6、修改數據庫:

修改數據庫編碼格式:

使用指令:

alter databas 數據庫名 charset=修改后的字符規則 COLLATE=修改后的校驗規則

如將test1進行的字符編碼規則和字符校驗規則進行修改

alter database test1 charset=gbk collate gbk_chinese__ci;

7、庫的備份與恢復:

備份:

將一個數據庫進行備份采用SQL語句:

mysqldump -P端口號 -u用戶名 -p 密碼 -B 數據庫名1 數據庫名2 ...  > 數據庫備份存儲的文件路徑

接下來舉個例子:

mysqldump -P3306 -uroot -p -B test1 > test.sql

如上,這就是對我們的test1數據庫進行備份了,對這個文件進行查看,我們可以知道其是備份了我們的SQL語句和數據

恢復:

恢復的話是在MySQL客戶端中,用SQL語句:

source 數據庫備份存儲的文件路徑;

我們已經把test1數據庫備份好了,那么我們接下來將這個test1數據庫刪了,然后在恢復:

然后在執行SQL語句進行數據庫的恢復

source /home/silence/MySQL/test.sql;

這樣,我們的test1數據庫就恢復了(包括里面的表)

也可以只備份表

mysqldump -u root -p -P 端口 數據庫名 表名 > 目標路徑(含文件)

8、查看鏈接情況:

MySQL支持多用戶的訪問,也可能會被惡意訪問,可以通過如下SQL語句進行查看MySQL語句的鏈接

show processlist;

二、表的操作:

創建表是在數據庫中創建的,所以在進行表的創建的時候,要先use數據庫表示進入對應數據庫

1、創建表:

我們創建表的SQL語句是:

create table [if not exists] 表名(成員名1 成員類型1 [comment '注釋信息'],成員名2 成員類型2 [comment '注釋信息'],成員名3 成員類型3  [comment '注釋信息']
)[charset=字符編碼] [collate=校驗規則] [engine=引擎名];

以上comment和其注釋信息是可以忽略的,并且下面的charset,collate,engine也是可以不寫的,如果不寫的話就為系統默認

這里采用MyIsam引擎

這里采用InnoDB引擎

當創建成功后,發現person1和person2在Linux下,顯示的目錄是不一樣的,現在我只需要知道不同的引擎在Linux下的顯示是不一樣的,在后面的MySQL索引在講解

2、查看表:

查看表之前要在數據庫中,所以要先保證在數據庫中,然后在進行表的查看

SQL語句:

show tables;

這是進行表的查看,表示當前數據庫中有哪些表

desc 表名;

這個SQL語句是查看表的詳細信息

  • Field表示列名
  • Type表示類型
  • Null表示是否可為空
  • Key表示是否存在 主鍵/外鍵/唯一鍵 約束
  • Default表示是否有默認值
  • Extra表示額外信息

如果想看建表時的信息,創建表的時候更詳細的信息,比如所采用的字符編碼或者校驗碼或者所使用的引擎,那就需要使用:

show create table 表名 \G

3、修改表:

插入數據:

在修改前,表中需要有數據,那么首先我們向我們的表中插入數據

insert into 表名 [(字段1,字段2, ...)] values (數據1,數據2, ... 要和前面對應);

其中,如果屬性名不寫就是默認所有的

如下,這里插入兩行數據

創建成功后可以使用SQL語句來查看

select * from 表名;

修改表名:

SQL語句:

alter table 原表名稱 rename [to] 修改后的表名稱;

如下,當我們對表名進行修改后,再進行查看,發現修改成功

增加字段屬性:

如上,原本有3個字段屬性,并且在查看創建的時候能夠看到我們給每一個字段屬性的備注

接下來增加字段屬性:

用SQL語句:

alter table 表名 add 字段名稱 數據類型 備注;

這樣就能夠通過show命令查看到了增加的字段以及備注了

并且在表中的數據也會增加,由于我們沒有插入數據,所以是空

在SQL語句中,最后面還可以增加after 字段屬性表示將數據增加到對應字段屬性后

alter table 表名 add 字段名稱 數據類型 備注 after 字段屬性;

如果想插在第一行,將after和其后面的字段屬性換成not null first

修改字段的數據類型:

就是修改上述的Type用到SQL語句:

alter table 表名 modify 待修改字段名 新的數據類型 備注;

實際上,這是覆蓋式的修改的,并不是只將數據類型修改

如上,這里修改的時候沒有加上對應的備注,在修改后查看發現原來的備注沒有的,證明這里是覆蓋式的修改的

修改字段的名稱:

用SQL語句:

alter table 表名 change 原字段名 修改后字段名 數據類型 備注;

如下是將birth改為birthday,這里也是覆蓋修改的,如下我沒有加備注,當再次看的時候也沒有了,當然也可以自己重新定義

并且類型也是重新定義的

刪除某一字段:

alter table 表名 drop 字段名稱;

將ages刪除

表的刪除和備份:

因為表的刪除是不可逆的,所以,在刪除表之前最好做一下備份

mysqldump -P 端口號 -u用戶名 -p 數據庫名 表名1 表名2 ... > 表備份存儲的文件路徑

將表備份并存儲在當前目錄下:

恢復:

source 表備份存儲的文件路徑

當恢復后就都回來了

刪除表:

drop table 表名稱;

當刪除后就沒了

這是很危險的,當刪除表后期所有數據都沒了,在開發中不要輕易刪除

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/76299.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/76299.shtml
英文地址,請注明出處:http://en.pswp.cn/web/76299.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Docker--Docker鏡像原理

docker 是操作系統層的虛擬化,所以 docker 鏡像的本質是在模擬操作系統。 聯合文件系統(UnionFS) 聯合文件系統(UnionFS) 是Docker鏡像實現分層存儲的核心技術,它通過將多個只讀層(Image Laye…

雙層Key緩存

雙層 Key 緩存是一種針對 緩存擊穿 和 雪崩問題 的優化方案,其核心思想是通過 主備雙緩存 的機制,確保在熱點數據過期時仍能提供可用服務,同時降低對數據庫的瞬時壓力。以下是其核心原理、實現細節及適用場景的深度解析: 一、核心…

力扣每日打卡 2176. 統計數組中相等且可以被整除的數對(簡單)

力扣 2176. 統計數組中相等且可以被整除的數對 簡單 前言一、題目內容二、解題方法1. 暴力解法2.官方題解官方也是暴力解法 前言 這是刷算法題的第十三天,用到的語言是JS 題目:力扣 2176. 統計數組中相等且可以被整除的數對(簡單) 一、題目內容 給你一…

云服務器和物理服務器

服務器,作為互聯網世界中數據存儲與處理的關鍵樞紐,其重要性不言而喻。在眾多服務器類型中,云服務器和物理服務器占據了主導地位,它們各自有著獨特的特點和應用場景。咱們就來深入探討一下這兩者的區別。

Kubernetes Pod 調度策略:從基礎到進階

文章目錄 環境Kubernetes 部署Kubernetes Pod 調度策略Kubernetes Pod 調度策略對照表調度流程經歷階段案例展示生成yaml文件默認調度節點選擇器為節點添加標簽編寫 Deployment 配置文件應用資源并查看調度結果 Node Affinity(節點親和性)為節點添加標簽…

SQLite、MySQL、SQL Server、Oracle 和 PostgreSQL 五種數據庫的區別

以下是 SQLite、MySQL、SQL Server、Oracle 和 PostgreSQL 五種主流關系型數據庫管理系統(RDBMS)的區別,從多個維度進行對比: 1. 架構與部署 SQLite(Structured Query Language Lite?): 嵌入式數據庫,無服務器架構。數據庫存儲在一個單一的磁盤文件中。部署簡單,適合輕量…

電路安全智控系統與主機安全防護系統主要功能是什么

電路安全智控系統被稱為電路安全用電控制系統。電路安全智控系統具備一系列強大且實用的功能。電路安全智控系統能夠對總電壓、總電流、總功率、總電能,以及各分路的電壓、電流、功率、電能和功率因素等進行全方位的監控。在大型工廠的電力分配中,通過對…

使用Lean 4和C#進行數學定理證明與邏輯推理

步驟1:安裝與配置環境 安裝Lean 4 訪問Lean官網或GitHub倉庫,按照指南安裝Lean 4及配套工具鏈(如VS Code擴展)。 設置C#開發環境 安裝.NET SDK及IDE(如Visual Studio或Rider),確保C#開發環境正…

八股文---MySQl(3)

目錄 12.事務的特性是什么?可以詳細說一下嗎? 回答 13并發事務帶來哪些問題?怎么解決這些問題呢?MySQL的默認隔離級別是? 臟讀:一個事務讀到另外一個事務還沒有提交的數據。 不可重復讀:一個…

實驗五 內存管理實驗

實驗五 內存管理實驗 一、實驗目的 1、了解操作系統動態分區存儲管理過程和方法。 2、掌握動態分區存儲管理的主要數據結構--空閑表區。 3、加深理解動態分區存儲管理中內存的分配和回收。 4、掌握空閑區表中空閑區3種不同放置策略的基本思想和實現過程。 5、通過模擬程…

【MySQL】MySQL表的增刪改查(CRUD) —— 上篇

目錄 MySQL表的增刪改查(CRUD) 1. 新增(Create)/插入數據 1.1 單行數據 全列插入 insert into 表名 values(值, 值......); 1.2 單行數據 指定列插入 1.3 多行數據 指定列插入 1.4 關于時間日期(datetime&am…

【MATLAB代碼例程】AOA與TOA結合的高精度平面地位,適用于四個基站的情況,附完整的代碼

本代碼實現了一種基于到達角(AOA) 和到達時間(TOA) 的混合定位算法,適用于二維平面內移動或靜止目標的定位。通過4個基站的協同測量,結合最小二乘法和幾何解算,能夠有效估計目標位置,并支持噪聲模擬、誤差分析和可視化輸出。適用于室內定位、無人機導航、工業監測等場景…

ModbusTCP 轉 Profinet 主站網關

一、 功能概述 1.1 設備簡介 本產品是 ModbusTCP 和 Profinet(M) 網關(以下簡稱網關),使用數據映射 方式工作。 本產品在 ModbusTCP 側作為 ModbusTCP 從站,接 PLC 、上位機、 wincc 屏 等;在 Profin…

《AI大模型應知應會100篇》第25篇:Few-shot與Zero-shot使用方法對比

第25篇:Few-shot與Zero-shot使用方法對比 摘要 在大語言模型的應用中,**Few-shot(少樣本)和Zero-shot(零樣本)**是兩種核心的提示策略。它們各自適用于不同的場景,能夠幫助用戶在不進行額外訓練…

深入理解C++中string的深淺拷貝

目錄 一、引言 二、淺拷貝與深拷貝的基本概念 2.1 淺拷貝 2.2 深拷貝 在C++ 中, string 類的深淺拷貝有著重要的區別。 淺拷貝 深拷貝 string 類中的其他構造函數及操作 resize 構造 = 構造(賦值構造) + 構造(拼接構造) cin 和 cin.get 的區別 三、C++中string類的…

在Qt中驗證LDAP賬戶(Windows平臺)

一、前言 原本以為在Qt(Windows平臺)中驗證 LDAP 賬戶很簡單:集成Open LDAP的開發庫即可。結果臨了才發現,Open LDAP壓根兒不支持Windows平臺。沿著重用的原則,考慮遷移Open LDAP的源代碼,卻發現工作量不小…

《軟件設計師》復習筆記(11.4)——處理流程設計、系統設計、人機界面設計

目錄 一、業務流程建模 二、流程設計工具 三、業務流程重組(BPR) 四、業務流程管理(BPM) 真題示例: 五、系統設計 1. 主要目的 2. 設計方法 3. 主要內容 4. 設計原則 真題示例: 六、人機界面設…

UniRig ,清華聯合 VAST 開源的通用自動骨骼綁定框架

UniRig是清華大學計算機系與VAST聯合開發的前沿自動骨骼綁定框架,專為處理復雜且多樣化的3D模型而設計。基于強大的自回歸模型和骨骼點交叉注意力機制,UniRig能夠生成高質量的骨骼結構和精確的蒙皮權重,大幅提升動畫制作的效率和質量。 UniR…

LeetCode 443 壓縮字符串

字符數組壓縮算法詳解:實現與分析 一、引言 在處理字符數組時,我們常常遇到需要對連續重復字符進行壓縮的場景。這不僅可以節省存儲空間,還能提升數據傳輸效率。本文將深入解析一個經典的字符數組壓縮算法,通過詳細的實現步驟和…

alertManager部署安裝、告警規則配置詳解及告警消息推送

? java接受告警請求RestController RequestMapping("/alert") Slf4j public class TestApi {private static final DateTimeFormatter FORMATTER DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");RequestMappingpublic void sendTemplate(HttpServl…