26、27数据库概念和SQL语言

如果你想要把数据持久化,怎么办?

  • 写数据库!

数据库

  • 数据库提供结构化数据的持久化存储
  • 索引保证数据查询的速度
  • 事务的原子性保证数据不丢失
    • 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

「资料来源:饥人谷」

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注