MySQL之庫(kù)和表的操作實(shí)踐
庫(kù)的操作
創(chuàng)建數(shù)據(jù)庫(kù)
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name說(shuō)明:
- 大寫(xiě)的表示關(guān)鍵字
- [] 是可選項(xiàng)
- CHARACTER SET: 指定數(shù)據(jù)庫(kù)采用的字符集
- COLLATE: 指定數(shù)據(jù)庫(kù)字符集的校驗(yàn)規(guī)則


創(chuàng)建如上圖。
說(shuō)明:當(dāng)我們創(chuàng)建數(shù)據(jù)庫(kù)沒(méi)有指定字符集和校驗(yàn)規(guī)則時(shí),系統(tǒng)使用默認(rèn)字符集:utf8,校驗(yàn)規(guī)則 是:utf8_ general_ ci
- 創(chuàng)建一個(gè)使用utf8字符集的 db2 數(shù)據(jù)庫(kù)
create database db2 charset=utf8;
- 創(chuàng)建一個(gè)使用utf字符集,并帶校對(duì)規(guī)則的 db3 數(shù)據(jù)庫(kù)。
create database db3 charset=utf8 collate utf8_general_ci;
字符集和校驗(yàn)規(guī)則
查看系統(tǒng)默認(rèn)字符集以及校驗(yàn)規(guī)則
show variables like 'character_set_database'; show variables like 'collation_database';

查看數(shù)據(jù)庫(kù)支持的字符集
show charset;

字符集主要是控制用什么語(yǔ)言。比如utf8就可以使用中文。
查看數(shù)據(jù)庫(kù)支持的字符集校驗(yàn)規(guī)則
show collation;
校驗(yàn)規(guī)則對(duì)數(shù)據(jù)庫(kù)的影響
- 不區(qū)分大小寫(xiě)
創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),校驗(yàn)規(guī)則使用utf8_ general_ ci[不區(qū)分大小寫(xiě)]
create database test1 collate utf8_general_ci;
use test1;
create table person(name varchar(20));
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B'); 
- 區(qū)分大小寫(xiě)
創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),校驗(yàn)規(guī)則使用utf8_ bin[區(qū)分大小寫(xiě)]
create database test2 collate utf8_bin;
use test2
create table person(name varchar(20));
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B'); 
刪除數(shù)據(jù)庫(kù)
DROP DATABASE [IF EXISTS] db_name;

執(zhí)行刪除之后的結(jié)果:
- 數(shù)據(jù)庫(kù)內(nèi)部看不到對(duì)應(yīng)的數(shù)據(jù)庫(kù)
- 對(duì)應(yīng)的數(shù)據(jù)庫(kù)文件夾被刪除,級(jí)聯(lián)刪除,里面的數(shù)據(jù)表全部被刪
注意:不要隨意刪除數(shù)據(jù)庫(kù)
操縱數(shù)據(jù)庫(kù)
查看數(shù)據(jù)庫(kù)
show databases;
通過(guò)select database();可以查看當(dāng)前正在哪個(gè)數(shù)據(jù)庫(kù)里。

顯示創(chuàng)建語(yǔ)句
show create database 數(shù)據(jù)庫(kù)名;

說(shuō)明:
- MySQL 建議我們關(guān)鍵字使用大寫(xiě),但是不是必須的。
- 數(shù)據(jù)庫(kù)名字的反引號(hào)``,是為了防止使用的數(shù)據(jù)庫(kù)名剛好是關(guān)鍵字
- /*!40100 default.... */ 這個(gè)不是注釋?zhuān)硎井?dāng)前mysql版本大于4.01版本,就執(zhí)行這句話(huà)
修改數(shù)據(jù)庫(kù)
語(yǔ)法:
ALTER DATABASE db_name [alter_spacification [,alter_spacification]...] alter_spacification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name
說(shuō)明:
- 對(duì)數(shù)據(jù)庫(kù)的修改主要指的是修改數(shù)據(jù)庫(kù)的字符集,校驗(yàn)規(guī)則


備份和恢復(fù)
備份
語(yǔ)法:
mysqldump -P3306 -u root -p 密碼 -B 數(shù)據(jù)庫(kù)名 > 數(shù)據(jù)庫(kù)備份存儲(chǔ)的文件路徑

如上圖,先備份,然后把test1庫(kù)刪掉。
打開(kāi)看看 test1.sql 文件里的內(nèi)容,可以看到,其實(shí)把我們整個(gè)創(chuàng)建數(shù)據(jù)庫(kù),建表,導(dǎo)入數(shù)據(jù)的語(yǔ)句 都裝載這個(gè)文件中。
還原

