MySQL(01)基础

安装MySQL 5.7

官网下载 :https://dev.mysql.com/downloads/mysql/

以压缩包的方式安装比较方便 , 下载好后, 解压到自定义目录, 添加环境变量 path=文件目录下的bin  

在文件的根目录下(和bin同级)添加一个 my.ini 配置文件 ,文件内容

[mysqld]
basedir=D:MySQL5.7mysql-5.7.35-winx64mysql-5.7.35-winx64
datadir=D:MySQL5.7mysql-5.7.35-winx64mysql-5.7.35-winx64data  data会自动生成,不需要手动创建
port=3306
skip-grant-tables  跳过密码

以管理员身份运行 CMD 

安装服务  binmysqld -install

初始化数据库文件  mysqld --initialize-insecure --user=mysql  运行后会自动创建data文件

启动mysql   net start mysql

进入mysql管理用户  mysql -u root -p  密码为空

设置密码  mysql> update mysql.user set authentication_string=password('55555') where user='root' and Host='localhost';
刷新权限 mysql>flush privileges; my.ini删除最后一句 skip...

重启mysql,  关闭服务net stop mysql , 开启服务 net start mysql

数据库是按照数据结构来组织,存储,和管理数据的仓库

1.数据模型

  层次数据结构 参考树状图

    优点: 结构清晰 检索效率高 

    缺点: 结构缺乏灵活性 , 依赖父节点 ,对增删操作限制多,对某个节点的下级层级影响较大

  网状数据模型 参考有向图

    优点: 没有层次结构那么严格限制. 增删操作对整个模型影响不大

    缺点: 结构复杂操作不易

  关系数据模型 参考二维表格 ,上面提到的两种是非关系型数据模型

    优点: 相对于其他模型更容易理解, 表格之间的增删对其他表格影响较小

    缺点: 读写性能上相对较差, 但足以我们去使用

2.数据库系统 DBS

  包含: 数据 数据库 DBMS(操作和管理数据库的软件,一般不能直接操作数据库的 , 只能通过数据库软件进行操作)

3.SQL 结构化查询语言

  SQL语句不区分大小写, 但字符串区分大小写( " "  和 ' ' 都是表示字符串)

  SQL 分类

    DQL 数据查询语言 专用于查询数据

    DML 数据操作语言 专用于数据的 增 删 改(更新数据)

    DDL 数据定义语言 用于创建数据库中的对象(数据库 表 视图 索引 这些都是对象)

    DCL 数据控制语言 提交 回滚(撤销) GRANT(授权)

  Mysql最大支持 5000万条记录 , 32位 表最大占4GB 64位 表最大占8TB  支持C/C++ python java perl PHP Ruby等语言的连接

4.术语:

  表     存放数据的二维数组

  记录(元祖) 表中的一行叫记录

  字段(属性) 表中的一列

  域     属性的取值范围(比如性别的值 男或女)

  冗余    重复的数据(降低了性能 ,提高了数据的安全性)

  存储引擎  默认MYISAM(比较旧)  更新的 INNODB(功能更多)

5.常用命令:

  显示数据库 show databases; 显示创建的数据库(随时都可以用, 就算已经身处某个数据里了可用于切换数据量)

    默认有四个数据库(如果缺少其中一个或者没有需要重新安装,因为Mysql的信息都存在这四个数据库中)

      information_schema  数据库信息(保存着MySQL维护的 其他的数据库信息 比如数据库名 表  数据类型等信息)
      mysql         保存用户信息 权限设置 关键字等保存在该数据库

      performance_schema   收集数据库服务器的性能参数

      sys          保存数据库服务器系统的数据

  删除数据库 drop databases [数据库名];

  进入数据库 use [数据库名];

  显示表列   show tables;

  查看表的结构 descride [表名];

  查看表的字段 show full column from [表名] ;

  改密码   updata mysql.user set authentication_string = password("新密码"); 改完密码后要刷新权限 flush  privileges;

  退出MySQL quit; exit;

命令化管理太费劲了, 所以有了图形化管理工具 navicat 和 MySQL自己的workbench

数据库设计

概念结构设计 从需求分析中找到实体和联系比如

      学生表(实体是学生)

              选修关系

      课程表(实体是课程)

              任课关系

      老师任课表(实体是老师)

  联系类型 1对1  (A表中的一行最多只能匹配到B表的一行, 反之亦然) 

       多对多 (A表中的一行可以匹配到B表中的多行 , 反之亦然)

       1对多   (A中的一行可以匹配到B的多行, 但是B中的一行只能匹配到A中的一行)

  E-R图: 矩形表示实体

      菱形表示联系

      椭圆表示实体的属性 (下划线表示主属性)

      用线把关系联系起来

   表的设计范式 1NF 2NF 3NF BCNF 4NF 5NF

    1NF 原子性(每个数据不可再分,保持数据的原子性)过滤 过滤重复属性    比如学生表中出现 年龄 和 出生日期 就是重复属性

    2NF 基于1NF上 非主属性必须完全依赖于主属性(没有主属性则创建一个) 比如学生表必须有ID编号

    3NF 基于2NF上 所有的非主属性不能依赖于其他的非主属性       顾名思义

    BCNF 基于3NF上  非主属性的不能依赖于主属性的子集   主键可能是联合主键(多个属性组合成的)不能依赖于其中某个属性,只能依赖于整体

一般只要求 做到1-3范式就可以了, 不能过分的追求完美, 虽然后面的范式更加健全可是逻辑和管理太庞大了 , 动一张表要牵扯改N张表, 没必要

物理结构设计 将逻辑结构实现在具体环境, 依赖于给定的DBMS和硬件系统

数据库的实施 根据逻辑设计和物理设计的结果, 建立数据库系统,加载数据,调试

数据库的运行和维护 优化数据库的性能, 维护数据库的安全和完整性(有效的数据)

原文地址:https://www.cnblogs.com/yxnrh/p/13323969.html