数据库介绍之MySQL

数据库

用来存储和管理数据的仓库

优点

  • 可存储大量数据,方便检索
  • 保持数据的一致性、完整性、安全、可靠
  • 通过分析组合可产生新数据

分类

  • 磁盘文件存储数据库
  • 层次结构模型数据库
  • 关系型数据库
    • 使用二维表格存储数据
    • MySQL 就是关系型数库
  • 关系-对象型数据库

常见数据库

  • Oracle:甲骨文
    • 传统行业使用较多(不差钱行业)
    • 银行、政府部门等
  • DB2:IBM
  • sqlserver:微软
  • sybase:塞尔斯
  • MySQL:甲骨文
    • 互联网公司使用较多

RDBMS

  • RDBMS:关系型数据库管理系统,即数据库服务器
    • Relational DateBase Management System
    • DBMS:数据库管理系统
      • database management system
    • DB:数据库
      • database
  • RDBMS = Management(管理员) + datebase(数据仓库)
    • datebase = N 个 table
      • table:表结构
  • 安装数据库服务器后可以在服务器创建多个数据库
    • 数据库中可以创建多张表

SQL

定义
  • 结构化查询语言,属于高级语言
  • 标准通用的语言
    • 标准的 sql 适合所有的数据库产品
  • 执行时内部先进行编译,再执行 sql
    • 编译、执行由 DBMS 完成
  • 通过执行 sql 语句来操作 DB 中的数据
    • DBMS 执行 SQL 操作 DB 中数据
分类
  • DDL:数据定义语句
    • Data Definition Language
    • 对表结构增删改
      • create(创建)、drop(删除)、alter(修改)
  • DML:数据操作语句
    • Data Manipulation Language
    • 操作表中数据
      • insert、删delete、改update
  • DQL:数据查询语句(select)
    • Data Query Language
  • DCL:数据控制语句
    • Data Control Language
    • 管理数据库,如用户权限
      • grant 赋予;revoke 收回
  • TCL:事务控制语言(T:Transaction)
    • Transaction Control Language
      • commit:提交事务
      • rollback:回滚事务
sql 脚本
  • 文件后缀拓展名为 .sql 且文件中编写了大量 sql 语句
    • 这样的文件被称为 sql 脚本
sql 语句规范
  • sql 语句以 ; 结尾
    • 最后一句可以不写
  • sql 语句不区分大小写
    • 只有存储的数据区分大小写
  • 字符串以 '' 引用
    • 支持使用 "",但尽量不用
  • 数据库不可用 = 判空
    • is nullis not null 来判断空
    • xxxxxxxxxx12 1# dos命令备份,文件名可以带路径2mysqldump -u 用户名 -p密码 -B 数据库1 数据库2 数据库n > 文件名.sql 3​4# 备份数据库中具体的表,不写-B(B:表示数据库)5mysqldump -u 用户名 -p密码 - 数据库 表1 表2 表n > 文件名.sql 6​7-- 恢复数据库8# 进入 MySQL 命令行执行,先在 dos 窗口登录 MySQL9Source 文件名.sql10​11# navicat 中右键数据库转储 SQL 文件可以备份数据库12# 右键运行 SQL 文件可以恢复数据mysql
      • null 参与运算结果都为 null
  • 使用 () 提高优先级执行顺序

CRUD

  • 增查改删
  • 增加:Create
  • 检索:Retrieve
  • 修改:Update
  • 删除:Delete

MySQL

启动

  • DOS命令 命令行启动

  • 服务方式启动(界面)

    • net stop mysql服务名:启动服务

    • net start mysql服务名:关闭服务

连接

  • 命令行连接,语法格式

    • mysql -h 主机IP -P 端口 -u 用户名 -p密码
      • 登陆前需要服务已经启动
      • -h:默认本地 ip
      • -P:默认是 3306
      • -p:直接跟密码,没有空格
        • 此时不输入密码再回车后会要求输入密码

在这里插入图片描述

  • 数据库常见端口

    • mySQL:3306
    • oracle:1521
    • sqlServer:1433

