#MYSQL数据库到VUE前端架构
##==MYSQL数据库==
1. 安装--配置my.ini,通过DOS初始化mysql,开启mysql服务,加设置账号密码
2. Sql操作分类: ![sql操作分类](images/sql操作分类.jpg)
3. DDL: 创建数据库create database 数据库名称 [库选项];删除数据库drop database 数据库名称;查看所有数据show databases;查看部分数据库show databases like "匹配模式";选择数据库use 数据库名称;查看选择的数据库select database();修改数据库选项alter database 数据库名称 新的库选项;
4. 数据类型:数值int,BIGINT,FLOAT,DOUBLE;日期和时间:DATE,DATETIME,YEAR;字符串类型:CHAR(存储性能高,但是浪费空间),VARCHAR(存储性能低,但是节约空间)
5. DML增删改查:(insert,delete,alter,select)ALTER TABLE 表名 RENAME TO 新表名; 改名
ALTER TABLE 表名 add 列名 数据类型; 增加一列
ALTER TABLE 表名 modify 列名 新数据类型; 修改数据类型
ALTER TABLE 表名 change 列名 新列名 新数据类型; 修改数据类型和列名
ALTER TABLE 表名 drop 列名 ; 删除一列
INSERT INTO 表名(列名1,列名2) VALUES(值1,值2) 给指定列加数据
INSERT INTO 表名(列名1,列名2) VALUES(值1,值2) 给指定列加数据
UPDATE 表名 SET 列名1=值1,... [WHERE 条件]
DELETE FROM 表名 [WHERE 条件]
6. 图形化客户端工具: Navicat :针对Mysql和MariaDB
7. DQL:查询操作:select 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组后条件 order by 排序字段(ASC:升序 DESC:降序) limit(专属Mysql Oracle是用rownumber SQL server是用top)分页限定
* distinct 去除重复记录 ;as 起别名;
![条件查询](images/条件查询.png)
聚合函数:(count max min sum avg) 注:null不参与所有聚合函数运算
执行顺序:wherr > 聚合函数 > having
8. 约束和多表查询: 限制加入表中的数据
![约束分类](images/约束分类.png)
外键约束:两个表数据之间建立链接,保证数据完整和一致性
![外键约束](images/外键约束.png)
9. 数据库设计: ![产品研发步骤](images/产品研发步骤.png)
一对多:建立多为附表建立外键,一为主表的为主键建立外键约束
多对多:建立第三张中间表,中间表至少要有2个外键,分别关联两方的主键
一对一:建立任一为附表,一为主表的外键约束,并且外键用Unique修饰
10. 多表查询:
隐式内连接: select 字段列表 from 表1,表2... where 条件
显式内连接: select 字段列表 from 表1[inner] join 表2 on 条件
左外连接 : select 字段列表 from 表1 left [outer] join 表2 on 条件
右外连接 :select 字段列表 from 表1 right [outer] join 表2 on 条件
11. 子查询: 查询中嵌套查询
单行单列:查询语句直接代替转一行就行
多行单列:用 in
多行多列: 从内连接的表中查询
12. 事物: 一种机制或者说操作序列,同时成功或者同时失败
start transaction 或者 begin ---开启事务
commit --- 提交事务
rollback ---回滚事务
四大特征: A原子性 C一致性 I隔离性(select @@autocommit 可以查询默认提交方式 1 自动 0 手动) D持久性
13. JDBC:java database connectivity; java操作关系型数据库的接口,不同软件在此接口上有自己的实现类(驱动)
1. API之DriverManager:加载驱动
2. API之Connection:建立连接和管理事务
3. API之Statement:执行SQL语句 executeUpdate(sql) 执行DML和DDL语句;executeQuery(sql) 执行DQL语句
4. API只ResultSet:返回DQL查询语句的查询结果,可以用循环去处理得到的想要的结果数据。一般来说表中有很多的列,为了更好的处理结果,一般可以封装一个类去保存这些数据,然后再把类放置进集合中,最后通过集合去调用里面的数据。
5. API之PreparedStatement:1.继承自Statement,用于预防SQL注入,把输入的内容用?号代替。2.属于预编译SQL(用?占位符代替sql语句中的参数,使其可以一次检查,多次编译,在url中需要配置开启:useServerPrepStmts=true),可以提高处理性能。3.原理是:通过把特殊敏感字符转译成字符本义,使得无法通过改变输入来修改sql语句。
6. SQL注入:通过输入改变sql语句来达到攻击的目的
7. 数据库连接池:负责分配管理数据库连接的容器
1. 好处:资源复用+提升响应速度+避免数据库连接遗漏
2. 标准接口:DataSource,好用的实现接口:Druid(阿里巴巴开源)
3. tips:相对路径有时候获取不准确,可用System.getProperty("user.dir")
4. Druid使用步骤:
1. 导入jar包,在http://repo1.maven.org/maven2/com/alibaba下载
2. 定义配置文件 driverClassName = com.mysql.cj.jdbc.Driver
url=jdbc:mysql:///test?useSSL=false&useServerPrepStmts=true
username=root
password=19921210
#初始化连接数量
initialSize=5
#最大连接数
maxActive=10
#最大等待时间
maxWait=3000
3. 加载配置文件
4. 获取数据库连接池对象
5. 获取连接
14. Maven: 专门用于管理和构建java项目的工具:提供了标准化的项目结构和构建流程,标准化的依赖管理机制。 ![Maven](images/Maven.png)
1. 仓库--构建依赖管理的基础,在pom中配置,则会到对应的仓库中去获取jar包:仓库分为本地,中央,远程三种仓库,其中中央仓库是全球通用http://repo.maven.apache.org/maven2 ![Maven仓库](images/Maven仓库.png)
2. 基本使用:compile 编译 clean 清理 test 测试 package 打包 install 安装
3. 生命周期:Maven在一个项目生命周期内,执行后面的命令,前面的命令会自动执行.
4. 在IDEA中配置Maven: Setting中搜Maven,然后配置版本跟Setting.xml的路径
5. Maven中的坐标: 是资源的唯一标识,使用坐标来定义项目或引入项目中需要的依赖
1. groupId:当前Maven项目隶属组织的名称(一般为域名反写)
2. artifactId: 当前Maven项目名称(通常是模块名称)
3. version:版本号
4. scope标签:设置坐标依赖范围,一般不用
6. 创建项目:New一个module 然后选择maven创建
15. MyBatis: 持久层(把数据到保存到数据库的那一层代码)框架(半成品软件,更高效规范通用,可扩展),用于简化JDBC
1. JDBC缺点:硬编码,操作繁琐
2. MyBatis如果解决:1.硬编码->把长字符串放在配置文件中,便于维护修改;2.操作繁琐->封装方法,自动完成。
3. MyBatis入门:详细见框架官网
4. Mapper代理开发:原生MyBatis框架还是需要直接调用配置文件的内容,有一些硬编码,Mapper可以通过类把这些数据封装成成员方法来调用,更安全,也可以使用IDEA的代码补全。注:需要把Mapper类建在跟原来的MyBatis的mapper配置文件放在一个目录下,应在resources下建立跟Mapper类一样的路径,用/号切分目录。 注意:!!!Mapper类和mapper配置文件需要同一个名字!!!
5. MyBatisX: 快速开发插件,可XML和接口方法相互跳转,可根据接口方法生成statement!
![数据库空指针](images/数据库空指针.jpg)
6. Sql语句宰mapper框架下设置参数的问题:1.散装参数,加@Param(占位符参数名称)2.实体类封装参数3.map集合
7. 动态Sql:if,choose,trim,foreach等标签
![动态查询](images/动态查询.jpg)
8. MyBatis参数封装:多个参数,封装成Map集合
![mybatis参数](images/mybatis参数.jpg)
9. 注解完成增删改查:简单语句用注解,可以使代码更简洁。在方法前加@Select(sql语句)
##==HTML与CSS==
1. 网页:a结构->HTML b表现->CSS c行为->JavaScript
2. HTML: 标签见W3C SCHOOL
3. HTML之表单标签: