一、案例要求
二、解答过程
第一题
1、创建数据库Markte
mysql> create database Market;
mysql> use Market;
2、创建数据表customers,在c_num字段上添加主键约束和自增约束,在c_birth字段上添加非空约束
mysql> create table customers(
-> c_num int(11) AUTO_INCREMENT,
-> c_name varchar(50),
-> c_city varchar(50),
-> c_birth datetime not null,
-> Primary key (c_num)
->);
3、将c_contact字段插入到c_birth字段后面
mysql> alter table customers modify
-> c_contact VARCHAR(50) after c_birth
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
4、将c_name字段数据类型改为VARCHAR(70)
mysql> alter table customers modify
-> c_name VARCHAR(70);
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
5、将c_contant字段改名为c_phone
mysql> alter table customers change c_contact c_phone VARCHAR(50);
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
6、增加c_gender字段数据类型为CHAR(1)
mysql> alter table customers
-> add c_gender CHAR(1);
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
7、将表名修改为customers_info
mysql> alter table customers rename customers_info;
Query OK, 0 rows affected (0.00 sec)
8、删除字段c_city
mysql> alter table customers_info drop c_city;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
9、修改数据表的存储引擎为MylSAM
mysql> alter table customers_info ENGINE=MyISAM;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
第二题
1、创建数据表orders,在o_num字段上添加一个主键约束和自增约束,在c_id字段上添加外键约束,关联customers表中的逐渐c_num
mysql> create table orders(
-> o_num int(11) primary key AUTO_INCREMENT,
-> o_date DATE,
-> c_id int(11),
-> CONSTRAINT waijian FOREIGN KEY (c_id) REFERENCES customers (c_num)
->);
2、删除orders表的外键约束,然后删除表costomers
mysql> alter table orders drop foreign key waijian; //删除外键
mysql> drop table customers; //删除表
第三题
*创建数据库Team,定义数据库player,语句如上所示
mysql>create table player(
playid int primary key,
playname varchar(30) not null,
teamnum int not null unique,
info varchar(50)
);
1、创建一个新账户,用户名为accountl,该用户通过本地主机连接数据库,密码为oldpwdl,授权该用户对Team数据库中的player表的SELECT和INSERT权限,并且授权该用户对player表的info字段的UPDATE权限
create user account1@'%' identified by 'oldpwd1'; //创建
grant select,insert on Team.player to account1@'%'; //给与表权限
grant select (info) on Team.player to account1@'%'; //给与info这列的权限
2、创建SQL语句,更改account1用户的密码为newpwd2
UPDATE mysql.user SET PASSWORD = PASSWORD("newpwd2") WHERE User = 'account1' and host = 'localhost';
3、创建SQL语句,使用FLUSH PRIVILEFHGS重新加载权限表
FLUSH PRIVILEGES;
4、创建SQL语句,查看授权给account1用户的权限
show grants for account1@'%';
5、创建SQL语句,收回account1用户的权限
REVOKE SELECT,INSERT,UPDATE(info) ON player FROM 'account1'@'%';
6、创建SQL语句,将account1用户的账号信息从系统中删除
drop user 'account1'@'%';
三、常用语句
1、查看数据库支持的字符集
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
2、数据库字符集内核
mysql> show variables like 'coll%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3、CHAR(siza)和VARCHAR(size)的区别
CHAR是固定长度的,VARCHAR是可变长度的
4、表的约束
NOT NULL 非空
UNIQUE KEY 唯一键
PRIMARY KEY 主键
FOREIGN KEY 外键
AUTO_INCREMENT 自增
CHECK 检查
DEFAULT 默认值
5、增加字段
(1)增加一个字段--默认添加在末尾
mysql> alter table 表名
-> add 字段名 字段类型;
(2)将某字段移动到某字段后面
mysql> alter table 表名 modify
-> 字段名 字段类型 after 字段名;
(3)在首行插入新字段
mysql> alter table 表名
-> add 字段名 字段类型 firest;
(4)在某个字段后新增一个字段
mysql> alter table 表名
-> 字段名 字段类型 after 字段名;
6、新建数据库/数据表
mysql> create database 数据库名;
mysql> use 数据库名;
mysql> create table 数据表名(
-> xxxxxx,
-> xxxxxx,
-> xxxxxx
-> );
7、修改表的结构
修改列类型
ALTER TABLE 表名 MODIFY 列名 列类型;
增加列
ALTER TABLE 表名 ADD 列名 列类型;
删除列
ALTER TABLE 表名 DROP 列名;
列改名
ALTER TABLE 表名 CHANGE 旧列名 新列名 列类型;
更改表名
ALTER TABLE 表名 RENAME 新表名;
RENAME TABLE 表名 TO 新表名;