了解学习MySQL数据库基础

一、概述

NOSQL数据库

  • Redis,缓存数据库

  • MongoDB,文档型数据库

关系数据库相关概念

  1. 库(Database): 库是一个存储数据的容器,它可以包含多个数据库。在某些管理系统中,库等同于数据库。

  2. 表(Table): 表是数据库中的一个表格,由行和列组成。表是存储数据的主要结构,每个表通常对应一个实体类型。表的列名称为属性,而表的行名称为记录。

  3. 行(Record): 行也称为记录,它是表中的一个单元,代表表中的一个具体实例。每一行包含了一组属性值,这些值共同描述了一个实体的状态。

  4. 列(Column): 列是表中的一列,它代表了表的一个属性。每列都有一个数据类型,用于定义存储在其中的数据的种类和格式。

  5. 字段(Field): 字段通常指的是表中的行与列的交叉点,它存储了单个数据项。在数据库中,每个字段都有其特定的数据类型和用途。

  6. 数据(Data): 数据是存储在数据库中的信息。它可以是文本、数字、日期、图像、声音等各种形式。数据是数据库管理和操作的核心。

二、安装

默认监听端口号:3306/tcp

1、mariadb安装

服务端程序: mariadb-server;客户端程序:mariadb

复制代码
yum install -y mariadb-server mariadb

2、mysql安装

服务端程序:mysql-server;客户端程序:mysql;

复制代码
[root@mysql ~]# yum install -y  mysqld-server mysql 
##编译安装,需要cmake环境

3、启动并开机自启

复制代码
[root@mysql ~]# systemctl enable --now mysqld.service 

4、本地连接(本地登录)

复制代码
[root@mysql ~]# mysql
Welcome to the mysqld monitor.  Commands end with ; or \g.
Your mysqld connection id is 2
Server version: 5.5.68-mysqld mysqld Server

Copyright (c) 2000, 2018, Oracle, mysqld Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL[(none)]> 
##[(none)]:表示当前登录用户选择的数据库的"空",没有在任何库中
##使用"exit"命令可以退出数据库登录

三、mysqld数据库配置与命令

mysqld服务器的启动脚本

复制代码
[root@mysql ~]# cat /usr/lib/systemd/system/mysqld.service

数据存储目录的权限

复制代码
[root@mysql mysql]# ls -ld /var/lib/mysql/
drwxr-xr-x 5 mysql mysql 177 1月  31 10:16 /var/lib/mysql/

服务启动时读取的默认配置文件

复制代码
[root@mysql mysql]# cat /etc/my.cnf

mysqld操作命令

复制代码
[root@mysql ~]# ls -l /usr/bin/mysql*
-rwxr-xr-x 1 root root 3543584 10月  2 2020 /usr/bin/mysql
-rwxr-xr-x 1 root root  111971 10月  2 2020 /usr/bin/mysqlaccess
-rwxr-xr-x 1 root root 3096720 10月  2 2020 /usr/bin/mysqladmin
-rwxr-xr-x 1 root root 3259880 10月  2 2020 /usr/bin/mysqlbinlog
lrwxrwxrwx 1 root root      26 1月  31 10:15 /usr/bin/mysqlbug -> /etc/alternatives/mysqlbug

mysql命令

常用选项

复制代码
-u:指定登录用户
-p:指定用户密码
-h:指定登录数据库的IP或者域名
-P:指定登录数据库的端口号
-e:能够在终端执行数据库指令

使用案例

复制代码
[root@mysql ~]# mysql -uroot -hlocalhost -P3306
[root@mysql ~]# mysql -p123.com -e "show databases"   ##直接在外部执行查看数据库的命令
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+

##指定登录的数据库,只能是一个
[root@mysql mysql]# mysql -p123.com mysql 

mysqladmin命令

超级管理命令

语法

复制代码
mysqladmin [options] command [command-arg] [command [command-arg]] ...

设置root用户密码

复制代码
[root@mysql ~]# mysqladmin -uroot password '123.com'

使用密码登录

复制代码
[root@mysql ~]# mysql -uroot -p123.com -h127.0.0.1 -P3306

四、默认数据库

**nformation_schema :**信息数据库,存储所有的库、表、列的名称,任意可登录数据库的用户都可读;sql注入

