参考:https://blog.csdn.net/daemon329/article/details/106170743
https://blog.csdn.net/weixin_45851945/article/details/114287877

概述

数据库管理系统 ( DataBase Management System )
数据库 ( DataBase , 简称DB )
概念 : 长期存放在计算机内,有组织,可共享的大量数据的集合,是一个数据 “仓库”
作用 : 保存,并能安全管理数据(如:增删改查等),减少冗余…
数据库总览 :

  • 关系型数据库 ( SQL )
    • MySQL , Oracle , SQL Server , SQLite , DB2 , …
    • 关系型数据库通过外键关联来建立表与表之间的关系
  • 非关系型数据库 ( NOSQL )
    • Redis , MongoDB , …
    • 非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定

      数据库的三大范式

      第一范式 (1NF)

      image.png

      第二范式(2NF)

      一张表只描述一样东西;

      image.png

      第三范式(3NF)

      每一列数据和主键直接相关,而不是间接相关
      image.png

规范化和性能的关系
为满足某种商业目标 , 数据库性能比规范化数据库更重要
在数据规范化的同时 , 要综合考虑数据库的性能
通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间
通过在给定的表中插入计算列,以方便查询

安装MySQL

1.Windows安装

  1. 注意事项
    • 尽可能使用压缩包安装(安装快,方便,不复杂); 尽量不要下载使用exe的(卸载非常麻烦,注册表)
    • 电脑是64位的就下载使用64位版本的
    • 如果您以前装过,现在需要重装,一定要将环境清理干净
  2. 官网下载MySQL(搜索mysql8.0)

下载地址:https://dev.mysql.com/downloads/mysql/

  1. 解压与配置
    • 解压到自己想要安装到的目录,本人解压到的是D:\mysql\mysql-8.0.23-winx64
    • 添加环境变量:我的电脑->属性->高级->环境变量

选择PATH, 在其后面添加: 你的mysql 安装路径下面的bin

  • 解压后的目录中是没有的my.ini文件的,自行添加的my.ini,写入以下数据:
    1. [mysqld]
    2. port=3306
    3. basedir=D:\mysql\mysql-8.0.23-winx64\MySQL
    4. datadir=D:\mysql\mysql-8.0.23-winx64\MySQL\Data
    5. max_connections=200
    6. max_connect_errors=10
    7. character-set-server=utf8mb4
    8. default-storage-engine=INNODB
    9. #mysql_native_password
    10. default_authentication_plugin=mysql_native_password
    11. [mysql]
    12. default-character-set=utf8mb4
    13. [client]
    14. port=3306
    15. default-character-set=utf8mb4
  1. 初始化
    • 管理员模式下的CMD至mysql下的bin目录,然后输入mysqld –install [服务名] (安装mysql, 其中服务名默认为mysql, 可省略)
    • 再输入 mysqld --initialize-insecure --user=mysql初始化数据文件
    • 然后再次启动mysql 然后用命令 mysql –u root –p 进入mysql管理界面(密码可为空)
    • 进入界面后更改root密码

update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';

  • 刷新权限flush privileges;
  • 修改 my.ini文件删除最后一句 skip-grant-tables
  • 重启mysql即可正常使用

net stop mysql
net start mysql
测试连接:

  • 连接数据库mysql -u... -p...,出现以下结果就安装好了

image.png

2.Linux安装

普通安装教程:https://www.cnblogs.com/wangpeng00700/p/13539856.html

用Docker安装:

    1. 查看可用版本 :访问https://hub.docker.com/_/mysql?tab=tagsdocker search mysql
    1. 拉取官方的镜像 docker pull mysql:latest #最新 docker pull mysql:8.0.26 #8.0.26版本
  • 3.查看拉取的镜像 docker images
  • 4.运行容器 docker run -itd --name mysql8.0 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
    • 参数说明:
      • -p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务
      • MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码为123456
  • 5.通过 docker ps -a命令查看是否安装成功
  • 6.本机可以通过 root 和密码 123456 访问 MySQL 服务
    • 进入容器--> docker exec -it 容器ID /bin/bash
    • 连接数据库--> mysql -h localhost -u root -p123456

image.png

  • 7.远程连接

    • 添加、授权远程用户登录

      1. CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
      2. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
    • 登录

      • sqlyog

image.png

  1. - navicat

image.png
注意事项:连接不上远程数据库?

  1. 1.数据库没有为此主机授权
  2. ALTER USER 'username'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则 (远程)
  3. (*如*:mysql>ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;)
  4. GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTIO
  5. (*如*:mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTIO)
  6. 2.服务器防火墙未关闭或未开放3306端口

3.可视化软件

Sqlyog
sqlyog是用于管理MySQL数据库的软件工具(只能连接Mysql)
安装教程https://www.cnblogs.com/xiaoran991/p/12375562.html
image.png
image.png
Navicat
navicat可以连接多个种关系型/非关系型数据库(mysql/oracle、mogodb…)
安装教程https://www.cnblogs.com/kkdaj/p/14987106.html
image.png

4.几个基本的数据库操作命令

  1. mysql -h localhost -u root -p密码 #宿主机本地连接数据库命令
  2. mysql -h 宿主机IP -u root -p密码 #远程
  3. ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则 (本地)
  4. ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则 (远程)
  5. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新用户的密码
  6. ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; #更新用户的密码(远程)
  7. flush privileges; 刷新数据库
  8. show databases; 显示所有数据库
  9. use dbname;打开/选择某个数据库
  10. show tables; 显示数据库mysql中所有的表
  11. describe user; 显示表mysql数据库中user表的列信息
  12. create database dbname; 创建数据库
  13. alter database dbname character set utf8; 将数据库的字符集修改为utf8
  14. exit; 退出Mysql
  15. ? 命令关键词 : 寻求帮助
  16. -- 表示注释