数据库
数据库:数据库就是管理数据的仓库
数据库分类:
1)关系型数据库:Orcale、MYSQL
2)非关系型数据库:Redis
关系、非关系型数据库:
1)关系型数据库,建立在紧密关系基础上,也成为传统数据库。以行和列的表形式存储数据,可以简单理解为二维表之间的数据结合。
2)非关系型数据库,建立在松散关系基础之上。
Mysql:
1)服务端:处理具体数据维护 保护磁盘
2)客户端:CRUD(增删改查)
Mysql存放位置:my.ini进行默认配置
SQL语句:结构化查询语言简称SQL,是一种特殊目的的编程语言,用于存取数据以及查询、更新和管理关系数据库系统。
SQL分类:
1)DML 数据库操纵语言
insert、delete、update、select
2)DDL 数据库定义语言
create table
3)DCL 数据库控制语言
grant revoke
4)DQL 数据库查询语言
select语法
数据库常用操作:
1)建库:create datebases 库名 default charset utf8
2)删库:drop database 库名;
3)查看所有库:show databases;
4)使用数据库:use 库名
表的常用操作:
1)创建表:create table 表名(字段名 字段类型 (字段长度));
2)添加列:alter table 表名 add column 列名 类型(长度)
3)删除表:drop table 表名;
4)查看所有表:show tables;
5)查看表结构:desc 表名;
6)插入记录:insert into 表名 values(记录);
7)查询记录:select * from 表名
8)修改记录:update 表名 set 字段名=字段值 where 字段名=字段值;
9)删除记录:delete from 表名 where 字段名=字段值
10)排序:select * from 表名 order by 字段名 desc;
11)记录总数:select count(1) from 表名
数据类型:
1)char 长度固定 查询速度快但浪费时间
2)varchar 可变字符串 查询稍慢 但节省空间
3)int、tinyint 整数类型
4)float、double 小数类型
5)numeric(5,2) decimal(5,2) 小数共五位 保留两位
6)numeric decimal 表示精确的整数数字
7)date 年月日
8)time 时分秒
9)datetime 时间戳 1970年1月1日到指定日期的毫秒数
字段约束
1)主键约束:为列添加主键约束 列就是主键 主键的特点是唯一且不能为空(primary key)
2)主键自增策略:主键为数值类型,方便维护,设置主键自增策略(auto_increment)
3)非空约束:添加非空约束,列就不能为空,但可以重复(not null)
4)唯一约束:添加唯一约束后 列的值就是唯一不能重复的 但可以为空(unique)
5)外键约束:使用明确代码表示两个表之间的关系
5.1 子表的主键值 必须取自主表的主键值
5.2 主表的记录不能随便删 要保证没有被子表使用才可删
froeign key 字段 references 表(字段)
6)默认约束:添加默认约束后,字段就有了默认值(default)
7)检查约束:添加检查约束后,字段值必须符合检查条件(check)
基础函数:
1)lower 数据转小写
2)upper 数据转大写
3)length 数据长度
4)substr 截取字符串
select substr(dname,1,3) from dept;
5)concat 拼接字符串
select concat(dname,“123”) from dept;
6)replace 替换
select replace(dname,“a”,“123”) from dept;
7)ifnull 是否为空
select ifnull(comm,10) from emp;
8)round 四舍五入、ceil 向上取整、floor 向下取整 round(字段名,保留位)
11)uuid 随机数
12)now 年月日时分秒 、curdate 年月日、curtime 时分秒
13)hour 时 minute分 second秒
14)year 年 month 月 day 日
条件查询
1)distinct 去重重复记录行
select distinct loc from dept;
2)where 筛选
3)like 模糊查询 通配符:%,_
4)null 过滤字段是否为空:is null 、is not null
5)between and 区间
6)limit 分页查询 limit(start,end)
7)order by 排序 sal(默认升序) desc(降序)
聚合函数:
1)count 总记录数
2)max / min 最大值 / 最小值
3)sum / avg 求和 / 平均数
分组:group:
1)group by 分组
2)having 只能配合group by 查询条件
drop、delete、truncate之间的区别:
drop 删除库或表,数据和结构定义
delete 和 truncate值时删除表的数据
delete可以指定where条件 删除满足条件的记录 对于自增字段 不清零 truncate 删除所有记录 对于自增字段 重头计数
数据库事务:单个逻辑工作单元执行的一系列操作, 要么完全执行 要么完全不执行
事务特性:ACID(原子性、一致性、隔离性、持久性)
1)原子性:事务操作要么全部完成 要么全不完成,不会结束在中间某个环节,执行时出现错误回滚回最初状态
2)一致性:数据库执行前后,完整性没有被破坏。
3)隔离性:Mysql数据库支持高并发 可能会有安全隐患
4)持久性:事务处理结束后,对数据的修改就是永久的,即使系统故障也不会丢失。
隔离级别:
1)读未提交(read uncommitted) 安全性最差 性能最好
2)读提交(read committed)oracle默认的隔离级别 安全性较好 性能较差
3)可重复读(repeatable read)MySQL默认的隔离级别,安全性较好,性能一般
4)串行化(Serializable) 表级锁,读写都加锁,效率低下,安全性高,不能并发
表关联:
一对一、一对多、多对一、多对多
多表联查:
笛卡尔积:select * from dept,emp
连接查询:inner join(内连接默认)
(left join 左连接、right 右连接)
子查询:(嵌套查询)单行子查询 =
多行子查询 in
索引 index:索引是一种快速查找的数据结构,高校检索。
分类:单值索引、唯一索引、复合索引
1)查看索引:show index from 表名;
2)创建索引:create index 索引名 on 表名(字段名);
3)唯一索引:create unique index 索引名 on 表名(字段名);
4)复合索引:create index 索引名 on 表名(字段,字段)
5)删除索引:alter table 表名 drop index 索引名
最左特性:复合索引,最左匹配原则
索引的优缺点:
优点:
1)索引是数据库优化
2)表的主键会默认自动创建索引
3)每个字段都可以被索引
4)大量降低数据库的IO磁盘读写成本,极大5)提高了检索速度
6)索引事先对数据进行了排序,大大提高了查询效率
缺点:
1)索引本身也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也要占用空间
2)索引表中的内容,在业务表中都有,数据是重复的,空间是“浪费的”
3)虽然索引大大提高了查询的速度,但对数据的增、删、改的操作需要更新索引表信息,4)如果数据量非常巨大,更新效率就很慢,因为更新表时,MySQL不仅要保存数据,也要保存一下索引文件
5)随着业务的不断变化,之前建立的索引可能不能满足查询需求,需要消耗我们的时间去更新索引
视图:
1)创建视图:create view 视图名 as SQL语句
2)使用视图:select * from 视图名
SQL优化:
1)查询SQL尽量不使用select * ,而是具体字段
2)避免在where子句中使用or来连接条件
3)varchar 代替char
4)使用数值代替字符串类型
5)查询尽量避免返回大量数据
6)使用explain分析SQL执行计划
7)优化like索引
8)字符串怪现象(不加单引号不走索引)
9)索引不宜太多 五个以内
10)索引不适合建在大量重复数据的字段上
11)where限定查询的数据
12)避免在where中对字段进行表达式操作
13)避免在where子句中使用!=或<>操作符
14)去重distinct过滤字段要少
15)where中使用默认值代替null
16)批量插入性能提升
17)批量删除优化
18)先过滤再分组,提高group by语句的效率
19)复合索引最左特性
20)排序字段创建索引
21)删除冗余和重复的索引
22)不要有超过5个以上的表连接
23)inner join 、left join、right join,优先使用inner join
数据库三范式:在关系型数据库中规范的来优化数据数据存储方式,这些规范就可以称为范式,也是作为数据库 设计的一些规则.
1NF的定义为:符合1NF的关系中的每个属性都不可再分
2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖,也就是说,表里的每个字段都要依赖于主键
3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖
SQL攻击:本质上因为SQL中出现了特殊符号#,#号在SQL中是注释的意思,Statement传输器在执行SQL时遇到了SQL拼接,把#当作了注释用
解决方案:使用PerparedStatement传输器
HTML:超文本标记语言 提供大量标记、标签
1)html:html文件的根元素
2)head:网页的头部份 优先于body加载
3)title:网页的标题
4)body:网页的体部分
5)br:换行
6) ;:空格
7)img:图片标签 src(位置) width(宽度) height(高度)
8)ol/ul :有序/无序列表 li 定义列表项
9)H1~H6:标题标签 自动换行
10)input:输入框 type属性定义输入框
1.1 密码 type = ”password“
1.2 普通 type = ”text“
1.3 数字 type = “number”
1.4 日历 type = ”date“
1.5 单选框 type = “radio”
1.6 多选框 type =“checkbox”
1.7 登录按钮 type = “botton” value=“注册”
登录
1.8 提交按钮 type = “submit”
提交
11)a:超链接标签 href(可以被点击) target(用什么方法打开 默认值 _self当前窗口 _blank 新窗口打开)
点击
12) 表格标签:
1.1 结构 table tr 行 td 列
1.2 属性 border 边框 width 宽度 bgcolor 背景色
cellspacing 单元格的距离
colspan 列合并 rowspan 行合并
css:层叠样式表 主要用来修饰HTML网页
样式表分类:内部css 行内css 外部css
选择器:
1)标签名选择器 body{}
2)class 选择器 .a{}
3)id 选择器 #b{}
4)分组选择器 div,#a,.b{}
5)属性选择器 [type=‘text’]
{属性名:属性值;样式2}
盒子模型:CSS把HTML里的元素看成盒子
padding 内边距:内容和边框的距离
margin 外边距:盒子和盒子之间的距离
border 边框:盒子设置边框
引入css文件:link标签引入 rel 文件类型 href 文件位置
Git:版本控制 实时传到码云服务器上
add -> commit -> push
add :把即将上传的资源 从工作空间添加到本地索引
commit:已经添加索引的文件 从本地索引提交到本地仓库
push:把本地仓库 推送到GItee 上
JavaScript:简称js 脚本语言 只能在浏览器中执行
特点:直译式 弱语言 用来提高网页与用户的交互性 事件驱动 基于对象 脚本语言
位置:行内JS 内部JS 外部JS
变量:变量类型 变量名=变量值
数据类型:number string boolean null underfined
运算符:用来获取数据的类型:typeof
弹出框:alter
三元运算符:求两个数里的大值
比较运算符:成立是true 不成立是false
复合赋值运算符:%=
算术运算符:/ % ++ –
分支结构:switch case break结束循环
if else
while循环(循环条件){循环体}
for循环
js数组:长度可变 数据类型丰富
创建:var 变量 = new array()
var 变量 = [ ]
遍历:for (var i=0;i<a.length;i++){}
for(var i in a){}
js函数:有参数列表 也有返回值
function a(参数名){return b;}
var a = function(参数名){return b;}
利用a函数 并传入参数 用c记录返回值
var c = a(传参);
js对象:内置对象 (String Array MAth)
自定义对象 :var 对象名={k:“v”,k:function(){}}
DOM:利用js代码 操作HTML元素
获取对象:windows.document
调用方法:getElementById(”元素的id的属性值“)-- 返回一个元素
getElementByName(“元素name的属性值”)-- 返回多个元素(数组)
getElementByName(“元素的class属性值”) – 返回多个元素
getElementByTagName(“元素的标签名的值”) – 返回多个元素
wirte() — 向文档HTML 表达式 或 JavaScript 代码
title() — 返回网页的标题
id — 设置或返回元素的id
innerHTML — 设置或返回元素的内容
JSON:轻量级数据交换文本格式 本质就是字符串 浏览器和服务器之间数据交换的格式
vue:轻量级前端框架 封装了HTML、CSS、JS的代码
特点:轻量级 渐进式的框架 按需配置
实现数据驱动、双向绑定 和组件化的思想(高内聚)
vue框架可以避免了DOM的API
遵循了MVVM设计模式 实现前端代码的松耦合
M model 数据 V view 视图 VM viewmodel 视图里渲染指定数据
vue.js vue框架的核心功能 src 指定js文件的位置
{{message}} 插值表达式 来获取message的值
vue对象 :
new Vue({ el:“#xxx” 挂载点,
data:vue 挂载点准备数据
methods:{
函数名:函数声明(参数列表){函数体}
(简写)函数(函数列表){函数体}
})
vue组件Conponent
好处:可以提高前端代码的复用性
使用步骤:
1. 定义组件:全局组件+局部组件
2. 使用组件:使用HTML的标签一样
全局组件 :作用范围是可多个Vue对象使用,可以在所有的渲染区使用
Vue.component(‘组件名’,{
template:”<>组件具体内容</>"})
斜体局部组件:
使用组件:<组件名></组件名>
new Vue({
el:挂载点
component:
组件名:{template:“组件具体内容”})
Vue路由Router:基于Vue组件化的思想,用户发起一个请求 一直到展示指定组件 过程由Vue路由负责的
引入js文件 注意顺序:
渲染数据渲染区 即将路由到不同的组件:
创建Vue对象:
Vue的ajax:避免刷新整个网页 而实现了局部刷新的效果,异步访问。提高了网页的动态性、响应速度。在Vue框架中,封装了Ajax的复杂语法,技术命名叫axios。语法:
axios.get(java程序的访问方式).then(a=>{console.log(a);})
Vue的属性:el挂载点 + data数据区 + methods方法区
components局部组件 + router创建路由
vue提供的对象,get函数是指即将发起一个get请求 参数是一段java程序的访问方式 程序访问成功时,then函数时vue自动调用的函数
Tomcat服务器:是一个软件,是一个轻量级web应用服务器,程序被用户访问,程序放在tomcat中
IDEA整合tomcat:Edit … — TomcatServer — Local — name(tomcat8) —
Tomcat Home(tomcat包所在位置)
servlet:代表了一个服务器端 主要作用是用来和浏览器动态的交换:
1. 接受浏览器发来的请求
2. 服务器给浏览器作出响应
sevlet核心功能 :接受请求 + 给出响应
@WebServlet("/xxx"):设置后,请求Servlet时 服务器自动读取当中的信息。默认请求路径为/xxx