MySQL:
启动:
net start mysql80
停止:
net stop mysql80

DDL:(用于操作数据库中表结构,表中字段的)
—表建立
# 查表-建表
show databases #查看所有库
select database() #查看当前数据库
create database [(if not exists)] [data_name] #创建数据库,if not exists(如果有该库则不创建,避免报错)
drop database [(if exists)] [data_name] #删除数据库,if exists(如果无该库则不删除,避免报错)
use [data_name] #使用该数据库
show tables #查询当前数据库说有表
desc [table_name] #查看表结构
show create table [table_name] #查询指定的建表语句

''' 建表 '''
    create table zhongpeng(
    id int,
    name varchar(10),                   #varchar与char相比性能较差,可变长字符串,自动识别多少字符
    age TINYINT UNSIGNED,               #int 无符号型
    gender char(1)                      #char性能好,定长字符串,写了多少就占用多少空间
    );

—表修改 & 表删除(alter)
#表修改(add、modify、change)
alter table [table_name] add [添加类型] #表添加字段(多一个信息)
alter table [table_name] modify [原字段名] [新字段数据类型] #修改数据类型
alter [table_name] change [旧字段名] [新字段名] [类型] #修改字段名和字段名类型

#表删除(drop、truncate)
alter table [table_name] [字段名]                           #删除字段名

alter [table_name] renname to [new_table_name]             #修改表名

drop table [(if exists)] [table_name]                        #删除表,if exists(如果无该表则不删除,避免报错)
truncate table [table_name]                                #删除表,删除后并重新创建一个同名的新表(清空表内数据)

DML:(完成数据的增删改)(Data Manipulation Language数据操作语言)(insert)
—插入(into)
insert into [table_name] ([字段名1,字段名2]) values [字段1值,字段2值] #给指定字段添加数据
insert into [table_name] values[值1,值2] #给全部字段添加数据

—更新和删除(update …set & delete)
insert into [table_name] ([字段名1,字段名2]) values ([字段1值,字段2值]),([字段1值,字段2值]),([字段1值,字段2值]) #批量添加数据,(要和字段名顺序一一对应)
insert into [table_name] values ([值1,值2]),([值1,值2]),([值1,值2]) #批量添加数据,(先后顺序要与创建表示是字段先后顺序一一对应)

update [table_name] set [字段名1=值1],[字段名2=值2],.....[(where 条件)]                               #修改数据,满足条件的进行修改,不加条件则全部修改

delete from [table_name] [(where 条件)]                          #删除表,如果没有where语句则删除整张表的所有数据,delete语句不能删除某个字段的值(如果要可以用update将内容设为NULL)

DQL:(用来进行数据库的信息查询)(Data Query Language 数据查询语言)(select)
—基础查询
select [字段1,字段2,字段3] from [table_name] #查询多个字段
select * from [table_name] #查询返回所有字段

select 字段1 [as 别名1],字段2[as 别名2] from[table_name]       #设置别名 (as可以省略)

select distinct [字段列表] from [table]                      #去除重复

—条件查询(where)
select [字段列表] from [table_name] (where 条件列表) #条件列表查询
‘’’ 条件 ‘’’
>(<) 大于(小于)
>=(<=) 大于等于(小于等于)
<> 或 != 不等于
between…. and … 在某个范围之内(含最小、最大值)#between跟最小值,and跟最大值
in(..) 在in之后的列表中的值,多选一
like 占位符 模糊匹配( _ 匹配单个字符, % 匹配任意字符)
is null 是null
and 或 && 并且(多个条件同时成立)
or 或 || 或者(多个条件任意一个成立)
not 或 ! 非,不是

—聚合函数
select [聚合函数][字段] from [table_name] #聚合函数查询
聚合函数(所有的null是不计入聚合函数运算)
count 统计数量
max 最大值
min 最小值
avg 平均值
sum 求和

—分组查询(group by)
select [字段列表] from [table_name] [(where 条件)] group by 分组字段名 [having 分组后过滤条件] #分组查询
‘’’
tips: where 与 having
执行时机不同:where是分组去之前进行过滤,不满足where条件,不参与分组;having是分组之后对结果进行过滤
判断条件不同:where不能对聚合函数进行判断,而having可以

    执行顺序: where>聚合函数>having

'''

—排序查询(order by)
select [字段列表] from [table_name] order by [字段1 排序方式],[字段2 排序方式2],[字段3 排序方式3]
‘’’ 排序方式
asc:升序(默认值)
desc:降序

tips:如果是多字段排序,当一个字段值相同是,才会根据第二个字段进行排序
'''

—分页查询(limit)
select [字段列表] from [表名] limit [起始索引 , 查询记录数]
‘’’
·起始索引从0开始,起始索引=(查询页码 - 1)* 每页显示记录数
·分页查询是数据库的方言(不同数据库会有不同的查询方法),不同的数据库有不同的实现,MySQL是limit
·如果查询的是第一页的数据,起始索引可以省略,直接简写limit10
‘’’

‘’’
—编写顺序
select
字段列表
from
表名列表
where
条件列表
group by
分组字段列表
having
分组后条件列表
order by
排序字段列表
limit
分页参数

—执行顺序
from
表名列表
where
条件列表
group by
分组字段列表
having
分组后条件列表
select
字段列表
order by
排序字段列表
limit
分页参数
‘’’

DCL:(用来管理数据库用户、控制数据库的访问权限)(Data Control Language 数据控制语言)(identified geant)
—查询用户(select)
use mysql
select * from user #用户信息存在mysql库下的user表中

—创建用户(create)
create user ‘用户名‘@’主机名’ identified by ‘密码’ #建立后该用户可以访问mysql,但没有访问其他数据库的权限
Tips:
localhost:本地主机
% :任意主机

—修改用户密码 (alter)
alter user ‘用户名‘@’主机名’ identified with mysql_native_password by ‘新密码’

—删除用户(drop)
drop user ‘用户名‘@’主机名’

—常用权限
all , all privileges 所有权限
select 查询数据
insert 插入数据
update 修改数据
delete 删除数据
alter 修改表
drop 删除数据库/表/视图
create 创建数据库/表

—查询权限
show grants for ‘用户名‘@’主机名’

—授予权限
grant [权限列表] on [数据库.表名] to ‘用户名‘@’主机名’

—撤销权限
revoke [权限列表] on [数据名.表名] from ‘用户名‘@’ 主机名’

1
2
3
4
5
pymysql
# # 获取返回结果
# res = cursor.fetchall() # 获取所有记录列表
# # res = cursor.fetchone() # 获取单条数据.
# # res = cursor.fetchmany(3) # 列表套字典 几个数据