华清远见-重庆中心-数据库阶段技术总结/知识点梳理/个人总结/关于数据库技术的解析(看法)

数据库DataBase

简称为DB,是结构化管理数据的仓库,称为电子化的文件柜。

数据库管理系统DataBase Manager

System

简称DMBS,安装在操作系统上,管理数据库的软件。

数据库的分类

关系型数据库

  • SQLServer

  • MySQL

  • Oracle

非关系型数据库nosql

  • Redis

SQL语句

在关系型数据库中,用于操作数据库的结构化查询语言。

查看信息

  • 查看所有数据库:show databases;

  • 查看所有表:show tables;

  • 查看表结构:desc 表名;

  • 查看建表语言:show create table 表名;

数据库操作

  • 创建数据库:create database 数据库名:

  • 使用数据库:use 数据库名:

  • 删除数据库:drop database 数据库名;

数据表操作

数据类型
常用数据
int整型
doub浮点型
char定长字符
varc可变字符
text文本
data日期
time时间
date日期时间
time时间毫秒
数据完整性

数据完整性指数据精确可靠。

完整性约束关键字作用
非空约束not null保证字段值不为空
主键越苏primary key保证字段值不重复,用于唯一区分每条记录
唯一约束unique保证字段值不重复
默认值约束default保证字段在没有填充数据时,自动使用默认值填充
外键约束foredin key references保证从表中的记录只能来自于主表
  • 创建表

  • create table 表名(
        字段名 数据类型[是否为空|唯一约束|主键约束|默认值约束|自动递增]
        字段名 数据类型[是否为空|唯一约束|默认值约束]
        ...
        字段名 数据类型[是否为空|唯一约束|默认值约束]
    
    )
    
  • 修改数据表

    • 表重命名:alter table 表名 rename to 新表名;

    • 添加新字段:alter table 表名 add column 字段名 数据类型 字段特征;

    • 修改字段:alter table 表名 change 旧字段 新字段 数据类型 字段特征;

    • 删除字段:alter table 表名 drop 字段名;

  • 删除数据表:drop table 表名
    删除时如果有外键约束,先删除从表,再删除主表

  • 添加约束

    • 添加主键约束:alter table 表名 add primary key(字段名)

    • 添加唯一约束:alter table 表名 add unique(字段名)

    • 添加默认值约束:alter table 表名 alter 字段名 set default ‘值’

    • 添加外键约束:alter table 从表 add foreign key(字段名) references 主表(主键字段)

  • 删除约束:alter table 表名 drop [primary key|index/foreign key 约束名]

数据操作
  • 增加

    • insert into 表名 values(值1,值2…);保证按表中字段顺序添加数据,不能缺少任何一个字段

      • 自增字段用null

      • 默认值字段用default

      • 允许为空字段用null

    • insert into 表名(字段1,字段2…) values(值1,值2…);保证必须写上非空字段,值的顺序和字段
      顺序保持一致

  • 修改

    • update 表名 set 字段=值,字段=值 [where 条件]
  • 删除

    • delete from 表名 [where 条件];会保留自增列的值

    • truncate table 表名;会重置自增列的值

  • 查询

    • select [字段|*] from 表名 [where 条件] [order by 字段] [having 条件]

    • limit N:查询前N条记录

    • limit N,M:从索引为N的开始查询M条记录

    • distinct:去重复

    • order by 字段1,字段2:多字段排序

    • group by 字段名:根据字段分组

    • having 统计函数条件

条件符号
指定值=、!=、<>
指定范围>、<、>=、<=、between值and值
指定集合[not]in(元素1,元素2…)
模糊查询(%表示未知长度字符串,_表示一个字符)like’%值’’
空置is[not] null
多条件使用and or & |串联条件

常用函数

  • 统计函数

    • sum():求和

    • avg():平均

    • count():统计数量

    • max():最大值

    • min():最小值

  • 字符串函数

    • concat(‘值’,‘值’,字段,):拼接值或字段

    • trim():去除首尾空格

    • left(length)/right(length):从左/右开始截取指定长度字符串数学函数

  • 数学函数

    • round()/ceil()/floor():取整

    • abs():绝对值

  • 时间函数

    • now()/curdate()curtime():得到当前日期时间

    • year()/month()/day():得到日期中的指定部分

    • datediff()/timediff()/timestampdiff():计算时间间隔

  • 补充

    • if(条件,表达式1,表达式2):条件为真,结果为表达式1,条件为假,结果为表达式2

    • group_concat():拼接分组后的其他字段

嵌套查询

select * fromwhere 字段=(select * fromwhere 条件);
select * from,(select * from)t where.字段=t.字段;

多表查询

  • 交叉连接/笛卡尔积
select * from1,2...;
select * from1 cross/inner join2;
  • 内连接
select * from1,2 where1.字段=2.字段;
select * from1 cross/inner join2 on1.字段=2.字段;
  • 外连接

    • 左外连接

      select * from1 left join2 on1.字段=2.字段;-- 保证表1中的数据完整
      
    • 右外连接

      select * from1 right join2 on1.字段=2.字段;-- 保证表2中的数据完整
      

数据库设计

实体关系模型

ER图
  • 矩形:实体

  • 椭圆形:实体的属性

  • 菱形:实体之间的关系

实体关系分类
  • 一对一:一个国家有一个领导人

    • 1.根据两个实体创建两张表,都加上主键

    • 2.在其中一张表中添加一个字段,保存另一张表的主键并设置唯一

  • 一对多/多对一:一个班级有多个学生,一个学生不能有多个班级

    • 1.先根据两个实体创建两张表,都加上主键

    • 2.在从表中添加外键字段管理主表中的主键字段

  • 多对多:一个学生学习多门课程,一门课程可以被多个学生学习

    • 1.先根据两个实体创建两张表,都加上主键

    • 2.创建第三张"关系"表,在该表中添加两个字段分别保存两个实体表中的主键

范式

第一范式1NF

字段不可再分

第二范式2NF

在满足1NF的基础上,消除部分依赖。
对于联合主键而言,所有非主属性字段必须完全依赖于主属性。

第三范式3NF

在满足2NF的基础上,消除传递依赖。

JDBC

Java提供了一套规范用于连接各种数据库。不同的数据库厂商根据该规范设计连接驱动。
java.sql包下一组接口用于操作数据库。

  • Connection接口 用于获取连接对象

  • PreparedStatement接口 用于发送sql语句,处理sql语

  • ResultSet接口 用于保存查询后的结果集

加载MySQL驱动

Class.forName("com.mysql.cj.jdbc.Driver");

加载MySQL数据库字符串

String url="jdbc:mysql://localhost:3306/数据库名?serverTimezone=Asia/Shanghai";
String username="root";
String password="root";

查询的步骤

1.获取连接对象Connection
2.构造sql语句String
3.预处理sql语句pst=conn.prepareStatement(sql)
4.给sql语句中的?赋值pst.setXXX(?顺序,值)
5.调用executeQuery()得到ResultSet结果集
6.遍历结果集rs.next()后rs.getXXX(字段顺序/字段名)
7.释放资源

增删改的步骤

1.获取连接对象Connection
2.构造sql语句String
3.预处理sql语句pst=conn.prepareStatement(sql)
4.给sql语句中的?赋值pst.setXXX(?顺序,值)
5.调用executeUpdate()得到受影响的行数
6.释放资源

事务transaction

一组sql执行单元,要么全部执行,要么全部不执行

事务的特性ACID

原子性Atomicity

事务是最小的执行单元

一致性Consistency

事务执行前后,数据整体保持一致。

隔离性Isolation

各个事务之间应当互不干涉

持久性Durability

事务一旦提交,改变是永久的

事务并发出现的问题

脏读

事务A读取到了事务B未提交的数据。

不可重复读

事务A中前后两次读取到的数据不一致。
事务A在读取过程中,事务B对数据进行了修改。

幻读

事务A在读取过程中,事务B向其中添加了数据,导致事务A读到了事务B中添加的"幻影"数据。

以上问题可以通过设置事务隔离级别解决。

事务隔离级别

事务隔离级别能否出现脏读能否出现不可重复的能否出现幻读
Read Uncommitted未提交读 会 会 会
Read Committed已提交读不会
Repeatable Read可重复读(MySQL默 认)不会不会
Serializable序列化不会不会不会

事务相关指令

  • 查看事务自动提交状态
    select @@autocommit

  • 修改事务自动提交状态
    set @@autocommit=0/1 0表示不开启动,1表示开启

  • 手动开启事务
    start transaction;

  • 提交
    commit;

  • 回滚

    rollback;

  • 查询当前事务隔离级别
    select @@transaction_isolation

  • 设置事务隔离级别
    set [session|global] transaction isolation level [Read Uncommitted | Read Committed |
    Repeatable Read |Serializable]

视图

定义

create view 视图名 as
sql语句;

使用

select * from 视图名;

触发器

定义

create trigger 触发器名
触发时机 触发条件 on 表 for each row
begin
触发器触发时执行的sql语句;
end

存储过程
创建

create procedure 存储过程名(in/out/inout 参数名 数据类型)
begin
sql语句;
end

调用

call 存储过程名(参数);

个人心得

通过本周的数据库学习,总的来说就是主要的有增添,删除,修改,查询,并且通过老师我们得知,对于我们这个行业来说,相对于其他的方法我们这个专业用的最多的就是查询,查询也分为很多总,按照指定条件查询,按照所需条件查询,模糊查询等等都是生活中比较常见的一些。数据库中也有一些代码函数,但是这些代码函数也是和java中差不多,有些重要的需要记住,也有一些不是很重要的,但是需要我们了解,所以这个星期的数据库学习也还是不是很难的,并且老师和我们说过,数据库的这些设计我们一般是不会参与的,尤其是像我们这种才出去工作的人,没有什么工作经验,我们一般就是更具他们的要求来对于数据库进行,增添,删除,修改,查询等操作。在本周的学习中老师也教了一些类似于java中方法的东西,我们称之为函数,可以进行高效的查询,对我们的以后的学习也是有很多帮助的,通过本周学习我受益颇多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值