Mysql数据库基础操作
2020-06-24 23:01:49 30 举报
AI智能生成
Mysql数据库基础操作
作者其他创作
大纲/内容
JPA
xml
持久化单元
<persistence-unit>
name
transaction-type
JPA实现方式
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
数据库信息
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="jiangtian12358"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql:///test"/>
配置JPA实现方的配置信息
显示sql
自动创建数据库表
create
update
none
实体类
@Entity
声明实体类
@Table([name])
表名
主键
@Id
@GeneratedValue
stangety
IDENTITY
自增
SEQUENCE
序列
TABLA
AUTO
程序自动
操作
加载配置文件创建实体管理器工厂
Persistence.createEntityManagerFactory("myJPA");
通过实体管理类工厂获取实体管理器
EntityManager manager = factory.createEntityManager();
线程安全
静待代码块创建节省资源
获取事务对象开启事务
EntityTransaction transaction = manager.getTransaction();
transaction.begin();
CRUD
普通操作
persist
删除
find
remove
find
settet
merge
查询
find
[pojo.class]
id
getreference
动态代理对象
延迟加载
JPQL
创建jpql语句
String jpql = "from User";
查询全部
Query query = manager.createQuery(jpql);
List list = query.getResultList();
分页查询
query.setFirstResult
query.setMaxResult
统计查询
select count([]) from User
Object object = query.getSingleResultList();
条件查询
from User where [] like ?
子主题 2
query.setParameter
排序查询
String jpql = "from User order by id desc";
提交、回滚事务
transaction.commit();
rollback
释放资源
manager.close();
factory.close();
JDBC
操作
注册驱动
Class.forName("com.mysql.cj.jdbc.Driver")
Drivermanager.register
获取数据库对象 connection
Connection connection = DriverManager.getConnection("jdbc:mysql:///test?serverTimezone=UTC","root","jiangtian12358");
获取执行sql的对象
管理事务
开启
setAutocommit(false)
提交
commit
回滚
rollback
定义sql
String sql = "";
获取执行sql语句的对象 statement
Statement statement = connection.createStatement();
PreparedStatement preparedStatement = connection.PrepareStatement(sql);
执行sql,接受返回结果
statement
executeUpdate(sql)
返回影响的行数
int
executeQuery(sql)
返回
resultset
next()
getXxx()
PreparedStatement
setXxx([index],[value])
preparedStatement.executeUpdate
处理结果
释放资源
utils
获取路径
ClassLoader
ClassLoader classloader =[class].class.getClassLoader
URL res = classloader.getResource([file])
String path = res.getPath()
综合
Connection connection = DriverManager.getConnection("jdbc:mysql:///test?serverTimezone=UTC","root","jiangtian12358");
String sql = "";
Statement statement = connection.createStatement();
statement.executeUpdate(sql);
System.out.println(count);
statement.close();
connection.close();
连接池
配置
加载配置
Properties pro = new
InputStream is = DruidDemo.class.getClassLoader().getResourcesAsStream([配置file])
pro.load(is)
获取连接池对象
DruidDataSourceFactory.createDatasouce
DataSource
getConnection
template
操作
创建数据源并配置
DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();
创建template对象并注入数据源
JdbcTemplate jt = new JdbcTemplate(driverManagerDataSource);
执行操作语句
jt.execute([sql]);
jt.query([sql],rowmapper,[])
分支主题
jt.queryforobject
分支主题
封装
implement rowmapper<[pojo]>
分支主题
spirng自带封装
jdbcdaosupport
IOC
数据类型
MYSQL
基础
启动
net start mysql80
登录
mysql -uroot -p
mysql -hip -uroot -p
退出
exit
quit
语言
DDL操作库与表
库
C
create database {if not exists} [name] {character set xxx}
R
show databases
select database()
查询正在使用的
show create database mysql
字符集
U
alter database [name] character set xxx
D
drop database {if exists} [name]
使用
use [name]
表
C
create table {if not exists} [name] {like [name]}(
列名1 数据类型1,
列名2 数据类型2
)
R
show tables
show create table [name]
查询创建语句
desc [name]
SHOW COLUMNS FROM [table_name];
数据类型
int
double([length],[保留位数])
date
datetime
timestamp
默认当前时间
varchar([length])
U
名称
alter table [name] rename to [newname]
字符集
alter table [name] character set [type]
添加一列
alter table [name] add [column name] [type]
修改列
alter table [name] change [column name] [new column name] [type]
alter table [name] modify [column name] [type]
删除列
alter table [name] drop [column name]
D
drop table {if exists} [name]
DML增删改表数据
添加数据
insert into [table name](1,2,3) values(1,2,3)()()()
insert into [table name](1,2,3) select [] from []
删除数据
delete * from [table name] {where [condition]}
truncate table [table name]
修改数据
update {IGNORE} [table name] set 1=1,2=2 {where [condition]}
触发器
CREATE TRIGGER [name] AFTER|BEFORE [OPER] ON [table]
{for each row} []
{for each row} []
NEW | OLD
DQL
查询单表数据
基础查询
select {distinct}[字段列表]
from[表名列表]
where [条件列表]
group by[分组字段]
having [分组后的条件]
order by [排序条件]
limit[分页]
from[表名列表]
where [条件列表]
group by[分组字段]
having [分组后的条件]
order by [排序条件]
limit[分页]
去重
distinct
相加
别名
as
空格
ifnull([param,value])
条件查询
>、<
between [] and []
is {not} null
{not} in(...)
LIKE
占位符
_
%
任意位
REGEXP {binary} []
|
[]
^
-
.
重复元字符
定位元字符
不能接聚合函数
接子查询
排序查询
order by [1] [1] , [2] [2]
升序ASC 默认
DESC 降序
分组查询
select [分组字段] [聚合函数] + group by [分组字段]
结合条件
结合having
分页查询
limit [第几行],[有几行]
约束
主键约束
primary key
auto_increment
联合主键
非空约束
not null
唯一约束
unique
外键约束
设置
{constraint [外键名]} foreign key ([外键列名称]) references [外表名] ([外表列名])
alter table [name] drop foreign key[外键名]
alter table [name] add constraint [外键名] foreign key [外键列名称] references [外表名] [外表列名]
级联
on update cascade
on update cascade
on delete cascade
函数
concat
Trim
upper
length
算术、数值处理函数
时间
聚合函数
排除null值
排除null值
count
max
min
sum
avg
组合查询
UNION
和where + or 功能相同
UNION ALL
全文本搜索
FULL TEXT([列名])
WHERE MATCH([列名]) AGAINST([])
查询扩展
布尔文本搜索
WHERE MATCH([列名]) AGAINST([] in BOOLEAN MODE)
查询多表
基础查询
select {distinct}[字段列表] from[表名列表] where [条件列表] group by[分组字段] having [分组后的条件] order by [排序条件] limit[分页]
内连接
隐式、等值连结
from [table1],[table2] where {condition}
显式
[table1] {inner} join [table2] on [condition]
外链接
左
from [table1] left{outer} join [table2] on [condition]
右
子查询
一行一列
多行一列
in
多行多列
,
DCL 访问权限
管理用户
查询
mysql-user
%:任意主机
创建
create user '[name]'@'[hostname]' identified by 'pwd'
删除
drop user '[name]'@'[hostname]'
修改
update user set password = password('[pwd]') where user = '[name]'
set passworrd for '[name]'@'hostname' =password('[pwd]')
授权
查询
show grants for '[name]'@'hostname'
授予
grant [权限列表] on [database].[table] to '[user]'
撤销
revoke [权限列表] on [database].[table] from '[user]'
数据库设计
多表之间的关系
一对一
一对多
外键
多对多
中间表
设计范式
备份与还原
备份
mysqldump -u[用户名] -p[密码] [database name]> [path]
还原
sourse 执行备份文件
事务
流程
start transaction
commit
自动关闭事务,释放保留点
rollback {to [name]}
自动关闭事务,释放保留点
savepoint [name]
事务方式
select @@autocommit
1自动提交
set @@autocommit
四大特征
原子性
持久性
隔离性
问题
脏读
读取到另一个事务没有提交的数据
虚读
同一事务中,两次读取到的数据不一样
幻读
隔离级别
read uncommited
读未提交
read commited
读已提交
repeatable read
可重复读
serilizable
串行化
一致性
0 条评论
下一页