无所待而游无穷也
1. 分类:
关系型数据库(通过表与表之间的关系,行与列之间关系进行存储【SQL】):MySQL,Oracle,Sql Server,SqlLite
非关系型数据库(【NOSQL(not only sql)】通过对象存储,自身属性来决定):Redis,MongDB
数据库引擎
数据库引擎 | MYSIAM | INNODB |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间的大小 | 较小 | 较大,约两倍 |
使用时期 | 默认使用 | 早些年使用 |
使用操作 | 节约空间,速度较快 | 安全性高,支持事务处理 |
在物理文件的位置 | 有 .frm(表结构的定义文件)和**.MYD(数据文件【data】)和*.MYI文件(索引文件【index】) | 在data数据目录下中只有一个*.frm文件,以及上级目录下的ibdata1文件 |
2. MySQL
2.1 注意
尽量不要 .exe,会有注册表;用压缩包安装,下载地址mysql压缩包安装下载
教程:解压,配置环境变量,新建 my.ini配置文件,mysql压缩包安装教程见其他博主
所有语句使用分号;结尾
2.2 数据库语言(CRUD【增删改查】)
- DDL【数据库定义语言】
- DML【数据库操作语言】
- DQL【数据库查询语言】
- DCL【数据库控制语言】
2.3 操作用户语句
1 | -- 创建用户 |
2.4 权限语句(主要DCL)
1 | -- 用户授权 |
2.5 操作数据库语句(主要DDL)
1 | -- mysql不区分大小写 |
2.6 操作表语句
1 | -- 创建简单的表 |
2.7 操作表的字段语句
1 | -- 字段数据类型 |
2.8 操作表中的数据(主要DML,DQL)
1 | -- 增加插入数据 |
2.9 常用函数
mysql常用函数官网:mysql常用函数官网
1 | -- 数学运算 |
2.10 操作表中的约束
1 | -- 主键和物理外键,创建表的时候就完成了 |
2.11 MD5密码加密[不支持索引,cpu消耗大,自己能够加密最好]
1 | -- 插入的时候MD5 |
2.12 事务
特点:ACID(原一隔持)
隔离性可能出现的问题
脏读:一个事务读取了另一个没有提交的数据
不可重复读:在一个事务内读取表中某一行数据,多次读取结果不同,【不一定是错误,只是场合有可能不对】
虚读(幻读):指一个 事务内读取到了别的事务插入的事务,导致前后读取不一致;
1 | -- 事务关键词: |
2.13 索引(本质是数据结构,帮助数据库建立高效获取数据的数据结构)
分类:
主键索引(primary key):一个表只能一个主键索引
唯一索引(Unique key):可以多个
常规索引(key、index)
全文索引(fullText):快速定位,一般用于数据引擎MyISAM
1 | -- 索引的使用:创建时加,创建后加 |
2.14 备份
1 | # 1.利用mysql可视化工具 |
2.15 JDBC连接池
数据库连接(connection)-数据库sql操作(preparedStatement【可以防止SQL注入】)-结果操作(整数或resultSet)–释放
- c3p0(需要导入包,工具类)
1 | package cn.itcast.itcaststore.utils; |
- dbcp(需要导入包)
- druid:阿里巴巴
2.16 复杂增删改查
- 增
1 | INSERT INTO T_D_AC_TRADE_EN NOLOGGING |
- 删
1 | DELETE FROM T_D_AC_TRADE_EN WHERE C_IDEN IN( |
- 改
1 | update T_P_SV_SEC_BASE sec |
- 查
1 | -- 判断两张表的数据是否有不同 |
- 创建临时表
1 | create global temporary table R_D_AC_TRADE_EN |
3. 总结
总结了mysql的基础,中间还有许多没有讲到的基础,并不是全部内容,这是自己学习时的感悟与总结,如果有错误或者建议,欢迎大家评论区指出,谢谢大家。