2023/6/4总结

 CSS的学习:

2023-06-01 19-57-46-649

2023/6/4总结_第1张图片

2023/6/4总结_第2张图片

移动开发流式布局:

流式布局,是根据百分比布局,因为手机的尺寸会不一样,所以利用百分比布局可以很好的解决缩放以及尺寸问题:

这是跟着视频做的一个案例:

2023/6/4总结_第3张图片

 flex布局:

  • 优点:操作方便,布局简单,应用广泛。
  • 缺点:pc端兼容性差

flex是 flexible box 的缩写,意思是弹性布局,用来为盒状模型提供最大的灵活性,任何一个容器都可以指定为flex布局

当我们指定父盒子为flex布局之后,子元素的 float、clear、vertical-align 属性都将失效

采用flex布局的元素,称为flex容器,它的所有子元素自动成为容器成员,称为flex项目。

flex布局父项常见属性:

flex-direction:设置主轴的方向

默认的主轴是x轴,y轴是侧轴。

2023/6/4总结_第4张图片

justify-content:设置主轴上的子元素排列方式

2023/6/4总结_第5张图片 

flex-wrap:设置子元素是否换行

默认不换行,不换行,装不下会缩小子元素的宽度来填充。

  • nowrap:不换行
  • wrap:换行

align-content:设置侧轴上的子元素排列方式(多行)

在单行下没有效果

2023/6/4总结_第6张图片

align-items:设置侧轴上的子元素排列方式(单行)

2023/6/4总结_第7张图片

flex-flow:复合属性,相当于同时设置了flex-direction和flex-wrap

语法:flex-flow:flex-direction属性 flex-wrap属性;

flex布局子项常见属性:

  • flex 子项目占的份数  分配的是剩余空间
  • align-self 控制子项自己在侧轴的排列方式
  • order 定义子项的排列顺序,前后顺序 默认是0,越小越靠前
     

MySQL必知必会:

自然联结:

对表进行联结,应该至少有一个列出现在不止一个表当中。

2023/6/4总结_第8张图片

 外部联结:

外部联结语法类似

2023/6/4总结_第9张图片

 聚集函数的联结:

计算字段一定要分组

2023/6/4总结_第10张图片

 组合查询:

使用情况:

  • 在单个查询中从不同的表当中返回类似结构的数据
  • 对单个表执行多个查询,按单个查询返回数据

union:

union的使用只需要在各条select语句之间放上关键字union。

使用规则:

  • union必须由俩条或者俩条以上的select语句组成,用union分隔。
  • 列数据类型必须兼容,类型不必完全相同。
  • union从查询结构集中去除了重复的行。union组合查询只能使用一条order by语句,必须出现在最后一条select语句之后。
  • union几乎总是完成与多个where条件相同的工作,union all为union的一种形式,如果需要每个条件的重复行,必须使用union all 而不是where

全文搜索:

出现全文搜索是因为,like和regexp是一行一行匹配的,这样效率会很低。全文搜索的这个是只搜索表的部分,MySQL不需要分别查看每一行,只用创建列中各词的一个索引,针对这些词搜索,快速有效的决定哪些词匹配。

一般在创建表的时候启用全文本搜索。在create语句当中,指定索引列  fulltext 

需要注意的是索引列必须是,char,varchar,text类型。

2023/6/4总结_第11张图片

已经建立的表,写索引:

具体格式为 create fulltext index index_name on table_name(colum_name);

select搜索:

  • match()  指定被搜索的列(必须是之前建立索引时的列)
  • against()  指定要使用的搜索表达式 

2023/6/4总结_第12张图片

match可以写多个,只需要和fulltext里面定义的相同,并且正确列出它们(次序正确)

全文排序会对结果排序,具有较高等级的行先返回,越前面越是你想要的数据。  

查询扩展 


查询扩展在against后面的匹配表达式,加上with query expansion语句即可。扩展查询会查俩次,第一次查询能被against语句匹配的,第二次查询能被against所匹配出来的行  去匹配其他行,会返回可能不是你想要的数据。因为我没有试出来,所以就没写列子了。

布尔文本搜索:

布尔文本搜索没有fulltext索引也可以使用,可以实现以下内容:

语法如下,在匹配表达式后面接  in boolean mode

2023/6/4总结_第13张图片

  • 要匹配的词
  • 要排斥的词
  • 排列提示
  • 表达式分组

2023/6/4总结_第14张图片 

2023/6/4总结_第15张图片

 另外在需要注意的点有:

  • 在索引全文本数据时,短词被忽略且从索引中排除。短词为那些具有3个或者3个以下字符的词(这个数目可以修改)
  • MySQL有一个带有内建的非用词(stopword)列表,这些词在索引全文本数据时,总是被忽略。如果需要,这个列表可以被忽略。
  • MySQL有一条规定,如果一个词出现了50%以上,则这个词作为一个非用词被忽略,50%规则不用于in boolean mode
  •  如果表中行数少于3行,则全文本部分会结果,因为每个词出现概率都达到了50%
  • 忽略词里面的单引号,比如don't 索引为dont
  • 对应中文不能恰当的返回全文本搜索结果
  • 仅在myisam数据引擎中支持全文本搜索

数据插入

insert

语法

2023/6/4总结_第16张图片

 insert语句省略某些列的值,需要满足以下某个条件。

  • 该列定义允许为NULL
  • 该表定义中给出默认值。

如果数据检索是重要的,可以通过在insert 和 into 之间添加关键字low_priority 提示MySQL降低insert语句的优先级。同样适用于update语句和delete语句。 

尽量使用一条语句插入,可以提高数据库处理的性能。

插入检索的数据

insert select由一条  insert  语句和一条  select  语句

2023/6/4总结_第17张图片

 MySQL并不关心select语句返回的列名,它使用的是列的位置,因此select中的第一列(不管列名)将用来填充表中指定的第一个列。

更新数据

update

2023/6/4总结_第18张图片

 为了防止update语句更新时,在更新这些行中的一行或者多行时出现错误,导致update语句操作被取消,使用ignore语句忽略错误继续更新。

语法如下:

update ignore table_name set ……

删除数据

delete

 2023/6/4总结_第19张图片

 delete语句删除表的操作不是表而是内容,它只是完成了删除表中的所有行,而不是删除表本身。

如果想要更快的删除所有行,不要使用delete,可以使用  truncate table_name  语句,它完成相同的工作。truncate语句实际上时删除原来的表并且重新创建一个表,而不是和delete一样逐行删除表中的数据。

2023/6/4总结_第20张图片

在使用update和delete语句时:

  • 如果不是要打算更新和删除每一行,不要使用不带where语句的update和delete语句
  • 保证每个表都有主键。
  • 在使用update和delet语句时,应该先用select语句进行测试过滤数据,看update和select语句是否正确。

 创建表:

create

2023/6/4总结_第21张图片2023/6/4总结_第22张图片

 

 如果创建表的时候,指定的表名必须不存在,否则将出错,会覆盖掉之前的表。如果需要只是在一个表不存在时创建它,应该在表名后面用 if not exists

每个表只允许一个auto_increment列,而且它必须被索引(如,通过设置它为主键)。

创建表指定默认值:

在后面接 default  即可,后接默认值

2023/6/4总结_第23张图片

MySQL不允许使用函数作为默认值,它只支持常量。

引擎类型

  • InnoDB  是一个可靠的事务处理引擎,不支持全文搜索,所以在全文搜索的时候不能使用。
  • MEMORY  在功能上等同于MyISAM,但由于数据存储在内存而不是硬盘,所以速度很快,适用于临时表。
  • MyISAM  是一个性能极高的引擎,支持全文本搜索,但是不支持事务处理

外键不能跨引擎。

更新表

alter table

  • 增加列

2023/6/4总结_第24张图片

  •  删除列

2023/6/4总结_第25张图片

  •  定义外键:

