MySQL 數(shù)據(jù)庫(kù)-操作基礎(chǔ)

MySQL 官網(wǎng):https://www.mysql.com/

  1. MySQL 常見版本
    ? MySQL Community Server 社區(qū)版本愉棱,開源免費(fèi)银亲,但不提供官方技術(shù)支持。
    ? MySQL Enterprise Edition 企業(yè)版本,需付費(fèi)湿故,可以試用 30 天蟆炊。
    ? MySQL Cluster 集群版稽莉,開源免費(fèi)∩辏可將幾個(gè) MySQL Server 封裝成一個(gè) Server污秆。
    ? MySQL Cluster CGE 高級(jí)集群版劈猪,需付費(fèi)
  2. MySQL 安裝部署
    MySQL:MySQL 客戶端程序
    MySQL-Server:MySQL 服務(wù)器端程序
    源代編譯安裝:
    編譯工具:configure、cmake良拼、make
    數(shù)據(jù)庫(kù)常用的配置選項(xiàng)
    -DCMAKE_INSTALL_PREFIX=/PREFIX ----指定安裝路徑(默認(rèn)的就是/usr/local/mysql)
    -DMYSQL_DATADIR=/data/mysql ----mysql 的數(shù)據(jù)文件路徑
    -DSYSCONFDIR=/etc ----配置文件路徑
    -DWITH_INNOBASE_STORAGE_ENGINE=1 ----使用 INNOBASE 存儲(chǔ)引擎
    -DWITH_READLINE=1 ----支持批量導(dǎo)入 mysql 數(shù)據(jù)
    -DWITH_SSL=system ----mysql 支持 ssl
    -DWITH_ZLIB=system ----支持壓縮存儲(chǔ)
    -DMYSQL_TCP_PORT=3306 ----默認(rèn)端口 3306
    -DENABLED_LOCAL_INFILE=1 ----啟用加載本地?cái)?shù)據(jù)
    -DMYSQL_USER=mysql ----指定 mysql 運(yùn)行用戶
    -DMYSQL_UNIX_ADDR=/tmp/mysql.sock ----默認(rèn)套接字文件路徑
    -DEXTRA_CHARSETS=all ----是否支持額外的字符集
    -DDEFAULT_CHARSET=utf8 ----默認(rèn)編碼機(jī)制
    -DWITH_DEBUG=0 ----DEBUG 功能設(shè)置
    常見資料:
    服務(wù):mysqld 端口:3306
    主配置文件:/etc/my.cnf 初始化腳本:mysql_install_db
    啟動(dòng)命令:mysqld_safe 數(shù)據(jù)目錄 :/var/lib/mysql
    套接字文件:/var/lib/mysql/mysql.sock
    進(jìn)程文件:/var/run/mysqld/mysqld.pid
    MySQL 登錄及退出命令:
    設(shè)置密碼:mysqladmin -uroot password ‘123456’
    登錄:mysql -u 用戶名 -p 密碼 -P 端口 -S 套接字文件
    -p 用戶密碼
    -h 登陸位置(主機(jī)名或 ip 地址)
    -P 端口號(hào)(3306 改了就不是了)
    -S 套接字文件(/var/lib/mysql/mysql.sock)
    退出命令:exit 或 ctrl+d
  3. MySQL 管理命令
  4. 創(chuàng)建登錄用戶
    mysql>create user zhangsan@‘%’ identified by ‘123456’;
    %:指任意的遠(yuǎn)程終端
  5. 測(cè)試用戶登錄

yum -y install mysql

mysql -uzhangsan -p123456 -h 192.168.88.10

  1. 用戶為自己更改密碼
    mysql>set password=password(‘123456’);
  2. root 用戶為其他用戶找回密碼
    mysql>set password for atguigu@‘%’=password(‘123123’);
  3. root 找回自己的密碼并修改
    關(guān)閉數(shù)據(jù)庫(kù)战得,修改主配置文件(/etc/my.cnf)添加:skip-grant-tables

vim /etc/my.cnf

skip-grant-tables
啟動(dòng)數(shù)據(jù)庫(kù),空密碼登錄并修改密碼
update mysql.user set password=password(‘新密碼’) where user=’root’;
刪除 skip-grant-tables,重啟數(shù)據(jù)庫(kù)驗(yàn)證新密碼

  1. 創(chuàng)建查詢數(shù)據(jù)庫(kù)
    mysql>create database web;
    mysql>show databases;
  2. 創(chuàng)建數(shù)據(jù)表
    Mysql>use web;

選擇要使用的數(shù)據(jù)庫(kù)

Mysql>create table a1 (id int ,name char(30));

創(chuàng)建 a1 表庸推,并添加 id 和 name 字段以及類型