表名 作用
CHARACTER_SETS 字符集信息表。用于查看和管理MySQL数据库中的字符集信息。
CLIENT_STATISTICS 客户端统计信息表。用于查看和管理客户端的统计信息,例如连接数、请求次数等。
COLLATIONS 排序规则信息表。用于查看和管理MySQL数据库中的排序规则信息。
COLLATION_CHARACTER_SET_APPLICABILITY 字符集和排序规则的适用性表。用于查看和管理字符集和排序规则之间的适用关系。
COLUMNS 数据表的列信息表。用于查看和管理MySQL数据库中数据表的列信息。
COLUMN_PRIVILEGES 列级别的权限信息表。用于查看和管理列级别的权限信息,例如用户对各个列的SELECT、INSERT、UPDATE等权限。
ENGINES 存储引擎信息表。用于查看和管理MySQL数据库中支持的存储引擎信息。
EVENTS 定时事件信息表。用于查看和管理MySQL数据库中的定时事件信息。
FILES 文件信息表。用于查看和管理MySQL数据库服务器上文件的信息。
GLOBAL_STATUS 全局状态信息表。用于查看和管理MySQL数据库服务器的全局状态信息。
GLOBAL_VARIABLES 全局变量信息表。用于查看和管理MySQL数据库服务器的全局变量信息。
INDEX_STATISTICS 索引统计信息表。用于查看和管理MySQL数据库中索引的统计信息。
KEY_CACHES 键缓存表。用于查看和管理MySQL数据库中的键缓存信息。
KEY_COLUMN_USAGE 键列使用表。用于查看和管理键列的使用情况。
PARAMETERS 参数表。用于查看和管理MySQL数据库的参数信息,例如连接超时时间、最大连接数等。
PARTITIONS 分区表。用于查看和管理MySQL数据库中的分区信息。
PLUGINS 插件表。用于查看和管理MySQL数据库中的插件信息。
PROCESSLIST 进程列表表。用于查看当前正在运行的MySQL进程,包括连接的客户端和正在执行的查询等。
PROFILING 性能分析表。用于启用性能分析,记录和分析SQL查询的性能数据。
REFERENTIAL_CONSTRAINTS 外键约束表。用于查看和管理外键约束的信息,包括外键列和参考列等。
ROUTINES 存储过程和函数表。用于查看和管理MySQL数据库中的存储过程和函数的信息,包括创建时间、修改时间、函数名等。
SCHEMATA 架构表。用于查看和管理MySQL数据库中的架构信息,包括架构名、架构下的表名等。
SCHEMA_PRIVILEGES 架构权限表。用于查看和管理架构下的权限信息,包括用户对架构下表的SELECT、INSERT、UPDATE等权限。
SESSION_STATUS 会话状态信息表。用于查看和管理当前会话的状态信息,例如会话的连接时间、查询时间等。
SESSION_VARIABLES 会话变量表。用于查看和管理当前会话的变量信息,例如会话的最大连接数、最大内存使用量等。
STATISTICS 统计信息表。用于查看和管理MySQL数据库中表的统计信息,包括表的行数、平均行大小等。
TABLES 数据表信息表。用于查看和管理MySQL数据库中的数据表信息,包括表名、引擎类型等。
TABLESPACES 存储空间表。用于查看和管理MySQL数据库中的存储空间信息,包括存储空间名、大小等。
TABLE_CONSTRAINTS 表约束信息表。用于查看和管理表的约束信息,包括主键约束、外键约束等。
TABLE_PRIVILEGES 表级别的权限信息表。用于查看和管理表级别的权限信息,例如用户对各个表的SELECT、INSERT、UPDATE等权限。
INNODB_CMPMEM_RESET InnoDB 内存比较器重置表。此表用于记录 InnoDB 内存比较器(comparison memory)的清除操作。
INNODB_RSEG InnoDB 重做段表此表用于记录 InnoDB 数据文件的重做段信息。
INNODB_UNDO_LOGS InnoDB 撤销日志表。此表用于记录 InnoDB 撤销操作的日志信息。
INNODB_CMPMEM InnoDB 内存比较器表。此表用于记录 InnoDB 内存比较器的分配和使用情况。
INNODB_SYS_TABLESTATS InnoDB 系统表统计信息表。此表用于记录 InnoDB 系统表的统计信息,如数据量、碎片率等。
INNODB_LOCK_WAITS InnoDB 锁等待信息表。此表记录 InnoDB 锁等待的情况,包括等待锁的线程 ID、等待时间等。
INNODB_INDEX_STATS InnoDB 索引统计信息表。此表用于记录 InnoDB 索引的统计信息,如索引大小、索引列的数据类型等。
INNODB_CMP InnoDB 比较器表。此表用于记录 InnoDB 比较器的分配和使用情况。
INNODB_CHANGED_PAGES InnoDB 更改页表。此表用于记录 InnoDB 数据文件中已更改的页的信息。
INNODB_BUFFER_POOL_PAGES InnoDB 缓冲池页表。此表用于记录 InnoDB 缓冲池中每个页的信息,包括页的类型、页的状态等。
INNODB_TRX InnoDB 事务表。此表用于记录 InnoDB 事务的信息,如事务 ID、事务状态等。
INNODB_BUFFER_POOL_PAGES_INDEX InnoDB 缓冲池页索引表。此表用于记录 InnoDB 缓冲池中每个页的索引信息。
INNODB_LOCKS InnoDB 锁表。此表用于记录 InnoDB 锁的信息,如锁的类型、锁的持有者等。
INNODB_BUFFER_PAGE_LRU InnoDB 缓冲池页 LRU 表。此表用于记录 InnoDB 缓冲池中每个页的最近最少使用(Least Recently Used,LRU)信息。
INNODB_SYS_TABLES InnoDB 系统表信息表。此表用于记录 InnoDB 系统表的信息,如表名、表状态等。
INNODB_SYS_FIELDS InnoDB 系统字段信息表。此表用于记录 InnoDB 系统表中每个字段的信息,如字段名、字段类型等。
INNODB_SYS_COLUMNS InnoDB 系统列信息表。此表用于记录 InnoDB 系统表中每个列的信息,如列名、列类型、列长度等。
INNODB_SYS_STATS InnoDB 系统统计信息表。此表用于记录 InnoDB 系统统计信息,如表数量、数据量等。
INNODB_SYS_FOREIGN InnoDB 系统外键信息表。此表用于记录 InnoDB 系统表中外键的信息,如外键约束条件等。
INNODB_SYS_INDEXES InnoDB 系统索引信息表。此表用于记录 InnoDB 系统表中索引的信息,如索引名、索引类型等。
  • **mysql :**主数据库,mysqld运行的必须数据库,用户与配置信息
表名称 作用
columns_priv 保存了每个表的列级别的权限信息,包括用户对各个列的SELECT、INSERT、UPDATE、REFERENCES等权限。
db 保存了每个数据库的权限信息,包括用户对每个数据库的CREATE、ALTER、DROP等权限。
event 保存了MySQL中的事件信息,包括事件的名称、执行时间、执行语句等。
func 保存了用户定义的存储函数的信息,包括函数的名称、参数、返回类型等。
general_log 记录了MySQL服务器上所有的日志操作,包括查询、连接、错误日志等。
help_category 保存了MySQL帮助文档中的分类信息,用于帮助查找和浏览文档。
help_keyword 保存了MySQL帮助文档的关键字信息,用于快速搜索和查找文档。
help_relation 保存了MySQL帮助文档中关键字之间的关系信息,用于帮助构建文档的结构。
help_topic 保存了MySQL帮助文档的具体内容信息,包括每个主题的标题、内容等。
host 保存了MySQL服务器上的主机信息,包括主机名、IP地址、连接权限等。
ndb_binlog_index 保存了使用NDB存储引擎的MySQL服务器上的二进制日志索引信息。
plugin 保存了MySQL服务器上安装的插件信息。
proc 保存了用户定义的存储过程的信息,包括过程的名称、参数、语句等。
procs_priv 保存了用户对存储过程的访问权限信息。
proxies_priv 保存了MySQL服务器上的代理用户的权限信息。
servers 实验性表,保存了MySQL服务器的外部服务器和复制配置信息。
slow_log 记录了MySQL服务器上执行时间超过默认阈值的慢查询日志。
tables_priv 保存了用户对表的访问权限信息。
time_zone 保存了MySQL服务器上的时区信息。
time_zone_leap_second 保存了时区闰秒的信息。
time_zone_name 保存了时区的名称和相关信息。
time_zone_transition 保存了时区的变化规则和信息。
time_zone_transition_type 保存了时区变化类型的信息。
user 保存了MySQL服务器上的用户账号信息,包括用户名、密码、权限等。
  • performance_schema:性能数据库,存储mysqld的资源使用、安全策略权限配置信息
表名 作用
cond_instances 条件实例表,该表用于存储各种条件或锁定的实例信息
events_waits_current 当前等待事件表,记录了当前正在等待某个事件发生的线程或会话信息
events_waits_history 历史等待事件表,记录了过去一段时间内等待事件的信息,包括等待事件的类型、等待时间等
events_waits_history_long 长期等待事件表,记录了长时间等待事件的信息,包括等待事件的类型、等待时间、等待时长等
events_waits_summary_by_instance 按实例总结等待事件表,提供了按实例总结的等待事件统计信息
events_waits_summary_by_thread_by_event_name 按线程和事件总结等待事件表,提供了按线程和特定事件总结的等待事件统计信息
events_waits_summary_global_by_event_name 按全局和事件总结等待事件表,提供了按全局和特定事件总结的等待事件统计信息
file_instances 文件实例表,记录了数据库中各个文件的信息,包括文件路径、文件大小等
file_summary_by_event_name 按事件名总结文件表,提供了按特定事件名总结的文件统计信息
file_summary_by_instance 按实例总结文件表,提供了按实例总结的文件统计信息
mutex_instances 互斥体实例表,记录了数据库中各个互斥体的信息,包括互斥体的名称、状态等
performance_timers 性能计时器表,提供了数据库性能的计时信息,包括执行时间、资源使用情况等
rwlock_instances 读写锁实例表,记录了数据库中各个读写锁的信息
setup_consumers 设置消费者表,记录了数据库设置的各种消费者信息
setup_instruments 设置仪器表,记录了数据库设置的各类性能指标信息
setup_timers 设置定时器表,记录了数据库设置的各类定时器信息
threads 线程表,记录了数据库中的各个线程信息,包括线程ID、线程状态等
  • sys库

五、 SQL语言(背会)

  • DDL:数据定义语言,对数据库结构操作

    create:创建(用户,库,表)

    复制代码
        alter:改变
    ​
        drop:删除
  • DML:数据操作语言,对数据表的操作

    insert:插入

    复制代码
        update:更新
    ​
        delete:删除数据
  • DCL:数据控制语言,针对用户权限设置

    grant:用户赋权

    复制代码
        revoke:移除用户权限
  • DQL:数据查询语言,对数据表的操作

    select:查询

六、mysql数据类型

常用的数据类型有:

  • 整型

  • 浮点型

  • BIT类型

  • 定点数

  • 日期时间类型

  • 字符串

  • NULL类型

1、整型

整数类型 占用字节 无符号数的取值范围 有符号数的取值范围
TINYINT 1 0~255 -128~127
SMALLINT 2 0~65535 -32768~32767
MEDIUMINT 3 0~16777215 -8388608~8388607
INT 4 0~4294967295 -2147483648~2147483647
BIGINT 8 0~18446744073709551615 -9223372036854774808~9223372036854774807

整数列的可选属性有三个:

  • M: 宽度(在0填充的时候才有意义,否则不需要指定)

  • unsigned: 无符号类型(非负)

  • zerofill: 0填充,(如果某列是zerofill,那么默认就是无符号),如果指定了zerofill只是表示不够M位时,用0在左边填充,如果超过M位,只要不超过数据存储范围即可

在 int(M) 中,M 的值跟 int(M) 所占多少存储空间并无任何关系。 int(3)、int(4)、int(8) 在磁盘上都是占用 4 bytes 的存储空间。

各整数数据类型的使用场所

数据类型 应用场景
TINYINT 一般用于枚举数据,比如系统设定取值范围很小且固定的场景。
SMALLINT 可以用于较小范围的统计数据,比如统计工厂的固定资产库存数量等。
MEDIUMINT 用于较大整数的计算,比如车站每日的客流量等。
INT、INTEGER 取值范围足够大,一般情况下不用考虑超限问题,用得最多。比如商品编号。
BIGINT 只有当你处理特别巨大的整数时才会用到。比如双十一的交易量、大型门户网站点击量、证券公司衍生产品持仓等。

2、浮点型

数据类型 字节数 取值范围
FLOAT 4 -2^128~2 ^128,即-3.40E+38~+3.40E+38
DOUBLE 8 -2^1024~ 2^1024,即-1.79E+308~1.79E+308
  • 当浮点数类型使用unsigned修饰无符号时,取值范围将不包含负数。

  • 浮点数的取值范围是理论上的极限值,但根据不同的硬件或操作系统,实际范围可能会小。

  • 浮点数虽然取值范围很大,但精度并不高。float类型的精度为6位或7位,double类型的精度大约为15位。

  • 如果给定的数值超出精度,可能会导致给定的数值与实际保存的数值不一致,发生精度损失。

  • 当一个数字的整数部分和小数部分加起来达到7位时,第7位就会进行四舍五入操作。

  • 要避免使用"="来判断两个浮点数是否相等,因为浮点数是不准确的,存在精度损失。

3、BIT类型(了解)

函数 函数用途
BIT(M) 存储二进制数据
ASCll(M) 获取M的ASCll值
BIN(M) 获取M的二进制值
LENGTH(M) 获取M的数字长度
  • BIT数据类型可用来保存位字段值。BIT(M)类型允许存储M位值。M范围为1~64,默认为1。

  • BIT其实就是存入二进制的值,类似010110。如果存入一个BIT类型的值,位数少于M值,则左补0。如果存入一个BIT类型的值,位数多于M值,MySQL的操作取决于此时有效的SQL模式:如果模式未设置,MySQL将值裁剪到范围的相应端点,并保存裁减好的值。如果模式设置为traditional("严格模式"),超出范围的值将被拒绝并提示错误,并且根据SQL标准插入会失败。

  • 对于位字段,直接使用SELECT命令将不会看到结果,可以用bin()或hex()函数进行读取。

4、定点型

  • DECIMAL在MySQL内部以字符串形式存放,比浮点数更精确。定点类型占M+2个字节

  • DECIMAL(M,D)与浮点型一样处理规则。M的取值范围为0~65,D的取值范围为0~30,而且必须<=M,超出范围会报错。

  • DECIMAL如果指定精度时,默认的整数位是10,默认的小数位为0。

  • NUMERIC等价于DECIMAL。

  • 例如,DECIMAL(5,2)表示的取值范围为-999.99~999.99。

5、日期时间类型

数据类型 字节 取值范围 日期格式 零值
YEAR 1 1901~2155 YYYY 0000
DATE 3 1000-01-01~9999-12-31 YYYY-MM-DD 0000-00-00
TIME 3 -838:59:59~838:59:59 HH:MM:SS 00:00:00
DATETIME 8 1000-01-01 00:00:00~9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00
TIMESTAMP 4 1970-01-01 00:00:01~2038-01-19 03:14:07 YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00
YEAR类型

YEAR类型用来表示年份,在所有的日期时间类型中所占用的存储空间最小,只需要1个字节的存储空间,格式为YYYY。

在MySQL中,可使用以下3种格式指定TEAR类型的值:

使用4位字符串或数字表示,为1901'2155或19012155。

​ 例如,输入2022或2022,插入到数据库中的值均为2022.

使用两位字符串表示,为00~99。

​ 00 ~ '69的值会被转换为2000~2069的YEAR值

​ 70 ~ '99的值会被自动转换为1970~1999的YEAR值

​ 例如,输入22,插入到数据表中的值为2022。

使用两位数字表示,为1~99。

​ 1 ~ 69的值会被转换为2001~2069的YEAR值

​ 70 ~ 99的值会被自动转换为1970~1999的YEAR值

​ 例如,输入22,插入到数据表中的值为2022。

注意:

当使用YEAR类型时,一定要区分0和0。

​ 数字格式的0表示的YEAR值为0000

​ 字符串格式的0表示的YEAR值为2000

