Mysql数据库的基本使用

知识点

背景

  1. mysql数据库的路径

    1
    2
    # 该路径下的文件夹都是对应的每一一个数据库文件
    sudo cd /var/lib/mysql
  2. 市场上主流数据库类型:关系型数据库、非关系型数据库

  3. 数据库引擎:InnoDB、MyISAM等。MyISAM数据处理速度快,单不支持事务;InnoDB支持事务和行级锁定,处理速度稍慢,现在5.5版本之后的mysql默认使用InnoDB

  4. 安装mysql server端

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 安装mysql
    sudo apt-get install mysql-server

    # 启动mysql服务
    sudo service mysql start

    # 查看进程中是否存在mysql服务
    ps aux | grep mysql

    # 关闭mysql 服务
    sudo service mysql stop

    # 重启mysql服务
    sudo service mysql restart
  5. 安装mysql client端

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 安装mysql client端
    sudo apt-get install mysql-client

    # 进入mysql
    mysql -uroot -p123455

    # 退出mysql
    方法1:quit
    方法2:Ctrl + D
    方法3:exit

mysql配置

  • mysql配置文件信息

    1
    2
    3
    4
    5
    6
    cat /etc/mysql/mysql.cnf
    # 打开上述文件发现内部引用的配置文件路径如下:
    !includedir /etc/mysql/mysql.cnf.d/

    # 切换至引用的配置文件路径
    cd /etc/mysql/mysql.cnf.d/
  • 打开文件:/etc/mysql/mysql.cnf.d/mysqld.cnf,可以检查配置项

    1
    vim mysqld.cnf
  • 配置的详细信息

    1
    2
    3
    4
    5
    bind-address: 表示服务器绑定的IP,默认为:127.0.0.1
    port:表示连接的端口,默认为3306
    datadir:表示数据库目录,默认为/var/lib/mysql
    general_log_file:表示普通日志,默认为/var/lib/mysql/mysql.log
    log_error:表示错误日志,默认为/var/lib/mysql/error.log

mysql 使用

  • 数据库备份、还原

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # -t: 只备份数据
    mysqldump -u root -p kmn123 -t 数据库名 >> 路径/backup.sql

    # -d: 只备份数据结构
    mysqldump -u root -p kmn123 -d 数据库名 >> 路径/backup.sql

    # 备份数据和结构
    mysqldump -u root -p kmn123 数据库名 >> 路径/backup.sql

    # 备份数据库单个表
    mysqldump -u root -p kmn123 数据库名 表名>> 路径/backup.sql

    # 备份的数据库还原到指定数据库
    use 数据库名
    source 路径/backup.sql
  • 数据库信息相关

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 查询所有的数据库信息
    show databases;

    # 查看mysql版本
    select version();

    # 显示当前数据库的时间
    select now();

    # 切换数据库
    use 数据库名;

    # 查看当前使用的数据库
    select database();
  • 创建数据库

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 创建数据库,默认字符格式为latin
    create database 数据库名

    # 设置自定义字符集为utf8
    create database 数据库名 charset=utf8

    # 查看创建数据库时的语句
    show create database 数据库名

    # 删除数据库,当数据库名不是一个单词时,用`(tab键上方)包裹
    drop database 数据库名
  • 创建表

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    # 查看当前数据库中含有哪些表
    show tables;

    # 查看指定表的结构
    desc 数据表的名称;

    # 创建数据表
    # auto_increment:表示自动增长
    # not null:表示不能为空
    # primary key:表示主键
    # default:默认值
    create table 表名(字段名 类型 约束, 字段 类型 约束);

    # 定义无符号int类型:int unsigned,反之是:int signed
    # 定义枚举类型:enum("男", "女");其对应的数字值为1, 2,插入时可以用数字代替
    # 定义默认值:default "男"

    # 查看创建的数据表时的语句
    show create table 表名;

    # 删除表
    drop table 表名;
  • 修改表结构

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 添加字段
    alter table 表名 add 列名 类型;

    # 修改字段类型
    alter table 表名 modify 列名 新类型;

    # 修改字段名称 and 类型
    alter table 表名 change 旧列名 新列名 类型及约束;

    # 删除字段
    alter table 表名 drop 字段名;
  • 数据修改

    1. 插入数据

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      # 全列插入
      # 在mysql中不区分单双引号,只要成对即可
      # 主键可以用0,default,null表示占位
      insert into 表名 values (值, 值, ...);

      # 部分插入
      insert into 表名(列名, 列名, ...) values (值1, 值2, ...);

      # 多行插入(适用于全列、部分插入)
      insert into 表名(列名, 列名, ...) values (行1值1, 行1值1, ...), (行2值1, 行2值1, ...);
    2. 修改数据

      1
      update 表名 set 列名1=值, 列名2=值, 列名3=值 where 筛选条件;
    3. 删除数据

      1
      2
      3
      4
      5
      # 物理删除
      delete from 表名 where 条件

      # 逻辑删除, 添加一个字段表示该数据是否删除
      alter table 表名 add is_delete bit default 0
    4. 选择数据

      1
      select 列1 as 别名, 列2, ... from 表名 where 条件

