Java零基础教学文档第二篇:MySQL

今日新篇章
【MySQL】
【主要内容】

  1. 数据库相关概念

  2. 数据库和操作工具的安装

  3. 创建数据库、表、视图、索引

  4. 查询、新增、删除、修改数据

  5. 条件查询

  6. 数据库的高级查询

  7. MySQL的常用函数

  8. MySQL版本新特性

  9. MySQL索引优化

  10. MySQL事务

【学习目标】
在这里插入图片描述

1. 数据库的相关概念

1.1 数据
1,定义:描述事物的符号

2,表达形式:多种表现形式:文本,图形,音频,视频

1.2 数据库(Database, DB)
1,粮库 车库

2,存放数据的仓库 存放在计算机中,按照一定格式存放 可为用户共享

1.3 数据库管理系统(Database Management System, DBMS)
1,如何科学的组织和存储数据,如何高效的获取和维护数据,靠数据库管理系统完成

2,Oracle MySQL SQL Server(微软) DB2 FoxPro,Access

1.4 数据库应用程序(DBAS)
1,在数据库管理系统基础上,使用数据库管理系统的语法,开发的直接面对最终用户的应用程序

2,学生管理系统、人事管理系统、图书管理系统

1.5 数据库管理员(Database Administrator, DBA)
1,数据库管理系统的操作者

1.6 最终用户
1,数据库应用程序的使用者

1.7 数据库系统
1,数据库+数据库管理系统+数据库应用程序+最终用户
在这里插入图片描述

1.8 数据库的发展阶段
1,网状数据库

2,层次数据库

3,关系数据库

采用关系[二维表]结构存储与管理数据

采用结构化查询语言(sql)作为客户端数据库服务器间沟通的桥梁

目前主流的数据库技术
在这里插入图片描述

4,对象数据库

1.9 NOSQL数据库
1,Not only sql数据库 泛指非关系数据库。如MongoDB,Redis

2,关系数据库在超大规模和高并发的web2.0纯属动态网站已经显示力不从心,暴露了很多难以克服的问题。Nosql数据库的产生就是为了解决大无框数据集合多重数据种类带来的挑战,尤其是大数据应用难题

1.10 市场上流行的关系型数据库
数据库 厂商

Oracle 甲骨文公司

MySQL MySQL

SQLServer Microsoft

DB2 IBM

Sqlite RichardHipp

2. 数据库相关安装

2.1 准备工作
在这里插入图片描述

msi文件:mysql数据库的安装文件

navicat:操作数据库的工具

Navicat:破解navicat的工具

vcredis_x64.exe:安装mysql环境检查的通过的一个工具

2.2 安装mysql
2.2.1 右键安装

在这里插入图片描述

2.2.2 读条中
在这里插入图片描述

2.2.3 安装主页面
在这里插入图片描述

2.2.4 这里选择只安装服务
在这里插入图片描述

2.2.5 下一步检查环境【停住,别安装】
在这里插入图片描述

上图中环境有问题,说差一个Microsoft Visual C++2013

2.2.6 找到准备文件夹里面的工具包
vcredis_x64.exe ----》双击安装它
在这里插入图片描述

2.2.7 到2.2.5步回退一步,再下一步【发现没有问题了-如下】
在这里插入图片描述

2.2.8 下一步
在这里插入图片描述

2.2.9 执行安装并下一步
在这里插入图片描述

2.2.10 下一步
在这里插入图片描述

2.2.11 设置root用户的密码
在这里插入图片描述

2.2.12 设置安装的服务名
在这里插入图片描述

2.2.13 下一步完成配置
在这里插入图片描述

2.2.14 执行完成如果全部对钩说明安装成功
在这里插入图片描述

2.3 安装navcat
在这里插入图片描述

2.3.1 右键以管理员方式运行
在这里插入图片描述

2.3.2 安装主页面
在这里插入图片描述

2.3.3 下一步
在这里插入图片描述

2.3.4 下一步
在这里插入图片描述

2.3.5 下一步到结束【安装中】
在这里插入图片描述

2.3.6 安装完成
在这里插入图片描述

2.4 破解navcat
在这里插入图片描述

2.4.1 解压上图的文件
在这里插入图片描述

2.4.2 再解压进入
在这里插入图片描述

2.4.3 双击运行上面的文件如下
在这里插入图片描述

2.4.4 点击patch后
在这里插入图片描述

2.4.5 生成注册码并复制这个注册码
在这里插入图片描述

2.4.6 打开navcat并点击注册

在这里插入图片描述

2.4.7 输入注册码并点击激活
在这里插入图片描述

