javaweb-MySQL基础-021

安装软件

自定义模式可以修改安装路径,或者直接默认安装
安装好后自动进入配置页面
在这里插入图片描述
选择分配的资源
在这里插入图片描述
选择数据库类型
在这里插入图片描述
表空间路径
在这里插入图片描述
并发数限制
在这里插入图片描述
选择tcp,这样可以远程访问,启动严格模式,可以防止有害数据侵入
在这里插入图片描述
选择数据库编码语言
在这里插入图片描述
指定数据库密码mysqli,允许远程连接,创建匿名用户(可以连接数据库,但是无法操作,比如查询等)
在这里插入图片描述

设置为windows服务,指定服务名称,自动添加到path路径
在这里插入图片描述

最后自动检查,确认即可
按“Finish”后有一个比较常见的错误,就是不能“Start service”,这是以前安装过冲突了,卸载以前的数据库,确保卸载干净
如果依然不行,将 mysql 安装目录下的 data 文件夹备份,然后删除,在安装完成后,将安装生成的 data 文件夹删除,备份的 data 文件夹移回来,再重启 mysql 服务就可以了,这种情况下,可能需要将数据库检查一下,然后修复一次,防止数据出错。

卸载 MySQL,重装 MySQL

停止 window 的 MySQL 服务。 找到“控制面板”-> “管理工具”-> “服务”,停止 MySQL 后台服务。
在这里插入图片描述
卸载 MySQL 程序。
在这里插入图片描述
删除 MySQL 安装目录下的所有文件。
删除 c 盘 ProgramDate 目录中关于 MySQL 的目录。路径为:C:\ProgramData\MySQL(是隐藏文件,需要显示
出来)

连接数据库

使用图形工具,新建一个连接,输入用户名,密码,端口
在这里插入图片描述

数据库的基本概念

  1. 数据库的英文单词: DataBase 简称 : DB

  2. 什么数据库?

    • 用于存储和管理数据的仓库。
  3. 数据库的特点:

    1. 持久化存储数据的。其实数据库就是一个文件系统
    2. 方便存储和管理数据
    3. 使用了统一的方式操作数据库 – SQL

MySQL服务启动和关闭

管理员权限的cmd net stop mysql ,net start mysql

MySQL登录和退出

  1. mysql -uxx -pxx链接数据库
  2. mysql -h 127.0.0.1 -uroot -prootli
  3. mysql --host=127.0.0.1 --user=root --password=rootli
    MySQL退出
    1. exit
    2. quit

mysql更改密码

在已经登录,知道原密码情况下

在这里插入图片描述

mysql> set password for 用户名@localhost = password(‘新密码’); 
比如set password for root@localhost = password(123);
用mysqladmin 
mysqladmin -u用户名 -p旧密码 password 新密码 
比如mysqladmin -uroot -p123456 password 123
用UPDATE直接编辑user表 
update user set password=password(123) where user=’root’ and host=’localhost’; 
flush privileges;

忘记密码时

修改文件法
  1. 关闭正在运行的MySQL服务。
  2. 编辑mysql配置文件my.ini(在mysql的安装目录下,我的在D:\Program Files\MySQL\MySQL Server 5.0\my.ini),在[mysqld]这个条目下加入 skip-grant-tables 保存退出后重启mysql
    1.点击“开始”->“运行”(快捷键Win+R)。
    2.停止:输入 net stop mysql
    3.启动:输入 net start mysql
    这时候在cmd里面输入mysql -u root -p就可以不用密码登录了,出现 password:的时候直接回车可以进入,不会出现ERROR 1045 (28000),但很多操作都会受限制,因为我们不能grant(没有权限)。
    1.进入mysql数据库:
    mysql> use mysql;
    Database changed
    2.给root用户设置新密码:
    mysql> update user set password=password(“新密码”) where user=“root”;
    Query OK, 1 rows affected (0.01 sec)
    Rows matched: 1 Changed: 1 Warnings: 0
    3.刷新数据库
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    4.退出mysql:
    mysql> quit;
    Bye
    改好之后,再修改一下my.ini这个文件,把我们刚才加入的 "skip-grant-tables"这行删除,保存退出再重启mysql就可以了。
