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


創(chuàng)建如上圖。
說明:當(dāng)我們創(chuàng)建數(shù)據(jù)庫沒有指定字符集和校驗(yàn)規(guī)則時(shí),系統(tǒng)使用默認(rèn)字符集:utf8,校驗(yàn)規(guī)則 是:utf8_ general_ ci
- 創(chuàng)建一個(gè)使用utf8字符集的 db2 數(shù)據(jù)庫
create database db2 charset=utf8;
- 創(chuàng)建一個(gè)使用utf字符集,并帶校對規(guī)則的 db3 數(shù)據(jù)庫。
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ù)庫支持的字符集
show charset;

字符集主要是控制用什么語言。比如utf8就可以使用中文。
查看數(shù)據(jù)庫支持的字符集校驗(yàn)規(guī)則
show collation;
校驗(yàn)規(guī)則對數(shù)據(jù)庫的影響
- 不區(qū)分大小寫
創(chuàng)建一個(gè)數(shù)據(jù)庫,校驗(yàn)規(guī)則使用utf8_ general_ ci[不區(qū)分大小寫]
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ū)分大小寫
創(chuàng)建一個(gè)數(shù)據(jù)庫,校驗(yàn)規(guī)則使用utf8_ bin[區(qū)分大小寫]
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ù)庫
DROP DATABASE [IF EXISTS] db_name;

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

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

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


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

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

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

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


另一個(gè)表:


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

desc 表名;

如上圖,可以更詳細(xì)的知道創(chuàng)建表時(shí)的信息。把分號換成 \G,可以進(jìn)行格式化。
修改表
在項(xiàng)目實(shí)際開發(fā)中,經(jīng)常修改某個(gè)表的結(jié)構(gòu),比如字段名字,字段大小,字段類型,表的字符集類型, 表的存儲引擎等等。
我們還有需求,添加字段,刪除字段等等。這時(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,將其長度改成60

刪除password列:

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

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

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

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL的日志基礎(chǔ)知識及基本操作學(xué)習(xí)教程
這篇文章主要介紹了MySQL的日志基礎(chǔ)知識學(xué)習(xí)教程,包括MySQL中日志相關(guān)常用的服務(wù)器變量說明,極力推薦!需要的朋友可以參考下2015-11-11
Mysql中FIND_IN_SET()和IN區(qū)別簡析
這篇文章主要介紹了Mysql中FIND_IN_SET()和IN區(qū)別簡析,設(shè)計(jì)實(shí)例代碼,具有一定參考價(jià)值。需要的朋友可以了解。2017-10-10
mysql關(guān)閉binlog日志,刪除binlog數(shù)據(jù)方式(win和linux通用)
用戶需檢查MySQL binlog狀態(tài),開啟則修改my.ini配置,注釋bin-log并添加skip-log-bin,重啟服務(wù)關(guān)閉日志;如需刪除舊日志,執(zhí)行清理命令2025-08-08
MySQL更新刪除操作update和delete使用詳解(小白慎用)
這篇文章主要為大家介紹了MySQL的更新刪除操作update和delete使用但是一定要慎用啊,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
MySQL數(shù)據(jù)庫中ENUM的用法是什么詳解
ENUM是一個(gè)字符串對象,用于指定一組預(yù)定義的值,并可在創(chuàng)建表時(shí)使用,下面這篇文章主要介紹了MySQL數(shù)據(jù)庫中ENUM的用法是什么的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-06-06
全面解析MySQL?Explain如何優(yōu)化SQL查詢性能
在?MySQL?中,EXPLAIN?關(guān)鍵字可以幫助我們分析查詢執(zhí)行計(jì)劃,從而優(yōu)化查詢性能,所以本文就來和大家詳細(xì)講講Explain是如何優(yōu)化SQL查詢性能的2023-05-05
MySQL使用MRG_MyISAM(MERGE)實(shí)現(xiàn)分表后查詢的示例
這篇文章主要介紹了MySQL使用MRG_MyISAM(MERGE)實(shí)現(xiàn)分表后查詢的示例,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下2020-12-12