修改密码

-- set password 命令(命令行)
mysql> set password for 用户名@localhost = password('新密码')
-- mysqladmin
mysqladmin -u用户名 -p旧密码 password 新密码
-- update 编辑
update user set password = password('新密码') where user = '用户名' and host = 'ip地址'

忘记密码

  1. 关闭正在运行的 MySQL 服务
  2. 打开 DOS 窗口,转到 mysql\bin 目录
  3. 输入 mysqld --skip-grant-table,回车
    • 该指令意思是启动 MySQL 服务的时候绕过权限表认证
  4. 再打开一个 DOS 窗口,转到 mysql\bin 目录
    • 第一个窗口此时不能使用
  5. 输入 mysqld 回车,成功后出现 MySQL 提示符 >
  6. 连接数据库:user mysql
  7. 改密码:update user set password = password('新密码') where user = '用户名';
    • 通过自己的用户名修改密码
  8. 刷新权限:flush privileges
  9. 退出:quit
  10. 注销系统,重新使用刚改过的密码进入

三层结构

结构
  • DBMS:数据库管理系统
    • 数据库1(存放在数据库目录的 Data 文件夹下)
    • 数据库2 …
    • 数据库n
      • 表1、视图、事件等存储数据(存放在数据库所在的目录下)
      • 表2 …
      • 表n
  1. 安装 MySQL 数据库就是在主机安装数据库管理系统(DBMS),管理多个数据库
    • DataBase Management System
  2. 一个数据库中可以创建多个表,表中记录数据
  3. 外部程序通过服务端口和数据库进行通信
  1. MySQL数据库普通表的本质仍是文件
    • 数据库中数据必须持久化才能持续存放
  2. 表中包括行(row),列(column)
    • 一行被称为一条记录(data)
      • Java 程序中一条记录往往代表一个对象
    • 一列被称为 一个字段
      • 应有 字段名、数据类型、约束 等属性

三范式

  • 设计范式
    • 设计表的依据
    • 按照三范式设计的表不会出现数据冗余
  • 实际设计以客户需求为主
    • 有时以数据冗余换执行速度
关系数据库设计三范式
  1. 任何表都应该有主键,每个字段是原子性的不可再分
    1. 不能存在重复记录
    2. 字段不能再拆分开
      • 例如:联系方式可拆分为 email、电话,违反第一范式
      • 按具体情况决定设计,不一定必须遵循范式
  2. 所有非主键字段完全依赖主键,不能产生部分依赖
    • 在第一范式基础上进行
      • 不能有非主键字段部份依赖主键
    • 即:不使用复合主键
      • 完全依赖:单独和一个字段相关
      • 部分依赖:同时和联合字段相关
  3. 非主键字段直接依赖主键
    • 在第二范式基础上进行
      • 不能产生传递依赖
    • 所有字段都直接和主键存在依赖
      • 非主键字段直接和主键相关,不能通过其他字段和主键产生依赖
经典设计
多对多
  • 多对多,三张表:关系表加外键

    • student 学生表

      • sno(PK),sname
    • teacher 教师表

      • tno(PK),tname
    • relation 关系表

      • id(PK),sno(FK),tno(FK)
一对多
  • 一对多,两张表:多的表加外键

    • class 班级表

      • cno(PK)、cname
    • student 学生表

      • sno(PK)、sname、cno(FK)
一对一
  1. 两张表主键共享
    • user_login 用户登录表
      • id(PK),username,password
    • user_detail 用户详细信息表
      • id(PK,FK),name,adress …
    • 第二张表主键同时外键连接第一张表主键
      • 保证两张表记录一一匹配
      • 没有重复记录,没有多余记录
  2. 外键 + 唯一约束 + not null
    • user_login 用户登录表
      • id(PK),username,password
    • user_detail 用户详细信息表
      • id(PK),name,userId(FK, unique,not null)…
    • 相当于主键 + 外键,适用于已经存在主键的情况
      • 外键唯一保证两张表的联系,并且没有重复记录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值