在MySQL中奏響數(shù)據(jù)庫操作的樂章(推薦)
前言
在數(shù)字的世界里,MySQL像是一艘承載數(shù)據(jù)的船,帶領(lǐng)我們穿越信息的海洋。每一條SQL語句,都是我們與數(shù)據(jù)庫之間的語言橋梁。我們借助這些命令,去查詢隱藏在深處的答案,去更新和重組混亂的片段。在這條旅途中,邏輯與技巧是我們的羅盤,指引我們穿越復(fù)雜的表結(jié)構(gòu)與關(guān)系。
??一、創(chuàng)建數(shù)據(jù)庫
本質(zhì)就是在/var/lib/mysql目錄下再新創(chuàng)建一個目錄
在 MySQL 中創(chuàng)建數(shù)據(jù)庫是一個相對簡單的任務(wù),可以通過使用 CREATE DATABASE
語句來實(shí)現(xiàn)。以下是一些詳細(xì)的步驟和示例,幫助你創(chuàng)建一個新的數(shù)據(jù)庫。
1.1 連接到 MySQL 服務(wù)器
首先,你需要通過命令行或任何 MySQL 客戶端工具(如 MySQL Workbench)連接到你的 MySQL 服務(wù)器。
打開你的終端或命令提示符,然后輸入以下命令:
mysql -u your_username -p
其中 your_username
是你的 MySQL 用戶名。系統(tǒng)會提示你輸入密碼。
1.2 創(chuàng)建數(shù)據(jù)庫
一旦連接到 MySQL 服務(wù)器,你可以使用 CREATE DATABASE
語句來創(chuàng)建一個新的數(shù)據(jù)庫。
CREATE DATABASE my_database;
這里 my_database
是你想要創(chuàng)建的數(shù)據(jù)庫的名稱。你可以根據(jù)需要替換為任何合法的數(shù)據(jù)庫名稱。
1.3 查看數(shù)據(jù)庫
你可以使用 SHOW DATABASES;
命令來查看所有現(xiàn)有的數(shù)據(jù)庫,包括你剛剛創(chuàng)建的數(shù)據(jù)庫。
SHOW DATABASES;
1.4 使用數(shù)據(jù)庫
創(chuàng)建數(shù)據(jù)庫后,你可以使用 USE
語句來選擇并使用這個數(shù)據(jù)庫。
USE my_database;
??二、字符集和校驗(yàn)規(guī)則
在MySQL中,字符集(Character Set)和校驗(yàn)規(guī)則(Collation)是兩個重要的概念,它們共同決定了數(shù)據(jù)庫中字符串的存儲和比較方式。
2.1 字符集(Character Set)
字符集定義了字符以及字符的編碼。它是字符和二進(jìn)制數(shù)據(jù)之間的映射關(guān)系,為字符分配了唯一的編號。常見的字符集有ASCII、GBK、ISO-8859-1、UTF-8等。在MySQL中,字符集決定了數(shù)據(jù)庫中字符串的存儲方式。
- ASCII:共收錄128個字符,包括空格、標(biāo)點(diǎn)符號、數(shù)字、大小寫字母和一些不可見字符。
- GBK:在GB2312字符集的基礎(chǔ)上進(jìn)行了擴(kuò)充,收錄了更多的漢字和其他字符。
- UTF-8:一種變長編碼的字符集,使用1到4個字節(jié)來表示一個字符。它兼容ASCII字符集,并且可以表示地球上幾乎所有的字符。
在MySQL中,UTF-8有兩種常見的實(shí)現(xiàn):utf8mb3
(使用1到3個字節(jié))和utf8mb4
(使用1到4個字節(jié))。
2.2 校驗(yàn)規(guī)則(Collation)
校驗(yàn)規(guī)則,也稱為排序規(guī)則,定義了字符的比較規(guī)則。在同一個字符集內(nèi),字符之間的比較和排序都是基于校驗(yàn)規(guī)則來進(jìn)行的。字符集和校驗(yàn)規(guī)則是一對多的關(guān)系,每個字符集都有一個默認(rèn)的校驗(yàn)規(guī)則。
- 大小寫敏感:如
utf8_bin
,在這種校驗(yàn)規(guī)則下,字符的比較是區(qū)分大小寫的。 - 大小寫不敏感:如
utf8_general_ci
,在這種校驗(yàn)規(guī)則下,字符的比較是不區(qū)分大小寫的。ci
表示case insensitive(大小寫不敏感),而bin
表示binary(二進(jìn)制),即區(qū)分大小寫。
2.3 查看MySQL支持的字符集和校驗(yàn)規(guī)則
可以使用以下SQL語句來查看MySQL支持的字符集和校驗(yàn)規(guī)則:
查看字符集的兩種方式:
SHOW CHARACTER SET; SHOW CHARSET;
查看校驗(yàn)規(guī)則:
SHOW COLLATION;
這些語句會列出MySQL支持的所有字符集和校驗(yàn)規(guī)則,以及它們的默認(rèn)設(shè)置和其他相關(guān)信息。
2.4 使用字符集和校驗(yàn)規(guī)則創(chuàng)建數(shù)據(jù)庫
在創(chuàng)建MySQL數(shù)據(jù)庫時,您可以指定字符集(character set)和校驗(yàn)規(guī)則(collation)。字符集決定了數(shù)據(jù)庫中可以存儲哪些字符,而校驗(yàn)規(guī)則決定了這些字符如何進(jìn)行比較和校驗(yàn)。
以下是創(chuàng)建數(shù)據(jù)庫時指定字符集和校驗(yàn)規(guī)則的語法:
CREATE DATABASE database_name CHARACTER SET character_set_name COLLATE collation_name;
或者:
CREATE DATABASE database_name CHARSET=character_set_name COLLATE collation_name;
database_name
是您要創(chuàng)建的數(shù)據(jù)庫的名稱。character_set_name
是您希望數(shù)據(jù)庫使用的字符集。例如,utf8
、utf8mb4
、latin1
等。collation_name
是您希望數(shù)據(jù)庫使用的校驗(yàn)規(guī)則。例如,utf8_general_ci
、utf8mb4_unicode_ci
、latin1_swedish_ci
等。
如果您只指定了字符集而沒有指定校驗(yàn)規(guī)則,MySQL將使用該字符集的默認(rèn)校驗(yàn)規(guī)則。同樣地,如果您在創(chuàng)建數(shù)據(jù)庫時沒有指定字符集,MySQL將使用服務(wù)器的默認(rèn)字符集。
示例:
創(chuàng)建一個使用utf8mb4
字符集和utf8mb4_unicode_ci
校驗(yàn)規(guī)則的數(shù)據(jù)庫:
CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
或者:
CREATE DATABASE mydatabase CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;
2.5 校驗(yàn)規(guī)則對數(shù)據(jù)庫的影響
2.5.1 使用utf8mb4_general_ci
(不區(qū)分大小寫)校驗(yàn)規(guī)則創(chuàng)建數(shù)據(jù)庫 創(chuàng)建數(shù)據(jù)庫
create database test1 charset=utf8mb4 collate utf8mb4_general_ci;
選擇操作數(shù)據(jù)庫
use test1;
創(chuàng)建一個person表
create table if not exists person (name varchar(20));
插入幾個大小寫數(shù)據(jù)
insert into person (name) values('a'); insert into person (name) values('a'); insert into person (name) values('a'); insert into person (name) values('a'); insert into person (name) values('A'); insert into person (name) values('b'); insert into person (name) values('C');
選中name為a的展示出來
select * from person where name='a';
可以發(fā)現(xiàn) a 和 A 都在里面,說明不區(qū)分大小寫。
2.5.2 使用utf8mb4_bin(不區(qū)分呢大小寫)校驗(yàn)規(guī)則創(chuàng)建數(shù)據(jù)庫
創(chuàng)建數(shù)據(jù)庫
create database test2 charset=utf8mb4 collate utf8mb4_bin;
選擇操作數(shù)據(jù)庫
use test2;
創(chuàng)建一個person表
create table if not exists person (name varchar(20));
插入幾個大小寫數(shù)據(jù)
insert into person (name) values('a'); insert into person (name) values('A'); insert into person (name) values('b'); insert into person (name) values('c');
選中name為a的展示出來
select * from person where name='a';
可以發(fā)現(xiàn)只有 a 在里面,說明區(qū)分大小寫。
??三、數(shù)據(jù)庫的刪除
DROP 命令用于刪除數(shù)據(jù)庫中的對象,如數(shù)據(jù)庫、表、索引、視圖等。以下是一些常見的 DROP 命令及其用途:
刪除數(shù)據(jù)庫:
DROP DATABASE database_name;
此命令會刪除整個數(shù)據(jù)庫及其中的所有表和數(shù)據(jù)。在某些數(shù)據(jù)庫系統(tǒng)中,可以使用 IF EXISTS
選項(xiàng)來避免在數(shù)據(jù)庫不存在時產(chǎn)生錯誤。 刪除表:
DROP TABLE table_name;
此命令會刪除指定的表及其中的所有數(shù)據(jù)。同樣,可以使用 IF EXISTS
選項(xiàng)來避免在表不存在時產(chǎn)生錯誤。
??四、數(shù)據(jù)庫的修改
ALTER 命令用于修改已存在的數(shù)據(jù)庫表的結(jié)構(gòu),如添加、刪除、修改列,修改表名等。以下是一些常見的 ALTER 命令及其用途:
添加列:
ALTER TABLE table_name ADD column_name datatype;
此命令會在指定的表中添加一個新的列。
刪除列:
ALTER TABLE table_name DROP COLUMN column_name;
此命令會從指定的表中刪除一個列。
修改列的數(shù)據(jù)類型:
ALTER TABLE table_name MODIFY COLUMN column_name new_datatype;
或者在某些數(shù)據(jù)庫系統(tǒng)中使用:
ALTER TABLE table_name ALTER COLUMN column_name SET DATA TYPE new_datatype;
此命令會修改指定列的數(shù)據(jù)類型。 修改列名:
ALTER TABLE table_name RENAME COLUMN old_column_name TO new_column_name;
此命令會修改指定列的列名。 修改表名:
ALTER TABLE old_table_name RENAME TO new_table_name;
此命令會修改表的名稱。
??五、數(shù)據(jù)庫的查找
SHOW 命令主要用于顯示數(shù)據(jù)庫的各種信息,如數(shù)據(jù)庫列表、表列表、表的列信息等。以下是一些常見的 SHOW 命令及其用途:
顯示所有數(shù)據(jù)庫:
SHOW DATABASES;
此命令會列出當(dāng)前數(shù)據(jù)庫服務(wù)器上的所有數(shù)據(jù)庫。 顯示當(dāng)前數(shù)據(jù)庫中的表:
SHOW TABLES;
在執(zhí)行此命令之前,需要使用 USE
命令切換到相應(yīng)的數(shù)據(jù)庫。
顯示表的列信息:
SHOW COLUMNS FROM table_name;
或者
DESC table_name;
此命令會列出指定表的所有列及其數(shù)據(jù)類型、是否允許 NULL 值等信息。
??六、數(shù)據(jù)庫的備份和恢復(fù)
MySQL數(shù)據(jù)庫的備份和恢復(fù)是維護(hù)數(shù)據(jù)庫完整性和可靠性的重要部分。下面是幾種常見的備份和恢復(fù)方法:
6.1 使用 mysqldump 工具進(jìn)行備份
mysqldump
是MySQL自帶的備份工具,常用于導(dǎo)出數(shù)據(jù)庫的結(jié)構(gòu)和數(shù)據(jù)到一個SQL文件中。
基本語法:
mysqldump -u 用戶名 -p 數(shù)據(jù)庫名 > 備份文件名.sql
示例:
mysqldump -u root -p mydatabase > mydatabase_backup.sql
這個命令將會把 mydatabase
的所有表導(dǎo)出到 mydatabase_backup.sql
文件中。
6.2 恢復(fù)數(shù)據(jù)庫
從SQL文件恢復(fù)數(shù)據(jù)庫時,可以使用 mysql
命令。
基本語法:
mysql -u 用戶名 -p 數(shù)據(jù)庫名 < 備份文件名.sql
示例:
mysql -u root -p mydatabase < mydatabase_backup.sql
這個命令會將 mydatabase_backup.sql
中的內(nèi)容導(dǎo)入到 mydatabase
數(shù)據(jù)庫中。
使用 SOURCE
命令執(zhí)行備份文件:
SOURCE /path/to/mydatabase_backup.sql;
確保將路徑替換為實(shí)際的備份文件路徑。
6.3 備份選項(xiàng)
備份特定的表:
mysqldump -u 用戶名 -p 數(shù)據(jù)庫名 表名1 表名2 > 備份文件名.sql
只備份數(shù)據(jù)庫結(jié)構(gòu)(不包含數(shù)據(jù)):
mysqldump -u 用戶名 -p -d 數(shù)據(jù)庫名 > 備份文件名.sql
其中,-d
選項(xiàng)表示不導(dǎo)出數(shù)據(jù)。
同時備份多個數(shù)據(jù)庫:
mysqldump -u 用戶名 -p -B 數(shù)據(jù)庫名1 數(shù)據(jù)庫名2 ... > 數(shù)據(jù)庫存放路徑
結(jié)語
隨著一次次操作的完成,MySQL數(shù)據(jù)庫中的數(shù)據(jù)變得更加有序和強(qiáng)大。每一次查詢的優(yōu)化、每一次表的設(shè)計(jì),都是在為未來的信息處理打下堅(jiān)實(shí)的基礎(chǔ)。我們不僅在操控?cái)?shù)據(jù),也在追求一種對信息的掌控力和對效率的極致。MySQL的操作不止于技術(shù),它更是一場追求完美與平衡的藝術(shù)旅程。
到此這篇關(guān)于在MySQL中奏響數(shù)據(jù)庫操作的樂章的文章就介紹到這了,更多相關(guān)mysql數(shù)據(jù)庫操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL Server 完整備份遇到的一個不常見的錯誤及解決方法
這篇文章給大家介紹了SQL Server 完整備份遇到的一個不常見的錯誤及解決方法,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧2019-05-05mysql查看表結(jié)構(gòu)的三種方法總結(jié)
這篇文章主要介紹了mysql查看表結(jié)構(gòu)的三種方法總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07MySQL5.7中 performance和sys schema中的監(jiān)控參數(shù)解釋(推薦)
在MySQL5.7中,performance schema有很大改進(jìn),包括引入大量新加入的監(jiān)控項(xiàng)、降低占用空間和負(fù)載,以及通過新的sys schema機(jī)制顯著提升易用性。下面通過本文給大家介紹 MySQL5.7中 performance和sys schema中的監(jiān)控參數(shù)解釋,需要的朋友可以參考下2017-08-08深入mysql創(chuàng)建自定義函數(shù)與存儲過程的詳解
本篇文章是對mysql創(chuàng)建自定義函數(shù)與存儲過程進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06MySQL中distinct語句的基本原理及其與group by的比較
這篇文章主要介紹了MySQL中distinct語句的基本原理及其與group by的比較,一般情況下來說group by和distinct的實(shí)現(xiàn)原理相近且性能稍好,需要的朋友可以參考下2016-01-01MySQL數(shù)據(jù)庫中存儲圖片和讀取圖片的操作代碼
在MySQL數(shù)據(jù)庫中存儲圖片通常有兩種主要方式:將圖片以二進(jìn)制數(shù)據(jù)(BLOB 類型)直接存儲在數(shù)據(jù)庫中,或者將圖片文件存儲在服務(wù)器文件系統(tǒng)上,而在數(shù)據(jù)庫中存儲圖片的路徑或URL,以下是這兩種方法的詳細(xì)解釋,包括存儲和讀取操作,需要的朋友可以參考下2024-11-11