床前明月光,MySQL知多少?举头望明月,删库跑路咯!

数据库简介

  • IO流数据存储弊端
  1. 效率低
  2. 存取都麻烦
  3. 一般只能保存小量数据
  4. 只能保存文本数据

什么是DB

  • Database:数据库
  • 数据库本质上就是一个文件集合 数据库就是存储数据的仓库,本质上是一个文件系统,数据会按照特定的格式保存到文件中,用户可以对数据库中的数据进行增删改查操作

什么是DBMS

  • Database Management System: 数据库管理系统
  • DBMS就是管理数据库文件的软件
  • 常见的DBMS有: MySQL、oracle、sqlserver、DB2、Sqlite
    DBMS是指一种管理数据库的大型软件,用于创建、管理、维护数据库文件,对数据库文件进行统一的管理和控制,用户通过数据库管理系统
    访问数据库中的数据

数据库软件的分类

  • 关系型数据库: 经过数学理论验证,可以将现实生活中任意关系保存关系型数据库中,关系型数据库中以表为存储单位
  • 非关系型数据库: 用来解决一些特定场景,比如解决缓存问题,解决高并发问题 Redis数据库(以键值对的形式保存数据)

主流关系型数据库介绍

  • MySQL: 08年被Sun收购 09年Sun被Oracle收购,开源 ,由于被Oracle收购后性能大幅提升导致MySQL用户量大增,Oracle用户减少,公司计划把MySQL闭源,原MySQL程序员离开Oracle公司,创建了MariaDB数据库(Maria是公司老板的女儿名字) 市场排占有率第一
  • Oracle: Oracle公司,最贵,性能最高,市场占有率排第二,闭源,拉里艾莉森32
  • SQLServer:微软公司,闭源,市场占有率第三,主要应用在.net开发的网站中
  • DB2:IBM公司产品,闭源
  • sqlite:轻量级数据库 只有几十k,应用在嵌入式设备中(包括移动设备)

开源和闭源

  • 开源:开放源代码 免费,盈利方式靠卖服务 用户多,有大牛程序员会无偿的维护和升级
  • 闭源:源代码私有 盈利方式靠卖软件+服务 来钱快,会有大牛们攻击,但是公司内部会花钱雇人维护升级

安装数据库软件

  • 端口号使用默认的3306
  • 字符编码选择utf8

什么是SQL

  • Structured(结构化) Query(查询) Language(语言):结构化查询语言
  • 用于用户和数据库软件(DBMS)交流的语言,不管是增删还是改查都需要使用SQL语言和DBMS交流
  • SQL是写在客户端中或Java代码中,发送给DBMS,由DBMS解析执行

数据库服务器

  • 服务器是高配置的电脑
  • 数据库服务器就是在电脑上安装了DBMS
  • DBMS(mysql) 具备网络访问能力

如何连接MySQL数据库 Linux下打开终端 Windows里面打开命令行

  • 在终端或命令行中输入 mysql -uroot -p 然后回车 ,有密码的写密码 如果没有密码的直接敲回车
  • 退出命令 exit

SQL规范

  • 以;结尾
  • 关键字之间要有空格 可以有多个空格
  • SQL语句中可以1个或多个换行
  • 关键字不区分大小写

1. 数据库相关sql

  • 查看所有数据库:
  • 创建数据库:
  • 删除数据库:
  • 查看单个数据库详情:
  • 指定字符集:
  • 使用数据库:

2. 表相关sql

  • 创建表:
  • 查看所有表:
  • 删除表:
  • 查看单个表:
  • 创建表指定引擎和字符集:
  • 查看表字段信息:
  • 修改表:
  • 修改表字符集和引擎:
  • 添加表的字段:
  • 删除表字段:
  • 修改表字段名称和类型:
  • 修改表的类型和位置:

3. 数据相关sql

  • 插入数据:
  • 查询数据:
  • 修改数据:
  • 删除数据:

主键约束

什么是主键:表示表中数据唯一性的字段称之为主键(主键只有一个)
什么是约束: 约束就是创建表的时候给表中字段添加的限制条件
主键约束:添加了主键约束的字段,保存的数值必须唯一而且非空

  • 格式:
  • 测试唯一: 以下代码会报错 主键值不能重复
  • 测试非空:

主键+自增约束

  • 格式:
  • 测试自增:
  • 自增的特点:
  1. 值为null时会自动赋值
  2. 以表中曾出现的最大值基础上+1;
  3. 删除数据自增值不减
  4. delete清空表 自增数值不变
  • 如何让自增数值清零使用truncate关键字 ,相当于:

注释 comment

  • 创建表的时候可以通过comment关键字对字段进行描述
  • 格式: create table t3(id int primary key auto_increment comment ‘这个字段是主键’,ename varchar(10),sal int comment ‘这是工资’);
  • 通过 show create table t3; 查看字段的注释

`和’的区别

  • `的作用:是用来修饰表名和字段名的,可以省略
  • ‘的作用:是用来修饰字符串的

数据冗余

由于表设计不够合理,出现大量的重复数据,称为数据冗余。可以通过拆分表的形式,把可能重复的数据保存到一张新的表中,在原表中只需要通过一个id建立关系即可。这种建立关系的字段称之为外键。

练习一: 保存商品的信息包括(商品id,商品名称,商品价格,库存,分类名称,上级分类)
  1. 创建商品表(item):商品id, 商品名称(name),商品价格(price),库存(num),分类id(category_id)
  1. 创建分类表(category):分类id ,分类名称(name),上级分类
  • 以上表中插入数据:
    一、电器分类下的电视机分类下的康佳电视价格4480,库存38
    二、第二条数据 鞋分类下的男鞋分类下的男运动鞋分类下的耐克运动鞋价格380,库存99
  • 插入第一条数据:
  • 插入第二条数据:

来源:一颗仙橙的程序员之旅

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年3月4日
下一篇 2020年3月4日

相关推荐