MySQL第二天
文章目录
- MySQL第二天
- 一、第一题 题目
- 二、第二题题目
一、第一题 题目
1、先创建该customers表
create table customers ( c_num int primary key auto_increment,
c_name varchar(50),
c_contact varchar(50),
c_city varchar(50),
c_birth datetime not null);
2、修改c_name的数据类型
alter table customers modify c_name varchar(70);
3、将c_contract的名称改为c_phone
mysql> alter table customers
-> change c_contact c_phone varchar(50);
4、增加c_gender字段,数据类型为char(1)
mysql> alter table customers
-> add c_gender char(1);
5、将表名称修改为customers_info
mysql> rename table customers to customers_info;
6、删除c_city字段
mysql> alter table customers_info drop c_city;
7、修改数据库的存储引擎为MyISAM
查看当前的存储引擎
show engines;
8、查看当前的引擎状态 发现是inodb引擎 现在转换引擎
8、输入命令
mysql> alter table customers_info engine=MyISAM;
这个时候我们看到的引擎以及从InnoDB转换成MyAISM.
9、这个时候再次去输入外键约束命令 就可以成功了
mysql->ALTER TABLE orders
add CONSTRAINT aabbccdd
FOREIGN KEY c_id) REFERENCES customers(o_num);
到这里外键约束就添加好了
二、第二题题目
问题一
1、先将orders表创建起来
2、然后增加c_id的外键约束问题,在这里我遇到了一个问题,就是无法将customers表作为父表进行绑定,一直不行,后来发现了,要绑定的表和表中的列的数据类型一模一样,而且两者的储存引擎也必须一样,这样问题也可以。
mysql> ALTER TABLE orders add CONSTRAINT
aabbccdd FOREIGN KEY (c_id) REFERENCES customers(c_num);
Query OK, 0 rows affected (0.01 sec)
3、删除外键约束并且删除customers表
mysql> alter table orders drop foreign key aabbccdd;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> drop table customers;
Query OK, 0 rows affected (0.00 sec)
4、这个时候当orders的表和customers的存储引擎是一样的,所以就可以输入命令让二者的外键删除;这里注意外键名称未设置的话可以输入 show create tables orders;来查看它系统给你的取的名字是什么,而后就可以用下面命令删除,要是会出现第二个问题的话,应该就是无法找到系统给你设置的外键名称,这个时候就要以 表的类型名称来作为外键名称来进行下一步的删除,
mysql->alter tables orders drop forieign key aabbccdd; 这里是删除外键的第一步;
mysql> alter table orders drop index aabbccdd;这一步是删除键入外键约束的自动生成的索引,这里索引要是取了名字的就是该外键的名字,我的是aabbccdd,而如果没有取名字就跟column name一样的名字
Query OK, 0 rows affected (0.12 sec)
Records: 0 Duplicates: 0 Warnings: 0
问题二:
1、先创建Team数据库以及play数据表
mysql> use Team;
Database changed
mysql> create table player(
-> playid int primary key,
-> playname varchar(30) not null,
-> teamnum int not null unique,
-> info varchar(50));
Query OK, 0 rows affected (0.01 sec)
2、创建一个新用户,用户名称为account1,通过用户连接本地数据库,密码为oldpwd1.授权其用户对Team数据库中player表的select和insert权限,并授权该用户对play表中的info字段的update权限
创建用户:
mysql> create user account1@localhost identified by 'oldpwd1';
Query OK, 0 rows affected (0.00 sec)
赋予该表的select权限和insert权限:
mysql> grant select on Team.player to account1@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> grant insert on Team.player to account1@'localhost';
Query OK, 0 rows affected (0.00 sec)
赋予player表的info字段的update权限:
mysql> grant insert(info) on Team.player to account1@'localhost';
Query OK, 0 rows affected (0.00 sec)
3、随后我们输入mysql> show grants for 'account1'@'localhost';
查看player表的权限具体是怎么样子的
4、修改密码,输入命令为:
mysql> alter user 'account1'@'localhost' identified by 'newpwd2';
Query OK, 0 rows affected (0.00 sec)
随后输入 select * from account1;
查看他的md5加密的密码:
随后用MD5解密出来:
密码修改成功!!!!!
5、赋予其刷新权限,先给account1一个reload权限,代码如下:
mysql> grant reload on *.* to account1@'localhost';
Query OK, 0 rows affected (0.00 sec)
6、mysql> show grants for 'account1'@'localhost';
7、回收信息只能一次一次回收:
mysql> revoke select on Team.player from account1@localhost;
mysql> revoke insert on Team.player from account1@localhost;
mysql> revoke update(info) on Team.player from account1@localhost;
8、删除用户
mysql> drop user account1@localhost;
Query OK, 0 rows affected (0.00 sec)