根据提供的文件内容,我们可以归纳总结出以下几个重要的知识点:
### 一、MySQL建表与数据插入
#### 1. 创建表的语法结构
- **DROPTABLE**:用于删除一个已存在的表。
- **CREATETABLE**:用于创建一个新的表。
- `tablename (column1 datatype, column2 datatype, ...)`:定义表名及其字段类型。
- **NOT NULL**:指定字段不允许为空。
- **DEFAULT**:为字段设置默认值。
- **PRIMARY KEY**:定义主键,用于唯一标识表中的每一行记录。
- **FOREIGN KEY**:定义外键,用于建立表之间的关联关系。
- **ENGINE=InnoDB DEFAULT CHARSET=utf8**:设置表引擎及字符集。
#### 2. 插入数据的语法结构
- **INSERT INTO**:向表中插入一条或多条新记录。
- `INSERT INTO tablename (column1, column2, ...) VALUES (value1, value2, ...);`
- 可以同时插入多条记录,如:`INSERT INTO tablename VALUES (value1, value2, ...), (value1, value2, ...);`
### 二、示例解析
#### 1. 建立 `bonus` 表
```sql
DROPTABLEIFEXISTS`bonus`;
CREATETABLE`bonus`(
`ENAME`varchar(10)DEFAULTNULL,
`JOB`varchar(9)DEFAULTNULL,
`SAL`int(11)DEFAULTNULL,
`COMM`int(11)DEFAULTNULL
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
```
- **字段说明**:
- `ENAME`: 员工姓名,字符串类型,最大长度10。
- `JOB`: 职位,字符串类型,最大长度9。
- `SAL`: 基本工资,整型。
- `COMM`: 提成,整型。
#### 2. 建立 `dept` 表
```sql
DROPTABLEIFEXISTS`dept`;
CREATETABLE`dept`(
`DEPTNO`int(2)NOTNULL,
`DNAME`varchar(14)DEFAULTNULL,
`LOC`varchar(13)DEFAULTNULL,
PRIMARYKEY(`DEPTNO`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
```
- **字段说明**:
- `DEPTNO`: 部门编号,整型,不允许为空,作为主键。
- `DNAME`: 部门名称,字符串类型,最大长度14。
- `LOC`: 地址,字符串类型,最大长度13。
#### 3. 向 `dept` 表中插入数据
```sql
INSERTINTO`dept`VALUES('10','ACCOUNTING','NEWYORK');
INSERTINTO`dept`VALUES('20','RESEARCH','DALLAS');
INSERTINTO`dept`VALUES('30','SALE','CHICAGO');
INSERTINTO`dept`VALUES('40','OPERATIONS','BOSTON');
```
#### 4. 建立 `emp` 表
```sql
DROPTABLEIFEXISTS`emp`;
CREATETABLE`emp`(
`EMPNO`int(4)NOTNULL,
`ENAME`varchar(10)DEFAULTNULL,
`JOB`varchar(9)DEFAULTNULL,
`MGR`int(4)DEFAULTNULL,
`HIREDATE`dateDEFAULTNULL,
`SAL`int(7)DEFAULTNULL,
`COMM`int(7)DEFAULTNULL,
`DEPTNO`int(2)DEFAULTNULL,
PRIMARYKEY(`EMPNO`),
KEY`FK_DEPTNO`(`DEPTNO`),
CONSTRAINT`FK_DEPTNO`FOREIGNKEY(`DEPTNO`)REFERENCES`dept`(`DEPTNO`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
```
- **字段说明**:
- `EMPNO`: 员工编号,整型,不允许为空,作为主键。
- `ENAME`: 员工姓名,字符串类型,最大长度10。
- `JOB`: 职位,字符串类型,最大长度9。
- `MGR`: 上级主管编号,整型。
- `HIREDATE`: 入职日期,日期类型。
- `SAL`: 基本工资,整型。
- `COMM`: 提成,整型。
- `DEPTNO`: 部门编号,整型,外键,关联 `dept` 表的 `DEPTNO` 字段。
#### 5. 向 `emp` 表中插入数据
```sql
INSERTINTO`emp`VALUES('7369','SMITH','CLERK','7902','1980-12-17','800',null,'20');
INSERTINTO`emp`VALUES('7499','ALLEN','SALESMAN','7698','1981-02-20','1600','300','30');
// 更多记录省略...
```
### 三、扩展知识点
- **索引**:为了提高数据库的查询速度,可以在表上创建索引。例如,在 `emp` 表中的 `DEPTNO` 字段上创建了一个索引 `FK_DEPTNO`。
- **外键约束**:通过 `FOREIGN KEY` 定义,确保了 `emp` 表中的 `DEPTNO` 字段的值必须在 `dept` 表的 `DEPTNO` 字段中存在,从而维护了数据的一致性和完整性。
- **数据类型选择**:根据字段的实际需求合理选择数据类型,例如员工编号通常使用整型,姓名使用字符串类型等。
- **主键的选择**:一般选择能够唯一标识每一条记录且不重复的字段作为主键,如员工编号 `EMPNO`。
以上是对给定文件内容的详细解析与扩展知识点介绍。这些内容对于学习和理解 MySQL 数据库的基本操作非常有帮助,尤其适用于准备面试或进行数据库开发的人员。