概念

由多个二维表格以及他们之间的关系组成的数据组织,采用了关系模型来组织数据,其中关系模型可以简单理解为二维表格模型,比如一对多等关系模型。

优势

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相关的,如果没有就继续下一步

删除相关文件

  1. MySQL安装目录下的文件
  2. 删除C://ProgramData//Mysql文件夹,如果没有就跳过
  3. 删除C:\Documents and Settings\All Users\Application Data\MySQL文件夹,如果没有就跳过

清除环境变量

  1. 删除系统变量中的MYSQL_HOME和PATH中的MYSQL_HOME相关

删除注册表

  1. 按下win + R,输入Regedit
  2. 找到HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQLD并删除
  3. 找到HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Services/Eventlog/Application/MySQL并删除
  4. 找到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Eventlog/Application/MySQL并删除

删除服务

  1. 在服务里面找到mysql服务的名称,比如我的mysql服务名就叫mysql
  2. 使用管理员身份打开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数据库,数据库中有重要数据的不建议尝试

  1. 管理员身份打开命令行窗口
  2. 进入MySQL安装目录下的bin文件所在目录
  3. 如果有data目录则清空data目录,没有则创建data空目录
  4. 进入bin目录
  5. 执行mysqld --initialize 
  6. 执行net start mysql
  7. 进入data目录下,找到后缀为err的文件,用记事本打开后以password为关键词找到随机设置的密码
  8. 重新登录mysql:  mysql -u root -p,输入上述找到的密码
  9. 修改默认密码,不修改不能操作数据库:alter user 'root'@'localhost' identified by ‘123’
  10. 刷新   flush privileges
  11. 重置成功

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

mysql怎么删除数据库中的表

MySQL 查看表注释或字段注释

一、创建数据库和管理(基础使用命令)

mysql数据库使用一条insert语句同时插入多条数据

MySQL中的枚举的用法

删除一个数据库中的所有表

MySQL 排序

https://wenku.baidu.com/view/1e6d5a346f175f0e7cd184254b35eefdc9d31557.html?_wkts_=1681096425419&bdQuery=mysql%E8%A1%A8%E6%B3%A8%E9%87%8A

https://wenku.baidu.com/view/08acc42e874769eae009581b6bd97f192279bff3.html?_wkts_=1681097359647&bdQuery=mysql%E6%9F%A5%E8%AF%A2%E5%AD%97%E6%AE%B5%E6%B3%A8%E9%87%8A

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