語(yǔ)法:
source 路徑/test1.sql;
注意事項(xiàng)
- 如果備份的不是整個(gè)數(shù)據(jù)庫(kù),而是其中的一張表,怎么做?
# mysqldump -u root -p 數(shù)據(jù)庫(kù)名 表名1 表名2 > D:/mytest.sql
- 同時(shí)備份多個(gè)數(shù)據(jù)庫(kù)
# mysqldump -u root -p -B 數(shù)據(jù)庫(kù)名1 數(shù)據(jù)庫(kù)名2 ... > 數(shù)據(jù)庫(kù)存放路徑
- 如果備份一個(gè)數(shù)據(jù)庫(kù)時(shí),沒(méi)有帶上-B參數(shù), 在恢復(fù)數(shù)據(jù)庫(kù)時(shí),需要先創(chuàng)建空數(shù)據(jù)庫(kù),然后使用數(shù)據(jù) 庫(kù),再使用source來(lái)還原。
查看連接情況
語(yǔ)法:
show processlist ;

可以告訴我們當(dāng)前有哪些用戶(hù)連接到我們的MySQL,如果查出某個(gè)用戶(hù)不是你正常登陸的,很有可能你 的數(shù)據(jù)庫(kù)被人入侵了。發(fā)現(xiàn)自己數(shù)據(jù)庫(kù)比較慢時(shí),可以用這個(gè)指令來(lái)查看數(shù)據(jù)庫(kù)連接情況。
表的操作
創(chuàng)建表
語(yǔ)法:
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校驗(yàn)規(guī)則 engine 存儲(chǔ)引擎;
說(shuō)明:
- field 表示列名
- datatype 表示列的類(lèi)型
- character set 字符集,如果沒(méi)有指定字符集,則以所在數(shù)據(jù)庫(kù)的字符集為準(zhǔn)
- collate 校驗(yàn)規(guī)則,如果沒(méi)有指定校驗(yàn)規(guī)則,則以所在數(shù)據(jù)庫(kù)的校驗(yàn)規(guī)則為準(zhǔn)
創(chuàng)建表案例
create table users (
id int,
name varchar(20) comment '用戶(hù)名',
password char(32) comment '密碼是32位的md5值',
birthday date comment '生日'
) character set utf8 engine MyISAM;說(shuō)明:
comment表示對(duì)該列的文字說(shuō)明。
- 不同的存儲(chǔ)引擎,創(chuàng)建表的文件不一樣.
users 表存儲(chǔ)引擎是 MyISAM ,在數(shù)據(jù)目中有三個(gè)不同的文件,分別是:
- users.frm:表結(jié)構(gòu)
- users.MYD:表數(shù)據(jù)
- users.MYI:表索引


另一個(gè)表:


不同的存儲(chǔ)引擎,創(chuàng)建表的文件不一樣。
第二個(gè)表的文件只有兩個(gè)。
查看表結(jié)構(gòu)

desc 表名;

如上圖,可以更詳細(xì)的知道創(chuàng)建表時(shí)的信息。把分號(hào)換成 \G,可以進(jìn)行格式化。
修改表
在項(xiàng)目實(shí)際開(kāi)發(fā)中,經(jīng)常修改某個(gè)表的結(jié)構(gòu),比如字段名字,字段大小,字段類(lèi)型,表的字符集類(lèi)型, 表的存儲(chǔ)引擎等等。
我們還有需求,添加字段,刪除字段等等。這時(shí)我們就需要修改表。
ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column datatype]...); ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column datatype]...); ALTER TABLE tablename DROP (column);


先在表中填入如上數(shù)據(jù)。
在users表添加一個(gè)字段,用于保存圖片路徑

修改name,將其長(zhǎng)度改成60

刪除password列:

注意:刪除字段一定要小心,刪除字段及其對(duì)應(yīng)的列數(shù)據(jù)都沒(méi)了
修改表名為user:

to:可以省掉
將name列修改為xingming:

mysql> alter table user change name xingming varchar(60); 注意--新字段需要完整定義
刪除表
語(yǔ)法格式:
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
示例:

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL 5.7.9 服務(wù)無(wú)法啟動(dòng)-“NET HELPMSG 3534”的解決方法
這篇文章主要介紹了MySQL 5.7.9 服務(wù)無(wú)法啟動(dòng)-“NET HELPMSG 3534”的解決方法,需要的朋友可以參考下2016-12-12
Mysql-Insert插入過(guò)慢的原因記錄和解決方案
這篇文章主要介紹了Mysql-Insert插入過(guò)慢的原因記錄和解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
MySQL通配符與正則表達(dá)式搜過(guò)濾數(shù)據(jù)詳解
簡(jiǎn)單來(lái)說(shuō),正則表達(dá)式就是用來(lái)匹配文本的特殊字符串,下面這篇文章主要給大家介紹了關(guān)于MySQL通配符與正則表達(dá)式搜過(guò)濾數(shù)據(jù)的相關(guān)資料,文中通過(guò)實(shí)例代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09
MySQL設(shè)置密碼復(fù)雜度策略的完整步驟(附代碼示例)
MySQL密碼策略還可能包括密碼復(fù)雜度的檢查,如是否要求密碼包含大寫(xiě)字母、小寫(xiě)字母、數(shù)字和特殊字符等,這篇文章主要介紹了MySQL設(shè)置密碼復(fù)雜度策略的完整步驟,需要的朋友可以參考下2025-08-08
MySQL最大連接數(shù)max_connections設(shè)置的兩種方法
結(jié)合PHP腳本添加和查詢(xún)MySQL數(shù)據(jù)的基本教程