2023/6/4总结_第26张图片

  •  删除整个表:

2023/6/4总结_第27张图片

  • 重命名表:

 2023/6/4总结_第28张图片

 视图

视图是虚拟的表,与包含数据的表不一样。视图只包含使用时动态检索数据的查询。

为什么使用视图:

  • 重用sql语句。
  • 简单复杂的sql操作
  • 使用表的组成部分而不是整个表。
  • 保护数据
  • 更改数据格式和表示。

因为视图不包含数据,所以每次使用视图时,都必须处理查询执行时所需的任一检索。如果你用多个联结和过滤。

视图创建和使用需要注意的:

  • 视图必须唯一命名
  • 视图数量并没有限制
  • 创建视图必须有足够的访问权限。
  • 视图可以嵌套
  • order by可以用在视图中,如果从该视图检索数据select中夜含有order by,那么该视图中的order by将被覆盖。
  • 视图不能被索引,也不能有关联的触发器(这个还不懂)或默认值。
  • 创建视图:

2023/6/4总结_第29张图片

  •  查看创建视图

2023/6/4总结_第30张图片

  • 删除视图:

 2023/6/4总结_第31张图片

或者先删除在create也是可以。

 创建视图后可以把视图当作表使用:

2023/6/4总结_第32张图片

  •  更新视图

视图是可以更新的

以下是可以的

2023/6/4总结_第33张图片

语句和表是一样的

但是以下情况视图不可以更新

  • 分组,使用了group by和having
  • 联结
  • 子查询
  • 聚集函数
  • distinct
  • 导出(计算)列

 需要注意的是:

当向视图插入数据时,同时也会向原表插入数据。所以插入的时候,需要注意原表是否有不可为NULL的字段。否则会导致出错,无法插入。

存储过程:

存储过程是为以后的使用而保存的一条或者多条MySQL语句的集合。可以将其视为批文件。

为什么使用存储过程:

  • 通过把处理封装在容易使用的单元中,简化复杂的操作。
  • 不要求反复建立一系列处理步骤,保证数据的完整性。
  • 简化对变动的管理
  • 使用存储过程:

MySQL称存储过程的执行为调用,因此MySQL执行存储过程的语句为call,call接受存储过程的名字以及需要传递给它的任意参数。

  • 创建存储过程:

2023/6/4总结_第34张图片

  •  执行存储过程:

2023/6/4总结_第35张图片

  • 删除执行过程

2023/6/4总结_第36张图片

 如果用的是命令行窗口,它所解释的存储过程自身内的  ; 字符  它们最终不会成为存储过程的成分。因为默认的MySQL语句分隔符为;

2023/6/4总结_第37张图片

 其中,DELIMITER //  是告诉命令行程序使用  //  作为新的语句结束分隔符,所以end后接的是 // 而不是分隔符;  执行完了后,又改回去成   ; 

除了\ 符号外,任何字符都可以作为语句分隔符。

  • 使用参数:

一般来说,存储过程并不显示结构,而是把结构返回给你指定的变量。

2023/6/4总结_第38张图片

记录集不是允许的类型,因此,不能通过一个参数返回多个行和列。为了调用此修改过的存储过程,必须指定4个变量名称。所有的MySQL变量名称必须以@开始

 2023/6/4总结_第39张图片

 关键字out指出相对应的参数用来存储过程传出一个值返回给调用者。另外MySQL支持in(传递给存储过程)、out(从存储过程传出),和  inout  (对存储过程传入和传出)。

2023/6/4总结_第40张图片 

2023/6/4总结_第41张图片

 2023/6/4总结_第42张图片

 游标

有时需要在检索出来的行中前进或者后退一行或者多行。这是使用游标的原因。

  • 定义游标

2023/6/4总结_第43张图片 

  • 打开与关闭游标:

2023/6/4总结_第44张图片

  •  使用游标数据:

2023/6/4总结_第45张图片

 

你可能感兴趣的:(sql,数据库)