记忆

为便于理解,提供脑图

作业

  1. (问答)mysql数据的路径是什么

  2. (问答)市场上主流的数据库类型

  3. (问答)mysql使用的数据库引擎

  4. (问答)安装mysql server端

  5. 启动mysql服务

  6. 查看当前进程中是否存在mysql服务

  7. 关闭mysql服务

  8. 重启mysql服务

  9. 安装mysql client端

  10. 进入mysql

  11. (问答)退出mysql的三种方式

  12. (问答)mysql配置文件的路径是什么,服务器端配置文件的详细文件是什么

  13. (问答)mysql详细配置文件中如下几个值分别表示什么?其默认值又是哪些?:bind-address、port、datadir、general_log_file、

    log_error

  14. 查询当前数据库中含有哪些数据库

  15. 查询数据库的版本

  16. 显示当前数据库的时间

  17. 切换数据库到shuai

  18. 查看当前使用的数据库

  19. 创建shuai数据库

  20. (问答)通过create databases shuai创建的数据库,其默认的编码方式是什么

  21. 创建数据库shuai,设置其默认编码方式为utf-8

  22. 查看创建数据库shuai的语句

  23. 删除数据库【wu xiang】

  24. 查看当前使用的数据库中含有哪些表

  25. 查看表shuai的结构

  26. 创建数据表shuai,其中含有字段如下:id(int类型,主键,自增长,不能为空), name(varchar(50)类型,默认值为”shuai”),

    gender(枚举类型-男or女)

  27. 查看创建的数据表shuai时的语句

  28. 删除表shuai

  29. 在表shuai中添加一个字段age(int类型, 不能为空, 默认20)

  30. 修改表shuai中的字段age类型和约束为(int 类型, 不能为空, 默认为20)

  31. 修改表shuai中的字段age名称为old,并将其类型和约束修改为(int 类型, 不能为空, 默认为20)

  32. 删除表shuai中的字段age

  33. 向表shuai中全列插入字段信息name(“shuai”)、age(20)、gender(“男”)

  34. (问答)在mysql中对单、双引号有什么限制

  35. 向表shuai中部分插入字段信息name(“shuai”)、age(20)、gender(“男”)

  36. 向表shuai中多行插入数据,数据信息如下:

    【name(“shuai”)、age(20)、gender(“男”)】
    [name(“wu shuai”)、age(21)、gender(“男”)]

  37. (问答)在mysql中,如果全列插入时,针对自增长的主键如何解决

  38. 表shuai中name为shuai的,将其age改未22,gender改为男

  39. 删除表shuai中name为shuai的数据

  40. (问答)在数据管理中常说的只增不减,如果遇到需要删除的数据时,可以用什么样的办法替换掉物理删除数据的方案

  41. (问答)选择数据的语句结构是什么样的

  42. 重置数据表shuai