mysql数据库对象有哪些

表是一种存储数据的结构,行作为记录,列作为字段。
核心对象存储数据。
时间、地点、人数:不确定。

视图是存储查询语句的虚拟表。
不保存任何数据。
提高安全性并简化查询。
时间、地点、人数:不确定。

索引是一种提高查询效率的数据结构。
加快搜索速度。
B树索引,哈希索引。
时间、地点、人数:不确定。

存储过程是一组SQL语句。
存储在数据库中。
提高效率和安全性。
时间、地点、人数:不确定。

触发器是特殊的存储过程。
自动触发执行 INSERT、UPDATE 和 DELETE。
实施业务逻辑。
时间、地点、人数:不确定。

约束限制数据类型。
确保数据准确。
主键、外键、唯一、勾选、不为空。
时间、地点、人数:不确定。

计算机八股——数据库MySQL

说起来,我在数据库方面确实踩了不少坑。
记得有一次,2 01 2 年的时候,我在一家小公司做一个项目,当时使用的是MySQL数据库。
那时我对关系型数据库一无所知,所以我愚蠢地认为所有非关系型数据库都可以使用,但我犯了一个很大的错误。

当时我们公司有个项目,数据量不大,但是需求变化很快。
我想过用MySQL存储过程来写一些逻辑。
结果写了一个半成品,发现效率极低。
当时我不懂索引和范式,就随便写了,结果导致数据库性能极差。
有一次,老板看到系统卡住了,直接把责任推到了我身上。
那时我真的很紧张。

后来痛定思痛,开始研究MySQL。
那时我每天都在技术论坛上看大师的帖子,从基础数据类型到存储引擎再到事务处理一步步学习。
记得有一次,我花了整整一周的时间才明白InnoDB和MyISAM的区别,以及那些B+树和哈希索引。

后来我学会了如何创建索引、如何优化查询、如何处理并发问题。
曾经,公司有一个大型项目,有数百万数据。
通过优化SQL语句和调整索引,我将查询速度提高了几十倍。
项目成功了,我松了口气。

现在回想起来,当时确实踩了很多坑,但也学到了很多东西。
正如您所说,了解数据库的关键概念,例如主键、外键以及那些范例,对于数据库设计和维护确实很有帮助。
另外,区分DDL、DML、DCL操作也是一项基本功。

总之,说到数据库,理论固然重要,但实践经验更重要。
正如我之前所说,理论是死的,实践是活的。
越练习,越总结,就越能慢慢进步。
哈哈,现在回想起来,那些辛苦的岁月也算是一种成长。

mysql数据库类型有哪些?如何选择合适的数据类型

您需要仔细研究 MySQL 类型。
主要分为几种类型:数字、日期、字符、二进制和特殊值。
选择类型时要考虑很多方面,不要盲目决定。

1 .分类 数值类型:整数类型包括TINYINT(1 字节)、SMALLINT(2 字节)、INT(4 字节)和BIGINT(8 字节)。
例如,对于用户ID,INT就足够了。
如果范围特别大,比如超过2 1 亿,那么就必须使用BIGINT。
浮点类型包括FLOAT和DOUBLE,定点类型包括DECIMAL(M、D)。
对于财务数据,必须使用 DECIMAL。
日期时间类型包括DATE(日期)、TIME(时间)、DATETIME(日期+时间)、TIMESTAMP(时间戳,范围1 9 7 0-2 03 8 )。
例如,只需使用 DATE 表示出生日期,使用 TIMESTAMP 表示创建记录的时间,该信息就会自动更新。

字符类型:CHAR(n)具有固定长度,适合国家代码等短文本; VARCHAR(n) 具有可变长度,例如名称和地址。
长文本包括TEXT和BLOB,而BLOB存储的是二进制数据,例如图像。
二进制类型包括BINARY(n)和VARBINARY(n),它们与字符类型类似,但存储的是二进制数据。
例如,VARBINARY 非常适合存储加密数据。

特殊类型包括ENUM(枚举,取值范围有限)、SET(多选集)、JSON(存储结构化数据)。
与性别字段一样,ENUM('male','female') 就可以了。

2 选择类型时要小心 数据范围:确保类型可以容纳最大值。
例如,TINYINT UNSIGNED (0-2 5 5 ) 用于年龄,BIGINT 用于全球人口计数。
约束:使用 NOT NULL 避免空值,或使用 CHECK 约束来限制范围,例如 DECIMAL(1 0,2 ) 限制为两位小数。
优化存储空间:尽量选择足够小的类型。
例如,对于短字符串,请使用 CHAR(1 0) 而不是 VARCHAR(2 5 5 )。
不要过度设计。
如果 INT 足够,则不要使用 BIGINT,每行节省 4 个字节。
查询性能:索引列建议使用整数或短字符串,比长VARCHAR效率更高。
避免隐式转换,例如在比较日期时使用 DATE 而不是 DATETIME,以节省计算成本。

3 现实生活中的例子 用户表设计: sql 创建表用户( id INT AUTO_INCRMENT PRIMARY KEY, -
自增ID,INT就够了 username VARCHAR(5 0) NOT NULL, -
用户名,可变长度且不为空 出生日期 DATE,-
出生日期,仅限 DATE profile_text TEXT, -
关于长文本 status ENUM('active','inactive') DEFAULT 'active', -
列出状态 created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP -
自动记录时间 );
内存优化比较:一个错误的例子是VARCHAR(1 000),它存储了1 0个字符的标签,这浪费了空间。
正确的方法是使用 VARCHAR(2 0) 或 CHAR(1 0)(如果是固定长度)。

4 预防 可扩展性:比如未来用户ID可能会超过2 1 亿,所以提前选择BIGINT。
兼容性:TIMESTAMP受时区影响,所以在分布式系统中使用时要谨慎; DATETIME 更稳定。
JSON类型:MySQL 5 .7 +支持,适合动态字段,但复杂查询可能不如关系型设计高效。

说实话,选择数据类型需要深思熟虑、综合考虑。