如果你想要把数据持久化,怎么办?
- 写数据库!
数据库
- 数据库提供结构化数据的持久化存储
- 索引保证数据查询的速度
- 事务的原子性保证数据不丢失
- ATM1:把钱给你
- 啪唧,ATM断电了。
- ATM2 :在你的账户上扣钱
Docker方式安装一切数据库
- 百分百兼容
- 百分百无残留
- 百分百统一、方便
- MySQL/PostgreSQ L为例
- H2数据库不需要安装
- 现在我们启动的数据库的数据是不持久化的
- 除非在启动容器的时候使用-v参数
### docker新版在windows安装的坑 - windows只能支持一种虚拟化技术,与docker的hyper v 冲突
- setting-Dcoker Engine 在"registry-mirrors"[] 内添加
"https://registry.docker-cn.com"
- 或者使用docker win兼容版,叫toolbox
数据库实战
- Schema:设计自己的第一个数据库
- 数据库的类型与SQL语句
- 整数类型,例如int/bigint
- 字符串类型,例如varchar(100)/TEXT
- 时间类型,例如timestamp
- 行与列
- 数据的外键
- JDBC简介:Java Database Connection
- 本质就是:你给我一个连接字符串,我就能读取你的数据库的信息
- H2简介
- 使用JDBC存取数据
ddl-sql
- create table建表语句
- drop table删表语句
- alter table 修改表
基本SQL
- insert into - 增
- delete from -册 U
- update -改
- select 一 查
重要的要记住的知识:
- SQL语句不区分大小写
- 命名风格是下划线分割两个单词
- 数据库中的字符串是单引号
- 数据库的注释是--
- 分号分割多个SQL语句
select魔法
- Select *
- Select count(*) count(l)
- Select max/min/avg
- Select limit 分页
- select order by 排序
- Select is null/is not null
- Select where id in ()
数据库的表设计原则
- 每个实体一张表(用户/商品)
- 每个实体都有一个主键ID
- 按照业务需要建索引
- 每个关系用一张表联系
- 关系型数据库
使用jdbc访问数据库
- Java Database Connection
- 连接串
- 用户名
- 密码
- Statement
- PrepareStatement - 防SQL注入的
- ResultSet
sql注入与防范
- 什么是SQL注入
- SQL注入是因为SQL没有验证传入的参数
- 导致攻击者可以通过精心设计的参数使得拼装出的SQL达到他的目的
- JDBC如何进行防范?
- PreparedStatement
join
- 什么是join以及为什么需要join
- INNER JOIN
- LEFT JOIN
- RIGHT JOIN
练习题
SQL语言增删改
SQL语言SELECT
「资料来源:饥人谷」