目录
创建表的语法
sql
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;
- field 表示列名
- datatype 表示列的类型
- character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
- collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准
创建表的示例
sql
mysql> create table if not exists user1(
-> id int,
-> name varchar(20) comment '用户名',
-> password char(32) comment '用户的密码',
-> birthday date comment '用户的生日'
-> )character set utf8 collate utf8_general_ci engine MyIsam;

sql
mysql> create table if not exists user2(
-> id int,
-> name varchar(20) comment '用户名',
-> password char(32) comment '用户的密码',
-> birthday date comment '用户的生日'
-> )charset=utf8 collate=utf8_general_ci engine=InnoDB;

这两种创建表的示例,第一种使用的存储引擎是MyIsam,数据库目录文件中就对应创建了三个文件,而第二种使用的存储引擎是InnoDB,数据库目录文件中就对应创建了两个文件,其实默认创建时,使用的存储引擎是第二个,它是把索引和数据放到了一个文件中。
不同的存储引擎,创建表的文件不一样。
user1 表存储引擎是 MyISAM ,在数据目中有三个不同的文件,分别是:
- user1.frm:表结构
- user1.MYD:表数据
- user1.MYI:表索引
查看表的结构
进入数据库
sql
use user_db;
查看自己在哪个数据库
sql
select database();

查看自己所在数据库都有哪些表
sql
show tables;

查看表的详细信息
sql
desc user1;

查看创建表时的详细信息
sql
show create table user1 \G;

注意:\G可以清除杂乱的信息,这里显示的信息,都是把我们可能写的不标准的写法,都会给我转化为标准的写法。
修改表
修改表名
sql
alter table user1 rename to user;
to是可以省略的。
修改表的内容
插入几个数据

增加一列
sql
alter table user add image_path varchar(128) comment '这个是用户的头像路径' after birthday;

修改一列的所有属性
sql
alter table user modify name varchar(60);
注意:我们发现我们修改某一列特定的属性时,是把所有的属性内容覆盖式的修改。
删除某一列
sql
alter table user drop password;
注意:轻易不要删。
修改列的名称
sql
alter table user change name xingming varchar(60) DEFAULT NULL;
注意:这里使用的是change,改列的名称后面必须跟上所有的列的属性。
删除表
sql
drop table user;

注意:未来我们在进行数据库操作的时候,尽量不要进行修改或者删除!!!