Java从零单排 -- MySql

230 阅读4分钟

MySql

前面我们都是用SQLite的,现在我们用目前比较流行的数据库MySQL。MySQL比SQLite查询效率更快,事务级别也更高,性能也更加稳定。

mysql 下载

选择上图红框的版本下载,下载后解压,然后点击进入到bin目录下,在空白处按shift+右键打开powershell(win10自带的命令行工具),在命令行模式下输入./mysqld.exe --initialize --console 将初始化数据库并且输出初始化后的root密码

bin\mysqld.exe (mysqld 8.0.22) initializing of server in progress as process 9140
2020-11-16T08:29:59.654783Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2020-11-16T08:30:00.473809Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2020-11-16T08:30:02.045762Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: J=Grsq;?d8s#

 J=Grsq;?d8s#为数据库root密码,这个密码是随机的
 

初始化后在命令行模式下再次输入./mysqld.exe mysql服务就运行起来了,解决我们就有通自带的客户端工具连接数据库了。依旧在bin目录下在空白出按住shift+右键打开powershell,输入./mysql -uroot -p,登陆时提示输入密码,密码就是刚刚初始化数据库的密码,将刚才的密码复制粘贴过来就能顺利登陆了。 登陆后,我们能看到MySQL的欢迎语句,以及help提示。首先我们先修改MySQL root密码方便我们下次登陆,在mysql>下输入 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';提示Query OK, 0 rows affected证明我们密码修改成功了。输入exit即可退出MySQL 客户端。

在MySQL客户端下我们可以简单点操作下数据库;

输入show databases;能查看目前有多数个数据库。

下面的数据库都是mysql内置的数据库是不可以删除,因为这些数据库记录了MySQL最要的信息。
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

输入use mysql;切换数据库,输入show tables;可以查看该数据库下面有多少张表。 在大多数情况下,其实我们是不需要用命令行模式操作数据库,我们可以用我们的navicat工具。

navicat连接mysql

点击文件->新建连接->MySQL,连接名称可以随便起,我们起一个localhost,ip地址为localhost,端口默认为3306,用户名为root,密码为我们刚刚修改的密码123456,信息填写完后点击测试,提示成功后再点击确定,这样保存保存连接下次就不用重新配置了。

双击刚刚配置好的localhost,mysql的小图标变成绿色代表连接上了MySQL了。接上后,在localhost上右键新建数据库,配置如下图,数据库名称叫my_test,字符集utf8mb4 ,后续会讲解mysql不同的字符集以及排序规则的。 创建完数据库后,我们可以创建表了。双击选择my_test,在表上右键,新建表。 跟之前sqlite创建表一样,创建一张person的表 注释一定填写,是对该字段的描述,不填写的话,当其他人去看表设计的时候别人就不懂这个字段有什么意义的了。

表创建后,我们尝试下插入输入。双击选择my_test数据,点击查询,新建查询输入insert into person (name ,age,sex)VALUES('小马','28','1'); 控制台提示受影响的行: 1,代表插入成功。

java 操作mysql

之前java操作sqlite要用sqlite驱动,同样的操作mysql也要mysql驱动。

在之前的spring boot项目的pom.xml中添加mysql驱动依赖,然后同步下maven。
  <!--  mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        
修改application.properties为
#配置驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#配置数据库地址
spring.datasource.url=jdbc:mysql://localhost:3306/my_test?serverTimezone=UTC
#配置mysql账号
spring.datasource.username=root
#配置mysql密码
spring.datasource.password=123456

由于之前的person的字段为name,age,nationality,现在要新增一个sex字段来满足现在的表 private Integer sex;,增加set,get方法。现在mysql的person表没有了nationality字段,所以我们要修改personDao中的SQL语句,将nationality替换为sex。 现在我们可以重新跑我们的测试类了,还是在原来的测试类中。

   跟之前的方法有一点不一样的是person.setSex(1);
	@Test
	public void addPerson2(){
		Person person = new Person();
		person.setAge(20);
		person.setName("小金");
		person.setSex(1);//设置男性
		personDao.addPerson(person);
		System.out.println(personDao.getList());
	}

其他的测试方法跟操作sqlite时是一样的,现在我们可以正常用java操作MySQL了。