专为男人做的网站,专业网站开发报价,企业网站轮播图怎么做,莱州相亲网站1000.04.CS.DB-Database-Relational-MySQL-3.3.创建和管理表-Created: 2023-03-08.Thursday17:39 1. 创建和管理表
在 MySQL 中#xff0c;创建和管理表是数据库操作的基础。以下是创建和管理表的主要步骤和方法。
1.1 定义表结构
定义表结构包括指定表的名称、列的名称和数… 1000.04.CS.DB-Database-Relational-MySQL-3.3.创建和管理表-Created: 2023-03-08.Thursday17:39 1. 创建和管理表
在 MySQL 中创建和管理表是数据库操作的基础。以下是创建和管理表的主要步骤和方法。
1.1 定义表结构
定义表结构包括指定表的名称、列的名称和数据类型、主键和外键等。
示例
CREATE TABLE example_table (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL,description VARCHAR(100)
);1.2 设置主键和外键
主键用于唯一标识表中的每一行记录外键用于建立表之间的关系。
设置主键
CREATE TABLE example_table (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL
);设置外键
CREATE TABLE orders (order_id INT PRIMARY KEY AUTO_INCREMENT,customer_id INT,FOREIGN KEY (customer_id) REFERENCES customers(id)
);1.3 处理 NULL 值
在数据库设计和操作中正确处理 NULL 值对于数据完整性和应用程序逻辑非常重要。
1.3.1 定义列时设置 NULL 或 NOT NULL
在创建表时可以指定列是否允许 NULL 值
CREATE TABLE example_table (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL,description VARCHAR(100) NULL
);1.3.2 插入数据时处理 NULL 值
在插入数据时未指定值的列会默认设置为 NULL如果允许 NULL
INSERT INTO example_table (name) VALUES (Item 1);
-- description 列将被设置为 NULLmysql SELECT * FROM example_table;
-------------------------
| id | name | description |
-------------------------
| 1 | Item 1 | NULL |
| 2 | Item 2 | NULL |
-------------------------
2 rows in set (0.02 sec)1.3.3 ERROR 1138 (22004): Invalid use of NULL value : 更新数据中的 NULL 值
当尝试修改列定义为 NOT NULL 时如果表中存在 NULL 值MySQL 会抛出 ERROR 1138 (22004): Invalid use of NULL value 错误。为了避免此错误需要先将所有 NULL 值更新为非 NULL 值然后再修改列定义。
mysql ALTER TABLE test_table MODIFY COLUMN description VARCHAR(100) NOT NULL;
ERROR 1138 (22004): Invalid use of NULL value在修改列为 NOT NULL 之前需要将现有的 NULL 值更新为非 NULL 值
UPDATE example_table SET description WHERE description IS NULL;1.3.4 ERROR 1364 (HY000): Field description doesnt have a default value : 修改列定义为 NOT NULL 并设置默认值
在将列设置为 NOT NULL 后如果在插入数据时没有为该列提供值则会出现 ERROR 1364 (HY000): Field description doesnt have a default value 错误。这是因为该列不允许 NULL 值并且没有默认值。
mysql INSERT INTO test_table (name) VALUES (Item 4), (Item 3);
ERROR 1364 (HY000): Field description doesnt have a default value为了避免插入数据时未指定列值导致的错误可以在修改列为 NOT NULL 时设置默认值
ALTER TABLE example_table MODIFY COLUMN description VARCHAR(100) NOT NULL DEFAULT ;1.3.5 查询时处理 NULL 值
在查询时可以使用 IFNULL 或 COALESCE 函数处理 NULL 值
SELECT id, name, IFNULL(description, No Description) AS description FROM example_table;or
SELECT id, name, IFNULL(description, ) AS description FROM example_table;1.3.6 NULL 值的比较
在 SQL 中使用 IS NULL 和 IS NOT NULL 来检查 NULL 值而不是使用等号
SELECT * FROM example_table WHERE description IS NULL;
SELECT * FROM example_table WHERE description IS NOT NULL;1.4 设置默认值
设置列的默认值可以确保在插入数据时未指定列值时列会自动使用默认值。
示例
CREATE TABLE example_table (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL,description VARCHAR(100) NOT NULL DEFAULT No Description
);1.5 修改表结构
在实际应用中可能需要修改表结构以适应业务需求的变化。可以使用 ALTER TABLE 语句来添加、删除或修改列。
添加列
ALTER TABLE example_table ADD COLUMN created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP;删除列
ALTER TABLE example_table DROP COLUMN description;修改列
ALTER TABLE example_table MODIFY COLUMN name VARCHAR(100) NOT NULL;2 实践举例
2.1 处理 NULL 值的方法
在 SQL 查询中处理 NULL 值在代码中处理 NULL 值
2.1.1 在 SQL 查询中处理 NULL 值
在 SQL 查询中可以使用 IFNULL 函数来替换 NULL 值。例如可以将 NULL 值替换为空字符串
SELECT F_channel, F_channel_error_code, IFNULL(F_channel_error_msg, ) AS F_channel_error_msg, F_inner_error_code, F_interface, F_strategy
FROM lepay.t_channel_error_code_config;2.1.2 在代码中处理 NULL 值
在代码中应该检查 MYSQL_ROW 数组中的值是否为 NULL而不是检查字符串 “NULL”。 MYSQL_ROW 是 MySQL C API 中定义的类型通常通过 mysql.h 头文件引入。在 C 中处理 MySQL 数据库可以使用 MySQL 提供的 C API 或者使用更高级的封装库如 mysql。 例如在 C 中可以手动检查 NULL 值。
std::string channelErrorMsg (row[2] ! nullptr) ? row[2] : ; // 处理 NULL 值References
https://dev.mysql.com/doc/https://dev.mysql.com/doc/refman/8.0/en/data-types.htmlhttps://dev.mysql.com/doc/refman/8.0/en/working-with-null.html