目录
创建表
查看表结构
修改表
删除表
表的操作会涉及两类SQL语句:
DDL数据定义语言:比如建表,删表,改表,新增列,删除列等。
DML数据操作语言:比如插入记录、删除记录、修改记录等。
创建表
SQL语句如下:
CREATE TABLE [IF NOT EXISTS] table_name(
field1 datatype1 [COMMENT '注释信息'],
field2 datatype2 [COMMENT '注释信息'],
field3 datatype3 [COMMENT '注释信息']
)[CHARSET=charset_name] [COLLATE=collation_name] [ENGINE=engine_name];
解释说明:
SQL中大写的为关键字,[]为可选项。
- [IF NOT EXISTS]:可选参数,表示如果表不存在,则创建表。
- table_name:表示要创建的表的名称。
- field1, field2, field3:表示表的各列的名称。
- datatype1, datatype2, datatype3:表示表的各列的数据类型。
- [COMMENT '注释信息']:可选参数,用于为表的字段提供注释信息。
- [CHARSET=charset_name]:可选参数,用于指定表的字符集。
- [COLLATE=collation_name]:可选参数,用于指定表的校对规则。
- [ENGINE=engine_name]:可选参数,用于指定表的存储引擎。
使用show engines;
SQL可以查看当前MySQL支持和默认的存储引擎。如下:
创建表之前要先选中一个数据库,然后在数据库中建表:
在/etc/my.cnf即mysql的配置文件可以看到数据库的存储路径
即:datadir=/usr/local/mysql/data
在改路径下可以看到创建的数据库,其实是一个目录,进入目录可以看到对应的表:
采用不同的存储引擎,创建表时所产生的文件不一样:
说明:
-
InnoDB引擎(默认):
- 表结构文件:.frm文件,包含表的定义和结构。
- 数据文件:.ibd文件,包含表的数据和索引。
- 事务日志文件:.ib_logfile文件,记录了InnoDB引擎的事务日志。
- 重做日志文件:.ib_redolog文件,记录了InnoDB引擎的重做日志,用于恢复。
- 临时表空间文件:.ibtmp文件,用于存储临时表等临时数据。
-
MyISAM引擎:
- 表结构文件:.frm文件,包含表的定义和结构。
- 数据文件:.MYD文件,包含表的数据。
- 索引文件:.MYI文件,包含表的索引。
-
Memory引擎:
- 表结构文件:.frm文件,包含表的定义和结构。
- 数据文件:存储在内存中,没有独立的物理文件。
-
CSV引擎:
- 表结构文件:.frm文件,包含表的定义和结构。
- 数据文件:以.csv格式存储数据,通常是一个文本文件,可以直接使用文本编辑器打开和编辑。
查看表结构
使用desc 表名;SQL查看表的结构:
说明:
- Field表示该字段的名字。
- Type表示该字段的类型。
- Null表示该字段是否允许为空。
- Key表示索引类型,比如主键索引为PRI。
- Default表示该字段的默认值。
- Extra表示该字段的额外信息说明。
要查看创建表时的相关细节,可以使用show create table 表名;
SQL。加上\G可以使其格式方便查看,如下:
修改表
对应SQL如下:
ALTER TABLE table_name ADD 新增列名 新增列的属性;
ALTER TABLE table_name MODIFY 列名 修改后的列属性;
ALTER TABLE table_name DROP 列名;
ALTER TABLE table_name RENAME [TO] 新表名;
ALTER TABLE table_name CHANGE 列名 新列名 新列属性;
ADD用于新增列,MODIFY用于修改列属性,DROP用于删除列,RENAME用于修改表名, CHANGE用于修改列名和列属性。
比如:
可以发现表的创建信息和表的详细信息都改变了。
删除表
使用下面SQL:
DROP [TEMPORARY] TABLE [IF EXISTS] table_name;
例如:
TEMPORARY说明:
使用TEMPORARY
关键字在创建表语句中可以创建临时表。临时表是在与服务器的会话结束时自动消失的。以下是与临时表相关的总结:
- 使用
TEMPORARY
关键字在创建表语句中可以创建临时表。 - 临时表的名字可以与某个已有的永久表相同。当有临时表存在时,对应的永久表会被隐藏,即无法访问。
- 若要删除临时表,需要使用
DROP
语句,并在表名前加上TEMPORARY
关键字。这是为了避免在重新连接后(临时表已不存在)时,无意中使用DROP
删除了对应的永久表。 - 临时表只在当前会话中可见,并且对其他会话是不可见的。当会话终止时,临时表会自动删除,不会占用数据库中的存储空间。
- 临时表通常用于存储临时数据,例如在复杂查询中使用临时表来存储中间结果。
- 临时表的数据只在当前会话中有效,不会对其他会话产生影响。每个会话都有自己的临时表的副本。
使用临时表可以有效地管理临时数据,避免对永久表造成干扰,并且能够在会话结束时自动清理临时数据。