第十周总结
目录
mysql多表查询及pymysql简单使用
多表查询的两种方法
方式一:连表操作
inner join 内连接
left join 左连接
right join 右连接
union 全连接
方式二:子查询
将一条sql语句用括号括起来当成另外一条sql语句的查询条件
小知识点补充
concat与concat_ws
concat用于分组之前的字段拼接操作
concat_ws拼接多个字典并且中间的连接符一致
exists
sql1 exists sql2
sql2有结果的情况下才会执行sql1 否则不执行sql1
表相关sql补充
alter table 表名 rename/add/change/modify/drop
python操作mysql
1.导入pymysql模块
2.连接mysql服务端
3.产生游标
4.编写sql语句
5.发送sq语句
6.获取sql语句执行之后的结果
pymysql补充说明
fetchall(获取所有的结果)
fetchone()获取结果集的第一个数据
fetchmany()获取指定数量的结果集
autocommit=True 针对增删该 自动确认
conn.commit() 针对增删改二次确认(代码确认)
sql注入问题
问题:利用特殊符号的组合产生特殊的含义 从而避开正常的业务逻辑
select * from userinfo where name='jason' -- kasdjksajd' and pwd=''
select * from userinfo where name='xyz' or 1=1 -- aksdjasldj' and pwd=''
解决:
sql = " select * from userinfo where name=%s and pwd=%s "
cursor.execute(sql, (username, password))
视图、触发器、事务、存储过程
视图:通过查询得到一张虚拟表,然后保存下来直接使用
触发器:达到某个条件后自动触发执行,针对表继续增、删、改操作能自动触发,有6种情况:增前、增后、删前、删后、改前、改后
create trigger 触发器名字 before/after/ insert/update/delete on 表名 for each row
begin
sql语句
end
事务的四大特性(ACID)
A:原子性:事务中的各项操作是不可分割的整体 要么同时成功要么同时失败
C:一致性:使数据库从一个一致性状态变到另一个一致性状态
I:隔离性:多个事务之间彼此不干扰
D:持久性:也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的
存储过程:看成是python中的自定义函数
函数、流程控制
函数:可以看成是python中的内置函数
1.移除指定字符
Trim、LTrim、RTrim
2.大小写转换
Lower、Upper
3.获取左右起始指定个数字符
Left、Right
4.返回读音相似值(对英文效果)
Soundex
5.日期格式:date_format
# 分支结构
declare i int default 0;
IF i = 1 THEN
SELECT 1;
ELSEIF i = 2 THEN
SELECT 2;
ELSE
SELECT 7;
END IF;
# 循环结构
DECLARE num INT ;
SET num = 0 ;
WHILE num < 10 DO
SELECT num ;
SET num = num + 1 ;
END WHILE ;
索引
索引在Mysql中也叫做"键",是存储引擎用于快速找到记录的一种数据结构
索引可以加快数据查询 但是会降低增删的速度
聚集索引(primary key)
辅助索引(unique,index)除主键以外的都是辅助索引
索引底层其实是树结构>>>:树是计算机底层的数据结构
树有很多种类型:二叉树、b树、b+树、B*树...
explain
index 尽量避免
range
ref
eq_ref
const
system
null
事务
事务(transaction) 回退(rollback)提交(commit)保留点(savepoint)
隔离级别
1. read uncommitted(未提交读)
2.read committed(提交读)
3.repeatable read(可重复读)
4.serializable(可串行读)
锁
读锁(共享锁):多个用户同一时刻可以同时读取同一个资源互不干扰
写锁(排他锁):一个写锁会阻塞其它的写锁和读锁
死锁 :1.多个事务试图以不同的顺序锁定资源时就可能会产生死锁;2.多个事务同时锁定同一个资源时也会产生死锁
事务日志
事务日志可以帮助提高事务的效率
转换表的引擎
1.alter table
2.导入导出 mysqldump
3.insert...select
HTML
前端:任何与用户直接打交道的操作界面 都可以称之为前端
后端:不直接与用户打交道 主要负责内部真正的业务逻辑的执行
HTTP协议的四大特性:
1.基于请求相应
2.基于TCP/IP作用于应用层之上的协议
3.无状态 4.无/短连接
数据格式:
1)请求格式:请求首行、请求头、换行、请求体
2)相应格式:相应首行、响应头、换行、响应体
相应状态码
1xx:服务端接收到客户端的请求在处理 客户端可以继续发送或者等待
2xx:200 ok 请求成功 服务端发送了对应的响应
3xx:302(临时)304(永久重定向)
4xx:403 访问权限不够 404请求资源不存在
5xx:服务端内部错误
HTML概览
1.html注释语法:<!--注释内容--->
2.HTML文档结构
<html> 固定格式html包裹
<head>主要放跟浏览器交互的配置</head>
<body>主要放给用户查看的花里胡哨的内容</body>
</html>
3.html标签分类
单标签(自闭和标签)<img/>
双标签<h1></h1>
head内常见标签
1.title网页小标题
2.meta定义网页源信息(很多配置)
3.style内部支持编写css代码
4.link引入外部css文件
5.script支持内部编写js代码也可以引入外部js文件
body内基本标签
1.标题系列标签 h1-h6
2.段落标签 p
3.其它标签
u下划线 i斜体 s 删除线 b加粗
4.换行与分割线
br 换行 hr 分割线
行内标签 uisb
块级标签 h系列、p
常见符号
1. 空格
2.> 大于
3.< 小于
4.& &符
5.¥ ¥
6.© ©
7.® ®
body内布局标签
div:块儿级标签
span:行内标签
body内常用标签
a标签 链接标签
href:填写网址,具备跳转功能
target:默认_self原网页跳转,_blank新建网页跳转
img标签 图片标签
src:填写图片地址;title:鼠标悬浮在图片上自动展示的文本 alt:图片加载失败提示的信息 width\height:图片的尺寸,两者调整一个即可
列表标签
无序列表(常用)
<ul>
<li></li>
</ul>
有序列表
<ol>
<li></li>
</ol>
标题列表
<dl>
<dt></dt>
<dd></dd>
</dl>
表格标签
<table>
<thead>
<tr>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
</tr>
</tbody>
</table>
表单标签
可以获取用户数据并发送给服务端
from 标签
action 控制数据的提交地址
method 控制数据的提交方法
input标签
type属性
text 普通文本
password 密文展示
date 日期选项
email 邮箱格式
radio 单选
checkbox 多选
file 文件
submit 触发提交动作
reset 重置表单内容
button 暂无任何功能
select标签 下拉框
option标签 一个个选项
textarea标签 获取大段文本
multiple 多个(file,select)
checked默认选项
input标签应该有name属性(name属性相当于字典的键 input标签获取到的用户数据相当于字典的值,点击发送给服务端,这样才具有明确意义)
CSS
标签的两大重要属性
1.class属性:分门别类,主要用于批量查找
2.id属性:精确查找,主要用于点对点
css语法结构
选择器{样式名:样式值}
css注释语法:/*注释内容*/
引入css的多种方式
1.head内style标签内部编写(学习使用)
2.head内link标签引入(标准方式)
3.标签内部通过style属性直接编写(不推荐)
css基本选择器
1)标签选择器(直接按照标签名查找标签)
2)类选择器(按照标签的class值查找标签)
3)id选择器(根据标签的id之精确查找标签)
4)通用选择器(*直接选择页面的所有标签)
css组合选择器
1)后代选择器(空格)
2)儿子选择器(大于)
3)毗邻选择器(加号)
4)弟弟选择器(小波浪号)
分组与嵌套
多个选择器合并查找
属性选择器
按照属性名查找
按照属性名等于属性值
伪类选择器
伪元素选择器
选择器优先级
1.选择器相同,导入方式不同:就近原则
2.选择器不同,导入方式相同
内联样式》id选择器>类选择器>标签选择器
css样式调节
字体样式
背景属性
边框
display:none:彻底隐藏标签(页面不会显示 也不会保留标签位置)
visibility:hidden 隐藏的不彻底
盒子模型
将标签看成是一个盒子(快递盒)
1.快递包里面的实际物体 content(内容)
2.物体与内部盒子墙的距离 padding(内边距、内填充)
3.快递盒的厚度 border(边框)
4.快递盒之间的距离 margin(外边距)
浮动:用来做页面布局的
影响:浮动的元素是脱离正常文档流的,会造成父标签塌陷
解决:先提前写好样式类
.clearfix:after {
content: '';
display:block;
clear:both;
}
溢出:overflow:hidden
定位
标签在默认情况下都是无法通过定位的参数来移动
四种状态:
1.static静态(标签默认的状态 无法定位移动)
2.relative相对定位(基于标签原来的位置)
3.absolute绝对定位(基于某个定位过得父标签做定位)
4.fixed固定定位(基于浏览器窗口固定不动)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现