当前位置:   article > 正文

【Java知识点整理】MySQL01 认识数据库 以及 MySQL的安装

【Java知识点整理】MySQL01 认识数据库 以及 MySQL的安装

认识数据库

一、数据库相关名词

  • DB Database 数据库

  • DBMS Database Manager System 数据库管理系统 :数据库的管理软件,科学有效的管理数据,维护和获取数据。如Navicat

  • DBS Database System 数据系统

  • DBA Databse Administrator 数据库管理员 一般就是值我们程序员

它们之间的关系
  • DBS = DB + DBMS 。
  • 用户通过DBMS访问数据库(DB)中的数据。
  • DMS 它通常由软件、数据库(DB)和数据管理员组成。
补充表格相关知识
  • 关于表格里的字段,也可以成为列,或者属性

    表里的列,是指数据,每行都是一个单独的数据

二、数据库分类

1、按关系分类
  • 关系型数据库:用表存储数据,MySQL SQLServer Oracle Db2 Sqlite 等
    • 目前主流的是“关系型数据库”——对应的使用关系数据库管理系统 :RDBMS(Relational Database Management System)
  • 对象性数据库:按对象来存储 Oracle
  • 键值对数数据库:目前比较常用的数据库,大数据相关,如Redis Hadoop Hbase等
2、按数据库容量大小分类
  • 大型:oracle等
  • 中型:mysql,sqlserver等 ,现在一般归为中大型
  • 小型:sqlite ,access,excel等
3、按使用者进行分类
  • 开发级:对象数据库进行编程【主要】,进行简单的设计、简单的管理工作(包括数据的安全、备份、速度等问题);
    • 目前学习的是开发级
  • 管理员级(DBA级):只需要考虑 数据库的安全、性能、备份等问题
  • 数据分析级( BI级 或 AI级):对数据进行分析,预测未来等,将数据创造出价值

三、数据库的学习要求

  1. 基本的学习数据库语法
  2. 进阶的要学习如何设计 数据库,结合实际的需求,保存相关的信息.

四、数据库中表的设计原则

  1. 要求能够存储所有的数据
  2. 符合规范——三大范式
  3. 以后 还要追求空间(占用少) 和性能 (读写速度快)

⭐️补充知识点:三大范式(数据库范式(normalization))

概念解释: 三大范式其实就是数据库建表的规范。

  1. 第一范式(字段):字段是明确的,不能有歧义,不可再拆分

    • 举个例子,比如快递地址,都存储在一个字段内,不能区分哪个省哪个市,应该拆分“省”“市”“区”等等分区的详细字段
  2. 第二范式(行):表一定要有主键。要求一张表中的每一列都完全依赖于主键

    • 有些表自带主键,但是还有很多表没有主键

    • 如果表没有自带主键,设计者需要提供一个主键

    • 一般用int类型,插入时会自动增长的主键——【自动增长的主键】,语法如下

      CREATE TABLE GRADE (
      id INT PRIMARY KEY AUTO_INCREMENT,# 自增主键
      ...其他字段);
      
      • 1
      • 2
      • 3
  3. 第三范式(关系):两个表之间的关系,只需要主键 进行关联———其他表格里的主键被称为“外键”。

    • 举个例子,比如一个班级表:班级编号、班级名称、班级教室…

      学生表:学号、姓名、性别、班级编号

      • 错误例子1:学号、姓名、性别、班级编号、班级名称.…(冗余)
      • 错误例子2:学号、姓名、性别、班级名称…(重复主键,主键唯一性)
  4. 还有更多范式,比如BCNF范式,暂不做要求

五、绘制ER图

  • ER图 (实体联系图 Entity / Relation )

  • 工具:word 画图 visio等


  • ER图和表格的对应关系
ER图表格图形
实体长方形
属性字段椭圆
标识符关键字/主键属性下划横线
联系外键连线中间画菱形
  • “联系” 存在 1对1 1对多 多对多的情况,对应是需要在“联系”的连线上写 1:1 1:n n:m
  • 举个例子

六、数据的约束

出处链接

当插入外键的数据后,受到主键的约束,一定要在主键表存在

  • 举个例子,当我们插入一个数据涉及到外键字段时,要求插入的数值必须是外键对应的表中的数值
  • 还需要注意主键约束,也不能和其他字段冲突
  • 企业的数据,不会创建外键因为会影响数据库的效率但是要了解掌握外键的思想
1、 完整性约束
  • 概念:强制执行的应用规则,建立和使用约束条件的目的是保证数据的完整性

  • 完整性约束的基本语法格式为:
    [ CONSTRAINT < 约束名 > ] < 约束类型 >

    其中约束名是用户自定义的名称,要求在同一个数据库中约束名不能够重复。如果用户没有定义约束名,则由数据库系统给定一个不重复的约束名。

  • 完整性约束目前在企业中的运用得越来越少,凡是都有利弊,约束过多反而会影响速度,从而降低用户体验

  • 完整性约束包含众多约束,包括:主键约束,外键约束,唯一性约束,非空约束,check规则等等

2、主键(PRIMARY KEY)约束

主键是用能够唯一表示表中的每一行的一列或一组列,这一列的数据或一组列的组合中的数据不会出现重复,且不为空。

3、唯一性(UNIQUE)约束

唯一性约束能够确保多列或多列的组合数据的唯一性

  • 唯一性约束指定的列可以有空值,但只允许出现一个。

  • 因为主键的值也是具有唯一性的,所以主键列不能再设唯一性约束。

  • 主键约束和唯一性约束的区分?

    1. 定位不同。主键约束是用来唯一标识表中的每一个行,使得表中的每一行都是可区分的。唯一性约束是用于使一列或多列的组合中的数据不出现重复。
    2. 可设的数量不同。一个表中只能设一个主键约束,但可以设多个唯一性约束。
    3. 可取值不同。主键不能取空值,但唯一性约束的列可以取一个空值
4、 外键(FOREIGN KEY)约束
  • 什么是外键? ——在表 A 中的一列或多列的组合不是表 A 的主键,而是另一个表表 B 的主键,那么这一列或多列的组合就是表 A 的外键
  • 外键约束的概念(和第三范式类似)——两个表之间的关系,只需要主键 进行关联,这个主键就成为外键,
  • 拥有外键的表成为从表,拥有主键的表成为主表
5、 空与非空(NULL/NOT NULL)约束
  • 空与非空约束只能用于列级约束。简单理解就是让数据里的内容不能为空。
  • 如果某列没有指定 NOT NULL 约束是,系统会默认为 NULL。NULL 值不是 0 ,也不是空白,更不是填入字符串 “ NULL ”,而是表示 “ 不知道 ” 、“ 不清楚 ” 、“ 不确定 ” 或 “ 没有数据 ” 的意思,不占任何内存空间。
  • 将字段设置为 NOT NULL 有助于维护数据的完整性,因为这样就可以确保行中的列永远包含数据。
6、检查(CHECK)约束
  • 一般是由用户自定义的 约束,用于检测用户输入的数据是否正确
    • 举个例子,比如INT 存储性别字段,规定男为1,女为0,就要建立检查约束不允许用户输入其他内容
  • 在一个表中可以创建多个检查约束,在一个列上也可以创建多个检查约束,只要他们不矛盾。
  • 检查约束可以是列级的,也可以是表级的。
7、 默认值(DEFAULT)约束

默认值约束用于在表中插入一行时,在某列没有数据,则会自动为该字段默认一个值。

