数据库中的表和现实中的表没有什么不一样,就是一行代表一个对象,每一列代表对象的一个属性,这样就很容易理解数据库中表的存在。
在数据库中对于表的操作有四种:创建、查看、修改、删除。下面将分别介绍这四种对于表的操作。
1. 创建表
语法:
CREATE TABLE table_name(
field1 datatype,
field2 datatype,
field3 datatype
)character set 字符集 collate 校验规则 engine 存储引擎;
说明:
- field表示列名
- datatype表示列的数据类型
- character set 字符集:如果没有指定字符集,则以所在的数据库的字符集为准。
- collate 校验规则:如果没有指定校验规则,则以所在数据库的校验规则为标准。
举例: 创建一个数据表users,有id、name、password、birthday属性
CREATE TABLE users(
id INT,
name VARCHAR(20) COMMENT '用户名',
password CHAR(10) COMMENT '密码',
birthday DATE COMMENT '生日'
)CHARACTER SET utf8 ENGINE MYISAM;
说明:
- 不同的存储引擎,创建表的文件不一样。
users表引擎是MYISAM,在数据目中有三个不同的文件,分别是:- users.frm:表结构
- users.MYD:表数据
- users.MYI:表索引
2. 查看表
查询当前数据库中有那些表
SHOW TABLES;
查看表结构
DESC table_name;
查看创建表的语句
SHOW CREATE TABLE table_name;
3. 修改表
在实际项目开发中,经常需要修改某个表的结构,比如字段名字、字段大小、字段类型、表的字符集类型、表的存储引擎等。又是还会需要添加字段、删除字段等操作。这时候就需要修改表结构。
语法:
// 添加
ALTER TABLE table_name ADD (COLUMN datatype [DEFAULT expr][, COLUMN datatype] ...);
// 修改
ALTER TABLE table_name MODIFY (COLUMN datatype [DEFAULT expr][, COLUMN datatype] ...);
// 删除
ALTER TABLE table_name DROP (COLUMN datatype [DEFAULT expr][, COLUMN datatype] ...);
举例:
我们现在表中添加数据,以便于观察变化。
INSERT INTO users VALUES (1, '张三', '123456', '2018-1-1'), (2, '李四', '654321', '2019-1-1');
- 在users表中添加一个字段,用于保存入学时间。
mysql> ALTER TABLE users ADD photo varchar(128) after birthday;
// 一般不要在添加字段中写after field,JDBC编程中有通过下标找到该列,如果给中间某一列后添加列,会导致错误,所以一般在最后一列后面添加
mysql> SELECT * FROM users;
+------+--------+----------+------------+
| id | name | password | birthday |
+------+--------+----------+------------+
| 1 | 张三 | 123456 | 2018-01-01 |
| 2 | 李四 | 654321 | 2019-01-01 |
+------+--------+----------+------------+
2 rows in set (0.00 sec)
- 修改name,将其长度改为64
mysql> ALTER TABLE users MODIFY name varchar(64);
在修改字段大小时,一定要改为列中现有数据的最大长度。否则会提示数据可能存在数据截断。
- 删除password列
mysql> ALTER TABLE users DROP password;
注意: 删除字段一定要小心,删除字段及其对应的列的数据都没了。
- 修改表名为employee
mysql> ALTER TABLE users RENAME TO employee;
- 修改name列改为xingming
mysql> ALTER TABLE employee CHANGE name xingming VARCHAR(60);
注意: 新字段需要完整的定义。
4. 删除表
语法:
DROP [TEMPORARY] TABLE [IF EXISTS] table_name [, table_name1] ...
举例:
- 删除users1表
mysql> DROP TABLE users1;
有时候我们删除的表不存在,当我们去删除它时就会报出下面的错误。
mysql> DROP TABLE user1;
ERROR 1051 (42S02): Unknown table 'user1'
但是我们不想要这个错误的存在,就是“有就删除,没有就不删除”,所以我们需要加上 if exists。
mysql> DROP TABLE IF EXISTS user1;
// 删除成功
Query OK, 0 rows affected, 1 warning (0.00 sec)
虽然删除成功了,但是它有一条警告信息,那么我们如何查询警告信息呢?
查询上一条执行执行后的警告信息:
SHOW WARNINGS;