概念
由多个二维表格以及他们之间的关系组成的数据组织,采用了关系模型来组织数据,其中关系模型可以简单理解为二维表格模型,比如一对多等关系模型。
优势
1.具有良好的数据一致性。
2.强调ACID规则,对重视事务的操作较为友好。
3.依赖于关系模型,所以理解容易。
缺点
1.结构固定,一旦存入数据想要改变数据结构很困难。
2.严格的数据结构使得一些值为空人仍然要分配内存空间,会浪费内存。
3.为了一致性付出了性能下降的代价,尤其是在数据海量并且涉及高并发的时候性能下降幅度还会增大。
常见的关系型数据库
MySQL、Oracle、Microsoft Access、Microsoft SQL Server、PostgreSQL、DB2。
非关系型数据库
1.基于列模型、键值对、文档等非关系模型的数据库。
2.适用于存储结构存在较多改变的可能的数据。
3.常见的非关系型数据库:Hbase(列模型)、redis(键值对)、MemcacheDB(键值对)、MongoDB(文档)。
MySQL数据类型
mysql和java数据类型对比
| mysql | java |
| datetime | date |
| bigint | long |
| varchar(50) | string |
类型说明
varchar
varchar(50)代表50个字节
MySQL在Windows的操作
安装
官网下载


解压到自定义目录
并新建文件my.ini

my.ini文件内容如下:
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录 ---这里输入你安装的文件路径----
basedir=E:\mysql\mysql-8.0.28-winx64
# 设置mysql数据库的数据的存放目录
datadir=E:\mysql\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
需要更改如下的两个地方

初始化
使用管理员方式打开cmd并进入bin目录,执行下述命令
# 此步骤会打印一系列日志,在末尾有如下内容:root@localhost:67ds8cbhjd#$%%vsg,冒号后面的随机字符为初始登录密码,需要保存下来,初始化结束后登录修改密码需要使用
mysqld --initialize --console
# 安装mysql服务
mysqld --install mysql
如果此步骤出现如下报错,去网络下载报错文件放到目录C:\Windows\System32下重新执行就好

启动mysql服务
按照下述顺序打开mysql服务
右键此电脑->管理->计算机管理(本地)->服务和应用程序->服务->mysql
配置环境变量
在系统环境变量新建MYSQL_HOME,值为自定义解压路径
编辑系统环境变量Path->新增路径 %MYSQL_HOME%\bin

使用
# 登录,-h即指定数据库所在终端的ip,不指定默认访问本地,-u指定用户,-p代表需要密码验证,密码后续输入 mysql -h 127.0.0.1 -u root -p
# 修改密码,第一次登录推荐将随机密码改为便于记忆的密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
# 使用数据库db_1
use db_1
# 查看数据库表
show tables
# 查看表结构
desc tbl_1
# 退出
exit
重置密码
## 管理员身份运行命令行窗口
# 停止mysql服务
net stop mysql
# 运行命令重置密码,需要一定时间,并且命令行窗口会卡死,但是先不要关闭此窗口
mysqld --console --skip-grant-tables --shared-memory
# 重新开启窗口,重新登录MySQL 此时输入密码输入任何符号都可以进入
mysql -u root -p
# 切换到mysql数据库
use mysql;
# 更改密码
update user set authentication_string='123' where user='root';
# 刷新更改
FLUSH PRIVILEGES;
卸载MySQL
停止mysql服务
通过右击计算机->管理->服务->MySQL 手动停止,或者以管理员身份运行命令 net stop mysql
卸载MySQL软件
打开控制面板->卸载软件 卸载所有与MySQL相关的,如果没有就继续下一步
删除相关文件
- MySQL安装目录下的文件
- 删除C://ProgramData//Mysql文件夹,如果没有就跳过
- 删除C:\Documents and Settings\All Users\Application Data\MySQL文件夹,如果没有就跳过
清除环境变量
- 删除系统变量中的MYSQL_HOME和PATH中的MYSQL_HOME相关
删除注册表
- 按下win + R,输入Regedit
- 找到HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQLD并删除
- 找到HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Services/Eventlog/Application/MySQL并删除
- 找到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Eventlog/Application/MySQL并删除
删除服务
- 在服务里面找到mysql服务的名称,比如我的mysql服务名就叫mysql
- 使用管理员身份打开cmd,运行命名 sc delete mysql
重启电脑
忘记密码
# 关闭mysql
net stop mysql
# 跳过授权表的初始化
mysqld --skip-grant-tables
# 登录mysql,密码被初始化为 root
mysql -u root -p
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
flush privileges;
quit
# 打开另一个cmd窗口,关闭MySQL
mysqladmin -u root -p shutdown
# 启动mysql服务
net start mysql
# 登录即可
mysql -u root -p
本地计算机上的 mysql服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。
解决方案:重置MySQL数据库,数据库中有重要数据的不建议尝试
- 管理员身份打开命令行窗口
- 进入MySQL安装目录下的bin文件所在目录
- 如果有data目录则清空data目录,没有则创建data空目录
- 进入bin目录
- 执行mysqld --initialize
- 执行net start mysql
- 进入data目录下,找到后缀为err的文件,用记事本打开后以password为关键词找到随机设置的密码
- 重新登录mysql: mysql -u root -p,输入上述找到的密码
- 修改默认密码,不修改不能操作数据库:alter user 'root'@'localhost' identified by ‘123’
- 刷新 flush privileges
- 重置成功
MySQL在Ubuntu中的操作
卸载原有的MYSQL
sudo apt-get autoremove --purge mysql-server
sudo apt-get remove mysql-server
sudo apt-get remove mysql-common
# 清理数据残留
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
安装mysql
sudo apt install mysql-server
使用mySql
# 管理员身份强制登录
sudo mysql
# 修改密码
update mysql.user set authentication_string=PASSWORD('123456') ,plugin='mysql_native_password' where user='root';
# 退出
exit
# 重启mysql
service mysql restart
# 登录
mysql -u root -p
登录
密码出错
方式一
以管理员身份强行修改密码
# 管理员身份进入mysql
sudo mysql
# 修改密码
set password for root@localhost = password('123456');
方式二
用其他用户修改密码
# 查看MySQL给我们创建的用户信息
sudo cat /etc/mysql/debian.cnf

