首页 > 其他分享 >第十周内容回顾

第十周内容回顾

时间:2022-12-04 14:00:20浏览次数:34  
标签:回顾 第十 color 标签 索引 内容 div 选择器 属性

一、多表查询的两种方式

1、连表查询

select * from p1 inner join p2 on p1.id=p2.pid;

inner join 内连接

如果出现某个表中的数据在另一个表中没有对应的字段匹配,就不会显示

left join 左连接

以左边的表为主表,出现没有对应的记录时,右边表中的直接不显示,左边表中的用null填充显示没有的字段值。

right join 右连接

跟左连接相反

union 全连接

两个表直接的左连接语句和右连接语句中间用union连接就是全连接,会显示所有的记录

2、子查询

把其他的查询语句当条件写到小括号中用来查询

二、小知识点补充

1、concat和concat_ws

这里的两个方法和group_concat()的作用是一样的,显示某个字段中的所有的值,concat和group_concat()一样的使用方式,concat_ws则是在第一个参数位置写中间用于分隔的符号,后面写需要获取数据的字段名称,这样就会用统一的分隔符分隔记录值。

2、exists

这里的exists用的是子查询的方式来使用的,当子查询的语句有结果的时候就会运行整个查询语句,否则就不运行整个查询语句

3、alter操作

通过中介接上add、change、modify、drop可以做到表的字段的增删改

三、Navicat软件

这是一款数据库第三方软件,所有的常用功能都已经包装成了一个个按钮供我们使用,所有的操作都比较简单,不具体展开了。

sql注释语法

--

/**/

四、多表查询练习题

解题思路:

1、确定需要用掉的表

2、根据表关系拆解题目需求

3、根据拆分开的需求一步步求结果

4、使用子查询结合前面的结果得到答案

五、pymysql模块

import pymysql

conn.pymysql.connect(

host=ip地址

port=端口号

user=mysql用户名

password=密码

db=数据库名称

charset=字符编码类型

autocommit=Ture 针对增删改自动确认,不确认的话这些操作不能执行,或是在下方使用conn.commit()进行确认

)

conn.cursor()产生游标对象

sql = sql语句

cursor.execute(sql)执行sql语句,如果需要传参的话,也写在后面用逗号隔开套在一个小括号里,否则会出现sql注入现象。

cursor.fetchall()获取执行结果

fetchall获取所有的结果

fetchone获取一条记录结果

fetchmany(5)获取五条结果,可以指定获取的记录数量

获取结果的时候跟文件的光标移动相似,获取了fetchall之后,就没有别的内容可以获取了,这时候用到scroll(类型,mode)

类型有三种1、0、-1

分别表示从文件的当前位置继续移动

从文件的开头开始移动

从文件的末尾开始移动

六、视图

在MySQL中我们可以把多表查询的结果设置成视图,也就是把结果存成另一个表

create view teacher2course as
select * from teacher inner join course on teacher.tid = course.teacher_id;

但是不推荐频繁使用,因为视图表跟普通表看着一模一样,不好分辨, 到那时视图表不能进行除查之外的操作

七、触发器

关键词tigger

create trigger 触发器的名字 before/after insert/update/delete on 表名 for each row
begin
	sql语句
end

只能对增删改进行触发,根据操作的前后分成六个状态。

由于内部的sql语句也是用分号结尾的,这就会导致混乱,因此我们使用delimiter修改语句结束符号,然后执行完触发器代码后再改回分号。

delimiter $$

八、事务

事务的四个特性(ACID)

原子性

执行事务的时候要么所有的语句都成功,要么就让所有的语句都执行失败,回到执行前的状态

一致性

无论事务执行成功,最后的记录数量应该是不变的

隔离性

多个事务之间相互独立,不受影响

持久性

事务的修改是永久的,修改之后数据就保存到数据库中了

在sql中需要使用start transaction开启事务

然后再用rollback回退到之前的状态

commit作用相当于保存数据到数据库中,如果没有执行commit数据都没有保存到数据库中

savepoint相当于虚拟机的镜像,保存一个锚点,用于回退

事务之间的相互影响

因为事务之间具有隔离性

这就导致会出现下列影响状态

脏读

一个事务数据的时候,另一个事务没有使用commit提交数据保存,这时候数据有可能会回滚

不可重复度

就是理想状态下的查询,另一个事务修改数据,倒是别的事务在执行两个相同的查询语句出现两个不同的结果

幻读

如果两个事务,一个执行修改操作,一个执行增加记录操作,增加记录的人先提交了,然后修改的事务也提交了,这时候增加的记录就会小时,好像发生了幻觉

丢失更新

两个事务同时修改记录,会出现覆盖的情况,导致数据更新丢失

针对这些状态

mysql的innodb存储引擎有下面这些隔离级别来处理

read uncommitted

未提交读

执行事务的时候如果没有提交,其他事务也可以读取数据,这个隔离级别对应的就是脏读

read committed

提交读

跟未提交读相反,提交了之后别的事务才能读取这是默认的隔离级别

repeatable read

可重复读

可以解决脏读,但是不能解决幻读

serializable

可串行读

强制让事务串行执行

九、存储过程

相当于python中的自定义函数,用于封装一些功能,关键词procedure

十、函数

跟我们之前用的min、max、avg等函数一样,

常见的还有Trim、LTrim、RTrim,这个方法跟python中的字符串内置方法strip一样

Lower、Upper

转换字母大小写

Left、Right

获取左右起始位置指定个数字符

Soundex

根据英文的发信模糊获取记录

date_format

时间函数,用于获取时间

十一、流程控制

跟python一样分成if和while,分支结构和循环结构。

跟python不同的是两者需要在结尾的地方写上end if/while

同时if条件的后面要写生then,while条件的后面需要写do

十二、索引

所谓的索引就相当于是书本的目录,方便我们查找的,提高效率

mysql主要有两种索引方式:B-Tree和hash索引

在mysql中索引也叫键,比如

primary key

unique (key)unique可以不写key

index key

其中primary key叫做聚集索引

其他两个叫做辅助索引

前两个键是有约束条件的

index key没有,他只是用于索引查找的

根据查找的条件,我们把索引分成

覆盖索引

select后面的查询字段跟条件判断中的字段是一个

非覆盖索引

跟覆盖索引相反

索引的数据结构

索引的底层其实是树结构

树结构也有很多中

比如二叉树,只能有两个分支

b树

当数据很多的时候,我们从磁盘找数据,就相当于大海捞针,因此有了b树

b树会吧数据先分类

根分支存数据的分类

中间的支点叫做枝

最下方的交叶

b+/b*树跟b树类似

b+树是在叶之间叶弄了连接,可以直接查找

b*树就是在枝之间也加了连接,可以互相查找

索引失效的情况

1、当模糊查询的时候前面如果是%开头就不会使用索引查询

2、当记录很少的时候也不会使用索引

3、如果查询语句中有or也不会使用索引

4、如果查询的时候表中数据有null,查询的时候条件处如果是is not null也不会使用索引

5、如果条件处用了计算或是函数也不会使用索引

十三、慢查询

我们使用查询语句的时候如果用到了索引,就会有一个叫索引扫描类型

这个类型就是判断代码效率的,我们在使用的时候需要在语句前面加上explain就可以查看扫描类型

在编写代码的时候不能处于第一级index,最少需要处于第二级range

十四、前端

前端可以看成是网页中的画面

后端就是处理前端获取到的数据的

学习前端,对于我们学后端的来说是为了了解一些基础知识,防止被人在工作的时候给骗了

前端三剑客

html和css和JavaScript

分别代表网页的骨架

网页的外表

控制网页的动作执行

十五、http超文本传输协议

就是使用浏览器充当客户端的b/s架构

当我们通过浏览器访问的时候,对传输的数据是有要求的,需要符合http协议

http协议的四大特性

1、基于请求

当客户端和服务端建立联系的时候只有发送请求的时候,服务端才会相应,别的时候不联系

2、基于tcp和ip作用在应用层

3、无状态

不会记住建立过关系的客户端或服务端,每次建立连接,都把你当成第一次见面

4、无连接/短连接

相当于输出传输结束就会断开连接,不同于tcp协议

报文格式

分成请求报文和相应报文

请求报文格式

请求首行(请求方式和协议版本)

请求头(一些kv键值对形式的数据)

空行(/r/n)

请求体(发送的数据,但是不是所有的数据都放在这里发送)

响应报文格式

响应首行(响应状态码和协议版本)

响应头(一些kv键值对类型的数据)

空行(/r/n)

响应体(让浏览器展示给用户看得数据)

响应码类型

1开头的表示发送了请求还在等待响应

2开头表示接受到了服务端的响应数据,比如200就是接受到了数据的状态

3表示重定向,所谓重定向就是在点击网页的时候,没有跳转到本来应该去的网页,比如点购物的时候如果没登陆会要求你先登陆

4开头表示客户端那里有问题

5开头表示服务端除了问题

在公司中我们还会自定义一些状态码,通常是10000起步

十六、html

html又叫超文本标记语言

用于创建网页,文件的后缀名通常是html或是htm

html的注释语法是< ! --这里写内容-- >

我们在pycharm中就可以编写网页

