目录
一、创建表
语法:
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;
说明:
- field 表示列名
- datatype 表示列的类型
- character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
- collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准
示例:
mysql> create table users(
-> id int,
-> name varchar(20) comment '用户名',
-> password char(32) comment '用户密码,最多为32位',
-> birthday date comment '生日'
-> );
如果不设置字符集 、校验规则、存储引擎,系统会使用默认的选项。
可以看到Linux目录下有库对应的目录和表对应的文件。
二、查看表结构
desc 表名;
示例:
- Field: 字段的名称。
- Type: 字段的MySQL数据类型。
- Null: 这个字段是否可以为NULL。YES表示可以为NULL,NO表示不能为NULL。
- Key: 表示这个字段是否是索引的一部分。
PRI表示这个字段是主键,
UNI表示这个字段是唯一索引的一部分,
MUL表示这个字段是多列索引的一部分。 - Default: 表示这个字段的默认值。
如果这个字段可以有默认值,并且默认值是字符串类型,那么默认值会以单引号包围。 - Extra: 这个字段包含了一些额外的信息,如是否为自动增长(auto_increment)、是否为非空(not_null)等。Extra字段为空,这意味着没有额外的信息。
三、修改表
在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。
3.1 添加新列
ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column
datatype]...);
圆括号()可以加也可以不加,方括号[ ]不用加。
示例:添加名为电话号码的新列
可以在选项中使用 [after 列名] 指定在那一列后面。
3.2 修改列属性
ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column
datatype]...);
将users表中的name列的数据类型从VARCHAR(20)更改为VARCHAR(50),可以使用以下命令:ALTER TABLE users MODIFY name VARCHAR(50);
3.3 删除列属性
ALTER TABLE tablename DROP (column);
删除字段一定要小心,因为删除字段及其对应的列数据都没了。
3.4 修改表名
alter table 旧表名 rename to 新表名;
to 可省略,例如:alter table users rename employee;
3.5 向表中插入
insert into 表名 values(值1, 值2, 值3, ...);
insert into 表名 (列1, 列2, 列3, ...) values(值1, 值2, 值3, ...);
- 方法1需要提供表中所有列的值,并且这些值必须与表中的列顺序和数据类型相匹配。
- 方法2允许指定哪些列应该被插入,并且只提供这些列的值。如果不提供某个列的值,MySQL将自动为该列分配默认值(如果存在的话)。
3.6 修改列名
alter table 表名 change 旧列名 新列名 列属性;
需要对新列名再次设置属性。
四、删除表
语法格式:
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...;
- 使用TEMPORARY时,它告诉MySQL删除一个临时表
- IF EXISTS是一个可选的子句,如果使用它,当指定的表不存在时,MySQL将不会抛出错误。
示例:
drop table t1;
在MySQL中,DROP TABLE语句用于删除表。这个操作是不可逆的,一旦执行,表及其所有数据和结构都会被永久删除。在执行删除操作之前,要确保用户有足够的权限,并且已经备份了相关数据。