MySQL是一个轻量级关系型数据库管理系统,由于体积小、速度快、总体拥有成本低,开放源码、免费,一般中小型网站的开发都选择Linux + MySQL作为网站数据库。

数据库的基本概念

  1. 数据库 DataBase 简称:DB

  2. 什么是数据库

    • 用于存储和管理数据的仓库
  3. 数据库的特点

    1. 持久化存储数据,其实数据库就是一个文件系统
    2. 方便存储和管理数据
    3. 使用统一的方式操作数据库
  4. 常见的数据库软件

    1. MySQL:开源免费的数据库,小型的数据库,已经被 Oracle 收购了。 MySQL6.x 版本也开始收费。后来Sun公司收购了 MySQL,而 Sun 公司又被 Oracle 收购
    2. Oracle:收费的大型数据库, Oracle 公司的产品
    3. DB2 : IBM 公司的数据库产品,收费的。常应用在银行系统中。
    4. SQL Server: MicroSoft 公司收费的中型的数据库。 C#、 .net 等语言常使用。
    5. SQLite: 嵌入式的小型数据库,应用在手机端,如: Android
  5. MySQL数据库的优点

    • MySQL是一个轻量级关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。目前MySQL被广泛地应用在Internet上的中小型网站中,由于体积小、速度快、总体拥有成本低,开放源码、免费,一般中小型网站的开发都选择Linux + MySQL作为网站数据库。
    • MySQL是一个关系型数据库管理系统,MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,就增加了速度并提高了灵活性。

注:为什么使用数据库存储文件

存储位置 优点 缺点
内存 速度快 不能永久保存,数据是临时状态
文件 数据可以永久保存 操作数据不方便,不便于管理
数据库 1.数据可以永久保存
2.查询速度快
3.对数据的管理方便
占用资源,需要购买
  1. 数据库的安装与卸载,配置

    • 我们安装MySQL其实安装的是MySQL的服务器软件,他会在windows的注册列表里注册MySQL的服务(service),服务就是一些没有界面的应用程序

    • 查看服务 cmd—> services.msc
      MySQL数据库基础 - 图1

    • 关闭mysql服务 net stop mysql
      MySQL数据库基础 - 图2

    • 开启mysql服务 net start mysql
      MySQL数据库基础 - 图3

    • 数据库的连接

      1. 本地数据库的连接
        MySQL数据库基础 - 图4

      2. 远程数据库的连接 mysql -h远程的ip地址 -uroot -p 远程的密码
        MySQL数据库基础 - 图5

      3. mysql —host=连接的ip —user=root —password=_
        MySQL数据库基础 - 图6

    • 数据库的退出
      MySQL数据库基础 - 图7
      MySQL数据库基础 - 图8

    • 注:以上关闭和开启都需要在管理员的模式下

    • 并且上述服务的名称必须和你的服务名称相同 当你的服务名称是mysql1,那么后面就需要的是mysql1

    1. MySQL的目录结构

      • 安装目录

      • 配置文件my.ini
        MySQL数据库基础 - 图9

      • 数据目录 上图中的data目录 建议不要将data目录与安装目录放在一起
        1 数据库—-> 文件夹
        2 表—-> 文件
        3 数据—-> 数据
        MySQL数据库基础 - 图10

  2. MySQL数据库基础中的数据库,表,数据的关系
    MySQL数据库基础 - 图11

    • MySQL服务器:安装MySQL服务的电脑

SQL

  1. 什么是SQL
    SQL = Structured Query Language 结构化查询语言
    其实就是定义了操作所有的关系型数据库规则
    ——-> 关系型数据库必须遵守SQL
    每一种数据库操作的方式存在不一样的地方称为”方言”

  2. SQL通用语法

    1. SQL语句可以单行或多行书写,以分号结尾
      MySQL数据库基础 - 图12
      在这里输入的语句才是SQL语句
      以分号结尾:
      MySQL数据库基础 - 图13

    2. 可使用空格和缩进来增强语句的可读性

    3. MySQL数据库基础的SQL语句不区分大小写,但是关键字建议使用大写
      MySQL数据库基础 - 图14

    4. 3种注释

      1. 单行注释

        • ‘— 注释内容’

        • ‘# 注释内容’—>MySQL特有

          • 注意空格

MySQL数据库基础 - 图15 MySQL数据库基础 - 图16

  1. 2.

多行注释

  1. -

‘/ 注释 /‘
MySQL数据库基础 - 图17

  1. SQL的分类

    1. Data Definition Language (DDL 数据定义语言) 如:建库,建表

    2. Data Manipulation Language(DML 数据操纵语言),如:对表中的记录操作增删改

    3. Data Query Language(DQL 数据查询语言),如:对表中的查询操作

    4. Data Control Language(DCL 数据控制语言),如:对用户权限的设置

    • 分类及对应的作用
      MySQL数据库基础 - 图18

