《mysql指令筆記》要點(diǎn):
本文介紹了mysql指令筆記,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
可復(fù)制保存到本地,供日后查詢
-- 增
-- 創(chuàng)建數(shù)據(jù)庫(kù)
create database mydatabase charset utf8;
-- 創(chuàng)建關(guān)鍵字?jǐn)?shù)據(jù)庫(kù)需用反引號(hào)
create database `database` charset utf8;
-- 創(chuàng)建中文數(shù)據(jù)庫(kù)(先告訴服務(wù)器當(dāng)前中文的字符集)
set names gbk;
create database 中國(guó) charset utf8;
-- 刪
-- 刪除數(shù)據(jù)庫(kù)
drop database 數(shù)據(jù)庫(kù)名字;
-- 改
-- 修改數(shù)據(jù)庫(kù)mydatabase的字符集
alter database mydatabase charset gbk;
-- 查
-- 查看所有數(shù)據(jù)庫(kù)
show databases;
-- 查看指定部分的數(shù)據(jù)庫(kù):模糊查詢
show databases like 'pattern';
-- pattern是匹配模式
-- %:匹配多個(gè)字符
-- _: 匹配單個(gè)字符
-- 查看以abc_開(kāi)始的數(shù)據(jù)庫(kù):_需要被轉(zhuǎn)義
show databases like 'abc\_%';
-- 查看數(shù)據(jù)庫(kù)創(chuàng)建語(yǔ)句
show create database 數(shù)據(jù)庫(kù)名稱;
-- 進(jìn)入數(shù)據(jù)庫(kù)環(huán)境
use 數(shù)據(jù)庫(kù)名字;
-- 增
-- 增加表(若當(dāng)前為某一數(shù)據(jù)庫(kù)環(huán)境下,不用制定數(shù)據(jù)庫(kù)名)
create table [if not exists] 數(shù)據(jù)庫(kù)名.表名(
字段名字 數(shù)據(jù)類型 [not null] [unique] [default 默認(rèn)值],
字段名字 數(shù)據(jù)類型 [primary key] [comment '注釋']
)[表選項(xiàng)]; -- if not exists: 如果表名不存在,就創(chuàng)建,否則不執(zhí)行創(chuàng)建代碼(檢查功能)
-- unique: 不能重復(fù)
-- 表選項(xiàng):控制表的表現(xiàn)
-- 字符集:charset/character set 具體字符集; 保證表中數(shù)據(jù)存儲(chǔ)的字符集
-- 校對(duì)集:collate 具體校對(duì)集;
-- 存儲(chǔ)引擎:engine 具體存儲(chǔ)引擎;(innodb 和 myisam)
-- primary key: 將該列設(shè)為主鍵, 主鍵不能為空
-- 復(fù)合主鍵: 在最后加 primary key(字段名, 字段名)
-- not null: 表示該字段不能為空
-- default 默認(rèn)值:為該字段指定默認(rèn)值
-- 外鍵:foreign key(本表字段名) references 外部表名(主鍵字段名) [on delete 模式 on update 模式]; 只有InnoDB存儲(chǔ)引擎支持
-- 指定模式:外鍵約束有三種約束模式:都是針對(duì)父表的約束
-- district: 嚴(yán)格模式(默認(rèn)),父表不能刪除或者更新一個(gè)已經(jīng)被字表引用的記錄
-- cascade:級(jí)聯(lián)模式,父表的操作,對(duì)應(yīng)字表關(guān)聯(lián)的數(shù)據(jù)跟著被操作
-- set null:置空模式,父表的操作之后,子表對(duì)應(yīng)的數(shù)據(jù)(外鍵字段)被置空
-- 自增長(zhǎng):id int auto_increment,
create table 表名 like 數(shù)據(jù)庫(kù)名:表名; -- 從已有表創(chuàng)建新表(復(fù)制表結(jié)構(gòu))
-- 刪
-- 刪除數(shù)據(jù)表
drop table 表名1, 表名2...;
-- 清空表,重置自增長(zhǎng)
truncate 表名;
-- 改
-- 修改表名
rename table 舊表名 to 新表名;
-- 修改表選項(xiàng):字符集,校對(duì)集和存儲(chǔ)引擎
alter table 表名 表選項(xiàng) [=] 值; --表選項(xiàng)同上;
-- 查
-- 查看所有表
show tables;
-- 查看部分表
show tables like 'pattern'; -- pattern同上
-- 查看表創(chuàng)建語(yǔ)句
show create table 表名;
show create table 表名\g -- \g == ;
show create table 表名\G -- \G將查到的結(jié)構(gòu)旋轉(zhuǎn)90度變成縱向
-- 查看表結(jié)構(gòu):產(chǎn)看表中的字段信息
desc 表名;
describe 表名;
show columns from 表名;
-- 增
-- 新增字段
alter table 表名 add[column] 字段名 數(shù)據(jù)類型[列屬性][位置];
-- 位置:字段名可以存放表中的任意位置.
-- 第一個(gè):first;
-- 在哪個(gè)字段之后:after 字段名;
-- 新增外鍵
alter table 表名 add [constraint 外鍵名] foreign key (外鍵字段) references 父表(主鍵字段);
-- 刪
-- 刪除字段
alter table 表名 drop 字段名;
-- 刪除外鍵
alter table 表名 drop foreign key 外鍵名;
-- 改
-- 修改字段
alter table 表名 modify 字段名 數(shù)據(jù)類型[屬性][位置];
-- 重命名字段
alter table 表名 change 舊字段名 新字段名 數(shù)據(jù)類型[屬性][位置];
-- 查
-- 增
-- 插入數(shù)據(jù)
insert into 表名 values (值列表) [,(值列表)]; -- 給全表字段插入數(shù)據(jù),不需要指定字段列表;
-- 要求數(shù)據(jù)的值出現(xiàn)的順序必須與表中設(shè)計(jì)的字段出現(xiàn)的順序一致
-- 凡是非數(shù)值數(shù)據(jù),都需要使用引號(hào)包裹;
-- 可以一次性插入多條記錄
insert into 表名 (字段列表) values (值列表)[,(值列表)]; -- 給部分字段插入數(shù)據(jù),需要選定字段列表:
-- 字段列表出現(xiàn)的順序與字段的順序無(wú)關(guān);
-- 但是值列表的順序必須與選定的字段的順序一致
-- 主鍵沖突時(shí)更新數(shù)據(jù)
insert into 表名 [(字段列表:包含主鍵)] values (值列表) on duplicate key update 數(shù)據(jù)名 = 數(shù)據(jù)值;
-- 主鍵沖突時(shí)替換數(shù)據(jù)
replace into 表名 [(字段列表:包含主鍵)] values(值列表); -- 不沖突直接插入
-- 復(fù)制表數(shù)據(jù)
insert into 表名 [(字段列表)] select */字段列表 from 數(shù)據(jù)庫(kù)名:數(shù)據(jù)表名; -- 可以迅速讓表中的數(shù)據(jù)膨脹到一定數(shù)量級(jí):測(cè)試表的壓力以及效率
-- 刪
-- 刪除數(shù)據(jù)
delete from 表名 [where 條件] [limit 數(shù)量];
-- 改
-- 修改數(shù)據(jù)
update 表名 set 字段 = 值 [where 條件] [limit 數(shù)量];
-- 查
-- 查看 指定字段/所有字段 [指定條件]的數(shù)據(jù)
select 字段列表/* from 表名 [where 條件];
-- 查詢數(shù)據(jù)完整語(yǔ)句
select [select選項(xiàng)] 字段列表[字段別名]/* from 數(shù)據(jù)源 [where子句] [group by子句] [having子句] [order by子句] [limit子句];
-- select選項(xiàng): select對(duì)查出來(lái)的結(jié)果的處理方式
-- all: 默認(rèn)的,保留所有的結(jié)果
-- distinct:查出來(lái)的結(jié)果將重復(fù)(所有字段都相同)的去除
-- 字段別名:當(dāng)數(shù)據(jù)進(jìn)行查詢的時(shí)候,有時(shí)候名字并不一定滿足需求
-- (多表查詢的時(shí)候,會(huì)有同名字段),需要對(duì)字段名進(jìn)行重命名:即別名
-- 語(yǔ)法: 字段名 [as] 別名;
-- 數(shù)據(jù)源:數(shù)據(jù)的來(lái)源,關(guān)系型數(shù)據(jù)庫(kù)的來(lái)源都是數(shù)據(jù)表:本質(zhì)上只要保證數(shù)據(jù)類似二維表,最終都可以作為數(shù)據(jù)源
-- 數(shù)據(jù)源分為多種:?jiǎn)伪頂?shù)據(jù)源,多表數(shù)據(jù)源,查詢語(yǔ)句
-- 單表數(shù)據(jù)源:select * from 表名;
-- 多表數(shù)據(jù)源:select * from 表名1,表名2...;
-- 從一張表中取出一條記錄,去另外一張表中匹配所有記錄,而且全部保留(記錄數(shù)和字段數(shù)),沒(méi)什么用
-- 查詢語(yǔ)句:select * from (select語(yǔ)句) as 別名;
-- 子查詢,數(shù)據(jù)的來(lái)源是一條查詢語(yǔ)句(查詢語(yǔ)句的結(jié)果是二維表)
-- 連接查詢
-- 交叉連接:左表 cross join 右表; -- 等同于 from 左表,右表;
-- 內(nèi)連接:左表 [inner] join 右表 on 左表.字段 = 右表.字段;
-- 從左表中取出每一條記錄,去右表中與所有記錄進(jìn)行匹配,當(dāng)左表.字段與右表.字段相等時(shí)保留結(jié)果
-- 外連接:左表 left/right join 右表 on 左表.字段 = 右表.字段;
-- 以其中一張表為主,取出里面所有記錄,每條與另一張表進(jìn)行連接.能匹配,正確保留,不能匹配,另一張表的字段都置空NULL.
-- 自然連接:左表 natural join 右表; -- 內(nèi)連接
-- 左表 natural left/right join 右表; -- 外連接
-- 系統(tǒng)以字段名作為匹配模式,同名字段作為條件,連接之后合并同名字段,多個(gè)同名字段都作為條件
-- where字句: 用來(lái)判斷數(shù)據(jù),篩選數(shù)據(jù),返回0或1(對(duì)磁盤數(shù)據(jù)進(jìn)行判斷,是否加載到內(nèi)存)(條件可以使用子查詢)
-- 比較運(yùn)算符:>, <, >=, <=, !=, <>, =, like, between A and B(A到B 閉區(qū)間), in, not in, =any, !=any, =some, !=some, =all, !=all
-- 邏輯運(yùn)算符:&&(and), ||(or), !(not)
-- group by字句: 根據(jù)某個(gè)字段進(jìn)行分組(相同的放一組,不同的分到不同的組)
-- 基本語(yǔ)句:group by 字段名1,字段名2... [asc/desc] [with rollup];
-- 分組是為了統(tǒng)計(jì)數(shù)據(jù),mysql提供的一些統(tǒng)計(jì)函數(shù)(在查詢時(shí)放在字段列表中)
-- count(字段名):統(tǒng)計(jì)分組后的記錄數(shù),每一組有多少記錄(*代表統(tǒng)計(jì)記錄,字段名代表統(tǒng)計(jì)對(duì)應(yīng)的字段 NULL不統(tǒng)計(jì))
-- max(字段名):統(tǒng)計(jì)每組中最大值
-- min(字段名):統(tǒng)計(jì)每組中最小值
-- avg(字段名):統(tǒng)計(jì)平均值
-- sum(字段名):統(tǒng)計(jì)和
-- group_concat(字段):對(duì)分組的結(jié)果中的某個(gè)字段進(jìn)行字符串連接(保留改組所有的某個(gè)字段)
-- asc/desc: 對(duì)分組的結(jié)果進(jìn)行排序 asc:升序(默認(rèn)) desc:降序
-- with rollup: 回溯統(tǒng)計(jì)
-- having子句:與where字句一樣:進(jìn)行條件判斷的(進(jìn)入內(nèi)存后的判斷)
-- 分組統(tǒng)計(jì)的結(jié)果或者說(shuō)統(tǒng)計(jì)函數(shù)只有having能夠使用
-- having能夠使用字段別名
-- order by字句:排序,根據(jù)某個(gè)字段進(jìn)行升降序排序,依賴校對(duì)集
-- 基本語(yǔ)法:order by 字段名1[asc/desc],字段名2[asc/desc]...;
-- limit子句: 一種限制結(jié)果的語(yǔ)句
-- 只用來(lái)限制長(zhǎng)度(數(shù)量):limit 數(shù)量;
-- 限制起始位置和長(zhǎng)度(可以實(shí)現(xiàn)數(shù)據(jù)的分頁(yè)):limit 起始位置,長(zhǎng)度;
-- 聯(lián)合查詢:將多次查詢,在記錄上進(jìn)行拼接(字段不會(huì)增加)
select語(yǔ)句1 union [union選項(xiàng)] select語(yǔ)句2...; -- 字段數(shù)必須嚴(yán)格一致
-- union選項(xiàng):與select選項(xiàng)一樣有兩個(gè),all和distinct(默認(rèn))
-- order by: 在聯(lián)合查詢中order by不能直接使用,需要對(duì)查詢語(yǔ)句使用括號(hào)才行.若要order by生效,必須搭配limit.
-- 增
-- 創(chuàng)建視圖
create [algorithm = 指定算法] view 視圖名 as select語(yǔ)句;
-- with check option: 在where語(yǔ)句后添加,表示不允許修改where語(yǔ)句中的字段
-- 視圖算法:分為三種(如果視圖的select語(yǔ)句中包含五子句,而且很有可能順序比外部的查詢語(yǔ)句靠后,就要使用臨時(shí)表算法了)
-- undefined:未定義(默認(rèn)的),不是實(shí)際使用算法,讓系統(tǒng)自主選擇算法
-- temptable:臨時(shí)表算法,先執(zhí)行視圖的select語(yǔ)句,后執(zhí)行外部查詢語(yǔ)句
-- merge:合并算法,系統(tǒng)將視圖對(duì)應(yīng)的select語(yǔ)句與外部查詢視圖的select語(yǔ)句進(jìn)行合并,然后執(zhí)行(效率高,系統(tǒng)經(jīng)常選擇)
-- 刪
-- 刪除視圖
drop view 視圖名;
-- 改
-- 修改視圖本身的來(lái)源語(yǔ)句
alter view 視圖名 as 新select語(yǔ)句;
-- 查
-- 表的所有查看方式都使用于視圖
-- 將視圖當(dāng)作表查詢即可
-- 單表數(shù)據(jù)備份(前提是外部文件不存在)
select */字段列表 into outfile 文件所在路徑 [fields 字段處理 lines 行處理] from 數(shù)據(jù)源;
-- fields 字段處理
-- enclosed by:字段使用什么包裹,默認(rèn)是''空字符串
-- teminated by: 字段以什么結(jié)束,默認(rèn)是'\t'tab鍵
-- escaped by:特殊符號(hào)用什么方式處理,默認(rèn)是'\\'使用反斜杠轉(zhuǎn)義
-- lines 行處理
-- starting by:每行以什么開(kāi)始,默認(rèn)是''空字符串
-- teminated by:每行以什么結(jié)束,默認(rèn)是'\t\n'換行符
-- 單表數(shù)據(jù)還原(前提是表結(jié)構(gòu)存在)
load data infile 文件所在路徑 into table 表名 [(字段列表)] fields 字段處理 lines 行處理; -- 處理方式與備份相同
-- SQL備份(備份的是sql語(yǔ)句,系統(tǒng)對(duì)表結(jié)構(gòu)以及數(shù)據(jù)進(jìn)行處理,變成對(duì)應(yīng)的sql語(yǔ)句,然后進(jìn)行備份)(使用mysql提供的軟件:mysqldump.exe)
mysqldump.exe -hPup 數(shù)據(jù)庫(kù)名字 [數(shù)據(jù)表名字1,數(shù)據(jù)表名字2...] > 外部文件路徑
-- SQL還原
mysql.exe -hPup 數(shù)據(jù)庫(kù)名字 < 備份文件目錄 -- (使用mysq.exe客戶端還原)
source 文件所在路徑; -- sql指令還原,數(shù)據(jù)庫(kù)默認(rèn)當(dāng)前數(shù)據(jù)庫(kù)
-- 增量備份
-- 開(kāi)啟事務(wù)
start transaction;
-- 關(guān)閉事務(wù)
commit; -- 提交事務(wù):同步數(shù)據(jù)表(操作成功)
rollback; -- 回滾事務(wù):清空日志表(操作失敗)
-- 設(shè)置回滾點(diǎn)
savepoint 回滾點(diǎn)名字;
-- 回到回滾點(diǎn)
rollback to 回滾點(diǎn)名字;
-- 創(chuàng)建過(guò)程
create procedure 過(guò)程名字([參數(shù)列表])
begin
過(guò)程體
end
-- 刪除過(guò)程
drop procedure 過(guò)程名;
-- 查看所有過(guò)程
show procedure status [like 'pattern'];
-- 查看過(guò)程創(chuàng)建語(yǔ)句
show create procedure 過(guò)程名;
-- 調(diào)用過(guò)程
call 過(guò)程名();
-- 創(chuàng)建觸發(fā)器
delimiter 自定義結(jié)束符;
create trigger 觸發(fā)器名 觸發(fā)時(shí)間 事件類型 on 表名 for each row
begin
指令
end
自定義結(jié)束符
delimiter ;
-- 查看所有觸發(fā)器
show triggers [like 'pattern'];
-- 查看觸發(fā)器創(chuàng)建語(yǔ)句
show create trigger 觸發(fā)器名字;
-- 刪除觸發(fā)器
drop trigger 觸發(fā)器名;
《mysql指令筆記》是否對(duì)您有啟發(fā),歡迎查看更多與《mysql指令筆記》相關(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/7154.html