Java教程

JAVA数据库基础

本文主要是介绍JAVA数据库基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

在这里插入图片描述
在这里插入图片描述
连接到Mysql服务的指令
mysql -h 主机ip -P 端口 -u 用户名 -p密码
(1)-p与密码之间不要有空格
(2)-p后不加密码,回车后要求输入密码
(3)如果没有写-h默认是本机
(4)不写-P默认是3306,但往往会修改

1.安装Mysql数据库实际上是安装一个数据库管理系统(DBMS),这个管理程序可以管理很多数据库
2.一个数据库中可以安装多个表,以保存数据

Mysql数据库-普通表的本质仍然是文件
在这里插入图片描述
数据在数据库中的存储方式
表的一行称之为一条记录,java程序中一行记录往往使用对象表示
在这里插入图片描述
SQL语句分类
在这里插入图片描述
创建数据库
可以指定字符集和指定校对规则,如果不指定默认utf8和utf8_bin
常用的校对规则 区分大小写 utf8_bin 不区分大小写utf8_general_ci
例如:CREATE DATABASE db_name CHARECTER SET utf8 COLLATE utf8_bin
在数据库中建表也可以指定字符集和校验规则,如果不指定默认继承数据库的字符集和校验规则,除了这两点,建表时还可以指定 存储引擎ENGINE,常用INNODB

显示数据库语句
SHOW DATABASES
显示数据库创建语句
SHOW CREATE DATABASE db_name
删除数据库(慎用)
DROP DATABASE [IF EXISTS] db_name
创建数据库时,为了规避关键字,可以使用反引号解决,可以创建以关键字命名的数据库
在这里插入图片描述

备份恢复数据库
备份数据库:只能在DOS命令行下执行(mysqldump这个命令在安装目录里)
mysqldump -u 用户名 -p -B 数据库1 数据库2 数据库n > 文件名.sql
恢复数据库
(1)进入Mysql命令行
Source 文件名.sql
(2)第二个恢复方法
直接将sql文件里的语句全部放到查询编辑器里执行一遍(很笨)

备份库里的表(相比备份整个库而言,去掉 -B )
mysqldump -u 用户名 -p 数据库 表1 表2 > 文件名.sql

创建表
在这里插入图片描述
MYSQL数据类型/列类型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
整形语句
在这里插入图片描述
bit类型语句
在这里插入图片描述
小数类型
在这里插入图片描述
在这里插入图片描述
字符串类型
size代表的都是字符数
CHAR (size) 最大长度255字符
固定长度字符串
VARCHAR(size) 范围0-65535字节—>根据编码方式换算成字符数
可变长度字符串 最大长度65532字节 (1-3个字节用于记录大小) 存储的字符与编码方式有关,utf-8一个字符对应3个字节,gbk一个字符对应2个字节
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

时间相关的类型
在这里插入图片描述
ALTER TABLE 追加、修改、删除列的语法
追加
ALTER TABLE 表名
ADD
修改
ALTER TABLE 表名
MODIFY
删除
ALTER TABLE 表明
DROP 列名
重命名表
rename table 表名 to 新表名;

insert细节
在这里插入图片描述
update语句
在这里插入图片描述
在这里插入图片描述
DELETE语句
delete from 表名 (where… ) #delete语句只能删除表的记录,无法删除表
删除表需要使用 DROP table 表名

select语句(重点)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
between and 属于闭区间,相当于大于等于,小于等于
IN,AND,OR等关键字 使用LIKE进行匹配
在这里插入图片描述
ORDER BY字句
在这里插入图片描述

统计函数
count
count(*) 返回所有记录条数
count(列名) 返回所有非空的记录条数
sum 合计函数
在这里插入图片描述
在这里插入图片描述
AVG 平均值函数
MAX,MIN 最高值,最低值
在这里插入图片描述
group by
在这里插入图片描述
在这里插入图片描述
group by 可以配合 having 来进行筛选
在这里插入图片描述
字符函数
charset() 返回字符集
concat() 拼接字符串
instr() 返回所给字符串在另一个字符串中索引位置
在这里插入图片描述
ucase() 转成大写返回
lcase() 转成小写返回
left(name,2) 从左边取2个字符
length() 返回某列中的各记录字节长度
replace()把某列中所有的A替换成B
STRCMP() 逐字符比较字符串大小是否相等
substring() 对某列 所有信息, 从某位置(1开始)取某长度的字符串
ltrim()
rtrim()
trim() 清除空格

数学函数
ABS() 绝对值函数
BIN() 转成二进制返回
ceiling() 向上取整
CONV() 进制转换
floor() 向下取整
format() 保留指定的小数位数
HEX()转十六进制
MOD() 前面数字对后面数字求模
least() 求最小值
RAND() 0-1.0之间返回一个随机数

日期时间相关函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
加密函数和系统函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
流程控制语句
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查询增强
在这里插入图片描述
分页查询
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

多表查询(重点)

笛卡尔集
在这里插入图片描述
解决的关键就是写出正确的过滤条件 where,这个条件需要程序员进行分析
在这里插入图片描述
在这里插入图片描述
例如两个表查询条件最少有一个

自连接
在这里插入图片描述
1.一张表当作两张表使用
2.需要取别名 表名 表别名
3.列名不明确可以给列取别名
在这里插入图片描述

子查询
嵌入在其他sql语句中的select语句,也叫嵌套查询
(1)单行子查询
只返回一行数据的子查询语句
(2) 多行子查询
返回多行数据的子查询 使用关键字in
在这里插入图片描述
子查询临时表
把子查询返回的结果当作一张表来使用

