相关概念
统一字符编码
SQL语句
操作文件夹(库)
增:create database db1 charset utf8;
删: drop database db1;
改:alter database db1 charset gbk;
查:show create database db1;
show database;
操作文件(表)
切换文件夹:use db1;
查看当前所在文件夹:select database();
增: create table t1(id int,name char) 表明字段
查: show create table t1;
show tables;
desc t1/describe;
改: alter table t1 modify name char(6);
alter table t1 change name NAME char(7);
删: drop table t1;
操作文件内容(记录)
增:insert t1(id,name) values(1,'adam'),(2,'matthew');
insert t1 values(1,'adam'),(2,'matthew');(默认字段顺序插入)
查:select id,name from db1.t1;
select * from db1.t1;
改:update db1.t1 set name='SB'(所有字段)
update db1.t1 set name='ALEX' where id=2;(指定字段)
删:delete from t1;
delete from t1 where id=2;
库操作
存储引擎介绍
查看Mysql支持的存储引擎
指定表的类型/存储引擎
create table t1(id int) engine=innodb;
表的增删改查
数据类型
数值类型
日期类型
字符类型
枚举类型和集合类型
完整性约束
约束条件not null 与 default
约束条件unique key
约束条件primary key
约束条件auto_increment
自增长字段必须为key。
可以不用传自增长字段,也可以传(会从上一条记录自增长 )。
truncate会将自增长字段索引一起删除,不会导致重新插入值依然沿着上次的记录增长。
约束条件之foreign key
想要直接删除被关联表字段,关联表字段需要增加约束条件,删除同步和更新同步。
表关系
多对一
多对多
一对一
数据操作
单表查询
多表查询
where约束
group by分组
having过滤
order by排序
limit限制条数
正则查询
连表操作
执行顺序
子查询
权限管理
Navicat使用
pymysql模块基本使用
pymysql模块之sql注入
--➕空格 会注释后续内容
两种攻击注入方式
使用模块内置拼接解决
pymysql模块之增删改查
插一行
插多行,其他操作类似
查询一行
修改游标为字典游标,以字典形式返回
查询多行
重复查询
查询插入的第一条记录的自增id
MySQL内置功能介绍
视图(虚拟表)-只有表结构,没有表数据
触发器
delimiter定义结束符号,防止then后面的SQL语句的分号导致提前结束
存储过程(内置功能的总和)-有点像封装函数
无参存储过程
这里没有下划线callproc
有参存储过程
必须表明传入还是传出参数,以及类型
最后是p2_2,写错了
mysql示例
python示例
应用程序和数据库结合使用
事务-一堆SQL一起执行-原子操作,要么都成功,一个失败都失败
commit执行完才真正修改了表
声明结束符号,再定义一个存储过程,先定义两种异常,在定义一个事务,在设定一个返回值