1.创建数据库Market,在Market中创建数据表customers,customers表结构如表4.6所示,按要求进行操作。
(1)创建数据库Market。
create database Market;
use Market; //切换到market数据库
(2)创建数据表customers,在c_num字段上添加主键约束和自增约束,在c_birth字段上添加非空约束。
mysql> create table customers(
-> c_num int(11) primary key auto_increment comment "编号",
-> c_name varchar(50) comment "姓名",
-> c_city varchar(50) comment "城市",
-> c_birth datetime not null comment "出生日期");
Query OK, 0 rows affected (0.01 sec)
(3)将c_contact字段插入到c_birth字段后面。
mysql> alter table customers add c_contact varchar(50);
(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。
alter table customers_info engine = MyISAM;
2.在Market中创建数据表orders,orders表结构如表4.7所示,按要求进行操作。
(1)创建数据表orders,在o_num字段上添加主键约束和自增约束,在c_id字段上添加外键约束,关联customers表中的主键c_num。
因为之前存储引擎改过了而且MyISAM,并不支持外键约束,所以我们要把customers_info的存储引擎改为支持外键约束的存储引擎,例如InnoDB。
alter table customers_info engine = InnoDB;
然后进行创建数据表
mysql> create table orders(
o_num int(11) primary key auto_increment,
o_date date,
c_id int(11),
foreign key(c_id) references customers_info(c_num) );
Query OK, 0 rows affected (0.01 sec)
(2)删除orders表的外键约束,然后删除表customers。
要删除外键约束,需要先知道它的外键约束的名称
show create table orders;
| orders | CREATE TABLE `orders` (
`o_num` int(11) NOT NULL AUTO_INCREMENT,
`o_date` date DEFAULT NULL,
`c_id` int(11) DEFAULT NULL,
PRIMARY KEY (`o_num`),
KEY `c_id` (`c_id`),
CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`c_id`) REFERENCES `customers_info` (`c_num`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
可以看到 外键约束的名字是 orders_ibfk_1 ,接下来只需执行删除外键约束的命令就好了
ALTER TABLE orders DROP FOREIGN KEY orders_ibfk_1;
然后删除表customers
mysql> drop table customers_info;
3.创建数据库Team,定义数据表player,语句如下:
执行以下操作:
由于密码为oldwd1,这不符合mysql密码策略的要求,我们可以选择临时修改或者直接关闭,这里最简单的一种方法应该是直接在/etc/my.cnf 中直接修改my.cnf文件,添加上
validate_password=off
关闭密码策略
然后重启Mysqld
(1)
create user 'account1'@'localhost' identified by 'oldpwd1';
//创建新用户account1 本地登录,密码为oldpwd1
然后进入用root进入Mysql给予权限
grant select,insert on Team.player to account1@localhost;
//给account1 给予select insert权限
授予该用户对player表中的info字段update的权限
grant update(info) on Team.player to account1@localhost;
(2)
mysql> alter user account1@localhost identified by 'newpwd2';
Query OK, 0 rows affected (0.00 sec)
(3)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
(4)
(5)
mysql> revoke all on Team.player from account1@localhost;
Query OK, 0 rows affected (0.00 sec)
(6)
mysql> drop user account1@localhost;
Query OK, 0 rows affected (0.00 sec)