exam1:
创建数据库Market,在market中创建数据表customers,customers表结构如表4.6所示,按要求进行操作。
表4.6 customers表结构
| 字段名 | 数据类型 | 主键 | 外键 | 非空 | 唯一 | 自增 |
|---|---|---|---|---|---|---|
| c_num | int(11) | 是 | 否 | 是 | 是 | 是 |
| c_name | varchar(50) | 否 | 否 | 否 | 否 | 否 |
| c_contact | varchar(50) | 否 | 否 | 否 | 否 | 否 |
| c_city | varchar(50) | 否 | 否 | 否 | 否 | 否 |
| c_birth | datetime | 否 | 否 | 是 | 否 | 否 |
- 创建数据库Market。
- 创建数据表customers,在c_num字段上添加主键约束和自增约束,在c_birth字段上添加非空约束。
- 将c_contact字段插入到c_birth字段后面。
- 将c_name字段数据类型改为varchar(70)。
- 将c_contact字段改为c_phone。
- 增加c_gender字段,数据类型为char(1)。
- 将表名修改为customers_info。
- 删除字段c_city。
- 修改数据表的存储引擎MyISAM。 ```sql —1.创建数据库Market create database Market;
—2.创建数据表customers,在c_num字段上添加主键约束和自增约束,在c_birth字段上添加非空约束 create table customers( c_num int(11) not null primary key auto_increment, c_name varchar(50), c_contact varchar(50), c_city varchar(50), c_birth datetime not null );
—3.将c_contact字段插入到c_birth字段后面 alter table customers modify c_contact varchar(50) after c_birth;
—4.将c_name字段数据类型改为varchar(70)。 alter table customers modify c_name varchar(70);
—5.将c_contact字段改为c_phone。 alter table customers change c_contact c_phone varchar(50);
—6.增加c_gender字段,数据类型为char(1) alter table customers add c_gender char(1);
—7.将表名修改为customers_info alter table customers rename to customers_info;
—8.删除字段c_city alter table customers_info drop c_city;
—9.修改数据表的存储引擎MyISAM show engines; alter table customers_info engine=MyISAM; show create table customers_info;
exam2:<br />在market中创建数据表orders,orders表结构如表4.7所示,按要求进行操作。<br />**表4.7 orders表结构**<br />| 字段名 | 数据类型 | 主键 | 外键 | 非空 | 唯一 | 自增 || :---: | :---: | :---: | :---: | :---: | :---: | :---: || o_num | int(11) | 是 | 否 | 是 | 是 | 是 || o_date | date | 否 | 否 | 否 | 否 | 否 || c_id | int(11) | 否 | 是 | 否 | 否 | 否 |- 创建数据表orders,在o_num字段上添加主键约束和自增约束,在c_id字段上添加外键约束,关联customers表中的主键c_num。- 删除orders表的外键约束,然后删除表customers。```sql--1.创建数据表orders,在o_num字段上添加主键约束和自增约束,在c_id字段上添加外键约束,关联customers表中的主键c_numcreate table orders(o_num int(11) primary key auto_increment,o_date date,c_id int(11),constraint fk_orders_customers foreign key(c_id) references customers_info(c_num));
- 这边有个注意点:应为customers_info表的engine改为MyISAM,MySQL默认engine是InnoDB,所以要修改engine。
```sql
mysql> show create table customers_info \G
* 1. row *
Create Table: CREATE TABLETable: customers_info
customers_info(c_numint(11) NOT NULL,c_namevarchar(70) DEFAULT NULL,c_birthdatetime NOT NULL,c_phonevarchar(50) DEFAULT NULL,c_genderchar(1) DEFAULT NULL, PRIMARY KEY (c_num), UNIQUE KEYc_num(c_num) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 1 row in set (0.00 sec)
—修改engine alter table customers_info engine=InnoDB;
```sql--2.删除orders表的外键约束,然后删除表customersalter table orders drop foreign key fk_orders_customer;--当只删除一张表是,不需要加入if existmysql> drop table [if exists] orders;ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[if exists] orders' at line 1mysql> drop table orders;Query OK, 0 rows affected (0.04 sec)
