Python全棧介紹MySQL 數(shù)據(jù)庫

mysql教程欄目python講解數(shù)據(jù)庫

Python全棧介紹MySQL 數(shù)據(jù)庫

推薦(免費):mysql教程

主要三個方面:

1.linux終端命令

立即學(xué)習(xí)Python免費學(xué)習(xí)筆記(深入)”;

2.MySQL語句

3.Python調(diào)用

終端命令:

vi? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文本編輯器

cat /etc/password | grep “用戶名”? ? ? ? ?獲取user表

sudo -i? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?獲取root權(quán)限

sudo apt-get install python3-pip? ? ? ? ? ? ?安裝pip3

sudo pip3 install pymysql? ? ? ? ? ? ? ? ? ? ? ? 安裝mysql

sudo apt-get install mysql-server? ? ? ? ? ? 安裝服務(wù)端

sudo apt-get install mysql-client? ? ? ? ? ? ?安裝客戶端

sudo apt-get update? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?讀取列表 保存到 /var/lib/apt/lists

sudo apt-get upgrade? ? ? ? ? ? ? ? ? ? ? ? ? ? ?對比下載列表并更新

sudo /etc/init.d/mysql status? ? ? ? ? ? ? ? ? 查詢狀態(tài)

sudo /etc/init.d/mysql stop? ? ? ? ? ? ? ? ? ? ?停止服務(wù)

sudo /etc/init.d/mysql restart? ? ? ? ? ? ? ? ?重啟服務(wù)

sudo /etc/init.d/mysql reload? ? ? ? ? ? ? ? ?重新加載

mysql -h主機地址 -u用戶名 -p密碼? ? ? ? ? 鏈接mysql

修改mysql默認字符集:

sudo -i? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1.獲取root

chmod? 644 文件名? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.修改文件權(quán)限

cd etc/mysql/mysql.conf.d? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3.進入配置文目錄

cp etc/msql.cnf/mysqld.cnf.bak? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4.備份

subl mysqld.cnf? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?5.vi打開源文件

[mysqld]? 目錄

character_set_server = utf8? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?6.添加命令

/etc/init.d/mysql

mysqldump -u用戶 -p源庫名 > ~/xxx.sql? ? ? ? ??? ?

數(shù)據(jù)備份:

參數(shù):

? ? ? ? ? –all-databases? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1.備份所有庫

? ? ? ? ? 庫名? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2.備份單個庫

? ? ? ? ? -B 庫1 庫2..? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3.備份多個庫

? ? ? ? ? 庫名 表1 表2…? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?4.備份指定庫指定表

數(shù)據(jù)恢復(fù):

mysql -uroot -p

mysql -uroot -p –one-database 目標(biāo)庫名

恢復(fù):表不刪除 表記錄刪除覆蓋

MySQL遠程連接:

sudo -i? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1.管理員模式

cd /etc/mysql/mysql.conf.d/? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2.cd到mysql目錄

vi mysqld.cnf? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?3.打開注釋掉默認IP

#bind-address = 127.0.0.1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4.保存

/etc/init.d/mysql restart? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5.重啟服務(wù)

授權(quán)用戶:

grant 授權(quán)列表 on 庫.表 to “用戶名“@”%”identified by “密碼” with grant option? ? ? ? ? 1.命令格式

示例:grant all privileges on *.* to “tiger”@”%” identified by “123” with grant option;? ? ? ? ? 2.示例

all privileges、select、insert …? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4.庫.表: *.*? 所有庫所有表? 3.權(quán)限列表

python3模塊安裝:

模塊名 :pymysql

? ? ? ? 在線 :sudo pip3 install pymysql

離線 :pymysql-0.7.11.tar.gz

? ? $ tar -zxvf pymyql-0.7.11.tar.gz

? ? $ cd pymysql-0.7.11

? ? $ sudo python3 setup.py install

? ? ? ? 驗證:

? ? ? ? ? ? $ python3

? ? ? ? ? ? >>> import pymysql

? ? ? ? ? ? >>>

python2模塊安裝:

模塊名 :MySQLdb

安裝 :sudo pip install mysql-python

sqlalchemy 框架 安裝:

? ? 在線 :sudo pip3 install sqlalchemy

? ? 離線 :

? ? ? $ tar -zxvf SQLAlchemy-1.2.10.tar.gz

? ? ? $ cd SQLAlchemy-1.2.10

? ? ? $ sudo python3 setup.py install

? ? 驗證:

? ? ? $ python3

? ? ? >>> import sqlalchemy

? ? ? >>>