Mysql>describe a1;

查看表結(jié)構(gòu)(字段)

復(fù)雜一點(diǎn)的
Mysql>create table a2 (
->id int unsigned not null auto_increment, #字段要求為正數(shù)常侦、且自增長(zhǎng)、主鍵
->name char(30) not null default ‘’, #字符型長(zhǎng)度 30 字節(jié)贬媒,默認(rèn)值為空格
->age int not null default 0, #字段默認(rèn)值為 0
->primary key (id)); #設(shè)置 id 為主鍵
Mysql> describe a2;

  1. 插入數(shù)據(jù)
    Mysql>insert into a2 (id,name,age) values (1,‘zhangsan’,21)聋亡; #指明插入字段和數(shù)據(jù)
    Mysql>select * from a2;
    Mysql>insert into a2 values (2,‘lisi’,20); #按順序插入指定字段
    Mysql>insert into a2 values (3,‘wangwu’)掖蛤; #未聲明年齡
    Mysql>insert into a2 values (4,‘zhao’,19)杀捻,(5,‘sun’,25); #插入多條數(shù)據(jù)
  2. 將表 a2 的數(shù)據(jù)復(fù)制到表 a1
    Mysql>select * from a1;
    Mysql>insert into a1 (id,name) select id,name from a2;

查詢 a2 值蚓庭,并寫入到 a1

Mysql>select * from a1;

  1. 刪除數(shù)據(jù)庫(kù)
    Mysql>drop database abc致讥;
    Mysql>show databases;
  2. 刪除數(shù)據(jù)表
    Mysql>drop table a1;
    Mysql>show table;
  3. 刪除表里的數(shù)據(jù)記錄
    Mysql>delete from a2 where id=5; #刪除 id=5 的記錄
    Mysql>delete from a2 where between 23 and 25; #刪除年齡在 23-25 之間的
    注:庫(kù)和表的刪除用 drop,記錄刪除用 delete
  4. 修改表中的數(shù)據(jù)
    Mysql>update a2 set age=21 where id=3;
  5. 修改數(shù)據(jù)表的名稱
    Mysql>alter table a2 rename a1;
  6. 修改數(shù)據(jù)表的字段類型
    Mysql>describe a1;
    Mysql>alter table a1 modify name char(50);
    Mysql>describe a1;
  7. 修改數(shù)據(jù)表的字段類型詳情
    Mysql>describe a1;
    Mysql>alter table a1 change name username char(50) not null default ‘’;
    Mysql>describe a1;
  8. 添加字段
    Mysql>describe a1;
    Mysql>alter table a1 add time datetime;
    Mysql>describe a1;

添加位置默認(rèn)在末尾

Mysql>alter table a1 add birthday year first; #添加字段到第一列
Mysql>alter table a1 add sex nchar(1) after id; #添加到指定字段后

  1. 刪除字段
    Mysql>alter table a1 drop birthday;
  2. Mysql 用戶授權(quán)
    授予用戶全部權(quán)限
    Mysql>select user from mysql.user;
    Mysql>grant all on aa.a1 to atguigu@‘%’器赞; #給已存在用戶授權(quán)
    Mysql>grant all on aa.a1 to abc@‘%’ identified by ‘123456’垢袱; #創(chuàng)建用戶并授權(quán)
    取消 abc 用戶的刪除庫(kù)、表港柜、表中數(shù)據(jù)的權(quán)限
    Mysql>revoke drop,delete on aa.a1 from abc@‘%’请契; #取消刪除權(quán)限(登錄 abc 測(cè)試)
    Mysql>show grants for abc@‘%’; #查看指定用戶的授權(quán)
    Mysql>show grants for atguigu@‘%’夏醉;
  3. 備份和還原
    mysqldump 備份:
    備份:
    mysqldump -u 用戶名 -p 數(shù)據(jù)庫(kù)名 > /備份路徑/備份文件名(備份整個(gè)數(shù)據(jù)庫(kù))
    mysqldump -u 用戶名 -p 數(shù)據(jù)庫(kù)名 表名 > /備份路徑/備份文件名(備份數(shù)據(jù)表)
    備份多個(gè)庫(kù):--databases 庫(kù) 1爽锥,庫(kù) 2
    備份所有庫(kù):--all-databases
    備份多個(gè)表:庫(kù)名 表 1 表 2
    還原:mysql 數(shù)據(jù)庫(kù) < 備份文件
    注意:還原時(shí),若導(dǎo)入的是某表畔柔,請(qǐng)指定導(dǎo)入到哪一個(gè)庫(kù)中
    mysqlhotcopy 備份:
    備份:mysqlhotcopy --flushlog -u=’用戶’ -p=’密碼’ --regexp=正則 備份目錄
    還原:cp -a 備份目錄 數(shù)據(jù)目錄(/var/lib/mysql)
    mysqldump 和 mysqlhotcopy 示例:
    Mysql 備份和還原
    把數(shù)據(jù)庫(kù) aa 備份到/root 目錄下