ALL和ANY
多行子查询中使用ALL操作符(所有的都必须满足条件)
使用MAX有时可以达到相同的效果
在这里插入图片描述
多行子查询中使用any操作符(任何一个满足条件就可以)
使用MIN有时可以达到相同的效果
在这里插入图片描述
多列子查询
即 查询返回多个列数据的子查询语句
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1.表的复制
在这里插入图片描述
2.自我复制(蠕虫复制)
在这里插入图片描述
表的去重
如何取出一张表的重复记录,待去重的表是my_tab02
在这里插入图片描述
在这里插入图片描述

复制表结构
在这里插入图片描述
合并查询
unine (去重)和unine all(合并查询结果,不会去重)

外连接
显示出两表未相交的部分
(1)左外连接(左侧的表完全显示
select … from 表一 left join 表二 on 条件
(2)右外连接(右侧的表完全显示
select … from 表一 Right join 表二 on 条件

在这里插入图片描述
主键
字段名 字段类型 primary key
用于唯一的标识表行的数据,当定义了主键约束后,该列不能重复,且内容不可为null
只能有一个主键,但可以有复合主键
在这里插入图片描述
unique
unique表示字段不可重复
unique not null 效果类似 主键

外键
foreign key
在这里插入图片描述
外键约束必须定义在从表上,主表要有主键约束或UNIQUE约束,当定义外键约束后,要求外键列数据必须在主表的主键列存在,或是为null
在这里插入图片描述
check约束
语法上支持,但并不会生效
在这里插入图片描述
enum 枚举
在这里插入图片描述

自增长
在这里插入图片描述
在这里插入图片描述
自增长一般和主键配合使用
自增长也可以单独使用,但是需要配合UNIQUE
自增长一般修饰整数型,很少修饰小数
自增长默认从0开始增加,通过以下命令修改 alter table 表名 auto_increment = 新的开始值
添加数据的时候,如果指定了值,那么以指定的值为准(建议指定了自增长就按自增长来赋值,不要手动指定)

索引
原理:
没有索引时,每次查询都会进行全表扫描(效率低)
加索引后,会形成一个索引的数据结构,比如二叉树(也有其他的方案)
在这里插入图片描述
索引的代价:
1.占用空间
2.对 update detele insert 语句速度有影响(需要对表进行维护)
select大概在项目中占90%,update,delete,insert语句仅占10%,所以使用索引利大于弊

主键索引 (PRIMARY KEY)主键本身就是个索引(主索引)
唯一索引(UNIQUE)
普通索引(INDEX)
全文索引(FULLTEXT)适用于 MylSAM
在这里插入图片描述
创建索引
添加唯一索引(唯一约束)
create unique index 索引名 on 表名 (列名)
添加普通索引
create index 索引名 on 表名 (列名)
在这里插入图片描述
添加普通索引2
ALTER TABLE 表名 ADD index 索引名 (列名)
添加主键索引
(1)建表时加上PRIMARY KEY
(2)ALTER TABLE 表名 ADD PRIMARY KEY (列名)

删除索引
DROP INDEX 索引名 on 表名
删除主键索引
ALTER TABLE 表名 DROP PRIMARY KEY

修改索引 :先删除后添加

查询索引
show INDEX FROM 表名
show INDEXES FROM 表名
show KEYS FROM 表名
DESC 表名 (不推荐用)
在这里插入图片描述
事务
事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败。 例如转账问题。

控制事务的基本操作
start transaction 开始事务
set autocommit = off 开始事务的另一种方法
savepoint 保存点名,设置保存点
rollback to 保存点名,回退点名
rollback 回退全部事务
commit 提交事务,所有操作生效

在这里插入图片描述
不开启事务时,dml语句是自动提交的。
在这里插入图片描述
mysql的事务机制需要innodb存储引擎可以使用,myisam不好用

事务隔离级别

脏读:当一个事务读取另一个事务尚未提交的修改时,产生脏读
不可重复读:同一个查询在同一个事务中多次进行,由于其他事务所做的修改和删除,每次返回不同的结果集,产生不可重复读
幻读:同一个查询在同一个事务中多次进行,由于其他事务所做的插入操作,每次返回不同的结果集,产生不可重复读

四种隔离级别
在这里插入图片描述
隔离级别是跟事务相关的,没开事务就不要谈隔离级别
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Mysql 表类型和存储引擎
表类型由存储引擎决定,存储引擎包括MyISAM,innoDB,Memory等
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
memery存储引擎在重启MYSQL服务后会丢失数据,但表结构还在。
在这里插入图片描述

视图
希望仅仅有部分列被用户看到
在这里插入图片描述
在这里插入图片描述
视图使用细节
create view 视图名 as select 语句
alter view 视图名 as select 语句
show create view 视图名 //显示如何创建视图的
drop view 视图1,视图2

1.视图创建后,在数据库文件中查看发现并没有数据文件,只有一个视图结构文件,即视图相当于引用了表的数据
2.视图的数据变化会影响到基表,基表的数据变化会影响到视图(因为数据实际上是一份)
3.视图中可以再使用视图
灵活使用视图可以更方便的使用多表查询

Mysql用户管理
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
**给用户授权(**一般是root用户才有权力)
grant 权限列表 on 库.对象名 to '用户名‘@’登录位置‘ 【identified by '密码’】
在这里插入图片描述

revoke 权限列表 on 库.对象名 from '用户名‘@'登录位置’;
drop user '用户名‘@'登录位置’
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这篇关于JAVA数据库基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!