pymysql使用:

from pymsql import *? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?導(dǎo)入模塊

(db = pymysql.connect(…))? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1、建立數(shù)據(jù)庫連接

c = db.cursor())? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2、創(chuàng)建游標(biāo)對象

c.execute(“insert ….”)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3、游標(biāo)方法:

db.commit()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4、提交到數(shù)據(jù)庫

c.close()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5、關(guān)閉游標(biāo)對象

db.close()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?6、斷開數(shù)據(jù)庫連接 :

7.connect對象:

db = pymysql.connect(參數(shù)列表)

? ? ? 1、host :主機地址,本地 localhost

? ? ? 2、port :端口號,默認3306

? ? ? 3、user :用戶名

? ? ? 4、password :密碼

? ? ? 5、database :庫

? ? ? 6、charset :編碼方式,推薦使用 utf8

8.連接對象的方法:

數(shù)據(jù)庫連接對象(db)的方法

? ? ? 1、db.close() 關(guān)閉連接

? ? ? 2、db.commit() 提交到數(shù)據(jù)庫執(zhí)行

? ? ? 3、db.rollback() 回滾

? ? ? 4、cur = db.cursor() 返回游標(biāo)對象,用于執(zhí)行具體SQL命令

9.游標(biāo)對象的方法:

游標(biāo)對象(cur)的方法

? ? ? 1、cur.execute(sql命令,[列表]) 執(zhí)行SQL命令

? ? ? 2、cur.close() 關(guān)閉游標(biāo)對象

? ? ? 3、cur.fetchone() 獲取查詢結(jié)果集的第一條數(shù)據(jù)

? ? ? ? ? ? ? ? ? ? ? ? ((記錄1),)

? ? ? 4、cur.fetchmany(n) 獲取n條

? ? ? ? ? ? ? ? ? ? ? ? ((記錄1),(記錄2))

? ? ? 5、cur.fetchall() 獲取所有記錄

ORM:orm(Object Relation Mapping 對象關(guān)系映射) 定義:把對象模型映射到MySQL數(shù)據(jù)庫中