命令行法
  1. 关闭正在运行的MySQL服务。

  2. 打开DOS窗口,转到mysql\bin目录。

  3. 输入mysqld –skip-grant-tables 。设置启动MySQL服务的时候跳过权限表认证。 此时本窗口卡死,
    在这里插入图片描述

  4. 再开一个DOS窗口用来登录,转到mysql\bin目录。

  5. 输入mysql回车,如果成功,将出现MySQL提示符 >。

  6. 连接权限数据库: use mysql; 。

  7. 改密码:update user set password=password(“123”) where user=”root”;(别忘了最后加分号) 。

  8. 刷新权限(必须):flush privileges; 。

  9. 退出 quit。
    10.关闭然后重启mysql
    在这里插入图片描述
    密码已经被修改
    修改之后,密码为123

MySQL目录结构

  • 安装目录
  • bin-binary 二进制可执行文件exe
  • data-日志文件,数据文件等
  • include-c的头文件
  • lib-sql需要的库文件,类似jar包
  • share-放入msql错误信息
  • 配置文件 my.ini
    数据目录

data-三个文件夹

在这里插入图片描述

SQL基本概念

是一种所有关系型数据库的查询规范,不同的数据库都支持,但规则有区别。
Structured Query Language:结构化查询语言

  1. SQL 语句可以单行或多行书写,以分号结尾。
    1. 可使用空格和缩进来增强语句的可读性。
    2. MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。
    3. 3 种注释
      • 单行注释: – 注释内容 或 # 注释内容(mysql 特有)
      • 多行注释: /* 注释 */
  2. SQL分类
    1. DDL(Data Definition Language)数据定义语言
      用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等
    2. DML(Data Manipulation Language)数据操作语言
      用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等
    3. DQL(Data Query Language)数据查询语言
      用来查询数据库中表的记录(数据)。关键字:select, where 等
    4. DCL(Data Control Language)数据控制语言(了解)
      用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等

DDL_操作数据库

理论上来讲,一个数据库就会在data文件下对应一个相应的文件夹,当mysql建立的时候,应该会有四个数据库,但是实际上只有三个文件夹,只是因为有一个数据库,并不是真正的数据库,而是视图
information__schema 描述mysql数据库中的一些信息,视图
mysql 核心数据库,大量表
performance_schema 优化性能的数据库
test

  1. 操作数据库:CRUD
    1. C(Create):创建
      • 创建数据库:

        • create database 数据库名称;
      • 创建数据库,判断不存在,再创建:

        • create database if not exists 数据库名称;
      • 创建数据库,并指定字符集

        • create database 数据库名称 character set 字符集名;
      • 练习: 创建db4数据库,判断是否存在,并制定字符集为gbk

        • create database if not exists db4 character set gbk;
    2. R(Retrieve):查询
      • 查询所有数据库的名称:
        • show databases;
      • 查询某个数据库的字符集:查询某个数据库的创建语句
        • show create database 数据库名称;
    3. U(Update):修改
      • 修改数据库的字符集
        • alter database 数据库名称 character set 字符集名称;
    4. D(Delete):删除
      • 删除数据库
        • drop database 数据库名称;
      • 判断数据库存在,存在再删除
        • drop database if exists 数据库名称;
    5. 使用数据库
      • 查询当前正在使用的数据库名称
        • select database();
      • 使用数据库
        • use 数据库名称;

DDL_操作表

操作表
1. C(Create):创建
1. 语法:
create table 表名(
列名1 数据类型1,
列名2 数据类型2,

列名n 数据类型n
);
* 注意:最后一列,不需要加逗号(,)
* 数据库类型:
1. int:整数类型
* age int,
2. double:小数类型
* score double(5,2)
3. date:日期,只包含年月日,yyyy-MM-dd
4. datetime:日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss
5. timestamp:时间错类型 包含年月日时分秒 yyyy-MM-dd HH:mm:ss
* 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值
6. varchar:字符串
* name varchar(20):姓名最大20个字符
* zhangsan 8个字符 张三 2个字符
* 注意字符和字节的区别(通常情况下一字节等于八位, 字符(Character)计算机中使用的字母、数字、字和符号)
* 创建表
create table student(
id int,
name varchar(32),
age int ,
score double(4,1),
birthday date,
insert_time timestamp
);
* 复制表:
* create table 表名 like 被复制的表名;
2. R(Retrieve):查询
* 查询某个数据库中所有的表名称
* show tables;
* 查询表结构
* desc 表名;
3. U(Update):修改
1. 修改表名
alter table 表名 rename to 新的表名;
2. 修改表的字符集
alter table 表名 character set 字符集名称;
3. 添加一列
alter table 表名 add 列名 数据类型;
4. 修改列名称 类型
alter table 表名 change 列名 新列别 新数据类型;
alter table 表名 modify 列名 新数据类型;
5. 删除列
alter table 表名 drop 列名;
4. D(Delete):删除
* drop table 表名;
* drop table if exists 表名 ;

DML

  1. 添加数据:
    • 语法:
      • insert into 表名(列名1,列名2,…列名n) values(值1,值2,…值n);
    • 注意:
      1. 列名和值要一一对应。
      2. 如果表名后,不定义列名,则默认给所有列添加值
        insert into 表名 values(值1,值2,…值n);
      3. 除了数字类型,其他类型需要使用引号(单双都可以)引起来
        日期类型数据用字符串格式输入,对于浮点型(3,2)对小数位数,小数点后面位数都做了严格要求,必须按照格式否则错误
        SELECT DISTINCT NAME,age,money FROM person WHERE recorderTime=‘2022-03-17’
  2. 删除数据:
    • 语法:
      • delete from 表名 [where 条件]
    • 注意:
      1. 如果不加条件,则删除表中所有记录。
      2. 如果要删除所有记录
        1. delete from 表名; – 不推荐使用。有多少条记录就会执行多少次删除操作
        2. TRUNCATE TABLE 表名; – 推荐使用,效率更高 先删除表,然后再创建一张一样的表。
  3. 修改数据:
    • 语法:
      • update 表名 set 列名1 = 值1, 列名2 = 值2,… [where 条件];
    • 注意:
      1. 如果不加任何条件,则会将表中所有记录全部修改。
        4.基础查询
  • select * from 表名;
  1. 语法:
    select
    字段列表
    from
    表名列表
    where
    条件列表
    group by
    分组字段
    having
    分组之后的条件
    order by
    排序
    limit
    分页限定

    1. 多个字段的查询
      select 字段名1,字段名2… from 表名;
      • 注意:
        • 如果查询所有字段,则可以使用*来替代字段列表。
    2. 去除重复:
      • distinct
    3. 计算列
      • 一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
      • ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
        • 表达式1:哪个字段需要判断是否为null
        • 如果该字段为null后的替换值。
    4. 起别名:
      • as:as也可以省略
  2. 条件查询

    1. where子句后跟条件
    2. 运算符
      • 、< 、<= 、>= 、= 、<>

      • BETWEEN…AND

      • IN( 集合)

      • LIKE:模糊查询

        • 占位符:
          • _:单个任意字符
          • %:多个任意字符
      • IS NULL

      • and 或 &&

      • or 或 ||

      • not 或 !
        – 查询英语成绩为null
        SELECT * FROM student WHERE english = NULL; – 不对的。null值不能使用 = (!=) 判断

        SELECT * FROM student WHERE english IS NULL;
        – 查询姓名第二个字是化的人

        SELECT * FROM student WHERE NAME LIKE “_化%”;

        – 查询姓名是3个字的人
        SELECT * FROM student WHERE NAME LIKE ‘___’;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值