Mysql的简单使用

1、win连接测试命令:

转到mysql的bin下,打cmd命令mysql -h localhost -u root -p iplat(root是用户名,iplat是数据库名)

2、修改Linux系统下的Mysql的密码

//进入mysql数据库
mysql -u root -p
//输入密码进入数据库
update mysql.user set password=password(‘uacsapp’) where user=‘root’;
//刷新mysql相关系统权限表
FLUSH privileges;
//重新启动mysql
systemctl restart mysqld

3、win下安装MySQL
  1. 首先在官网下载MySQL8.0版本压缩包文件,之后解压到自己的路径下,参考链接
  2. 配置环境变量
    在Path中加入mysql的bin目录地址C:\Mine\Envirment\mysql-8.0.28\bin
  3. 配置ini文件
    在mysql解压目录下创建名为my.ini文件
    [mysqld]
    basedir=D:\software\mysql-8.0.31
    port=3306
    max_connections=20
    character-set-server=utf8
    其中basedir换成自己所解压的MySQL路径(注意:MySQL8.0之前版本需要创建data文件夹)
  4. 使用管理员身份运行cmd
    进入到MySQL的bin目录,即输入cd D:\software\mysql-8.0.31\bin,cd后的路径换成自己的MySQL bin路径
    完成切换路径之后,依次输入执行以下命令:(没有任何报错即为正常)
    mysqld -install
    mysqld --initialize-insecure --user=mysql
    net start mysql
    mysql -u root -p
    回车,密码不输入
    alter user ‘root’@‘localhost’ identified by ‘123456’;
    flush privileges;
    exit退出mysql
  5. 重启,密码测试:
    net stop mysql
    net start mysql
    mysql -u root -p
  6. 安装有误时,清空服务,重新安装:
    sc delete mysql
  7. 跳过密码
    - 定位到MySQL安装目录下的bin目录,输入mysqld --console --skip-grant-tables --shared-memory
    - 重新打开一个命令行窗口,定位到MySQL安装目录下的bin目录,输入mysql回车进入数据库。
4、把user表的root账户对应的host改为’%'就可以在Navicat上远程登录了
    show databases;
	show tables;
	select host,user from user;
	update user set host = '%' where host = 'localhost' and user = 'root';
	flush privileges;
5、MySQL数据库客户端SQLyog的使用
  • 下载、安装教程:参考链接
  • mysql 8.0 默认使用 caching_sha2_password 身份验证机制 —— 从原来的 mysql_native_password 更改为 caching_sha2_password。
  1. 处理办法:使用管理员身份运行cmd
    进入到MySQL的bin目录,即输入cd D:\software\mysql-8.0.31\bin,cd后的路径换成自己的MySQL bin路径,输入命令
    mysql -u root -p
    select user,plugin from user where user=‘root’;#查询加密规则
    ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER; #修改加密规则
    ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’; #更新一下用户的密码
    update user set plugin=‘mysql_native_password’ where user=‘root’; #修改加密规则 2
    FLUSH PRIVILEGES; #刷新权限
6、数据库四大特性ACID:
  • A原子性:要么都成功,要么都失败

  • C一致性:事务前后完整性保证一致(转账时,收发双方总金额不变)

  • I隔离性:多个事务相互之间不影响

  • D持久性:事务已提交就持久化到数据库,未提交就恢复原状

7、隔离导致的问题:
  • 脏读:一个事务读取到了另一个事务未提交的数据
  • 不可重复度:一个事务读取表中某一行数据,多次读取结果不同
  • 幻读:一个事务读取到了别的事务新插入的数据,导致前后读取不一致(多了一行)
8、模拟转账事务
  1. set autocommit =0;–关闭自动提交
  2. start transaction;–开启一个事务
  3. update bank set money=money-200 where name=‘小江’;
  4. update bank set money=money+200 where name=‘小李’;
  5. commit;–提交
  6. rollback;–回滚
  7. set autocommit =1; -打开自动提交
9、索引原则
  1. 索引不是越多越好
  2. 不要对经常变动的数据加索引
  3. 小数据量的表不需要索引
  4. 索引一般加在常用来查询的字段上
10、关系型数据库设计时的三大范式:
  • 1NF:原子性:保证列不可再分
  • 2NF:满足1NF的前提下,每张表只描述一件事情
  • 3NF:满足2NF的前提下,保证数据库表中的每一列都与主键直接相关,而不能间接相关
11、使用JDBC连接MySQL数据库

连接参考链接

  • 数据查询
            //获取连接对象
            Connection con = con.createStatement();
			
			//定义sql语句
            String sql = "select * from Student";

        	//获取执行sql语句的对象
            Connection stat = con.createStatement();

            //执行sql并接收返回结果
            ResultSet rs = stat.executeQuery(sql);

            //3、处理结果
            while (rs.next()){  //循环一次,游标移动一行
                System.out.println("id:" + rs.getString(1)); //  获取第一列的数据
                System.out.println("name:" + rs.getString("name"));  //获取字段为name的数据
                System.out.println("age:" + rs.getInt(3)); //  获取第三列的数据
                System.out.println("score:" + rs.getInt(4)); //  获取第四列的数据
                System.out.println("-------------------");
            }
            
            //4、释放资源
            rs.close();
            stat.close();
			con.close();

  • 数据修改
        //获取连接对象
        Connection con = con.createStatement();

        //定义sql语句
        String sql = "update Student set id = '66666' where name = '李白'";

        //获取执行sql的对象
        Statement statement = con.createStatement();

        //执行sql
        int pwd = statement.executeUpdate(sql);

        //处理结果
        System.out.println(pwd);
        //释放资源
        statement.close();
        con.close();
12、Statement存在Sql注入的问题,建议使用PrepareStatement
	//Statement执行 ,其实是拼接sql语句的。 先拼接sql语句,然后在一起执行。
	String sql = "select * from t_user where username='"+ username  +"' and password='"+ password +"'";
 
	UserDao dao = new UserDaoImpl();
	dao.login("admin", "100234khsdf88' or '1=1");
 
	SELECT * FROM t_user WHERE username='admin' AND PASSWORD='100234khsdf88' or '1=1' 
 
	前面先拼接sql语句, 如果变量里面带有了 数据库的关键字,那么一并认为是关键字。 不认为是普通的字符串。 
	rs = st.executeQuery(sql);
	
	//PrepareStatement预先处理给定的sql语句,对其执行语法检查。 在sql语句里面使用 ? 占位符来替代后续要传递进来的变量。 
	//后面进来的变量值,将会被看成是字符串,不会产生任何的关键字。
	String sql = "insert into t_user values(null , ? , ?)";
    ps = conn.prepareStatement(sql);

    //给占位符赋值 从左到右数过来,1 代表第一个问号, 永远你是1开始。
    ps.setString(1, userName);
    ps.setString(2, password);
13、连接池
  1. dbcp连接池:老牌的连接池,tomcat内置的连接池,使用参考链接方法二:配置文件方式
  2. c3p0连接池:先对dbcp连接池稳定,但速度慢。使用参考链接
  3. hirake连接池:springboot框架默认使用这个连接池,速度比druid快
  4. druid德鲁伊连接池:阿里巴巴开发的连接池,对SQL语句进行监控、拦截的功能。
14、给表新增创建时间、修改时间字段,并让其自动写入值
--user是表名
ALTER TABLE user 
ADD create_time datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
ADD update_time datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间' 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值