ENGINE=InnoDB AUTO_INCREMENT=100000000 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
时间: 2023-09-24 17:03:59 浏览: 47
ENGINE是用于指定表的存储引擎类型的关键字。在这个例子中,使用的存储引擎是InnoDB。
AUTO_INCREMENT=100000000是用于指定自增长列的初始值。在这个例子中,自增长列的初始值为100000000。
DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci是用于指定表的默认字符集和校对规则。在这个例子中,字符集为utf8mb4,校对规则为utf8mb4_0900_ai_ci。
综合起来,这个语句创建了一个使用InnoDB存储引擎的表,其中包含一个自增长列,初始值为100000000,并且使用utf8mb4字符集和utf8mb4_0900_ai_ci校对规则。
相关问题
ENGINE=INNODB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC
这是MySQL中创建表时的一些参数设置,其中包括表的引擎类型、字符集、排序规则和行格式等。具体含义如下:
- ENGINE=InnoDB:指定表的存储引擎为InnoDB,它是MySQL的默认事务型存储引擎,支持ACID事务和行级锁等特性。
- AUTO_INCREMENT=11:指定表的自增长起始值为11,即下一个插入的记录的主键值为11。
- DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci:指定表的字符集为utf8mb4,排序规则为utf8mb4_0900_ai_ci,即采用Unicode编码,支持存储4字节的字符,排序规则为根据字符的Unicode编码进行排序,忽略大小写和重音符号等差异。
- ROW_FORMAT=DYNAMIC:指定表的行格式为Dynamic,即动态行格式,它可以根据记录的大小自动选择使用COMPACT、REDUNDANT或者DYNAMIC行格式,以达到更好的存储效率。
下面是一个示例,演示如何创建一个使用上述参数的表:
```sql
CREATE TABLE `example` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC;
```
有两个表:CREATE TABLE `orders` ( `id` int NOT NULL AUTO_INCREMENT, `order_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `total` decimal(10,0) NOT NULL, `uid` int DEFAULT NULL, PRIMARY KEY (`id`), KEY `uid` (`uid`), CONSTRAINT `order_ibfk_2` FOREIGN KEY (`uid`) REFERENCES `user` (`id`) ON DELETE SET NULL ON UPDATE RESTRICT ) ENGINE=InnoDB AUTO_INCREMENT=68 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE `article_cat` ( `id` int NOT NULL AUTO_INCREMENT, `cat_name` varchar(20) NOT NULL, `parent_id` int DEFAULT NULL, `show_in_nav` tinyint(1) DEFAULT NULL, `sort_order` smallint DEFAULT NULL, `create_time` datetime DEFAULT NULL, `update_time` datetime DEFAULT NULL, `deleted` int(1) unsigned zerofill DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
根据你提供的表结构,我们可以进行一对多查询,查询订单(orders)及其对应的文章分类(article_cat)信息。
首先,我们需要在Order实体类中定义一个属性,用于保存与文章分类的关联关系。可以使用@OneToMany注解来标识一对多关系,并指定关联的属性名:
```java
public class Order {
//...
@OneToMany(mappedBy = "order")
private List<ArticleCat> articleCats;
//...
}
```
接下来,在ArticleCat实体类中定义一个属性,用于保存与订单的关联关系。可以使用@ManyToOne注解来标识多对一关系,并指定关联的属性名:
```java
public class ArticleCat {
//...
@ManyToOne
@JoinColumn(name = "order_id")
private Order order;
//...
}
```
在进行查询时,我们可以使用MyBatis-Plus提供的Wrapper对象来构建查询条件。通过使用leftJoin方法进行关联查询,并使用select方法指定要查询的字段:
```java
public List<Order> selectOrderWithArticleCats() {
return orderMapper.selectList(new QueryWrapper<Order>()
.select("orders.id", "orders.order_time", "orders.total", "article_cat.id as article_cat_id", "article_cat.cat_name as article_cat_name")
.leftJoin("article_cat", "orders.id = article_cat.order_id")
.eq("orders.id", 1)
);
}
```
以上是一个简单的示例,通过关联查询查询订单及其对应的文章分类信息。你可以根据实际情况进行修改和扩展。
希望对你有所帮助!如果还有其他问题,请继续提问。