DDL:操作数据库、表

  1. 操作数据库:CRUD(增删改查)

    1. C: Create 创建

      • 创建数据库 create database 数据库名称;
        MySQL数据库基础 - 图19

      • 如果数据库不存在才进行创建数据库
        MySQL数据库基础 - 图20

      • 创建指定字符集的数据库
        MySQL数据库基础 - 图21

    2. R: Retrieve 查询

      • 查看所有的数据库名称
        MySQL数据库基础 - 图22

      • show create database 数据库名称;

        • 查询创建数据库MySQL的语法
        • 查看数据库对应的字符集,这里是utf-8

MySQL数据库基础 - 图23

  1. U: Update 修改

    • 修改数据库的字符集
      alter database 数据库名称 character set 字符集名称;
      MySQL数据库基础 - 图24
      注: 当修改成字符集UTF-8的时候输入的应该是UTF8;
      MySQL数据库基础 - 图25
  2. D: Delete 删除

    • 删除数据库
      MySQL数据库基础 - 图26

    • 判断存在再删除
      MySQL数据库基础 - 图27

  3. 使用数据库

    • 上面的操作都是在数据库之外 也就相当于在下面的目录中

    • 只有进入到相应的数据库的文件夹才可以对其中的文件进行操作
      MySQL数据库基础 - 图28

    • 查询当前正在使用的数据库名称 select database();

    • 并对相应的数据库进行使用 use 数据库名称;
      MySQL数据库基础 - 图29
      这样就相当于我们进入了db1文件夹
      MySQL数据库基础 - 图30

  1. 操作表

    1. C: Create 创建

      • 语法
        create table 表名(
        列名1 数据类型1,
        列名2 数据类型2,
        列名3 数据类型3,
        … …
        列名n 数据类型n
        );
        注:最后一列不需要加”,”
类型 英文
整数类型 int
小数类型 double(小数的位数,保留的位数)
日期类型 date: 只包含年月日,yyyy-MM-dd
datetime: 包含年月日时分秒,yyyy-MM-dd HH:mm:ss
timestamp: 时间戳类型 包含年月日时分秒,yyyy-MM-dd HH:mm:ss
字符串类型 varchar(最大长度)
  • timestamp: 如果这个字段不手动赋值的话,或者赋值为null,那么就会使用当前系统默认的时间,来自动赋值

  • varchar(最大长度),其中的长度是以字符为单位的,zhangsan 8个字符,张三 2个字符
    MySQL数据库基础 - 图31

    • 复制一张表 create table 表名 like 被复制表名;

MySQL数据库基础 - 图32

  1. R: Retrieve 查询
  • 查询某个数据库中的所有的表的名称 show tables;
    MySQL数据库基础 - 图33

  • 查询表结构 desc 表名;
    MySQL数据库基础 - 图34

  1. U: Update 修改
  • 修改表名 alter table 表名 rename to 新的表名
    MySQL数据库基础 - 图35

  • 修改表的字符集 alter table 表名 character set 字符集名称;
    MySQL数据库基础 - 图36

  • 添加一列 alter table 表名 add 列名 数据类型;
    MySQL数据库基础 - 图37

  • 修改列的名称 类型

    • 修改列的列名和类型 alter table 表名 change 列名 新的列名 新的类型 ;

MySQL数据库基础 - 图38

  • 只修改列的类型 alter table 表名 modify 列名 新的类型;
    MySQL数据库基础 - 图39
  • 删除列 alter table 表名 drop 列名;
    MySQL数据库基础 - 图40
  1. D: Delete 删除
  • drop table 表名;

  • drop table if exists 表名;
    MySQL数据库基础 - 图41

  1. 客户端图形化工具 : SQLyog
    MySQL数据库基础 - 图42

DML: 增删改表中的数据

  1. 添加数据

    • 基本语法
      insert into 表名(列名1,列名2,…列名n) values(值1,值2,…值n);
      MySQL数据库基础 - 图43

    • 注意:

      1. 列名和值要一一对应

      2. 如果表名后,不定义列名,则默认给所有列添加值
        MySQL数据库基础 - 图44

      3. 除了数字类型,其他类型都需要用引号(单双均可)
        MySQL数据库基础 - 图45

  2. 删除数据

    • 语法

delete from 表名 [where 条件成立] MySQL数据库基础 - 图46 truncate table 表名; —>删除表 然后创建一个一模一样的空表

MySQL数据库基础 - 图47

  • 注意:

    1. 当没有WHERE条件的时候 delete会将表中的所有的数据删除
    2. 删除所有的数据

      1. delete from 表名; — 不推荐使用 ,有多少条数据执行多少次删除操作
      2. truncate table 表名; —删除表 然后创建一个一模一样的空表 这条语句就相当于只执行了 drop table; create table ; 两条语句 效率更高
  1. 修改数据

    • 语法
      update 表名 set 列名1 = 值1 , 列名2 = 值2,…. [where 条件];
      MySQL数据库基础 - 图48

    • 注意

      1. 如果没有where条件 那么表中的所有的数据都会被修改