2.4.8 输入注册码并点击激活选择手动激活
在这里插入图片描述

2.4.9 按下图操作
在这里插入图片描述在这里插入图片描述

2.4.10 检查激活状态
在这里插入图片描述

2.4.11 连接mysql
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.5 配置MySQL环境变量
2.5.1 找到mysql的安装目录

在这里插入图片描述

2.5.2 复制这个目录地址右键此电脑->属性->高级系统设置
在这里插入图片描述

2.5.3 打开环境变量
在这里插入图片描述

2.5.4 新建
在这里插入图片描述

2.5.5 配置PATH并确定
在这里插入图片描述
在这里插入图片描述

2.5.6 测试环境变量是否生效
在这里插入图片描述
在这里插入图片描述

按win+r键输入cmd

输入 mysql -uroot -p123456

3. 数据库相关基础操作

3.1 启动|停止
3.1.1 方式1
在这里插入图片描述
在这里插入图片描述

3.1.2 方式2

win+r cmd
在这里插入图片描述

net start mysql 启动

net stop mysql 停止

3.2 使用root账户登陆
mysql -uroot -p123456

root是默认的用户名—超级管理员

123456是之前我们安装的时候设置的默认密码

3.3 显示所有数据库
show databases;

3.4 默认的几个数据库说明
在这里插入图片描述

3.4.1 information_schema
information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式。什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。

在MySQL中,把 information_schema 看作是一个数据库,确切说是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权 限等。在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件

3.4.2 mysql
这个是mysql的核心数据库,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。不可以删除,如果对mysql不是很了解,也不要轻易修改这个数据库里面的表信息。

3.4.3 performance_schema
mysql 5.5 版本 新增了一个性能优化的引擎: PERFORMANCE_SCHEMA这个功能默认是关闭的:

需要设置参数: performance_schema 才可以启动该功能,这个参数是静态参数,只能写在

my.cnf 中 不能动态修改。

windows里面叫 my.ini文件 C:\ProgramData\MySQL\MySQL Server 5.7 【默认在这个目录】

linux里面叫my.cnf文件

3.4.4 sys
通过这个库可以快速的了解系统的元数据信息

这个库确实可以方便DBA发现数据库的很多信息,解决性能瓶颈都提供了巨大帮助

3.4.5 test
这个库就是一个测试库而已

3.4.6 重要说明
以上的所有默认库。只有、test库能删除,其它的都不要删除

3.5 使用某一个数据库
– 语法

– use <数据库名称>;

– 例如:使用mysql数据库

use mysql;

3.6 修改密码
– 1使用mysql数据库

use mysql;

– 2修改密码命令(将root用户的密码修改为123456)

update mysql.user set authentication_string=PASSWORD(‘123456’) where user='root;

– 3刷新

flush privileges;

3.7 创建用户
3.7.1 命令
CREATE USER ‘username’@‘host’ IDENTIFIED BY ‘password’;

3.7.2 说明
username:你将创建的用户名

host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%

password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

3.7.3 例子
CREATE USER ‘dog’@‘localhost’ IDENTIFIED BY ‘123456’;

CREATE USER ‘pig’@‘192.168.1.101_’ IDENDIFIED BY ‘123456’;

CREATE USER ‘pig’@‘%’ IDENTIFIED BY ‘123456’;

CREATE USER ‘pig’@‘%’ IDENTIFIED BY ‘’;

CREATE USER ‘pig’@‘%’;

3.8 给用户授权
3.8.1 命令
GRANT privileges ON databasename.tablename TO ‘username’@‘host’

3.8.2 说明
privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL

databasename:数据库名

tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*

3.8.3 例子
GRANT SELECT, INSERT ON test.user TO ‘pig’@‘%’;

GRANT ALL ON . TO ‘pig’@‘%’;

GRANT ALL ON maindataplus.* TO ‘pig’@‘%’;

3.8.4 注意
用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

GRANT privileges ON databasename.tablename TO ‘username’@‘host’ WITH GRANT OPTION;

3.9 创建一个数据库
– 创建数据库有两种方式:

– 第一种 语法如下
– 注意:<>里面的内容都是可变的
– create database <数据库名称>;
– 例如
create database whpowernode;
– 第二种 语法如下
– if not exists 创建之前会做check操作,如果数据库名称在MySQL数据库管理系统中不存在才创建
– charset default 为数据库指定默认编码
– create database [if not exists] <数据库名称> default charset <数据库字符集编码>;
– 例如:
create database if not exists whpowernode default charset UTF8;
create database if not exists whpowernode default charset UTF8MB4;

