pymysql的连接和封装、mysql一些基本操作
1.pymysql连接数据库:
import pymysql
from pymysql.cursors import DictCursor
coon = pymysql.connect('localhost','root','123456','shop')
cur = coon.cursor(DictCursor)
2、DML 数据操作语言 建库、删库:
1、建库:(不能创建重名的库)
create database 库名 charset utf8;
2、删库:(不能删除没有的库)
drop database 库名;
3、建表:(不能创建重名的表)
注意:建表之前,要切换到数据库
create table 表名 (列名 列类型 约束,列名 列类型 约束,……);
4、查看表结构
desc 表名;
5、删除表
drop table 表名
6、修改表结构
alter table 表名
1)添加列
alter table 表名
add 列名 列类型 约束 after 已有列名(在已有列名后加)
add 列名 列类型
2)修改列类型 modify
alter table 表名
modify 列名 列新类型 约束,
modify 列名 列新类型;
注意:modify 可以修改列类型及约束。但是不能添加主键约束
3)修改列名 change
alter table 表名
change 列名 新列名 列类型 约束,
change 列名 新列名 列类型 约束;
4)删除列 drop
alter table 表名
drop 列名,
drop 列名;
5)修改表名 rename 或 rename to
alter table 表名
rename to 新表名;
6)添加和删除主键
删除主键
alter table 表名
drop primary key;
添加主键
alter table 表名
add primary key(主键列)
注意:删除主键时,要删除自增长
3、DDL 数据定义语言(表记录的修改)
1、插入数据 insert into
指定列插入数据:insert into 表名(列名,列名……)values(对应列的值),(对应列的值)
注意:未指定的列,补null,如果未指定的列有约束,按照约束的数据来添加内容
插入全部列数据:insert into 表名 values (所有列的值),
注意:有默认值的约束:可以用default 占位,将用默认值来占位
如果某列不想插入数据,写null
2、修改表记录 update
update 表名 set 列名=值, 列名 =值,……where 条件
注意:如果没有where子句,将会修改所有的记录
3、删除表记录 delete
delete from 表名 where 条件
注意:如果没有where子句,表示删除所有记录
4、DQL 数据查询语言
select 列名 as 别名,别名,.....
from 表名
where 条件
分组 group by 列名
注意:分组一般查询的内容都是分组列 和 聚合函数
having子句:用于分组后的二次筛选
聚合函数:
求个数 :count(列名)
求个和 :sum(列名)
求平均 :avg(列名)
保留小数:round(内容,小数位)
求最大 :max(列名)
求最小 :min(列名)
排序 order by 列名 升/降序
asc:升序(默认)
desc:降序
1)逻辑运算(条件的关系):and(并且)、or(或者)、not(反)
2)模糊查询:like
%:代替多个字符
_:代替多个字符
3)范围查询:in
4)不在范围:not in
5)范围查询:列名 between 开始值 and 终止值
6)空值处理函数:ifnull(字段名,0)
5、连接查询(多表查询)
1、内连接
select 表1,列名,表2.列名,……
from 表1 inner(可不写) join 表2 on 表1.列名 = 表2.列名
where 条件
group by 列名
2、外连接
左外连接:左表全部显示,右表没有对应,用null补充
select 表1 left outer join 表2 on 表1.列名 = 表2.列名
where 条件
group by 列名
右外连接:右表全部显示,左表没有对应,用null补充
select 表1 right outer join 表2 on 表1.列名 = 表2.列名
where 条件
group by 列名
6、自连接
同一张表,起两个别名,逻辑上当作两张表看待
查询地名编号、地名名称以及其所属的地域名
select a.id,a.name,b.name
from areas as a left join areas as b on b.id = a.pid
7、分页
limit 开始位置,每页记录数;
规则:每页n条记录,显示第m页的算法规则
limit (m-1)*n,n