数据库中的数据是存储在基本表中的,所以需要先创建数据表再插入数据。
创建表
创建表的同时须指定表名、字段名和数据类型。
语法:
create table <表名>(
<字段名1> <数据类型1>[,
<字段名2> <数据类型2>,
...
<字段名n> <数据类型n>]);
- <表名>&#xff1a;表名不可与SQL关键字相同&#xff0c;同一个数据库中的表名不可重复。
- <字段名>&#xff1a;字段名不可与SQL关键字相同&#xff0c;同一个表中的字段名不可重复。
示例&#xff1a;创建employee员工信息表
mysql> create table employee(-> e_id varchar(5),-> e_name varchar(5),-> e_age int,-> d_id varchar(5));
查看表
在当前数据库中可以查看创建好的数据表。
语法&#xff1a;
show tables [like &#39;表名&#39;];
- like 子句是可选项&#xff0c;用于匹配指定的表名&#xff0c;可以模糊匹配&#xff0c;也可以精确匹配。
示例1&#xff1a;查看当前数据库内的所有表
mysql> show tables;
&#43;----------------&#43;
| Tables_in_test |
&#43;----------------&#43;
| employee |
| emp7 |
&#43;----------------&#43;
示例2&#xff1a;使用like子句查看以’emp’开头的表
mysql> show tables like &#39;emp%&#39;;
&#43;------------------------&#43;
| Tables_in_test (emp%) |
&#43;------------------------&#43;
| employee |
| emp7 |
&#43;------------------------&#43;
示例3&#xff1a;查看employee表的定义声明
mysql> show create table employee\G;
*************************** 1. row ***************************Table: employee
Create Table: CREATE TABLE &#96;employee&#96; (&#96;e_id&#96; varchar(5) DEFAULT NULL,&#96;e_name&#96; varchar(5) DEFAULT NULL,&#96;e_age&#96; int(11) DEFAULT NULL,&#96;d_id&#96; varchar(5) DEFAULT NULL
) ENGINE&#61;InnoDB DEFAULT CHARSET&#61;utf8
使用 SHOW CREATE TABLE 语句不仅可以查看创建表时的详细语句&#xff0c;而且可以查看存储引擎和字符编码。如果不加“\G”参数&#xff0c;显示的结果可能非常混乱&#xff0c;加上“\G”参数之后&#xff0c;可使显示的结果更加直观&#xff0c;易于查看。
创建好数据表之后&#xff0c;可以查看表结构。
语法&#xff1a;
describe <表名>; 或 desc <表名>;
示例&#xff1a;查看employee表的结构定义
mysql> desc dep;
&#43;--------&#43;------------&#43;------&#43;-----&#43;---------&#43;-------&#43;
| Field | Type | Null | Key | Default | Extra |
&#43;--------&#43;------------&#43;------&#43;-----&#43;---------&#43;-------&#43;
| e_id | varchar(5) | YES | | NULL | |
| e_name | char(5) | YES | | NULL | |
| e_age | int(11) | YES | | NULL | |
| d_id | varchar(5) | YES | | NULL | |
&#43;--------&#43;------------&#43;------&#43;-----&#43;---------&#43;-------&#43;
- Null&#xff1a;表示该字段是否可以存储 NULL 值。
- Key&#xff1a;表示该字段是否已编制索引。PRI 表示主键&#xff0c;UNI 表示 UNIQUE 唯一索引&#xff0c;MUL 表示某个给定值允许出现多次。
- Default&#xff1a;表示该字段是否有默认值&#xff0c;如果有&#xff0c;值是什么。
- Extra&#xff1a;表示可以获取的附加信息&#xff0c;如 AUTO_INCREMENT 等。
修改表
为实现数据库中表规范化设计&#xff0c;有时候需要对已经创建的表进行结构修改或调整。
语法&#xff1a;修改表名
alter table <原表名> rename <新表名>;
示例&#xff1a;将employee表名改为emp
mysql> alter table employee rename emp;
语法&#xff1a;添加新字段
alter table <表名> add <新字段名> <数据类型> [约束条件] [first|after 参照字段名];
- 约束条件和字段位置可以不指定&#xff0c;默认无约束&#xff0c;在表中最后一列显示。
示例&#xff1a;在emp表中添加新字段location
mysql> alter table emp add location varchar(5);
语法&#xff1a;修改字段名
alter table <表名> change <原字段名> <新字段名> <新数据类型>;
示例&#xff1a;修改字段名location为loc
mysql> alter table emp change location loc varchar(5);
语法&#xff1a;修改字段类型
alter table <表名> modify <字段名> <新数据类型>;
示例&#xff1a;修改loc的字段类型为varchar(10)
mysql> alter table emp modify loc varchar(10);
语法&#xff1a;修改字段的排列位置
alter table <表名> modify <字段名> <数据类型> first|after 参照字段名;
示例&#xff1a;修改字段loc的排列位置
mysql> alter table emp modify loc varchar(10) after d_id;
语法&#xff1a;删除字段
alter table <表名> drop <字段名>;
示例&#xff1a;删除字段loc
mysql> alter table emp drop loc;
删除表
删除表指删除表结构的同时删除表中数据&#xff0c;因此需谨慎使用。
语法&#xff1a;
drop table [if exists] <表名> [,<表名1>,<表名2>,...<表名n>];
- 可删除多张表&#xff0c;if exists避免表不存在时报错。
示例1&#xff1a;删除emp表
mysql> drop table emp;
示例2&#xff1a;避免表不存在时报错
mysql> drop table if exists emp;