SQL命令:

  • /var/lib/mysql? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? MySQL數(shù)據(jù)目錄

  • show variables like “autocommit”;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 查詢commit事務(wù)

  • begin;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?開啟事務(wù)

  • commit;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 提交事務(wù)(MySQL默認自動提交)

  • rollback;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?終止事務(wù)

  • system sudo -i? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 由數(shù)據(jù)直接進入終端

  • show databases;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 查看已有庫

  • create database 庫名;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?創(chuàng)建庫

  • create database 庫名 charcater set utf8;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?指定字符集

  • show create database 庫名;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?查看庫字符集

  • select database();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 查看當(dāng)前所在庫

  • use 庫名;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 切換庫

  • drop database 庫名;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 刪除庫

  • show tables;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?查看已有表

  • create table 表名(字段名1 數(shù)據(jù)類型,….);? ? ? ? ? ? ? ? ? ? ? ? ? ?創(chuàng)建表

  • show create table 表名;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 查看表字符集

  • desc 表名;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?查看表結(jié)構(gòu)

  • drop table 表名;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 刪除表

  • insert into 表名 values(值1),(值2)…;? ? ? ? ? ? ? ? ? ? ? ? ? ? ?插入完整記錄

  • insert into 表名 (字段名1,…) values(值1),…;? ? ? ? ? ? ? ?插入字段數(shù)據(jù)

  • select * from 表名 [where 條件];? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?查詢所有字段

  • select 字段名1,字段名2,…from 表名[where 條件];? ? ? ? ? ? ? ? 查看字段

  • alter table 表名 add 字段名 數(shù)據(jù)類型;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 添加字段

  • alter table 表名 add 字段名 數(shù)據(jù)類型 first;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?頭插)

  • alter table 表名 add 字段名 數(shù)據(jù)類型 after 字段名;? ? ? ? ? ? ? ? ? 指定插入)

  • alter table 表名 drop 字段名;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?刪除字段

  • alter table 表名 modify 字段名 新數(shù)據(jù)類型;? ? ? ? ? ? ? ? ? ? ? ? ? ? ?修改數(shù)據(jù)類型

  • alter table 表名 rename 表名;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?表重命名

  • delete from 表名 where 條件;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?刪除表記錄(必須加where)

  • update 表名 set 字段1=值1,字段名2=值2,… where 條件? ? ? ?更改表記錄(必須加where)

  • alter table 表名 change 原名 新名 數(shù)據(jù)類型;? ? ? ? ? ? ? ? ? ? ? ? ? ?字段重命名

  • ?create table 表名 select .. from 表名 where 條件;? ? ? ? ? ? ? ? ? ? 復(fù)制表(不復(fù)制key)

  • create table 表名 select * from 表名 where false;? ? ? ? ? ? ? ? ? ? 復(fù)制表結(jié)構(gòu)(不復(fù)制key)

  • sex enum(“M”,”F”,”S”) not NULL defaulf “S”? ? ? ? ? ? ? ? ? ? ? ?約束

  • show variables like 變量名;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 查詢MySQL變量

  • select 字段名列表 from 表名列表;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (笛卡爾積)

  • select t1.name,t2.name from t1,t2 where 條件? ? ? ? ? ? ? ? ? ? ? ? 多表查詢

  • create index 索引名 on 表名(字段名);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?添加普通索引

  • create table(….index(字段名),…)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 創(chuàng)建表時創(chuàng)建普通索引

  • drop index 索引名 on 表名;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 刪除普通索引

  • show index from 表名;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 查看普通索引

  • create unique index 索引名 on表名(字段名);? ? ? ? ? ? ? ? ? ? ? ?添加唯一索引

  • create table 表名( …. , unique key (字段名) );? ? ? ? ? ? ? ? ? ? ? ? ? ? ?創(chuàng)建表時創(chuàng)建唯一索引

  • drop unique index 索引名 on 表名;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?刪除唯一索引

  • show unique index from 表名;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 查看唯一索引

  • alter table 表名 add primary key(字段名);? ? ? ? ? ? ? ? ? ? ? ? ? ?添加主鍵索引

  • create table 表名( …. , id int, primary key (字段名) );? ? ? ? ? ? ? ? 創(chuàng)建表時創(chuàng)主鍵一索引

  • (id int primary key auto_increment,)auto_increment=10000;? ? 設(shè)置自增長起始值

  • alter table 表名 modify id int auto_increment;? ? ? ? ? ? ? ? ? ? ? ? ? ? 添加自增長

  • alter table 表名 auto_increment=20000;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?修改自增長起始值

  • alter table 表名 modify id int;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?刪除自增長

  • alter table 表名 drop primary key;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 刪除主鍵索引

  • show index from 表名G;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?查看表索引

  • desc 表名;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 查看表結(jié)構(gòu)(key)

  • Non_Unique:1? ?:index? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?普通索引(查詢結(jié)果)

  • Non_Unique:0? ?:unique? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 唯一索引(查詢結(jié)果)

  • alter table 表名 drop foreign key 外鍵名;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 刪除外鍵

  • show create table 表名;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?查看外鍵名

創(chuàng)建外鍵:

create……t1();

create table t2(

foreign key(參考字段名)

references 主表(被參考字段名)

on delete 級聯(lián)動作

on update 級聯(lián)動作);

添加外鍵:

alter table 表名 add

foreign key(參考字段) references 主表(被參考字段)

on delete …

on update …

級聯(lián)動作:

restrict(默認)不允許主表操作從表

cascade :跟隨刪除、更新

set null:主表更改后從表值為NULL

內(nèi)鏈接:

select 字段名 from表1

inner join 表2 on 條件

inner join 表3 on 條件…;

外鏈接.左鏈接:

以左表為主顯示查詢結(jié)果

? ? ? ? ?select 字段名 from 表1

? ? ? ? ?left join 表2 on 條件

? ? ? ? ?left join 表3 on 條件…;

右鏈接

? ? ? ? 以右表為主顯示查詢結(jié)果

?

數(shù)據(jù)導(dǎo)入:

load data? infile “文件名”

into table 表名

fields terminated by “分隔符”

lines terminated by “n”;

數(shù)據(jù)導(dǎo)出:

select … from 表名

into outfile “/var/lib/mysql-files/文件名”

fields terminated by “分隔符”

lines terminated by “n”;

數(shù)據(jù)恢復(fù):

恢復(fù)單個庫

? ? ?mysql -uroot -p

從所有庫備份中恢復(fù)某一個庫(-one-database)

? ? ?mysql -uroot -p –one-database 目標(biāo)庫名

恢復(fù):表不刪除 表記錄刪除覆蓋

數(shù)據(jù)備份:

mysqldump -u用戶 -p源庫名 > ~/xxx.sql

–all-databases? 備份所有庫

庫名? ? ? ? ? ? ?備份單個庫

-B 庫1 庫2..? ? ?備份多個庫

庫名 表1 表2…? 備份指定庫指定表

運行時間檢測:

? ?開啟:set profiling=1;

? ?關(guān)閉:set profiling=0;

? ?查詢執(zhí)行記錄:show profilings;

SQL查詢:

3.select … 聚合函數(shù) from 表名

1.where

2.group by…

4.having …

5.order by …

6.limit …;

查詢嵌套:

select … from 表名 where 條件(select ….);? ? ? ? ? ? ? ? ? ? ? ? ?

? ? 2、找出每個國家攻擊力最高的英雄的名字和攻擊值

? ? ? ?select name,gongji from sanguo

? ? ? ?where

? ? ? ?(country,gongji) in

? ? ? ?(select country,max(gongji) from sanguo group by country);

where:只能操作表中實際存在的字段

group by:給查詢結(jié)果進行分組

having:對查詢結(jié)果進一步篩選

distinct:不顯示字段重復(fù)值

show engines;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?查看所有存儲引擎

show create table 表名;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?查看表的存儲引擎

create table 表名(…)engine=myisam;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 創(chuàng)建表時指定存儲引擎

alter table 表名 engine=innodb;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?添加儲存引擎

InnoDB:

InnoDB特點(2文件):

? ? ? 行級鎖、支持外鍵、事務(wù)操作

? ? ? .frm(表結(jié)構(gòu),索引)、.ibd(表記錄)

MyISAM:

MyISAM特點(3文件):? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? 獨享表空間、表級鎖

? ? ? .frm(結(jié)構(gòu))、.myd(記錄)、.myi(索引)

鎖:

select :加讀鎖之后別人不能更改表記錄,但可以進行查詢

insert、delete、update :加寫鎖之后別人不能查、不能改

鎖粒度:

? ? ?表級鎖 :myisam

? ? ?行級鎖 :innodb

調(diào)優(yōu):

1.選擇合適的存儲引擎

2.常用字段建立索引

3.where 避免使用 !=、NULL判斷、or鏈接、

? ?like前置%、in、not in、*代替字段、

數(shù)據(jù)類型:

數(shù)據(jù)類型:

int? ? ? ? ? ? ?大整型(4個字節(jié))? 2**32 – 1(4294967295)

tinyint? ? ? ? ?微小整型(一個字節(jié))

? ? ? ? ? ? ? ? 有符號(signed默認):-128 ~ 127

? ? ? ? ? ? ? ? 無符號(unsigned):0 ~ 255

smallint? ? ? ? 小整型(2字節(jié))

bigint? ? ? ? ? 極大整型(8字節(jié))

Float? ? ? ? ? ?浮點數(shù)(4個字節(jié),7個有效位)

? ? ? ?字段名 float(m,n) m:總位數(shù) n:小數(shù)位數(shù)

decimal? ? ? ? ?浮點數(shù)(28個有效位)

? ? ? 字段名 decimal(m,n)m:總位數(shù) n:小數(shù)位數(shù)

? ? ? ? ? ? 將9的倍數(shù)包裝成4個字節(jié)

? ? ? 余數(shù)? ?字節(jié)

? ? ? ? 0? ? ? 0

? ? ? ?1-2? ? ?1

? ? ? ?3-4? ? ?2

? ? ? ?5-6? ? ?3

? ? ? ?7-9? ? ?4

字段名 enum(值1,值2…);? ? ? ? ? ? ? ?單選(enum)

字段名 set(值1,值2…);? ? ? ? ? ? ? ? 多選(set)

? ? (多項放在一個字符串內(nèi)用,號隔開)

date:“YYYY-MM-DD”

time:“HH:MM:SS”

datetime:“YYYY-MM-DD HH:MM:SS”

timestamp:“YYYY-MM-DD HH:MM:SS”

datetime:不給值默認返回Null

timestamp:不給值默認返回系統(tǒng)時間

時間函數(shù)

now()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回服務(wù)器當(dāng)前的時間

curdate()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回當(dāng)前時期

curtime()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回當(dāng)前日期

year(date)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回指定時間的年份

date(date)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回指定時間的日期

time(date)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回指定時間的時間

聚合函數(shù)

avg(字段名):求該字段的平均值

sum(字段名):求和

max(字段名):最大值

min(字段名):最小值

count(字段名):統(tǒng)計該字段的個數(shù)

運算符:+ – * / %

時間運算符

select * from 表名

where 字段名 運算符(時間-interval 時間間隔單位);

時間間隔單位:1 day | 2hour | 1 minute | 2year | month

數(shù)值比較: =? !=? >? >=

字符比較: =? !=

