南阳网站建设公司,人工智能培训班收费标准,网站备案有必要吗,敦煌手机网站设计一. MySQL四大引擎
查看存储引擎
SHOW ENGINES support 字段说明 defaulti的为默认的引擎 为YES表示可以使用 为NO表示不能使用 四大引擎 InnoDB
InnoDB表类型可以看作是对MyISAM的进一步更新产品#xff0c;它提供了事务、行级锁机制和外键约束的功能#xff0c;也是目前… 一. MySQL四大引擎
查看存储引擎
SHOW ENGINES support 字段说明 defaulti的为默认的引擎 为YES表示可以使用 为NO表示不能使用 四大引擎 InnoDB
InnoDB表类型可以看作是对MyISAM的进一步更新产品它提供了事务、行级锁机制和外键约束的功能也是目前MySQL 默认 的存储引擎。 使用场景一般事务性均使用该引擎用途最广如果把握不准使用何种引擎就使用该引萼 修改快支持事务 特点 存储限制64TG 事务支持支持事务 行锁 MylSAM
MyISAM这种引擎是mysql最早提供的。这种引擎又可以分为静态MyISAM、动态MyISAM 和压缩MyISAM三种不管是何种MyISAM表目前它都不支持事务行级锁和外键约束的功能。 使用场景大量查询很少修改的场景 特点 强调了快速读取操作 表锁 存储限制256TG 事务支持不支持事务 Memory
Memory(heap)这种类型的数据表只存在于内存中。它使用散列索引所以数据的存取速度非常快。因为是存在于内存中所以这种类型常应用于临时表中。 使用场景由于易失性可以用于存储在分析中产生的中间表 特点 所有的数据都保存在内存中一旦服务器重启所有memoy存储引擎的表数据会消失但是表结构会保存下来 存储限制取决于RAM(随机存储器) 事务支持不支持事务 archive
archive这种类型只支持select 和 insert语句而且不支持索引。常应用于日志记录和聚合分析方面 使用场景在日志和数据采集的时候可以使用 特点 只允许插入和查询压缩存储节约空间可以实现高并发的插入支持在自增ID上建立索引不支持索引Archive表比MylSAM表要小大约75%比支持事务表格小大约83% 不支持索引自增ID列除外 二. 数据库管理
元数据库简介 记录MySQL自身数据的数据库 元数据库分类
information schema 信息数据库保存mysql所维护的其他数据库信息。 mysql 核心数据库主要负责存储数据库的用户、 权限设置、关键字等。mysql自己需要使用的控制和管理信息。 performance schema 用于mysql的监控数据的存放 相关操作
数据库增删改查及使用
use数据库名 create database if not exists数据库名default charset utfcollate utf8_general_.ci--设置了字符集编码以及不区分大小写 show databases; drop database数据库名
MySQL库
权限相关
用户权限简介
当我们创建过数据库用户后还不能执行任何操作需要为该用户分配适当的访问权限。
关于 MySQL 用户权限简单的理解就是数据库只允许用户做你权利以内的事情不可以越界。比如只允许你执行 select 操作那么你就不能执行 update 操作。只允许你从某个 IP 上连接 MySQL 那么你就不能从除那个 IP 以外的其他机器连接 MySQL 。
在 MySQL 中用户权限也是分级别的可以授予的权限有如下几组
列级别和表中的一个具体列相关。例如可以使用 UPDATE 语句更新表 students 中 student_name 列的值的权限。表级别和一个具体表中的所有数据相关。例如可以使用 SELECT 语句查询表 students 的所有数据的权限。数据库级别和一个具体的数据库中的所有表相关。例如可以在已有的数据库 mytest 中创建新表的权限。全局和 MySQL 中所有的数据库相关。例如可以删除已有的数据库或者创建一个新的数据库的权限。
权限信息存储在 mysql 系统库的 user、db、tables_priv、columns_priv、procs_priv 这几个系统表中。
user 表存放用户账户信息以及全局级别所有数据库权限。db 表存放数据库级别的权限决定了来自哪些主机的哪些用户可以访问此数据库。tables_priv 表存放表级别的权限决定了来自哪些主机的哪些用户可以访问数据库的这个表。columns_priv 表存放列级别的权限决定了来自哪些主机的哪些用户可以访问数据库表的这个字段。procs_priv 表存放存储过程和函数级别的权限。
参考官方文档可授予的权限如下表所示 三. 数据表管理
三大范式 第一范式(1NF)属性不可分割即每个属性都是不可分割的原子项。(实体的属性即表中的列) 列不可再分原子性 例如湖南省长沙市岳麓区浪梅溪湖创新中心2楼 第二范式(2NF)满足第一范式且不存在部分依赖即非主属性必须完全依赖于主属性。(主属性即主键完全依赖是针对于联合主键的情况非主键列不能只依赖于主键的一部分) 主键约束 例如订单项表设计id、单价数量、小计 第三范式(3NF)满足第二范式且不存在传递依赖即非主属性不能与非主属性之间有依赖关系非主属性必须直接依赖于主属性不能间接依赖主属性。A - B, B -C, A - C外键约束 例如患者id、患者姓名同时存在于一张关联表中 外键约束 优化原则
更小通常更好 更小通常更好 更小的磁盘空间、内存、CPU缓存 更少的CPU周期 简单就好 整型比字符串操作代价更小 用时间类型表示日期(date、datetime等)而不用字符串 尽量避免NULL NULL为列的默认值但除非确实需要应尽量避免使用NULL 尽量指定列为NOT NULL,特别是需要建索引的列 查询中包括有NULL的类MySQL更难优化 不利于使用索引 索引统计更复杂 值比较更复杂 用整型值而不是字符串表示IP地址 INET ATON() INET NTOA() MySQL 数据类型
MySQL 中定义数据字段的类型对你数据库的优化是非常重要的。
MySQL 支持多种类型大致可以分为三类数值、日期/时间和字符串(字符)类型。 数值类型
MySQL 支持所有标准 SQL 数值数据类型。
这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC)以及近似数值数据类型(FLOAT、REAL 和 DOUBLE PRECISION)。
关键字INT是INTEGER的同义词关键字DEC是DECIMAL的同义词。
BIT数据类型保存位字段值并且支持 MyISAM、MEMORY、InnoDB 和 BDB表。
作为 SQL 标准的扩展MySQL 也支持整数类型 TINYINT、MEDIUMINT 和 BIGINT。下面的表显示了需要的每个整数类型的存储和范围。
类型大小范围有符号范围无符号用途TINYINT1 Bytes(-128127)(0255)小整数值SMALLINT2 Bytes(-32 76832 767)(065 535)大整数值MEDIUMINT3 Bytes(-8 388 6088 388 607)(016 777 215)大整数值INT或INTEGER4 Bytes(-2 147 483 6482 147 483 647)(04 294 967 295)大整数值BIGINT8 Bytes(-9,223,372,036,854,775,8089 223 372 036 854 775 807)(018 446 744 073 709 551 615)极大整数值FLOAT4 Bytes(-3.402 823 466 E38-1.175 494 351 E-38)0(1.175 494 351 E-383.402 823 466 351 E38)0(1.175 494 351 E-383.402 823 466 E38)单精度 浮点数值DOUBLE8 Bytes(-1.797 693 134 862 315 7 E308-2.225 073 858 507 201 4 E-308)0(2.225 073 858 507 201 4 E-3081.797 693 134 862 315 7 E308)0(2.225 073 858 507 201 4 E-3081.797 693 134 862 315 7 E308)双精度 浮点数值DECIMAL对DECIMAL(M,D) 如果MD为M2否则为D2依赖于M和D的值依赖于M和D的值小数值 日期和时间类型
表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每个时间类型有一个有效值范围和一个零值当指定不合法的MySQL不能表示的值时使用零值。
TIMESTAMP类型有专有的自动更新特性将在后面描述。
类型大小 ( bytes)范围格式用途DATE31000-01-01/9999-12-31YYYY-MM-DD日期值TIME3-838:59:59/838:59:59HH:MM:SS时间值或持续时间YEAR11901/2155YYYY年份值DATETIME81000-01-01 00:00:00 到 9999-12-31 23:59:59YYYY-MM-DD hh:mm:ss混合日期和时间值TIMESTAMP4 1970-01-01 00:00:01 UTC 到 2038-01-19 03:14:07 UTC 结束时间是第 2147483647 秒北京时间 2038-1-19 11:14:07格林尼治时间 2038年1月19日 凌晨 03:14:07 YYYY-MM-DD hh:mm:ss混合日期和时间值时间戳 字符串类型
字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。
类型大小用途CHAR0-255 bytes定长字符串VARCHAR0-65535 bytes变长字符串TINYBLOB0-255 bytes不超过 255 个字符的二进制字符串TINYTEXT0-255 bytes短文本字符串BLOB0-65 535 bytes二进制形式的长文本数据TEXT0-65 535 bytes长文本数据MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据MEDIUMTEXT0-16 777 215 bytes中等长度文本数据LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据LONGTEXT0-4 294 967 295 bytes极大文本数据
注意char(n) 和 varchar(n) 中括号中 n 代表字符的个数并不代表字节个数比如 CHAR(30) 就可以存储 30 个字符。
CHAR 和 VARCHAR 类型类似但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR不同的是它们包含二进制字符串而不要非二进制字符串。也就是说它们包含字节字符串而不是字符字符串。这说明它们没有字符集并且排序和比较基于列值字节的数值值。
BLOB 是一个二进制大对象可以容纳可变数量的数据。有 4 种 BLOB 类型TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。
有 4 种 TEXT 类型TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型可存储的最大长度不同可根据实际情况选择。 枚举与集合类型Enumeration and Set Types
ENUM: 枚举类型用于存储单一值可以选择一个预定义的集合。SET: 集合类型用于存储多个值可以选择多个预定义的集合。 空间数据类型Spatial Data Types
GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION: 用于存储空间数据地理信息、几何图形等。 选择标识符
为标识列选择合适的数据类型非常重要。一般来说更可能用标识列与其他值进行比较例如股关联操作中或者通过标识列寻找其他列。标志列也可能在另外的表中作为外键使用所以为标识列选择数据类型时应该选择跟关联表中的对应列一样的类型。
整数类型通常是标识列最好的选择因为它们很快并且可以适用AUTO_INCREMENT。如果只是少数的状态标识符可以选用TINYINT。 ENUM和SET类型通常是一个糟糕的选择尽管对某些只包含固定状态或者类型的静态“定义表”来说可能是没有问题大。ENUM和SET列适合存储固定信息这样就相对限制了可扩展性。 如果可能应该尽量避免使用字符串类型作为标识列因为他们很耗空间并且通常比数字类型慢。
对于完全“随机”的字符串也要多加注意例如MD5(), SHA1()或者UUID()产生的字符串。这些函数生成的新值会任意分布在很大的空间内这回导致INSERT以及一些SELECT语句变得慢。 用来进行关联操作 在其他表中作为外键 整型通常是标识列的好选择 相关的表中使用相同的数据类型 尽量避免字符串作为标识列尤其是随机生成的字符串如UUID)导致insert.与select都很慢-插入值被随机写到索引的不同位置iset慢容易导致页分裂磁盘随机读取 逻辑上相邻的行被分布在磁盘和内存的不同地方select慢 是MySQL查询缓存失效 如果需要存储UUD,则应将_去除 四. 数据库账号管理
1.用户的管理操作
查询用户
select * from user; 查询用户常见信息
select user,host from user; 2.权限的相关操作 设置权限
创建用户设置密码 create user liao identified by 123456; 给用户授权
增加授权grant ALL on ssm_vue.* to liao%; 收回权部分权限
revoke all on ssm_vue.* from liao%; 授予查看一张表格权限
grant SELECT on ssm_vue.vue to liao%;思维导图: