要在mysql中的数据库创建表,首先要进入进入某个数据库,我们可以使用如下命令
use 数据库名;
例如,进入test1数据库
创建表
create table table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;
- field:字段名
- datatype:该字段的数据类型
- character set:指定字符集,若没有指定,与数据库使用的字符集一致
- collate:指定校验集,若没有指定,与数据库使用的校验集一致
- engine:指定存储引擎
例如,我们创建一个名为 t1 的表,其内容有两列,第一列为id,类型为 int,第二列为name,类型为 varchar(10),并设置字符集为utf8,校验集为utf8_general_ci,存储引擎为MyIsam。
同时我们可以查看/var/lib/mysql/test1
目录下出现了三个文件:t1_375.sdi
,t1.MYD
,t1.MYI,
这三个文件共同维护了t1
这张表。实际上也可看出,数据库本质是一个目录,而其中的表是一个个文件。
查看表
查看当前数据库有那些表
show tables;
查看表的结构
describe/desc 表名;
Field
:字段名Type
:字段的数据类型Null
:该列是否允许为空Key
:索引类型Default
:默认值Extra
:扩充
查看建表时的语句
show create table 表名;
例如,我们可以查看创建 t1 时的语句。
我们可以将语句末尾的 ; 改为 \G 选项将格式简单化。
不过我们可以看到输出的建表语句与我们输入的语句并不完全相同,这是因为MySQL
会对输入的语句进行优化,统一格式化,比如说MySQL
建议将关键字全部大写,我们以小写的语句创建表格底层会被转化为大写。
修改表
添加行数据
insert into 表名 [(列名,列名...)] values (对应列的数据,对应列的数据...)
[,(对应列的数据,对应列的数据...),...];
[ ]中为可选项,填入表的列 [(列名,列名...)] 可以省略表示全插入,也可以 ( ) 中指定某些列部分插入,[,(对应列的数据,对应列的数据...),...] 表示可以添加多行数据,每行数据包含在 ( ) 中,行与行之间用逗号隔开。
例如
查看表中的数据
查看所有数据
select * from 表名;
例如我们查看刚刚添加的所有数据,可以发现如果部分插入时,那些没有插入数据的列值为NULL
也可以查看特定列的数据
select 列名[,列名,...] from 表名;
[ ]中为可选项,可以查看多列,列与列之间用逗号隔开。
还可以通过添加where选项添加条件查询,以便只返回满足特定条件的行
select * from 表名 where 条件;
例如我们查看 name='王五' 的行数据
添加列
alter table 表名 add 列名 类型 [comment 描述 after 某一列列名];
[ ]中为可选项,可以添加 comment 对该列的描述,以及 after 将新添加的列置于某一列的后面,未选用 after 时默认添加到最后一列,如果想添加到第一列则将 after 某一列列名 改为 first。
例如,在t1表的 id 列后添加一列 age,数据类型为 int。
修改列
alter table 表名 change 旧列名 新列名 类型;
例如,我们将t1表的 id 改为 new_id,类型 int 改为 bigint。
删除列
alter table 表名 drop 列名;
例如,我们将t1表的 age 列删除。
修改表名
alter table 旧表名 rename [to] 新表名;
其中的 to 可以省略。
例如,我们将t1表重命名为 student。
删除表
drop table [if exists] 表名 [, 表名, ...];
[ ]中的内容为可选项,如果想要删除多个表,可以在表与表之间加逗号隔开。