持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第8天,点击查看活动详情
用户管理
SQL命令操作
用户表:mysql.user
本质:对这张表进行增删改查
创建用户
--create user 用户名 indntified by '密码'
create user kuangshen indntified by '123456';
修改密码(当前用户)
set password = password('123456');
修改密码(指定用户)
set password for kuangshen = password('123456');
重命名
--rename user 原来的名字 to 新名字
rename user kuangshen to baba;
用户授权 all privileges 全部的权限,库.表
--all privileges 除了给别人授权,其他的都能做
grant all privileges on *.* to baba
查询权限(指定用户的)
show grants for baba;
root的权限
show grants for root@localhost
撤销权限
--revoke 哪些权限 on 哪个库 from 撤销谁
revoke all privileges on *.* from baba;
删除用户
drop user baba;
MySQL备份
为什么要备份:
- 保证重要得到数据不丢失
- 数据转移
MySQL 数据库备份的方式
-
直接拷贝物理文件
-
可视化工具中手动导出
-
使用命令行导出 mysqldump 命令行使用
#mysqldump -h主机 -u用户名 -p密码 数据库 表名 >物理磁盘位置/文件名 mysqldump -hlocalhost -uroot -p123456 school student > D:/a.sql #mysqldump -h主机 -u用户名 -p密码 数据库 表1 表2 表3 >物理磁盘位置/文件名 mysqldump -hlocalhost -uroot -p123456 scholl student >D:/b.sql #mysqldump -h 主机 -u 用户名 -p 密码 数据库 >物理磁盘位置/文件名 mysqldump -hlocalhost -uroot -p123456 scholl student >D:/c.sql #导入 #登录的情况下,切换到指定的数据库 #source 备份文件 source d:/a.sql mysql -u用户名 -p密码 库名< 备份文件
JDBC
为了简化开发人员对数据库的统一操作,提供了一个规范,即JDBC
这些规范的实现由具体的厂商去做,对于开发人员来说,我们只需要掌握JDBC接口的操作即可
第一个JDBC程序
1、创建一个项目
2、导入数据库驱动
3、编写测试代码
public class jdbcdemo {
public static void main(String[] args) {
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver"); //固定写法
//2.用户信息和url
//jdbc:mysql://主机地址:端口号/数据库名?参数1&参数2&参数3
String url = "jdbc:mysql://localhost:3306/数据库名?userUnicode = true & characterEncoding = utf8 & useSSL = true";
String username = "root";
String password = "123456";
//3.连接成功,数据库对象
Connection connection = DriverManager.getConnection(url, username, password);
//4.执行SQL的对象
Statement statement = connection.createStatement();
//5.执行SQL,可能存在结果,查看返回结果
String sql = "SELECT * FROM users";
ResultSet resultSet = statement.executeQuery(sql);
//返回结果集,结果集中封装了全部的查询结果
while (resultSet.next()) {
System.out.println("id=" + resultSet.getObject(columnLabel:"id"));
System.out.println("name=" + resultSet.getObject(columnLabel:"name"));
System.out.println("pwd=" + resultSet.getObject(columnLabel:"pwd"));
System.out.println("email=" + resultSet.getObject(columnLabel:"email"));
System.out.println("birth=" + resultSet.getObject(columnLabel:"birthday"));
}
//6.释放连接
resultSet.close();
statement.close();
connection.close();
}
}
步骤总结:
- 加载驱动
- 连接数据库 DriverManager
- 获得执行sql的对象 Statement
- 获得返回的结果集
- 释放连接
DriverManager
//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Class.forName("com.mysql.jdbc.Driver"); //固定写法
Connection connection = DriverManager.getConnection(url, username, password);
//connection 代表数据库
//数据库设置自动提交
connection.setAutoCommit();
//事务提交
connection.commit();
//事务回滚
conncetin.rollback();
URL
String url = "jdbc:mysql://localhost:3306/数据库名?userUnicode = true & characterEncoding = utf8 & useSSL = true";
//mysql --3306
//协议 ://主机地址:端口号/数据库名?参数1&参数2&参数3
//oralce --1521
//jdbc:oracle:thin:@localhost:1521:sid
Statement 执行SQL的对象 PrepareStatement 执行SQL的对象
statement.executeQuery(); //查询操作返回ResultSet
statement.execute(); //执行任何SQL
statement.executeUpdate(); //更新、插入、删除。返回一个受影响的行数
ResultSet 查询的结果集:封装了所有的查询结果
获得指定的数据类型
resultSet.getObject(); //在不知道列类型的情况下使用
//知道列类型
resultSet.getString();
resultSet.getInt();
resultSet.getFloat();
resultSet.getDate();
resultSet.getObject();
遍历,指针
resultSet.beforeFirst(); //移动到最前面
resultSet.afterLast(); //移动到最后面
resultSet.next(); //移动到下一个数据
resultSet.previous(); //移动到前一行
resultSet.absolute(row); //移动到指定行
释放资源
resultSet.close();
statement.close();
connection.close();