說(shuō)明:MySQL是一個(gè)關(guān)系型數(shù)據(jù)管理系統(tǒng)(RDBMS)像鸡,以表格的形式存儲(chǔ)、管理數(shù)據(jù)。
- 數(shù)據(jù)庫(kù)的分類(lèi):
- 關(guān)系型數(shù)據(jù)庫(kù):MySQL由蘑、Oracle、SQL Server...等
- 非關(guān)系數(shù)據(jù)庫(kù):Redis代兵、MongoDB...等
- MySQL下載路徑:
https://pan.baidu.com/s/1Yd5pwStk_6AGcJNpVhcq6w - 命令分類(lèi):
- 數(shù)據(jù)定義語(yǔ)言(DDL):創(chuàng)建尼酿、刪除、修改
- 數(shù)據(jù)操作語(yǔ)言(DML):增奢人、刪谓媒、改
- 數(shù)據(jù)查詢(xún)語(yǔ)言(DQL): 查
- 數(shù)據(jù)控制語(yǔ)言(DCL):授權(quán)、取消授權(quán)
- 數(shù)據(jù)事務(wù)語(yǔ)言(DTL):開(kāi)啟事務(wù)何乎、提交事務(wù)句惯、事務(wù)的回滾
以下操作命令都是在終端打開(kāi)mysql服務(wù)后進(jìn)行。
DDL
只對(duì)數(shù)據(jù)庫(kù)支救、表結(jié)構(gòu)進(jìn)行操作
- 修飾字段符:
- unsigned:無(wú)符號(hào)
- not null:不能為空
- default:默認(rèn)值
- auto_increment:設(shè)置自增長(zhǎng)
- zerofill:高位填充0
- 索引:
- index:普通索引
- primary key:主鍵索引
- unique:唯一索引
- fulltext:全文索引
注意:
1抢野、MySQL 5.6 以前的版本,只有 MyISAM 存儲(chǔ)引擎支持全文索引各墨;
2指孤、MySQL 5.6 及以后的版本,MyISAM 和 InnoDB 存儲(chǔ)引擎均支持全文索引;
3贬堵、只有字段的數(shù)據(jù)類(lèi)型為 char恃轩、varchar、text 及其系列才可以建全文索引黎做。
show databases; #顯示所有的數(shù)據(jù)庫(kù)
use database叉跛; #選擇數(shù)據(jù)庫(kù)
create database 庫(kù)名; #創(chuàng)建數(shù)據(jù)庫(kù)
drop database 庫(kù)名; #刪除數(shù)據(jù)庫(kù)
show tables; #顯示當(dāng)前數(shù)據(jù)庫(kù)下的所有數(shù)據(jù)表
create table 表名( #創(chuàng)建表
字段1 數(shù)據(jù)類(lèi)型 修飾字段符1 修飾字段符2,
字段2 數(shù)據(jù)類(lèi)型 修飾字段符,
primary key(字段1)
)engine=InnoDB default charset=utf8;
desc 表名蒸殿; #查看表結(jié)構(gòu)
drop table 表名筷厘; #刪除表
alter table 表名 add 字段 數(shù)據(jù)類(lèi)型; #在指定表添加字段
alter table 表名 add 字段 數(shù)據(jù)類(lèi)型 after 字段;#在指定字段后添加新字段,也可以使用first
alter table 表名 modify 字段 新的數(shù)據(jù)類(lèi)型; #修改字段的數(shù)據(jù)類(lèi)型
alter table 表名 change 原字段 新字段 數(shù)據(jù)類(lèi)型宏所; #修改表中的字段名
alter table 原表名 rename 新表名酥艳; #修改數(shù)據(jù)表的名字
alter table 表名 drop 字段; #刪除指定字段
show keys from 表名爬骤; #查看所有索引名
alter table 表名 add index(字段)充石; #添加普通索引
alter table 表名 drop index 字段; #刪除普通索引霞玄、唯一索引赫冬、全文索引
alter table 表名 drop primary key浓镜; #刪除主鍵索引
show variables like "%character%"; #查看當(dāng)前的字符集
show variables like "%engine%"; #查看當(dāng)前的存儲(chǔ)引擎
engine:設(shè)置數(shù)據(jù)表的存儲(chǔ)引擎,默認(rèn) InnoDB
charset:設(shè)置數(shù)據(jù)表的字符集為 utf8
modify 與 change 也可以使用first劲厌、after膛薛,起到移動(dòng)字段的作用。
DML
對(duì)數(shù)據(jù)表中數(shù)據(jù)的操作
##插入數(shù)據(jù)
insert into 表名 (字段1补鼻,字段2) values (value1,value2),(value3,value4)
#刪除數(shù)據(jù)
delete from 表名 where 條件哄啄;
##更新數(shù)據(jù)
update 表名 set 改變的值 where 條件;
刪除與修改表中的數(shù)據(jù)時(shí)风范,一定要加上條件咨跌!
DQL
對(duì)數(shù)據(jù)表中進(jìn)行查詢(xún)的操作
- 常用函數(shù):
- count():統(tǒng)計(jì)數(shù)量
- sum():求和
- max() / min() :返回最大值 / 最小值
- avg():平均值
select * from 表名;
select * from 表名 where 條件硼婿;
select * from 表名 group by 字段锌半; #根據(jù)指定字段分組
select 字段,count(字段) from 表名 group by 字段寇漫; #顯示指定字段名與數(shù)量
select* from 表名 order by 字段刊殉; #根據(jù)指定字段排序,默認(rèn)升序
# asc-->升序,desc-->降序
#隱式內(nèi)鏈接
select * from 表1州胳,表2 where 條件记焊;
#顯式內(nèi)連接
select * from 表1 join 表2 on 條件;
#左外連接
select * from 表1 left join 表2 on 條件栓撞;
#右外連接
select * from 表1 right join 表2 on 條件遍膜;
- 常用條件符號(hào):
- <、>瓤湘、<=瓢颅、>=、!=弛说、<>
- between ... and ...
- in 挽懦、not in
- like 條件
- is null 、is not null
DCL
對(duì)數(shù)據(jù)庫(kù)用戶(hù)的權(quán)限進(jìn)行的操作
- 權(quán)限可以是:
- select
- insert
- update
- delete
- all privileges
##創(chuàng)建 / 刪除其他用戶(hù)
create user '用戶(hù)名'@'主機(jī)名' identified by '密碼';
drop user '用戶(hù)名'@'主機(jī)名' 剃浇;
##授予 / 取消權(quán)限
grant 權(quán)限 on *.* to '用戶(hù)名'@'主機(jī)名' identified by '密碼';
revoke 權(quán)限 on *.* from '用戶(hù)名'@'主機(jī)名';
flush privileges巾兆; #刷新權(quán)限
show grants; #查看當(dāng)前用戶(hù)的權(quán)限
show grants for '用戶(hù)名'@'主機(jī)名'猎物; #查看指定用戶(hù)的權(quán)限
*.*:前一個(gè)*表示所有庫(kù)虎囚,后一個(gè)*表示所有表
DTL
事務(wù)只能作用于數(shù)據(jù)表中的數(shù)據(jù)發(fā)生更新時(shí)起作用,包括:數(shù)據(jù)的插入蔫磨、刪除淘讥、修改,一旦事務(wù)提交后堤如,數(shù)據(jù)就會(huì)永久性保存蒲列。
#開(kāi)啟事務(wù)窒朋,即設(shè)置事務(wù)不能自動(dòng)提交
set autocommit=0;
#撤銷(xiāo)事務(wù)
rollback;
#提交事務(wù)
commit蝗岖;
pycharm連接mysql
import pymysql
#創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象
conn = pymysql.connect(
host='localhost',user='root',password='123456',
port=3306,database='test',charset='utf8')
print(conn) #打印結(jié)果為一個(gè)對(duì)象時(shí)侥猩,即連接成功。