SHOW CREATE TABLE
语句查看建表语句。MySQL数据库的建表语句是用于在数据库中创建新表的SQL语句,其语法和用法可以根据具体需求进行灵活调整,以下是一些常见的MySQL建表语句示例及其详细解释:
基本建表语句
1、最简单的建表语句:
“`sql
CREATE TABLE name_info(
id int NOT NULL,
name char(12)
);
“`
这个语句创建了一个名为name_info
的表,包含两个列:id
(整型,不允许为空)和name
(字符型,长度为12)。
2、设置主键的建表语句:
“`sql
CREATE TABLEname_info
(
id
int(11) NOT NULL,
name
varchar(12) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (id
)
);
“`
在这个语句中,id
列被设置为了表的主键,确保了每行数据的唯一性。
3、带默认值和组合索引的建表语句:
“`sql
CREATE TABLEname_info
(
id
int(11) NOT NULL AUTO_INCREMENT,
name
varchar(12) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
year
int(12) DEFAULT ’18’,
PRIMARY KEY (id
),
KEYcs
(name
,year
)
);
“`
这个语句不仅设置了id
为主键,还为name
和year
列创建了一个组合索引,并设置了year
列的默认值为18。
高级建表选项
1、使用IF NOT EXISTS避免错误:
“`sql
CREATE TABLE IF NOT EXISTS tasks (
task_id INT(11) NOT NULL AUTO_INCREMENT,
subject VARCHAR(45) DEFAULT NULL,
start_date DATE DEFAULT NULL,
end_date DATE DEFAULT NULL,
description VARCHAR(200) DEFAULT NULL,
PRIMARY KEY (task_id)
) ENGINE=InnoDB;
“`
这个语句使用了IF NOT EXISTS
选项,当表已存在时,不会再次创建,从而避免了错误。
2、从另一张表复制表结构及数据:
“`sql
CREATE TABLE new_table AS SELECT * FROM existing_table;
“`
这个语句会创建一个新表new_table
,其结构和数据都与existing_table
相同。
3、只复制表结构,不复制数据:
“`sql
CREATE TABLE new_table LIKE existing_table;
“`
这个语句仅复制existing_table
的表结构,不包括数据。
索引类型
普通索引:用于提高查询性能,允许重复值和空值。
唯一索引:索引列的值必须唯一,但允许空值,如果是组合索引,则列值的组合必须唯一。
主键索引:特殊的唯一索引,不允许空值,一个表只能有一个主键。
全文索引:用于全文搜索。
空间索引:用于地理数据存储。
相关FAQs
问题1:如何向已有表中添加索引?
答:可以使用ALTER TABLE
语句来向已有表中添加索引。
ALTER TABLE tableName ADD INDEX indexName(columnName);
tableName
是要操作的表名,indexName
是索引名称,columnName
是要添加索引的列名。
问题2:如何删除表中的索引?
答:可以使用DROP INDEX
命令来删除表中的索引。
DROP INDEX indexName ON tableName;
indexName
是要删除的索引名称,tableName
是包含该索引的表名,需要注意的是,主键约束不能使用此命令删除,需要使用ALTER TABLE
命令配合DROP PRIMARY KEY
子句来删除。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1105564.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复