• Mysql数据库简介


    一、数据库

    • 数据库(DateBase)

      按照一定格式存储数据的一些文件的组合,顾名思义就是存储数据的仓库,实际上就是一堆文件。这些文件中存储了具有特定格式的数据 。数据库管理数据有诸多优点,如降低存储数据的冗余度,存储的数据可以共享,便于维护数据完整性,能够实现数据的安全性等。数据库的发展经历了萌芽、初级、中级、和高级阶段。

    • 数据库管理系统(DateBaseManagement)

      简称DBMS,数据库管理系统是专门用来管理数据库中的数据的,可以对数据库当中的数据进行增删改查 常见的数据库管理系统:MySql、Oracle、MS SQLServer、DB2、sybase等…

    • SQL(Structured Query Language)

      结构化查询语言。 SQL 是一种操作数据库的语言,包括创建数据库、删除数据库、查询记录、修改记录、添加字段等。SQL在MySql中可以使用,同时在Oracle中也可以使用,在DB2中也可以使用 。

    三者之间的关系:DBMS通过执行SQL语句来操作DB中的数据

    二、数据库基本操作

    1、查看数据库

    在 MySQL 数据库中存在系统数据库和自定义数据库,系统数据库是在安装 MySQL 后系统自带的数据库,自定义数据库是由用户定义创建的数据库。

    可使用 show databases语句来查看有哪些数据库

    语法格式:

    show databases;
    
    • 1

    sql语句的结尾都是以;结束

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    | woniu              |
    +--------------------+
    5 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    MySql 5.7系统默认自带4个数据库,information_schema、mysql、performation_schema、sys

    • information_schema

      该数据库中包含了当前系统中所有的数据库、表、列、索引、视图等相关的元数据信息,是MySql自身信息元数据的存储库。该数据库内主要包含了以下一些表:

      • SCHEMATA:列举了当前系统中所有的数据库。
      • TABLES:列举了当前系统中所有数据库中的表名。
      • COLUMNS:列举了所有表中的字段信息。
      • KEY_COLUMN_USAGE:列举了表中所有的索引、外键信息。
      • STATISTICS:包含所有表的索引及其统计信息。
    • mysql

      该数据库是MySql系统中的操作和访问权限控制的核心,存放了关于用户账户、权限、等级、密码等的信息。该数据库内主要包含如下几张表:

      • user:记录了系统中每个用户的权限信息。
      • db:记录了系统允许的用户在哪些数据库中拥有什么样的权限。
      • host:记录允许连接MySQL服务器的主机名。
    • performation_schema

      该数据库是MySql中用于对MySql本身的性能监控的仪表盘。该数据库内主要包含如下几张表:

      • file_instances:用于监控文件IO操作的性能统计数据。
      • events:用于监控MySql执行过程中的各种事件,如SQL分析、SQL执行、锁等等。
      • sessions:用于监控当前MySql系统内所有活跃的会话信息。
    • sys

      该数据库是MySQL自带的一个视图工具,在MySQL5.7以上版本中引入,主要用于高效访问和展示MySQL系统的详细信息,是方便用户进行MySQL系统管理的工具。该数据库中主要提供了一些视图:

      • sys.session:展示当前MySQL系统中活动的所有会话。
      • sys.processlist:展示当前MySQL系统中正在运行的所有进程。
      • sys.schema_auto_increment_columns:展示数据库中所有带自增字段的表的信息,以便查看自增值的情况。

    可以使用show create database查看数据库的定义声明,语法格式:

    show create database <数据库名>;
    
    • 1

    在这里插入图片描述

    2、选择数据库

    在操作数据库之前就必须要确定使用哪一个数据库,使用use语句选择使用某个数据库

    语法格式:

    user <数据库名>;
    
    • 1
    mysql> use student;
    Database changed			# 出现“Database changed”提示,则表示选择数据库成功
    
    • 1
    • 2
    3、创建数据库

    使用 create database 语句创建数据库,语法格式如下:

    create database [if not exists] <数据库名>
    [[default] character set <字符集名>] 
    [[default] collate <校对规则名>];
    
    • 1
    • 2
    • 3
    mysql> create database test;
    Query OK, 1 row affected (0.00 sec)
    # "Query OK"表示上面的命令执行成功,"1 row affected"表示操作只影响了数据库中一行的记录,“0.00 sec”则记录了操作执行的时间。
    
    • 1
    • 2
    • 3
    4、删除数据库

    删除数据库是将已经存在的数据库从磁盘空间上清除,当需要删除已创建的数据库时,可以使用 drop database语句。其语法格式为:

    drop database [if exists] <数据库名>;
    
    • 1
    mysql> drop database if exists test;
    Query OK, 0 rows affected (0.23 sec)
    
    • 1
    • 2

    三、MySql的注释

    MySQL 注释分为单行注释和多行注释

    1、单行注释
    • 单行注释可以使用#注释符,#注释符后直接加注释内容。格式如下:
    #注释内容
    
    • 1
    • 单行注释可以使用--注释符,--注释符后需要加一个空格,注释才能生效。格式如下:
    -- 注释内容
    
    • 1
    2、多行注释

    多行注释使用/* */注释符。/*用于注释内容的开头,*/用于注释内容的结尾。多行注释格式如下:

    /*
      第一行注释内容
      第二行注释内容
    */
    
    • 1
    • 2
    • 3
    • 4

    四、数据表的基本操作

    1、查看数据表
    • 使用 show tables语句来查看当前数据库中有哪些数据表

    语法格式:

    show tables;
    
    • 1
    mysql> show tables;
    +-------------------+
    | Tables_in_student |
    +-------------------+
    | class             |
    | course            |
    | grade             |
    | student           |
    +-------------------+
    4 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 使用 desc(describe)show create table 命令来查看数据表的结构。其语法格式如下:
    desc <表名>;
    show create table <表名>;
    
    • 1
    • 2
    mysql> desc emp;
    +----------+-------------+------+-----+---------+-------+
    | Field    | Type        | Null | Key | Default | Extra |
    +----------+-------------+------+-----+---------+-------+
    | EMPNO    | int(4)      | NO   | PRI | NULL    |       |
    | ENAME    | varchar(10) | YES  | MUL | NULL    |       |
    | JOB      | varchar(9)  | YES  |     | NULL    |       |
    +----------+-------------+------+-----+---------+-------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • Null:表示该列是否可以存储 NULL 值。
    • Key:表示该列是否已编制索引。PRI 表示该列是表主键的一部分,UNI 表示该列是 unique 索引的一部分,MUL 表示在列中某个给定值允许出现多次。
    • Default:表示该列是否有默认值,如果有,值是多少。
    • Extra:表示可以获取的与给定列有关的附加信息,如 AUTO_INCREMENT 等。
    2、创建数据表

    使用 create table 语句创建表。其语法格式为:

    create table 表名(
            字段名1 数据类型 [表定义选项],
            字段名2 数据类型 [表定义选项],
            字段名3 数据类型 [表定义选项]
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5

    表名和字段名(列名)都属于标识符,表定义选项用于设置空值说明、完整性约束等

    表名:命令建议以t_ 或者tbl_开头,可读性强,见名知意。

    • MySql中的数据类型

      MySql 的数据类型有大概可以分为 5 种,分别是整数类型、浮点数类型和定点数类型、日期和时间类型、字符串类型、二进制类型等

      常用常用的数据类型:

      • 数值型

        数据类型说明
        int(4字节)整型,类似java中的int
        bigint(8字节)大整数,类似java中的long
        float(4字节)单精度浮点数
        double(8字节)双精度浮点数
      • 字符串型

        类型说明优点缺点
        char(1~255字节)定长字符串不管实际的数据长度是多少。分配固定长度的空间去存储数据。不需要动态分配空间,速度快使用不恰当的时候,可能会导致空间的浪费
        varchar(1~255字节)可变长度的字符串比较智能,节省空间。会根据实际的数据长度动态分配空间需要动态分配空间,速度慢
      • 日期型

        数据类型说明
        date(3字节)时间格式:YYYY-MM-DD
        datetime(8字节)时间格式:YYYY-MM-DD HH:MM:SS

        MySQL 允许“不严格”语法:任何标点符号都可以用作日期部分之间的间隔符。例如,‘2000-02-11’、‘2000.02.11’、‘2000/02/11’和’2000@02@11’ 是等价的,这些值也可以正确地插入数据库。

      • 二进制大对象(Binary Large Object)

        数据类型说明
        blob专门用来存储图片、声音、视频等流媒体数据。
        往blob类型的字段上插入数据的时候,例如插入一个图片、视频等,需要使用IO流才行。

    例如:创建一个学生表,有学号、姓名、年龄、邮箱地址字段

    create table t_student(
    	no int,
        name varchar(255),
        age int(3),
        email varchar(255)
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    3、修改数据表

    可以使用 alter table语句来改变原有表的结构,例如增加或删减列、更改原有列类型、重新命名列或表等。

    其语法格式如下:

    alter table <表名> [修改选项]
    
    • 1

    修改选项的语法格式如下:

    { ADD [COLUMN] <列名> <类型>
     | CHANGE [COLUMN] <旧列名> <新列名> <新列类型>
     | ALTER [COLUMN] <列名> { SET DEFAULT <默认值> | DROP DEFAULT }
     | MODIFY [COLUMN] <列名> <类型>
     | DROP [COLUMN] <列名>
     | RENAME [TO] <新表名>
     | CHARACTER SET <字符集名>
     | COLLATE <校对规则名> }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    # 修改表名
    alter table <旧表名> rename [to] <新表名>;
    # 修改表字符集
    alter table <表名> [default] character set <字符集名> [default] collate <校对规则名>;
    # 修改字段
    alter table <表名> change <旧字段名> <新字段名> <新数据类型>;
    # 修改字段数据类型
    alter table <表名> modify <字段名> <数据类型>
    # 添加字段
    alter table <表名> add <字段名> <数据类型> 
    # 删除字段
    alter table <表名> drop <字段名>;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    changemodify的区别?

    • modify一般用于修改列属性(例如:数据类型,约束等),但是不能修改字段名。修改字段名称应使用change

    • change既可以用于修改字段名,也可以用于修改列属性

    在这里插入图片描述

    • 给数据表添加字段

      数据表添加字段可以在开头、中间和结尾处添加字段

      • 在开头添加字段

        alter table <表名> add <新字段名> <数据类型> [约束条件] first;
        
        • 1
      • 在中间位置添加字段

        alter table <表名> add <新字段名> <数据类型> [约束条件] after <已经存在的字段名>;
        
        • 1
      • 在末位添加字段

        alter table <表名> add <新字段名> <数据类型> [约束条件];
        
        • 1
    4、删除数据表

    删除表的同时,表的结构和表中所有的数据都会被删除。使用 drop table语句可以删除一个或多个数据表,语法格式如下:

    drop table [if exists] <表名1>[,表名2,...]
    
    • 1
  • 相关阅读:
    网络吞吐量 公网带宽有关吗?
    Leetcode 3122. Minimum Number of Operations to Satisfy Conditions
    IO流 - File - properties
    leetcode139单词拆分刷题打卡
    string转float显示位数有误;cout 的 precision 成员函数
    VP视频结构化框架
    机器学习笔记自最优化理论与方法(十一)无约束优化问题——关于共轭方向法重要特征的相关证明
    Redis系列22:Redis 的Pub/Sub能力
    Android的JSON解析(上)
    C语言——二周目——输入输出辨析
  • 原文地址:https://blog.csdn.net/weixin_45954730/article/details/130915232