DATE类型

DATE类型用来表示日期值,不包含时间部分,需要 3个字节 的存储空间,且其格式为 YYYY-MM-DD 。其中,YYYY表示年份,MM表示月份,DD表示日期。

在MySQL中,可以使用以下4种格式指定DATE类型的值:

以YYYY-MM-DD或者YYYYMMDD字符串格式表示。

以YY-MM-DD或者YYMMDD字符串格式表示。

以YY-MM-DD或者YYMMDD数字格式表示。

使用CURRENT_DATE或者NOW()输入当前系统日期。

注意:

通过"SELECT CURRENT_DATE;"或者"SELECT NOW();"可查询当前日期。

日期中的分隔符"-",还可以使用"."",""/"等符号来表示。

TIME类型

TIME类型用于表示时间值,它的显示形式一般为HH:MM:SS,其中HH表示小时,MM表示分,SS表示秒。

在MySQL中,可以使用以下3种格式指定TIME类型的值:

以HHMMSS字符串或者HHMMSS数学格式表示。

以HH:MM:SS字符串格式表示。

使用CURRENT_TIME或NOW()输入当前系统时间。

DATETIME类型

DATETIME类型在所有的日期时间类型中占用的存储空间最大,总共需要 8 个字节的存储空间,用来表示日期和时间,它的显示形式为YYYY-MM-DD HH:MM:SS。

在MySQL中,可以使用以下4种格式指定DATETIME类型的值:

以YYYY-MM-DD HH:MM:SS或YYYYMMDDHHMMSS字符串格式表示的日期和时间,取值范围为1000-01-01 00:00:00~9999-12-31-23-59-59。

以YY-MM-DD HH:MM:SS或YYMMDDHHMMSS字符串格式表示的日期和时间,

以YYYYMMDDHHMMSS或YYMMDDHHMMSS数字格式表示的日期和时间,

使用NOW()来输入当前系统的日期和时间。

TIMESTAMP类型

TIMESTAMP(时间戳)类型用于表示日期和时间,需要4个字节的存储空间,它的显示形式与DATETIME类型的相同,但取值范围比DATETIME类型的小。

TIMESTAMP类型与DATETIME类型的不同形式:

使用CURRENT_TIMESTAMP来输入系统当前的日期和时间。

无任何输入,或输入NULL时,实际保存的是系统当前日期和时间。

6、字符串型

数据类型 类型说明
CHAR 固定长度字符串
VARCHAR 可变长度字符串
TEXT 大文本数据
ENUM 枚举类型
SET 字符串类型
BINARY 固定长度的二进制数据
VARBINARY 可变长度是二进制数据
BLOB 二进制大对象
CHAR和VARCHAR类型

CHAR和VARCHAR类型都是用来保存字符串数据,两者不同的是,VARCHAR可以存储可变长度的字符串数据。

字符串类型 特点 长度 长度范围 占用的存储空间
CHAR(M) 固定长度 M 0<=M<=255 M个字节
VARCHAR(M) 可变长度 M 0<=M<=65535 (实际长度 + 1) 个字节
TEXT类型

TEXT类型用于保存大文本数据,例如,文章内容,评论等比较长的文本。

数据类型 存储范围 存储空间占用量 特点
TINYTEXT(tinytext) 0~2^8-1 文本长度+2 小文本,可变长度
TEXT(text) 0~2^16-1 文本长度+2 文本,可变长度
MEDIUMTEXT(mediumtext) 0~2^24-1 文本长度+3 中等文本,可变长度
LONGTEXT(longtext) 0~2^32-1 文本长度+4 大文本,可变长度
ENUM类型

ENUM类型又称为枚举类型,其定义格式为:

复制代码
ENUM('值1','值2','值3','值4','值5',....,'值n')
  1. ENUM类型的取值范围需要在定义字段时进行指定。

  2. 设置字段值时,ENUM类型只允许从成员中选取单个值,不能一次选取多个值。

  3. 其所需要的存储空间由定义ENUM类型时指定的成员个数决定。

    • 当ENUM类型包含1~255个成员时,需要1个字节的存储空间

    • 当ENUM类型包含256~65535个成员时,需要2个字节的存储空间

    • ENUM类型的成员个数的上限为65535个

SET类型

SET类型用于保存字符串对象,其定义格式与ENUM类型相似。

复制代码
SET('值1','值2','值3','值4','值5',....,'值n')
  1. 其所需要的存储空间由定SET类型时指定的成员个数决定。

    SET类型包含的成员数 存储空间
    1~8 1个字节
    9~16 2个字节
    17~24 3个字节
    25~32 4个字节
    33~64 8个字节
  2. SET类型在存储数据时成员个数越多,其占用的存储空间越大。

  3. SET类型在选取成员时,与ENUM类型不同,其可以一次选择多个成员。

BINARY和VARBINARY类型

BINARY和VARBINARY类型类似于CHAR和VARCHAR,不同的是,它们所表示的是二进制数据。

类型 特点 长度 长度范围 占用的存储空间
BINARY(M) 固定长度 M 0<=M<=255 M个字节
VARBINARY(M) 可变长度 M 0<=M<=65535 (M+ 1) 个字节
BLOB类型

BLOB类型用于保存数据量比较大的二进制数据,如图片,PDF文档等。

数据类型 存储范围 占用空间
TINYBLOB 0~2^8 -1字节 len+1个字节
BLOB 0~2^16 -1字节(相当于64KB) len+2个字节
MEDIUMBLOB 0~2^24 -1字节(相当于16MB) len+3个字节
LONGBLOB 0~2^32 -1字节(相当于4GB) len+4个字节
JSON数据类型

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式 ,简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。它易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在网络或者程序之间轻松地传递这个字符串,并在需要的时候将它还原为各编程语言所支持的数据格式。

在MySQL 5.7中,就已经支持JSON数据类型。在MySQL中,JSON类型常见的表示方式有2种,分别为JSON数组和JSON对象。

复制代码
#JSON数组
['abc',10,null,true]
#JSON对象
{"k1":"value","k2":10}

7、特殊的NULL类型

  • 所有的类型的值都可以是null,包括int、float等数据类型

  • 空字符串"",不等于null,0也不等于null,false也不等于null

  • 任何运算符,判断符碰到NULL,都得NULL

  • NULL的判断只能用is null,is not null

  • NULL 影响查询速度,一般避免使值为NULL

七、数据库操作命令

库操作命令

  • 查看数据库
复制代码
show databases;
  • 查看所在数据库
复制代码
select database();
  • 查看当前登录用户
复制代码
select user();
  • 查看当前数据库版本
复制代码
select version();
  • 查看用户权限列表
复制代码
show privileges[\G];
  • 查看指定用户的权限
复制代码
show grants for root@localhost\G;
  • 切换数据库
复制代码
use databaseName[;]
  • 创建数据库
复制代码
create database databaseName  [character set utf8];
  • 删除数据库
复制代码
drop database databaseName;
  • 查看支持的字符集
复制代码
SHOW CHARACTER SET;

表结构操作命令

  • 查看数据表
复制代码
show tables;
  • 查看表结构

    desc[describe] tableName;
    [root@mysqld ~]# mysql -e "desc mysql.user"

  • 创建数据表

复制代码
create table tableName(columnName(列名称) dataType(数据类型), ............);
  • 删除数据表
复制代码
drop table tableName;
相关推荐
咋吃都不胖lyh3 小时前
MySQL 多表查询中,联合查询(UNION) 和子查询
mysql·数据分析
Miqiuha3 小时前
sql的表join怎么学?
数据库·sql
TiAmo zhang3 小时前
调查问卷管理系统开发 │ 系统功能概述
数据库·sqlserver
problc3 小时前
PostgreSQL pg_trgm中文模糊匹配优化技巧
数据库·postgresql
我真的是大笨蛋3 小时前
Redis的String详解
java·数据库·spring boot·redis·spring·缓存
lwprain3 小时前
图数据库neo4j desktop2.0初探
数据库·neo4j
先鱼鲨生4 小时前
【MySQL】认识数据库以及MySQL安装
数据库·mysql
peter67684 小时前
pandas学习小结
学习·pandas
机器视觉知识推荐、就业指导4 小时前
STM32 外设驱动模块【含代码】:SG90 舵机模块
stm32·单片机·嵌入式硬件·学习