mysqldump –uroot –p aa > ~/aa.sql

模擬數(shù)據(jù)庫(kù) aa 丟失(刪除數(shù)據(jù)庫(kù) aa)

Mysql>drop database aa;

通過 aa.sql 文件還原(指定導(dǎo)入到哪個(gè)庫(kù)中)

mysql –uroot –p test < aa.sql

備份多個(gè)數(shù)據(jù)庫(kù)(--databases)

mysqldump –uroot –p --databases aa test > abc.sql

還原(先模擬丟失)

mysql –uroot –p < abc.sql

備份有規(guī)則的數(shù)據(jù)庫(kù)
Mysql>create database a1; #連續(xù)創(chuàng)建三個(gè) a 開頭的數(shù)據(jù)庫(kù)

mysqlhotcopy --flushlog –u=‘root’ –p=‘456’ --regexp=^a

還原(先模擬丟失)
Mysql>drop database a1; #順序刪除 a 開頭的數(shù)據(jù)庫(kù)

cp –a /mnt/* /var/lib/mysql/ #復(fù)制產(chǎn)生的文件到數(shù)據(jù)庫(kù)目錄下

登錄數(shù)據(jù)庫(kù)查看即可

mysql-binlog 日志備份:
二進(jìn)制日志(log-bin 日志):所有對(duì)數(shù)據(jù)庫(kù)狀態(tài)更改的操作(create氯夷、drop、update 等)
修改 my.cnf 配置文件開啟 binlog 日志記錄功能

vim /etc/my.cnf

log-bin=mysql-bin #啟動(dòng)二進(jìn)制日志
按時(shí)間還原:
--start-datetime
--stop-datetime
格式:mysqlbinlog --start-datetime ‘YY-MM-DD HH:MM:SS’ --stop-datetime ‘YY-MM-DD
HH:MM:SS’ 二進(jìn)制日志 | mysql -uroot -p
按文件大小還原:
--start-position
--stop-position
mysql-binlog 日志備份示例:


image.png

image.png

mysqlbinlog --start-datetime=‘2018-09-11 14:24:00’ --stop-datetime=‘2018-09-11 14:28:00’
mysql-bin.000006 | mysql –uroot –p123123
注:所選時(shí)間段一定要完整包含所有動(dòng)作(可以在原來基礎(chǔ)上稍微增加點(diǎn)時(shí)間)
按文件大小還原:還原到 bb 庫(kù)被刪除的數(shù)據(jù)狀態(tài)
1.查看 bb 庫(kù)被刪除前后的文件大小


image.png

MySQL 數(shù)據(jù)類型
在 MySQL 中靶擦,有三種主要的類型:文本腮考、數(shù)字和日期/時(shí)間類型。
Text 類型:


image.png

Number 類型:


image.png

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末玄捕,一起剝皮案震驚了整個(gè)濱河市踩蔚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌枚粘,老刑警劉巖馅闽,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡捞蛋,警方通過查閱死者的電腦和手機(jī)孝冒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拟杉,“玉大人庄涡,你說我怎么就攤上這事“嵘瑁” “怎么了穴店?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)拿穴。 經(jīng)常有香客問我泣洞,道長(zhǎng),這世上最難降的妖魔是什么默色? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任球凰,我火速辦了婚禮,結(jié)果婚禮上腿宰,老公的妹妹穿的比我還像新娘呕诉。我一直安慰自己,他們只是感情好吃度,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布甩挫。 她就那樣靜靜地躺著,像睡著了一般椿每。 火紅的嫁衣襯著肌膚如雪伊者。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天间护,我揣著相機(jī)與錄音亦渗,去河邊找鬼。 笑死汁尺,一個(gè)胖子當(dāng)著我的面吹牛法精,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播均函,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼菱涤!你這毒婦竟也來了苞也?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤粘秆,失蹤者是張志新(化名)和其女友劉穎如迟,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡殷勘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年此再,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片玲销。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡输拇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出贤斜,到底是詐尸還是另有隱情策吠,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布瘩绒,位于F島的核電站猴抹,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏锁荔。R本人自食惡果不足惜蟀给,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望阳堕。 院中可真熱鬧跋理,春花似錦、人聲如沸嘱丢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽越驻。三九已至汁政,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缀旁,已是汗流浹背记劈。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留并巍,地道東北人目木。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像懊渡,于是被迫代替她去往敵國(guó)和親刽射。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容