目录
表操作至少会涉及如下两类SQL语句:
本篇博客讲的是表的DDL操作,也就是操作表结构的SQL语句。
创建表
创建表的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];
说明一下:
使用show engines
SQL可以查看当前MySQL支持的存储引擎。如下:
可以看到我当前的MySQL默认使用的是InnoDB存储引擎,如果我建表时没有指定使用哪种存储引擎,那么就会默认使用InnoDB存储引擎。
创建表案例
在创建表之前需要先选中一个数据库,然后在数据库中创建表,这里我们先创建一个数据库。如下:
数据库创建完毕后选中数据库,在该数据库中创建一个user表,并在建表时指定采用MyISAM存储引擎。如下:
表创建完毕后在数据库的数据存储路径下的table_operation目录中,就会对应增加三个文件。如下:
说明一下:
查看表结构
使用desc 表名
SQL可以查看表的结构。如下:
说明一下:
如果想要查看创建表时的相关细节,可以使用show create table 表名
SQL。如下:
修改表
修改表的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 列名 新列名 新列属性;
修改表的过程中可能会影响到表中的数据,为了演示这个过程,我们在修改表之前先在user表中插入两条数据。如下:
一、新增列
在user表中新增一列用于保存用户的照片路径。如下:
说明一下: 新增列SQL中的after表示将该列新增到哪一列之后,如果想要将新增的列放到第一列,可以将after及其之后的SQL换成not null first
。
新增列后可以通过desc命令确认新增成功,这时再插入一条用户记录后查看表中信息。如下:
可以看到在新增列之前插入表中的两条记录对应的path值为NULL,因此新增列后可能还需要对原来插入的记录进行修改。
二、修改列类型
将user表中password列的类型由char(30)改成char(50)。如下:
说明一下: 如果需要修改列类型后仍然保留comment字段,需要在修改时重新指定comment字段。
三、修改列名
将user表中password列的列名改成passwd。如下:
四、修改表名
将user表的表名改成employee。如下:
五、删除列
将employee表中的path列删除。如下:
注意: 删除列后,该列对应的所有数据都没有了。
删除表的SQL如下:
DROP [TEMPORARY] TABLE [IF EXISTS] table_name;
说明一下:
将employee表删除。如下: