第十周内容回顾(包含部分数据库)
目录
python操作MySQL
import pymysql
# 1.连接sql服务端
conn = mysql.connect(
user='root' # 登录的账号
password='123' # 登录的密码
host='127.0.0.1' # 登录的ip地址
db='db1' # 访问的数据库
charset='utf8mb4' # 数据库编码
port=33306 # 端口号
autocommit='true' # 增改删二次确认默认不需要
)
使用pymysql进行用户注册
import pymysql
conn = pymysql.connect(
user='root',
password='123',
port=3306,
charset='utf8',
autocommit=True,
host='127.0.0.1',
db='day_44'
)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
username = input('请输入你的账号>>>:').strip()
password = input('请输入你的密码>>>:').strip()
sql = 'insert into userinfo(username,password) values(%s,%s)'
cursor.execute(sql, (username, password))
print('注册成功')
使用python进行用户登录
import pymysql
conn = pymysql.connect(
user='root',
password='123',
port=3306,
charset='utf8',
autocommit=True,
host='127.0.0.1',
db='day_44'
)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
username = input('请输入你的账号>>>:').strip()
password = input('请输入你的密码>>>:').strip()
sql = 'select * from userinfo where username=%s and password=%s' # 写查询sql语句
cursor.execute(sql, (username, password)) # 发送sql语句
res = cursor.fetchall() # 接收返回的,判断是否有值,有的话证明可以登录
if res:
print('登录成功')
else:
print('账号或者密码错误')
SQL注入问题
SQL注入:利用特殊符号的组合产生特殊的含义,从而避开正常的业务逻辑
针对sql注入问题,核心在于手动拼接了关键数据,交给execute处理即可
视图
视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用
1.视图的表只能用来查询,不能做增删改操作
2.尽量少使用视图,会跟真正的表产生混淆,从而干扰操作者
触发器
达到某个条件之后自动触发执行
在MySQL中更加的详细的说明是触发器:针对表继续增/删/改操作能够自动触发
主要有6种情况:增前,增后,改前,改后,删前,删后
事务
事务的4大特性:
原子性
'事务中的各项操作是不可分割的整体,要么同时成功要么同时失败'
一致性
'使数据库从一个一致性状态变到另一个一致性状态'
隔离性
'多个事务之间彼此不干扰'
持久性
'也称为永久性指的是一个事务一旦提交,他最数据库的改变是永久性的'
事务先关的关键字:
start transaction 开启事务
rollback 回滚
commit 保存
sevepoint 建立回滚的端口
在sql标准中定义了四种隔离级别
InnoDB支持所有隔离级别
1.read uncommitted(未提交读)
2.read committed(提交读)
3.repeatable read(可重复读)
4.serializable(可串行读)
存储过程
查看存储过程具体信息
show create procedure prol;
查看所有存储过程
show procedure status;
删除存储过程
drop procedure prol;
函数
1.移除执行字符
Trim LTrim RTrim
2.大小写转换
Lower Upper
3.获取左右起始指定个数字符
Left Right
4.日期格式
date_format
索引的相关概念
1.索引就好比一本书的目录,它能让你更快的找到自己想要的内容
2.让获取的数据更有目的性,从而提高数据检索数据的性能
索引在MySQL中也叫做键,是存储引擎用于快读找到记录的一种数据结构
主键:primary key
唯一键; unique
index key
1.上述的三个key都可以加快数据查询
2.primary key和unique除了可以加快查询本身还自带限制条件而index key很单一就是用来加快数据查询的
索引可以加快数据查询,但是也降低增删的速度
'原因是:我们在增删的时候索引也要发生改变,需要重新添加索引,所以速度会相对比较慢'
聚集索引:
主键,也叫主键索引
辅助索引:
非主键索引都被称为辅助索引
索引数据结构
索引底层其实是树结构>>>:树是计算机底层的数据结构
树有很多种类型
二叉树/b树/b+树/B*树......
二叉树
二叉树里面还可以细分很多领域
二叉意味着每个节点最大只能分两个子节点
B树
所有的节点都可以存放完整的数据
B+\*树
只有叶子节点才会存放真正的数据,其他节点只存放索引数据
B+叶子节点增加了指向其他叶子节点的指针
B*叶子节点和枝叶节点都有指向其他节点的指针
辅助索引在查询数据的时候最后还是需要借助于聚集索引
辅助索引叶子节点存放的是数据的主键值
有时候就算采用索引字段查询数据,也可能不会走索引
如:没有查询条件,或者查询条件没有建立索引
查询结果集是原表中的大部分数据,应该是30%以上
查询条件使用函数在索引列上,或者对索引列进行运算,运算包括(+,-,*,/,! 等)
隐式转换导致索引失效
慢查询优化
explain SQL语句之前使用返回等级
1.index 最差的情况,尽量避免
2.range
3.ref
4.eq_ref
5.const
6.system
7.null
前端之HTML
前端三剑客:
HTML
CSS
JS
HTTP协议
1.四大特性
a.基于请求响应
b.基于TCP/IP作用于应用层之上的协议
c.无状态
d.无/短连接
2.数据格式
1.请求格式
请求首行
请求头
换行
请求体
2.相应格式
响应首行
响应头
换行
响应体
3.响应状态码
1XX:用来标识服务端已经收到你的请求正在处理,客户端可以继续发送或者等待
2XX:200 OK标识:请求成功,服务端发送了对应的响应
3XX:重定向
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定义网页源信息(很多配置)
<meta name="keywords" content="查询关键字">
<meta name="description" content="网页简介">
3.style内置支持编写css代码
4.link引入外部css文件
5.script试吃内部编写js代码也可以引入外部js文件
body内基本标签
1.标题系列
h1~h6
2.段落标签
<p></p>
3.其他标签
u 下划线
i 斜体
s 删除线
b 加粗
标签的分类二:
行内标签: u i s b
块儿级标签: h系列,p
常见符号
1. : 空格
2.>: 大于
3.<: 小于
4.&: &符
5.¥: ¥
6.©: ©
7.® ®
body内布局标签
div
块儿级标签,占一块区域,基本上都是div占位置,配合其他标签使用
span
行内标签
body内常用标签
a标签 连接标签
主要用来填写网址的,具备跳转功能
img标签 图片标签
src 可以填写图片的地址
titile 鼠标悬浮在图片上面上面显示的文本
alt 图片加载失败的提示信息
列表标签
无序列表
<ul>
<li></li>
<ul>
有序列表
<ol>
<li></li>
<ol>
表格标签
<body>
<table>
<thead>
<tr> # 一个tr标签就表示一行
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
</tr> tr标签结束
</thead>
<tbody>
<tr>
<td>1</td> #td主要用于表达数据
<td>jason</td>
<td>18</td>
</tr>
</tbody>
</table>
</body>
表单标签
可以获取到用户的数据并发送给服务端
form标签
action 控制数据的提交地址
method 控制数据的提交方法
type标签
type属性
text 普通文本
password 密码
date 日期选项
email 邮箱
checkbox 多选
radio 单选
file 文件
submit 触发提交动作
reset 充值表单内容
button 暂无任何功能
select标签 下拉框
option 下拉框内的一个个选项
textarea标签
获取一段文本
1.用户获取用户数据的标签至少应该含有name属性
name属性相当于字典的键
用户输入的数据都会被保存的标签value属性中
value属性相当于字典的值
2.如果不需要用户填写数据,只需要选择,那么我们需要自己填写value
<body>
<form action="">
<input type="radio" name="gender" value="male" checked>男性
<input type="radio" name="gender" value="female">女性
</form>
</body>
默认的是男性
3.标签的属性如何属性值相当,那么简写
4.下拉框和文件上传可以复选
<input type="file" multiple>
<select name="" id="" multiple>
CSS层叠样式
1.主要用来条件html标签的各种样式
"""
页表上面都是由HTML构成的,页面上有很多相同的HTML标签,相同的标签需要区分开
"""
标签的两大重要属性:
1.class属性
分门别类
2.id属性
精确查找,一个HTML页面,id是不能够重复的
CSS学习预备知识
1.css语法结构
选择器 {
样式名:样式值
}
2.css注释语法
/*注释内容*/
3.因数css的多种方式
1.head内style内部编写
2.link标签引入
CSS基本选择器
1.标签选择器
2.类选择器
3.id选择器
4.通用选择器
组合选择器
1.后代选择器(空格)
2.儿子选择器(>)
3.毗邻选择器(+)
4.弟弟选择自(~)
多个选择器合并查找
属性选择器
伪类选择器
"a标签针对没有点击过的网址,默认是蓝色的,点击过则为姿色"
伪类选择器可以调整a标签的网址跳转颜色
伪元素选择器
可以给文本添加css动态内容无法被复制
CSS样式调节
字体样式
font-siez 字体大小
font-weight 字体粗细
text-align:center 文本居中
text-decoration:none 用于取消a标签下划线
text-indent:32px 首行缩进
背景属性
background
CSS边框
border:添加边框的粗细,边框的样式,颜色
none 无边框
dotted 点状虚线边框
deshed 矩形虚线边框
solid 实线边框
画圆
border-radius:50%
步骤:
设置块儿级标签的高度和宽度要一致
设置边框
border-radius设置为50%就可以
display
彻彻底底的隐藏标签(页面不会显示,也不会保留标签的位置)
盒子模型
margin: 用于控制元素与元素之间的距离;margin的最基本用途就是控制元素周围空间的间隔,从视觉角度上达到相互隔开的目的。
padding: 用于控制内容与边框之间的距离;
Border(边框): 围绕在内边距和内容外的边框。
Content(内容): 盒子的内容,显示文本和图像。
浮动
浮动就是用来做页面布局的,将字标签浮动于父标签之上,这样就可以将块儿级标签变成行内标签,直接横向在父标签内展示
浮动的关键字:
float:left/rigrh 向左或者右浮动
浮动带来的影响
浮动的元素是脱离文章文档流的,会造成父标签坍塌
解决浮动的办法:
先提前写好样式类
.clearfix:after {
content:'':
display:block;
clear:both;
}
谁塌陷了,就给谁添加clearfix样式类就可以了
溢出
溢出指的是图片的大小超过了块儿级标签的大小,可以调整溢出属性
定位
针对定位有4种状态:
1.static静态(标签默认的状态,无法定位移动)
2.reletive相对定位(基于标签原来的位置)
3.adsolute绝对定位(基于某个定位过的父标签做定位)
4.fixed固定定位(基于浏览器窗口固定不动)
Z-index
设置对象的层叠顺序
1.z-index值表示谁压着谁,数值大的压盖住数值小的
2.只有定位了的元素,才能有z-index,也就说不管相对定位还是固定定位都可以使用z-index
3.z-index值没有单位,就是一个正整数,默认的z-index的值为0
4.从父现象