创建了一格html文件后我们可以看到文件的上面是字符编码等配置信息,在往下就是分成head和body两块

head中编写跟浏览器交互的配置

body就是放一些展示内容(主要给用户看的)

然后html中的东西都是通过标签创建的

这里我们通过标签的形式分成单标签(自闭合标签)和双标签,也就是是否需要用两个标签包裹内容来分类的。

十七、head常见标签

title标签

首先说一下title标签,这就是设置浏览器上方网页名称的地方

meta标签

定义网页源信息

比如搜索关键字和介绍

style标签

设置标签的样式

link标签

用于引入外部的css文件

script标签,可以引入外部的js代码,也可以编写js代码

十八、body内常见标签

h标签

标题

p标签

段落

u、i、s、b

下划线、斜体、删除线、加粗

img标签

图片标签

  • src属性指定图片存储的路径
  • width/height属性指定我们图片的宽度,高度会等比例缩放! 不要两个属性一起改,会变形的。
  • title属性用来设置鼠标悬停时的提示信息
  • alt属性用来设置当我们图片加载失败的时候,显示的信息。

标签的分类方式二

通过标签能否独占一行分成块级标签和行内标签

p标签不能嵌套块级标签

别的标签之间都是可以大(块级)内部的套小(行内)的

常见的符号

因为在html代码中各种符号都有特殊作用

因此我们用下列形式表示这些符号方式冲突

1.&nbsp; 	空格
2.&gt;		大于
3.&lt;		小于
4.&amp;		&符
5.&yen;		¥
6.&copy;	© 
7.&reg;		®

body内布局标签

div和span

其中的话div是块级标签

span是行内标签

我们的网页在编写的时候通常用的都是div标签

超链接标签

a标签

内部的href属性写上地址就可以点击跳转

写上id属性的话,就可以做到页面的上下跳转

target属性可以设置跳转的方式,默认情况是__self,这个状态下会在原网页上跳转,改成__blank就会变成打开一个新的网页然后跳转

列表标签

ul

有序列表

ol排序方式、li

标题列表

dt大标题

dd

表格

table

thead

tbody

tr

th

十九、表单标签

form标签和input标签

form嵌套input标签,然后input内部写上类型,就可以接收各种类型的数据,达成各种功能,不需要自行编写,常见的类型有text、password、date、email、radio、file

多选列表用的是select标签

如果想要选择多个还需要加上multiple属性

补充说明

当我们在获取输入的时候需要写上name属性,这就相当于字典数据值的键名称,没有name属性的数据无法被使用,浏览器不会传输给后端,如果需要使用默认值,可以使用value属性进行设置

input标签理论上应该绑定一个lable标签,这样我们在点击标签的时候就会自动跳转到输入框内

当我们在写标签属性的时候,如果值跟名称一样可以简写

二十、css

css也叫层叠样式表

是一门样式语言,主要用于标签的外观修改美化

首先需要说一下标签的两个属性

class

相当于班级分类

id

相当于身份证号

我们在学css之前需要先学习标签的查找,这两个属性在分类查找中起到关键作用

css的注释语法

/* 内容 */

引入css代码的多种方式

1、在head中写上style标签编写css代码进行设置

2、使用link导入css文件

3、在便签的内部使用style属性设置

通常来说我们工作中用的都是第二种,第一种可以在学习的时候使用,第三种不推荐

二十一、css选择器

	1.标签选择器(直接按照标签名查找标签)
        div {
                color: red;
            }
 	2.类选择器(按照标签的class值查找标签)
    	 .c1 {
            color: green;
        }
 	3.id选择器(根据标签的id之精准查找标签)
    	#d1 {
            color: yellow;
        }
 	4.通用选择器(直接选择页面所有的标签)
    	* {
            color:blue;
        }

这上面是四个基本的选择器

选择器之间还可以组合使用

    1.后代选择器(空格隔开)
		div内部的span标签设置字体颜色
        div span {
                color: red;
            }
    2.儿子选择器(大于)
		选择所有父级是 <div> 标签的 <span> 标签
        div>span {
                color: yellow;
            }
    3.毗邻选择器(加号)
		符合条件(需要是span便签)并且与父标签(div)相邻
        div+span {
                color: yellow;
            }
    4.弟弟选择器(小波浪号)
		div后面所有的兄弟span标签(也就是同级标签)
        div~span {
                color: yellow;
            }