登录

查看user表
use mysql;
select user,plugin from user;
更新root用户的密码格式
update user set plugin='mysql_native_password' where user='root';
# 刷新表格更新
flush tables user;
修改root密码
alter user 'root'@'localhost' identified by 'lgl000820';
# 刷新权限
flush privileges;
退出
exit;
重启mysql
service mysql restart
登录root
mysql -u root -p
语法
操作数据库
# 新建数据库
create database if not exists tbl_1 default character set gbk collection gbk_chinese_ci;
# 删除数据库
drop database if exists tbl_1;
建表
create table if not exists `tbl_1`(
`id` int not null auto_increment,
`type` enum('1','2') not null,
`num` bigint not null,
`code` int null default null comment '编码',
`uid` varchar(50) not null,
primary key (`id`),
unique key `my_uk` (`num`,`code`)
) engine=InnoDB default charset=gbk comment="表格1";
增
# 插入,主键值如果为自增长,插入null,datetime比较随意,如下几种格式都可以识别 insert into tbl_1 value(null,'sdj',78,'cjhd','2022-3-2','2022-4-8 9:9:08','2022/09/8 9:7');
# 一次性插入多条数据
insert into `group` values(null,'昆仑'),(null,'峨眉'),(null,'天宫');
# 插入指定字段的数据
insert into author(author_name, pen_name) values("gh","jcdk");
删
drop table is exists student;
删除数据库所有表
# 通过sql语句查找所有表名并组装成删除语句
select concat('drop table if exists ',table_name,';') from information_schema.`TABLES` where table_schema='xi';
# 执行获得结果
。。。。。
改
update student set name="tom" where age=18;
查
// 查看表名表注释 select table_name, table_comment from information_schema where table_schema = "数据库名称";
// 查询字段详细信息
show full columns from 表名;
// 排序从小到大
select * from tbl_1 order by id asc;
// 排序从大到小
select * from tbl_1 order by id desc;
参考
https://blog.csdn.net/qq_42914232/article/details/103126248
https://blog.csdn.net/t8116189520/article/details/78924583
Windows11卸载MySQL
Windows环境下mysql忘记密码如何重置(超新超全)
apt-get 安装 mysql
Ubuntu20.04安装MySql(apt方式)
ubuntu安装mysql教程
【教程】区块链是数据库?那么区块链的数据存储在哪里?如何查看数据?FISCO-BCOS如何更换区块链的数据存储,由RocksDB更换为MySQL、MariaDB,联盟链区块链数据库,区块链数据库应用
https://link.csdn.net/?target=https%3A%2F%2Fdev.mysql.com%2Fdownloads%2Fmysql%2F
https://blog.csdn.net/weixin_43423484/article/details/124408565
浙公网安备 33010602011771号