邏輯比較: and? ?or

范圍內(nèi)比較:

? ? ? 1.where 字段名 between 值1 and 值2

? ? ? 2.where 字段名 in(值1,值2,….)

? ? ? 3.where 字段名 not in (值1,值2,…)

空:where name is null

非空:where name is not null

NILL:空值,只能用is或is not取匹配

“” : 空字符串,用 = 或? != 去匹配

模糊比較:

? ? ?where 字段名 like 表達式

? ? ?表達式

? ? ? ? _ : 匹配單個字符

? ? ? ?%:匹配0到多個字符

? ? ? ? NULL不會被統(tǒng)計

排序:order by ASC | DESC

顯示: limit 開始顯示位置,條數(shù)

? ? ?每頁顯示n條記錄,顯示第m頁:

? ? ?limit(m-1)*n,n

MySQL 與 Python 交互

#?mysqlpython.py  #?導(dǎo)入mysql模塊 from?pymysql?import?*   class?MysqlPython: ????def?__init__(self,?database,??#?庫 ?????????????????host="127.0.0.1",??#?ip地址 ?????????????????user="root",??#?用戶名 ?????????????????password="123456",??#?密碼 ?????????????????port=3306,??#?端口 ?????????????????charset="utf8"):??#?字符集 ????????self.host?=?host ????????self.database?=?database ????????self.user?=?user ????????self.password?=?password ????????self.port?=?port ????????self.charset?=?charset  ????def?open(self):??#?創(chuàng)建數(shù)據(jù)庫鏈接函數(shù) ????????self.db?=?connect(host=self.host, ??????????????????????????database=self.database, ??????????????????????????user=self.user, ??????????????????????????password=self.password, ??????????????????????????port=self.port, ??????????????????????????charset=self.charset) ????????self.cur?=?self.db.cursor()??#?創(chuàng)建游標(biāo)對象  ????def?close(self):??#?創(chuàng)建斷開數(shù)據(jù)庫鏈接 關(guān)閉游標(biāo)函數(shù) ????????self.cur.close() ????????self.db.close()  ????def?zhixing(self,?sql,?L=[]):??#?創(chuàng)建pymysql.execute()?方法函數(shù) ????????try: ????????????self.open()??#?鏈接數(shù)據(jù)庫 ????????????self.cur.execute(sql,?L)??#?參數(shù)化執(zhí)行SQL命令 ????????????self.db.commit()??#?提交數(shù)據(jù) ????????????print("ok") ????????except?Exception?as?e: ????????????self.db.rollback()??#?出錯取消提交 ????????????print("Failed",?e) ????????self.close()??#?斷開數(shù)據(jù)庫鏈接 關(guān)閉游標(biāo)  ????def?all(self,?sql,?L=[]): ????????try: ????????????self.open() ????????????self.cur.execute(sql,?L) ????????????result?=?self.cur.fetchall() ????????????return?result ????????except?Exception?as?e: ????????????print("Failed",?e) ????????self.close()

數(shù)據(jù)庫用戶登錄

from?mysqlpython?import?Mysqlpython from?hashlib?import?sha1  uname?=?input("請輸入用戶名:") pwd?=?input("請輸入密碼:") #?用sha1給pwd加密  s1?=?sha1()??#?創(chuàng)建sha1加密對象 s1.update(pwd.encode("utf8"))??#?指定編碼 pwd2?=?s1.hexdigest()??#?返回16進制加密結(jié)果  sqlh?=?Mysqlpython("db4") select?=?"select?password?from?user?where? ??????????username=%s;" result?=?sqlh.all(select,?[uname]) #?print(result) #?(('7c4a8d09ca3762af61e59520943dc26494f8941b',),)  if?len(result)?==?0: ????print("用戶名不存在") elif?result[0][0]?==?pwd2: ????print("登錄成功") else: ????print("密碼錯誤")

ORM? sqlalchemy框架

#?創(chuàng)建一張表?#?連接數(shù)據(jù)庫的模塊?from? sqlalchemy?import?create_engine?fromsqlalchemy.ext.declarative ?import?declarative_base?from?sqlalchemy?import?Column,?Integer ,String?engine?=?create_engine("mysql+pymysql://root:123456@localhost/db4",? encoding="utf8")?Base?=?declarative_base()?#?orm基類?class?User(Base): ?#?繼承Base基類?__tablename__?=?"t123"?id?=Column(Integer,?primary_key=True)? name?=?Column(String(20))?address?=?Column(String(40))Base.metadata.create_all (engine)

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊10 分享