8、自动增长标识(IDENTITY)约束
  • 自动进行顺序编号引入了自定编号的 IDENTITY 属性,简单理解就是** **

  • IDENTITY 的语法为:
    IDENTITY [ (seed , increment) ]

    • 其中 seed 表示加载到表中的第一个行所使用的值,increment 表示与前一个加载的行的标识值相加的增量值。
    • 二者都不指定时,默认值为 (1 , 1) 。
  • 另一种语法参考如下:(AUTO_INCREMENT

    CREATE TABLE GRADE (
    id INT PRIMARY KEY AUTO_INCREMENT,   # 自增主键
    ...其他字段);
    
    • 1
    • 2
    • 3

IDENTITY 属性具有一下特点:

  1. IDENTITY 列的数据类型只能为 **tinyint、samllint、int、bigint、numeric和decimal。**当为numeric 和 decimal 类型时,不允许有小数位。
  2. 当用户在表中插入一行新的记录时,不必也不能向据有 IDENTITY 属性的列输入数据,系统将自动在该列添加一个规定间隔递增或递减的数据。
  3. 每个表最多只有一个列具有 IDENTITY 属性,且该列不能为空,不允许据有默认值,也不能由用户更新。

安装MySQL

一、简单认识MySQL

  1. 目前MYSQL的主流版本是MySQL5.7,如果是MySQL8也行
  2. 由于部分原因,现在最主流的数据库都是使用MySQL数据

二、具体步骤(5.7解压版)

  1. 解压版文件解压

  2. 配置环境变量,PATH中加入MYSQL的路径

  3. 添加my.ini文件

    [mysqld]
    # 设置 3306 端口
    port=3306
    # 设置 mysql 的安装目录注意结尾还有一个反斜杠
    basedir=E:\mysql-5.7.19-winx64\
    # 设置 mysql 数据库的数据的存放目录  注意结尾还有一个反斜杠 data目录会自动生成
    datadir=E:\mysql-5.7.19-winx64\data\
    # 允许最大连接数
    max_connections=200
    # 允许连接失败的次数。
    max_connect_errors=10
    # 服务端使用的字符集默认为 utf8mb4
    character-set-server=utf8mb4
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    # 默认使用“mysql_native_password”插件认证
    #mysql_native_password
    default_authentication_plugin=mysql_native_password
    
    ##区别 skip-grant-tables
    [mysql]
    # 设置 mysql 客户端默认字符集
    default-character-set=utf8mb4
    [client]
    # 设置 mysql 客户端连接服务端时默认使用的端口
    port=3306
    default-character-set=utf8mb4
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
  4. 启动管理员模式下的CMD(从win菜单中找到cmd右键点击管理员模式运行),切换路径到MYSQL路径,

    C:\Users\Administrator>cd /d E:\mysql-5.7.19-winx64\bin 
    # 切换目录cd /d  change directory
    
    E:\mysql-5.7.19-winx64\bin>mysqld -install
    # 安装服务
    
    E:\mysql-5.7.19-winx64\bin>mysqld --initialize-insecure --user=mysql
    # 初始化数据库数据
    
    # 启动MYSQL 以下即测试成功
    E:\mysql-5.7.19-winx64\bin>net start mysql
    MySQL 服务正在启动 .
    MySQL 服务已经启动成功。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  5. 安装MYSQL的服务"mysql -u root -p" u指用户名,p指密码

    # 输入 对应语句,会提示输入密码。
    E:\mysql-5.7.19-winx64\bin>mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 4
    Server version: 5.7.19 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    # 启动成功的显示
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    有 问题:这里很奇怪 不输入密码可以进入**, 输入root密码就报错**

    E:\mysql-5.7.19-winx64\bin>mysql -u root -p
    Enter password: ****
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
    
    • 1
    • 2
    • 3
    • 修改密码

      mysql> update mysql.user set authentication_string=password('root') where user='root' and Host = 'localhost';
      # 更新 mysql.用户表 设置 它的密码  为 root  用户为root
      Query OK, 1 row affected, 1 warning (0.00 sec)
      Rows matched: 1  Changed: 1  Warnings: 1
      #成功修改密码
      
      • 1
      • 2
      • 3
      • 4
      • 5
  6. 关闭或者重启mysqlnet stop mysqlnet start mysql

    C:\Users\Administrator>net stop mysql
    MySQL 服务正在停止.
    MySQL 服务已成功停止。
    # 关闭mysql
    C:\Users\Administrator>net start mysql
    MySQL 服务正在启动 .
    MySQL 服务已经启动成功。
    # 开启mysql
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  7. 当任务管理器中的服务能查到MYSQL运行,就算安装成功了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/635643
推荐阅读
相关标签
  

闽ICP备14008679号