选择器之间还可以嵌套使用

	同时查找div、p、span三种同级标签,修改他们的颜色,改为黄色
	div,p,span {  # 多个选择器合并查找
            color: yellow;
        }
	修改id值为d1的标签和class值为c1的标签,还有外层span标签的颜色,改为绿色
 	#d1,.c1,span {
            color: green;
        }

	div.c1 {  查找class含有c1的div
            color: red;
        }

	div#d1 {  查找id是d1的div
            color: red;
        }

	.c1 p.c2 {  查找含有c1的class值的标签里面的含有c2样式值的p标签
           color: antiquewhite; 
        }

我们也可以使用属性选择器进行选择

	[username] {	按照属性名查找
        color: red;
    }

伪类选择器

:hover:只会在用户将指针挪到元素上的时候才会激活,一般就是链接元素;
:focus:只会在用户使用键盘控制,选定元素的时候激活(被点击之后采用的样式);

ps:a标签补充说明,针对没有点击过的网址,默认是蓝色,点击过的则为紫色。

伪元素选择器

用css代码创建网页中不存在的元素,给他添加样式,这里的不存在表示的是不能选中

二十二、选择器优先级

在选择器相同的情况下,如果导入方式不同,会使用处于下方的代码的导入结果

如果选择器不同,导入方式相同

内联样式(样式内部的style属性)>id选择器>类选择器>标签选择器

简单概括一下就是范围越大优先级越低

二十三、css样式调解

字体属性

字体大小

font-size: xxpx;

字体的粗细

font-weight:normal;

这里的粗细属性有很多

normal是标准粗细

bold是粗体

bolder更粗

lighter更细

这里也可以设置数值修改粗细

文本颜色

color:

颜色属性有三种类型的值来设置

第一种是用六位的十六进制数前面加#号

第二种是颜色单词

第三种是rgb或rgba来设置,a的作用是设置透明度,输入0-1之间的小数

然后我们在调颜色的时候可以在pycharm左边的颜色方块里面选颜色,也可以用微信的截图功能查看某些颜色的rgb值

文字属性

文字对齐

text-align:

left左对齐

right右对齐

center居中

文字装饰

text-decoration:

none默认,没有装饰

underline下划线

overline在文本的上面加条线

这里就要说到a标签中的文字了,默认情况下是有一条下划线的,如果想要去掉的话就要设置成none类型

首行缩进

text-indent:

后面跟xxpx可以设置缩进的像素值

背景属性

比如我们定义一个div布局标签,然后内部写上一些属性就可以给这个div标签设置背景属性

background-color:设置颜色

background-image:设置背景图片,背景普通会出现在背景颜色上方

background-repeat:设置重复的方式,默认情况下一张图片会重复填充,直到填充满所在的范围

repeat-x

横向填充

repeat-y

竖向填充

no-repeat

不填充

background-position:center center;

这是设置图片的位置

二十四、边框

边框的关键字border

分成三个方面来定义边框属性

边框宽度

border-width

边框样式

border-style

边框颜色

border-color

上面的属性在设置的时候可以在中间插入left、right、top、bottom来设置上下左右边框的单独设置

设置圆形边框

border-radius:50%

二十五、display属性

当值为none 的时候表示不显示当前标签,

这里需要跟visibility:hidden对比记忆

display设置为none的时候是看不出来的

visibility只是隐藏了内容,但是仍旧需要占用网页的空间

二十六、css盒子模型

margin:外边距,相当于盒子和别的盒子之间的距离

padding:内填充相当于盒子到物品的举例

border:边框,框住物品的盒子

content:内容,相当于盒子中的物品

p标签自带margin 16px

body默认margin 8px

ul默认padding-left=40

我们可以根据left、right、top、bottom几个关键词跟上面的四个属性拼接来调整距离。

二十七、浮动

给标签设置float属性就可以让他浮动,这就相当于是图片的图层一样,left是左浮动,right是右浮动,none是没有浮动

浮动的设置会导致边框中没有内容,而变成一条线,这时候我们就要用clear属性来解决问题

clear就是取下送浮动,他只对标签自身起作用

我们可以设置边框的宽高来解决,也可以用clear:both来解决

二十八、溢出

当一个边框中内容多到显示不下的时候,就会溢出来显示

这时候需要设置overflow属性的值来修改这些内容的显示方式

visible是默认值,溢出的内容会显示在外面

hidden是把溢出的部分藏起来

auto是让内容藏在边框中,可以通过滚动条查看

二十九、定位

position:

定位分成三种

相对定位:relative

针对当前位置进行重新定位

绝对定位:absolute

根据某个标签的位置进行定位

固定:fixed

根据浏览器的页面位置进行定位,也就是相对固定

三十、z-index属性

我们可以给他设置数值

数值越大表示这个标签的图层越上面

标签:回顾,第十,color,标签,索引,内容,div,选择器,属性
From: https://www.cnblogs.com/zhihuanzzh/p/16949773.html

相关文章