–第三种: create database <数据库名称> [character set utf8];
– UTF8和UTF8MB4区别?
– 绝大多数情况下使用UTF8编码的字符集一个汉字占据3个字符,但是有极少数情况下一个汉字占据4个字符
– 占据4个字符的汉字不能使用UTF8存储,必须使用UTF8MB4存储
– UTF8MB4字符集编码表示一个汉字最多占据4个字符 M Most B Byte
– 注意:创建数据库指定的字符集编码必须跟MySQL数据库里面的my.ini字符集编码保持一致

3.10 修改默认编码[找到my.ini文件]
在这里插入图片描述

3.11 删除一个数据库
– 第一种方式 语法:
– drop database <数据库名称>;
– 例如:
drop database whpowernode;
– 第二种方式 语法:
– 删除之前先判断 存在才删除
– drop database if exists <数据库名称>;
– 例如:
drop database if exists whpowernode;

3.12 修改数据库
alter database <数据库名称> character set 新编码名;

3.13 3.13 查看库
– 查询mysql管理系统软件下所有的库:

show databases;

– 查询指定库的详细信息

show create database <数据库名称>;

– 查看当前用户使用的是具体哪个库

select database();

4. 什么是SQL

SQL是一个面向过程的结构化查询语言,全称Struct Query Language 。我们对MySQL做的任何操作(命令)都建立在结构化查询语言中。

SQL由以下四部分组成:DDL、DML、DQL、TCL

4.1 DDL 数据定义语言
全称Data Definition Language,主要用于创建和删除结构。

Ø 1)创建结构相关操作:库、表、视图、索引 create

Ø 2)删除结构相关操作:库、表、视图、索引 drop

Ø 3)改变结构相关操作:库、表、视图、索引 alter

4)查询结构相关操作: 库、表、视图、索引 show

4.2 DML 数据操纵语言
DML对表和视图进行插入、删除、更新相关操作,全称Data Manipulation Language。插入数据关键字:insert

Ø 删除数据关键字:delete

Ø 修改数据关键字:update

4.3 DQL 数据查询语言
对表和视图进行操作,全称: Data Query Language

Ø DQL关键字 select

4.4 TCL 事务控制语言
TCL全称Transaction Control Language,使用事务管理DML操作。

Ø 提交事务关键字 commit;

Ø 回滚事务关键字 rollback;

Ø 开启事务关键字 start transaction;

5. MySQL数据类型

5.1 整数类型
在这里插入图片描述

5.2 小数类型
在这里插入图片描述

5.3 定点数

浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。 decimal(m,d) 参数m是总个数,d是小数位。

5.4 字符串

在这里插入图片描述

5.4.1 char、varchar、text区别
char:存储定长数据很方便,CHAR字段上的索引效率级高,必须在括号里定义长度,可以有默认值,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间(自动用空格填充),且在检索的时候后面的空格会隐藏掉,所以检索出来的数据需要记得用什么trim之类的函数去过滤空格。

varchar:存储变长数据,但存储效率没有CHAR高,必须在括号里定义长度,可以有默认值。保存数据的时候,不进行空格自动填充,而且如果数据存在空格时,当值保存和检索时尾部的空格仍会保留。另外,varchar类型的实际长度是它的值的实际长度+1,这一个字节用于保存实际使用了多大的长度。

text:存储可变长度的非Unicode数据,最大长度为2^31-1个字符。text列不能有默认值,存储或检索过程中,不存在大小写转换,后面如果指定长度,不会报错误,但是这个长度是不起作用的,意思就是你插入数据的时候,超过你指定的长度还是可以正常插入。

5.4.2 实战结论
1、经常变化的字段用varchar;

2、知道固定长度的用char;

3、超过255字节的只能用varchar或者text;

4、能用varchar的地方不用text;

5、能够用数字类型的字段尽量选择数字类型而不用字符串类型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接回逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了;

6、同一张表出现多个大字段,能合并时尽量合并,不能合并时考虑分表

5.5 日期时间类型
MySQL数据类型 含义

date 日期 ‘2021-1-1’

time 时间 ‘12:25:36’

datetime 日期时间 ‘2021-1-1 22:06:44’

timestamp 自动存储记录修改时间

若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。

5.6 Logic类型
Logic类型使用bit表示,它只能存储两个值0或者1

5.7 数据类型的属性
在这里插入图片描述

6. MySQL表的相关操作DDL

6.1 创建表
6.1.1 语法
create table <表名称>

(

列名称1 数据类型1,

列名称2 数据类型2,

列名称n 数据类型n

);