DQL: 查询表中的数据

  1. 语法
    select
    字段列表
    from
    表名列表
    where
    条件列表
    group by
    分组字段
    having
    分组之后的条件
    order by
    排序
    limit
    分页限定

  2. 基础的查询

  3. 多个字段的查询

MySQL数据库基础 - 图49

  1. 2. 去除重复

MySQL数据库基础 - 图50

  • 当去除重复的字段是多个的时候,所有的字段的值都必须相同才能去除

MySQL数据库基础 - 图51

  1. 计算列

MySQL数据库基础 - 图52

  • 但是上述的null 计算的结果不合理,
  • 因为在含有null参与的运算中,计算结果都是null

ifnull(exp1,exp2)函数 —-> 如果exp1为null,就替换为exp2

MySQL数据库基础 - 图53

  1. 起别名
    MySQL数据库基础 - 图54

    • 当然 在列名后面 添加空格 然后添加别名也是可以的
      MySQL数据库基础 - 图55
  2. 条件查询

    1. where子句后面跟条件

    2. 运算符

      1. <、>、<=、>=、=、<>(不等于)

MySQL数据库基础 - 图56

  • SQL中的等于就是 = ,一个等于号

MySQL数据库基础 - 图57

MySQL数据库基础 - 图58

  1. BETWEEN…AND
  • between A and B 包含A和B

MySQL数据库基础 - 图59

  1. IN(集合)
    MySQL数据库基础 - 图60

  2. LIKE(模糊查询)

    • 占位符

      1. _ : 单个任意字符
      2. % : 多个任意字符

MySQL数据库基础 - 图61 MySQL数据库基础 - 图62 MySQL数据库基础 - 图63

  1. IS NULL

    • NULL值不可以用基本运算符运算

MySQL数据库基础 - 图64

  1. AND 或者 && (与)

MySQL数据库基础 - 图65

  1. OR 或者 || (或)

MySQL数据库基础 - 图66

  1. NOT 或者 ! (非)

MySQL数据库基础 - 图67

  1. 排序查询
  • 语法: order by 子句;

    • order by 排序字段1 排序方式1 , 排序字段2 排序方式2,….;
  • 排序方式

    • ASC : 升序 —- > ascend
    • DESC: 降序 —- > descend
  • 排序方式默认的是升序

  • 多个字段的排序 靠前的是主排序,靠后的为次排序 当主排序相同的时候,才会使用次排序
    MySQL数据库基础 - 图68

    • 上图中 主排序是数学升序 ,当数学成绩相同的时候 ,使用英语成绩降序为次排序
  1. 聚合函数: 将一列数据作为整体,进行纵向的计算
  • 注: 聚合函数的计算会排除NULL值

    • 选择不包含NULL的列进行计算
    • IFNULL函数

MySQL数据库基础 - 图69 MySQL数据库基础 - 图70

  1. count : 计算数量,个数

    1. 一般选择没有NULL的列 : 主键
      MySQL数据库基础 - 图71

    2. count(*)
      MySQL数据库基础 - 图72

      • count(*) 代表只要一条数据中有一列不是NULL,都算作一条数据
  2. max : 计算最大值
    MySQL数据库基础 - 图73

  3. min : 计算最小值
    MySQL数据库基础 - 图74

  4. sum : 计算和
    MySQL数据库基础 - 图75

  5. avg : 计算平均值
    MySQL数据库基础 - 图76

  6. 分组查询

  • 语法: group by 分组字段;

  • 注意:

    1. 分组之后查询的字段必须是 分组字段或者聚合函数
      MySQL数据库基础 - 图77

    2. where 和 having 的区别

      1. where 在分组之前进行条件的限定 如果不满足条件 ,则不参与分组
      2. having 在分组之后进行限定 如果不满足结果, 则不会被查询出来
      3. where后不可以跟聚合函数
      4. having后可以进行聚合函数的判断

MySQL数据库基础 - 图78 MySQL数据库基础 - 图79

  1. -

给聚合函数起别名 后面可以用来进行查询
MySQL数据库基础 - 图80

  1. 分页查询
  • 语法: limit 开始的索引 , 每页查询的条数;
    MySQL数据库基础 - 图81

    • 表中的数据的索引从0开始
  • **公式: 开始的索引 = (当前的页码 - 1) 每页显示的条数
    MySQL数据库基础 - 图82

  • 当数据不够的时候,会将剩下的所有的数据都显示出来

  • LIMIT是MySQL数据库基础的”方言”