### 数据库 传统关系型数据库:MySQL、Oracle、SQLServer 非关系型数据库NoSQL(Not Only SQL):MongoDB、Redis Java SE 哪些组件可以保存数据? 1、变量、数组、集合,缺点:程序一旦重启,数据全部丢失,无法做到持久化保存。 2、XML 文件可以保存数据,持久化保存,缺点:存取很麻烦,需要借助于 dom4j 来解析 XML 文件,数据之间的关联关系不够灵活,存储的数据量有限。 3、IO流可以将数据保存到本地硬盘,同时可以自定义存储格式,word、excel、txt,缺点:没有结构化的框架,没有特定的体系来维护数据之间的关联关系,可操作性不高,存储的数据量有限。 DataBase(数据库)就是一个存储数据的仓库,运行在计算机上的一种服务,为了方便数据的存储和管理,它可以将数据按照特定的规律存储在磁盘中,同时可以存储海量的数据。 通过数据库管理系统,可以有效地组织和管理存储在数据库中的数据。 - 保存数据 - 管理数据(增删改查 CRUD) Create 增加 Read 读取 Update 修改 Delete 删除 所以数据库全面地讲应该是数据库管理系统 DBMS(DataBase Management System) MySQL DataGrip、Navicat 数据库可视化管理工具 数据库存储引擎: 存储引擎其实就是如果存储数据、如何为存储的数据建立索引、如何更新、如何查询等技术的实现方法。 关系型数据库中的数据是以表的形式来存储的,所以存储引擎也可以称为表类型。 MySQL 提供了很多中存储引擎,SQL 专门用来管理数据库的编程语言。 ```sql show engines; ``` Engine:存储引擎的名称 Support:MySQL 是否支持该引擎 Comment:对引擎的描述 Transactions:是否支持事务 XA:是否支持分布式事务 SavePoints:是否支持保存点,以便进行事务回滚。 MySQL 数据库默认使用 InnoDB 存储引擎,InnoDB 对事务的处理能力非常强大,是其他存储引擎所不能比拟的。 InnoDB 存储引擎支持自增,自增列的值不能为空,且必须唯一,MySQL 中规定自增列必须是主键。 InnoDB 存储引擎支持外键。 InnoDB 优势在于提供了良好的事务管理能力和崩溃修复能力,并发控制。 缺点是读写效率稍差,占用的数据空间相对较大。 如何管理数据库? 通过 SQL 语言来管理数据库的, SQL 语言也是一种编程语言,专门用来处理数据库的。 - DML(数据操作语言)操作数据库中包含的数据(insert、update、delete) - DDL(数据定义语言)创建、删除、修改数据库、数据表(create、drop、alter) - DQL(数据查询语言)对数据库中的数据进行查询(select) - DCL(数据控制语言)用来控制数据库组件的存取(事务)(commit、rollback) 学习数据库,需要掌握两部分内容 1、掌握数据库的使用(Navicate、DataGrip 可视化管理工具,SQL 语句) 2、设计数据库,根据具体的项目需求,设计数据表之间的关联关系。 数据库的设计非常重要,直接决定项目的质量,数据库设计驱动程序的编写。 数据库的组成: 一个数据库由多张数据表组成,数据是保存在数据表中的。 数据表由两部分组成 - 表结构,表的设计。 列信息 - 表数据,表中保存的数据。 行信息 ```java public Class User{ private int id; private String name; private char gender; private Date birthday; } ``` ```java User user = new User(); user.setId(1); user.setName("张三"); user.setGender('男'); user.setDate("2019-01-01"); User user2 = new User(); user2.setId(2); user2.setName("李四"); user2.setGender('女'); user2.setDate("2000-01-01"); ``` 创建数据库—》创建数据表——〉添加数据 ```sql create database 数据库名称 ``` ```sql create database mytest default character set utf8 collate utf8_general_ci; ``` default character set utf8:设置数据库的编码方式,支持中文。 collate utf8_general_ci:设置数据库的校验字符集 utf8_general_ci:不区分大小写 utf8_bin:区分大小写 B:66 a:97 ```sql create table 表名(表的结构) ``` ```sql create table user( id int, name varchar(11) ) ``` ```sql insert into 表名(字段列表) values(值) ``` ```sql insert into user(id,name) values(1,'a') ``` ```sql select * from 表名; ``` ```sql select * from user; ``` ```sql #按照id的值进行生序排列,默认值为asc select * from user order by id asc; ``` ```sql #按照id的值进行降序排列 select * from user order by id desc; ```
DataGrid
DataGrid需要driver驱动:mysql-connector-java-5.1.46.jar,Navicat不需要