6.1.2 实例创建一个学生表tb_student
create table tb_student(

 id int(11),

 stu_name varchar(50),

 stu_sex bit,

 stu_hobby varchar(50),

 stu_age smallint

);

– 注意:最后一列没有逗号

– 列与列之间以半角逗号相隔

6.1.3 实例创建一个学生表tb_student并指定编码和存储引擎
create table student(

 id int(11),

 stu_name varchar(50),

 stu_sex bit,

 stu_hobby varchar(50),

 stu_age smallint

)default charset=UTF8, ENGINE=INNODB;

DEFAULT CHARSET 用于指定表中数据的字符集编码方式

ENGINE 用于指定表的存储引擎

6.2 数据存储的问题
现在我们在数据库中创建了一个表,那么如我们把电脑重启,这个表还在不在呢?

测试结果为 在 那是为什么呢?

原因是当我们创建表个表之后,在我们数据库的文件系统里面就会有一个对应的文件存在

.frm文件:保存了每个表的元数据,包括表结构的定义等;

.ibd文件:InnoDB引擎开启了独立表空间(my.ini中配置innodb_file_per_table = 1)产生的存放该表的数据和索引的文件。

6.3 查看表结构
创建表之后如何查看是否创建成功?可以通过desc命令来查看表结构

– 第一种方式查看表结构

– desc <表名称>;

desc student;

– 第二种方式查看表结构

– show create table <表名称>;

show create table tb_student;

6.4 修改表结构
基本语法如下:alter table <表名称>;

6.4.1 案例1
添加列,例如:向student表新增加一列stu_height学生身高

– 语法如下:

– alter table <表名称> add column <列名称> <数据类型>;

alter table student add column stu_height int(11);

– 查看表结构

desc student;

6.4.2 案例2
删除某一个列,例如:删除student表中的学生身高

– 语法如下:

– alter table <表名称> drop column <列名称>;

alter table student drop column stu_height;

6.4.3 案例3
修改列名称和数据类型:例如修改stu_sex 为 student_sex 数据类型修改为 varchar(30)

– 语法如下:

– alter table <表名称> change column <原列名称> <新列名称> <数据类型>;

– 修改stu_sex 为 student_sex 数据类型修改为 varchar(30)

alter table student change column stu_sex student_sex varchar(30);

6.4.4 案例4
修改某一列的数据类型,例如:将学生年龄修改为int类型

– 语法如下:

– alter table <表名称> modify column <原来的列名称> <新的数据类型>;

– 例如:

alter table student modify column stu_age int(11);

6.5 删除表
6.5.1 直接删除
– drop table <表名称>;

drop table EMP_bak;

6.5.2 删除之前先判断表是否存在
– drop table if exists <表名称>;

– 刪除之前先做校验,表在数据库中存在才删除

drop table if exists EMP_bak;

6.6 显示当前库的所有表
show tables;

  • 35
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java的第三方库OpenCSV来快速将CSV文件导入MySQL数据库中。以下是一个简单的示例代码: ```java import com.opencsv.CSVReader; import java.io.FileReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; public class CsvToMysql { public static void main(String[] args) { String csvFile = "/path/to/file.csv"; // CSV文件路径 String databaseUrl = "jdbc:mysql://localhost:3306/mydatabase"; // 数据库连接URL String username = "myusername"; // 数据库用户名 String password = "mypassword"; // 数据库密码 try { // 连接到数据库 Connection connection = DriverManager.getConnection(databaseUrl, username, password); // 准备SQL语句 String sql = "INSERT INTO mytable (column1, column2, column3) VALUES (?, ?, ?)"; PreparedStatement statement = connection.prepareStatement(sql); // 读取CSV文件 CSVReader reader = new CSVReader(new FileReader(csvFile)); String[] nextLine; // 逐行读取CSV文件,并将数据插入到数据库中 while ((nextLine = reader.readNext()) != null) { statement.setString(1, nextLine[0]); // 设置第1个参数 statement.setString(2, nextLine[1]); // 设置第2个参数 statement.setString(3, nextLine[2]); // 设置第3个参数 statement.executeUpdate(); // 执行SQL语句 } // 关闭资源 reader.close(); statement.close(); connection.close(); System.out.println("导入成功!"); } catch (Exception e) { e.printStackTrace(); } } } ``` 在这个示例代码中,我们假设CSV文件有3列,分别对应数据库表中的3个列。通过逐行读取CSV文件,并使用PreparedStatement来设置SQL语句的参数,将数据插入到数据库中。请注意,这个示例代码并没有考虑到CSV文件中可能存在的转义字符和特殊字符,如果需要处理这些问题,请查阅OpenCSV的文档

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值