MySQL表的操作
- 1. 创建表
- 2. 查看表结构
- 3. 修改表(修改表的属性而非表的数据)
- 4. 删除表
1. 创建表
语法:
CREATE TABLE table_name (field1 datatype,field2 datatype,field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;注意:
character set 字符集 collate 校验规则 engine 存储引擎; 这块有很多种写法。varchar类型:变长字符串
comment:类似于注释
说明:
field 表示列名
datatype 表示列的类型
character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准
create table users (id int,name varchar(20) comment '用户名',password char(32) comment '密码是32位的md5值',birthday date comment '生日'
) character set utf8 engine MyISAM;
说明:
不同的存储引擎,创建表的文件不一样。
此处例子中,users 表存储引擎是MyISAM ,在数据目中有三个不同的文件,分别是:
users.frm:表结构
users.MYD:表数据
users.MYI:表索引
使用MyISAM存储引擎的时候,可以发现在mysql目录下,会有三个文件。
MyISam:默认在指定的database中形成的数据库文件是3个。
2. 查看表结构
mysql > desc 表名;
显示表结构的最核心内容
mysql > show create table 表名;
显示表结构的整体和整体结构以及创建表的过程
允许为空的含义是:birthday这个可以插入的时候为空
Default:不插入该值的时候默认设置一个值
3. 修改表(修改表的属性而非表的数据)
修改表的属性而非表的数据:比如表中属性增加一个,增加一个name或birthday等。表结构轻易不要修改——不然很可能会出问题(表的一整列删除掉,原本的这些信息全都没有了或是添加一整列 然后再添加该项数据很麻烦)。
在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。
ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column datatype]...);ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column datatype]...);ALTER TABLE tablename DROP (column);
修改表结构后为:
修改name,将其长度改成60:
mysql> alter table users modify name varchar(60);
删除password列:
注意:删除字段一定要小心,删除字段及其对应的列数据都没了
mysql > alter table users drop password;
mysql > desc users;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(60) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| assets | varchar(100) | YES | | NULL | |
+----------+--------------+------+-----+---------+-------+
修改表名为employee
mysql > alter table users rename to employee;mysql > select * from employee;
+------+------+------------+-------+
| id | name | birthday | assets |
+------+------+------------+-------+
| 1 | a | 1982-01-04 | NULL |
| 2 | b | 1984-01-04 | NULL |
+------+------+------------+-------+
注意: to可以省掉。
将name列修改为xingming
mysql> alter table employee change name xingming varchar(60);
--新字段需要完整定义mysql> desc employee;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| xingming | varchar(60) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| assets | varchar(100) | YES | | NULL | |
+----------+--------------+------+-----+---------+-------+
修改表的DDL:
alter table 表名 add/modify/drop 列+列属性
alter table 表名 rename 新的名字
alter table 表明 change 旧列的名字 新列的名字 新列+新列的属性
4. 删除表
语法格式:
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
示例:
drop table test;
尽量不要删表,删表之前要做备份。