初始MySQL
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
——来自百度百科
- 首先提到了关系型数据库,我们就必须要知道其思想就是通过各种关联关联关系组成的一种数据库。其原理和瓶颈有专业的数据库作为介绍:传送至关系型数据库和非关系型数据库介绍
- 上述文章主要介绍了,关系型数据库的原理,它的发展局限性。以及非关系型数据库的原理和优势。
- 这时候我们又必须了解一下,关系型数据库ACID的特性以及事务的四种隔离性 传送
ACID可以做如下介绍
A;原子性:事务要么全部完成,要么全部失败
C:一致性:事务操作前后对数据库而言,并未发送变化
I:隔离性:多个事务操作同一个资源,对操作进行隔离确保数据成功
D:持久性:事务改变后,在数据库中永久有效
日志确保ACD,锁确保 I 的实现
- 并发访问导致的数据安全问题:
脏读:读取了未提交的数据
不可重复读:多次读取数据不一致(重点在于修改导致的数据不一致)
幻读:多次读取总量发送变化(重点在于删除和插入导致的数据不一致)
传送到相关博客
- 事务四种隔离级别
读未提交:无法解决任何数据安全问题
读已提交:仅仅解决脏读的问题,Oracle和SQL server都使用这种默认级别隔离
可重复读:解决脏读和不可重复读(使用锁,确保无update),MySQL默认使用该隔离级别
可串行化:解决三个问题(超时和费力,不建议)
MySQL查询语句
MySQL查询语句表
- 简短介绍上述内容,我们的主要查询语句就是对我们存储在数据库中的数据进行提取和匹配。所以查询需要的思想流程为:
1、查询的字段为哪些?
2、涉及的表都有哪些?
3、表之间的关联如何?
4、一步步实现表查找。
- 对于上述的查询大图,介绍如下:
- 其中 - - 为SQL语句的注释符号
select --查询语句开头
[ALL --查询所有匹配信息
| DISTINCT -- 查询未重复的所有信息]
{ * --字段名
|table.* -- 指定表下面的字段(避免模棱两可情况)
| [table.field1 -- 字段区域
[as -- 将字段重命名为
FROM -- 来自哪些表
table_name [ as other_name] -- 表名,可以选择重命名
left | right | inner join table_name2 -- 联表查询,就是将两
个有共同字段的表进行联合查询
[WHERE -- 指定结果满足的条件] -- 也可使用on 搭配join作指定条件
[GROUP BY.. -- 指定结果按照]
[HAVING -- ]
[ORDER BY 字段 -- 排序 升序ASC 降序DESC]
[LIMIT num1,num2-- 指定查询的记录从哪条到哪条]
-- 上述可以进行分页的操作,前一个是开始,后一个页面记录数
MySQL增删改语句
- 在sql中有很多增删改的操作,下面我们就一一做个介绍如下:
增加语句:
- 在mysql中增加语句主要就对记录或者字段进行增加,
- 主要使用insert对其进行插入
insert name into 表名
- 诸如上述的操作还有很多,大致了解即可
删除语句:
- 删除语句的操作其实也很简单,主要是通过delete语句对其表的内容进行删除,这样的操作如下:
DELETE FROM 表名 [WHERE 字段=条件]
修改语句:
- 修改语句就如update为主要修改过程的表修改,其可以对表的内容进行更新修改
UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
其他知识
- 为何要用其他知识来概括这个知识体系,因为我们大多在浅显接触sql语句时,主要使用这些方面的知识。但是要想灵活应用,就不简简单单的使用sql语句就能实现
- 你知道sql语句可以用来计算数学公式吗?没错,他可以,这就是它强大的函数起作用了
这些函数有如SUM 、AVG、MAX、MIN等常会使用到的语句,更有一些不常使用的例如取下整型FLOOR()函数等。
- 索引:
所以是一种对数据库搜索更迅速的方式,这样的结构,比我们直接在数据库中搜索成千上万的数据快速的多。
而他的类型大致可以分为:
普通索引:我们不加任何限制,这是最基本的索引
唯一索引:它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。
- 三大范式:
三大范式可以说是在我大二期间学习十分困扰我的主要知识
第一范式:表的列不可再分,到达最基本的单位
第二范式:满足第一范式的基础上,表的所有列与逐渐存在依赖关系,否则分表
第三范式:满足第一范式和第二范式的基础上,表的所有字段与主键存在非传递性依赖关系。
- JDBC连接
//在java连接中,我们会使用jdbc驱动来作为我们的java和我们安装的sql驱动连接
public class Main{
public static void main(String[] args){
//1、加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2、数据库信息
String url = "jdbc:mysql://localhost:3306?useUnicode=true&characterEncoding=utf8&useSSL=true";
string name = "root";
String pwd = "123456";
//3、建立连接
Connection connection = DriverManager.getConnection(url,name,pwd);
//4、创建statement语句
Statement statement = connection.createStatement();
//5、创建查询语句并查询
String sql = "select * from mysql";
ResultSet result = statement.executeQuery(sql);
//6、输出查询语句
while(result.next()){
System.out.print("id="+result.getObject("id"));
}
result.close();
statement.close();
connection.close();
}
}
- 上述为纯手打的一段小代码,希望有小小的错误能够理解。
感言:
- 学习sql的路还有很长很长,但是mysql的整体介绍就不会再写了,最多也是对sql的调优,后面我会写redis和mybaits等知识的理解,希望我们马上就能见面。