MySQL的数据结构:数据库(Database)、表(Table)、记录(Record)和字段(Field)

MySQL的数据结构可以看作是一个层次化的组织方式,从最高的层次到最低的层次分别是:数据库(Database)、表(Table)、记录(Record,也就是数据行)和字段(Field,也就是数据列)。

  1. 数据库(Database)
    • 数据库是最高层次的存储结构,它可以包含多个表、视图、存储过程、触发器等数据库对象。
    • 在MySQL中,一个数据库对应一个独立的命名空间,不同的数据库中可以存在同名的表。
    • 数据库用于逻辑上组织和管理相关的数据表和其他对象。
  2. 表(Table)
    • 表是数据库中存储数据的具体结构,它由行和列组成。
    • 每一列有一个特定的数据类型,定义了该列可以存储的数据种类(如整数、字符串、日期等)。
    • 表中的每一行代表一条记录,包含了按列组织的数据。
  3. 记录(Record)/ 数据行(Row)
    • 记录是表中的一行数据,它包含了表中所有列对应的一个值。
    • 每条记录通常有一个唯一标识符,称为主键(Primary Key),用于唯一地标识这条记录。
  4. 字段(Field)/ 数据列(Column)
    • 字段是表结构中的一个元素,它定义了数据的类型、约束等信息。
    • 表中的每一列对应一个字段,字段名用于标识这一列。

关系:

  • 数据库包含表,表是数据库的组成部分。
  • 表包含记录,记录是表中的一行数据。
  • 每条记录由多个字段组成,字段定义了表中数据的具体结构。

相关语句: 

//创建数据库
CREATE DATABASE 数据库名;

//在数据库中创建表
//mytable是新表的名称,id、name、age和email是表中的字段。
//id字段是一个自动增长的整数,用作主键。
//name是一个最大长度为50的字符串,age是一个整数,email是一个唯一且最大长度为100的字符串。
USE mydatabase;  
CREATE TABLE mytable (  
    id INT AUTO_INCREMENT PRIMARY KEY,  
    name VARCHAR(50) NOT NULL,  
    age INT,  
    email VARCHAR(100) UNIQUE  
);

//插入记录
//在mytable表中插入一条新记录,设置name为'John Doe',age为30,email为'john@example.com'。
//因为id字段是自动增长的,所以在插入记录时不需要指定id的值
INSERT INTO mytable (name, age, email) VALUES ('John Doe', 30, 'john@example.com');

//向已存在的表中添加新字段
//向mytable表中添加一个新的字段phone,它是一个最大长度为20的字符串。
ALTER TABLE mytable ADD phone VARCHAR(20);
//修改字段数据类型
//把mytable表中的age字段从INT类型修改为TINYINT类型。
ALTER TABLE mytable MODIFY age TINYINT;
//修改字段名和/或数据类型
//把mytable表中的age字段改名为years_old,并且将其数据类型从INT修改为SMALLINT。
ALTER TABLE mytable CHANGE age years_old SMALLINT;
//修改字段约束
//修改email字段的数据类型为VARCHAR(100),并设置它为非空(NOT NULL),同时指定一个默认值('noemail@example.com')。
ALTER TABLE mytable MODIFY email VARCHAR(100) NOT NULL DEFAULT 'noemail@example.com';

 

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个通用的记录数据库增删改具体数据变化的MySQL触发器: ``` CREATE TRIGGER record_table_changes_trigger AFTER INSERT ON `database`.`table` FOR EACH ROW BEGIN INSERT INTO `database`.`table_changes`(`table_name`, `action`, `field_name`, `old_value`, `new_value`, `change_time`) SELECT 'table', 'INSERT', column_name, NULL, NEW.column_name, NOW() FROM information_schema.columns WHERE table_name = 'table'; END; CREATE TRIGGER record_table_changes_trigger AFTER UPDATE ON `database`.`table` FOR EACH ROW BEGIN INSERT INTO `database`.`table_changes`(`table_name`, `action`, `field_name`, `old_value`, `new_value`, `change_time`) SELECT 'table', 'UPDATE', column_name, OLD.column_name, NEW.column_name, NOW() FROM information_schema.columns WHERE table_name = 'table'; END; CREATE TRIGGER record_table_changes_trigger AFTER DELETE ON `database`.`table` FOR EACH ROW BEGIN INSERT INTO `database`.`table_changes`(`table_name`, `action`, `field_name`, `old_value`, `new_value`, `change_time`) SELECT 'table', 'DELETE', column_name, OLD.column_name, NULL, NOW() FROM information_schema.columns WHERE table_name = 'table'; END; ``` 该触发器会在插入、更新或删除中的一条记录时,记录该操作具体的数据变化。例如,当更新一条记录时,该触发器会记录记录中被修改的字段名、修改前的值和修改后的值。 注意:该触发器需要在每个需要记录变化的上单独创建,且需要将 `database` 和 `table` 替换为实际的数据库名和名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值