MySQL基础 对表操作

参考书籍:MySQL与MariaDB学习指南

修改一张数据库里面的表之前我们需要对表进行备份,备份的工作一方面可以对表进行备份,另一方面是对整个数据库备份。

1.先创建一个数据库和一张表

CREATE database dogs; /*创建一个dogs的数据库*/

/*或者使用dogs作为默认的数据库 USE dogs; */

CREATE TABLE dogs.dog(    /*创建一个dogs表*/
  id INT AUTO_INCREMENT,
  scientfic_name char(26),
  age INT(2)
);

2.对表操作之前先进行备份

//user_name是你的用户名 -p 表示需要输入密码 '>' 是重定向符,将表的内容放入备份的sql文件里面

mysqldump --user='user_name' -p \ 
dogs dogs > /opt/dog.sql ;

//备份数据库的操作

mysqldump --user'user_name' -p \
dogs > dogs.sql

3.恢复备份的操作

mysql --user'user_name' -p \
dogs < dogs.sql 

由于每一次修改表以及删除表的操作都比较难恢复到初始态。一旦出现错误就会比较麻烦。所以我们需要先学习并且养成备份的习惯

修改表的语法

1.添加一列order_id

ALTER TABLE dogs 
ADD COLUMN order_id INT;

2.在id项后面一项添加order_id 项 

ALTER TABLE dogs 
ADD COLUMN order_id INT AFTER id;

3.设置一个具有枚举类型参考表的新列

如果一个列的数据是固定的,那么在定义它的时候我们可以使用枚举类型,也可以再创建一个表去给出详细的信息。但是枚举类型本身就是一种参考表

/*创建一个狗的原产地这样一个列*/
ALTER TABLE new_dog 
MODIFY COLUMN address
ENUM(
'ASIAN',
'AMERICA',
'Europe',
'Austrlia');
AFTER order_id;

3.关于表的其他操作

DESCRIBE dogs.dog; /*查看表的内容*/

DROP dogs.dog; /*删掉表dog*/

SHOW COLUMNS FROM table_name LIKE 'col_name';/*查看一个列*/

CREATE TABLE test.new_dog LIKE dogs.dog   /*复制一份dog表到new_dog里面,但是没有数据,只有相应的配置*/

设置列的默认值

可以使用CHANGE语句或者是ALTER语句,而且不用担心的是修改了列的默认值不会对之前的保存数据有影响

/*修改new_dogs表的address项的类型为int 并且初始值设置为8*/
ALTER TABLE new_dogs
CHANGE COLUMN address INT DEFAULT 8;

/*修改表的age项的初始值默认为8 使用ALTER*/
ALTER TABLE new_dogs
ALTER COLUMN age SET DEFAULT 8;

修改AUTO_INCREMENT的默认值

/*从下一行开始初始值从10开始*/
ALTER TABLE birds 
AUTO_INCREMENT = 10;

重命名表的操作

重命名的时候要注意,不能与其他表重名,而且最好不要包含连接符 ‘- ’ 因为Mysql会把他当成减号


RENAME TABLE table_old TO table_new ;

并且RENAME命令也可以用来移动表,这一点和linux shell中的mv差不多,可以将一个表不改名字的移动到另一个数据库。

使用order by指令对表进行重排序

SELECT * FROM code 
ORDER BY name
LIMIT 3;

关于索引的理解

索引是为了更加方便的对表内的信息进行检索和查找,但是索引并不是列。一个列是PRIMARY KEY是说它与索引关联了,而不是说它就是索引。索引可以是单独定义出来,也可以是建表之后添加的。

SHOW INDEX FROM tables \G /*查看表的参数信息,可以看到当前的索引关联*/

/*explain语句是用来解释,索引被如何应用的而不是显示查找结果 */

EXPLAIN SELECT * FROM tables WHERE name = 'JJ' \G 

/*创建索引*/

ALTER TABLE humans 
ADD INDEX human_name(name_last,name_first); 
/*该索引是一对键值对,所以无论输入哪个名字都会使用human_name选项*/

对一个索引值关联的列进行修改名称之前需要将主键的值去掉

DROP PRIMARY KEY之后再对列名进行修改,不然会出现主键不能与某一列关联的错误。

猜你喜欢

转载自blog.csdn.net/weixin_42427338/article/details/84025318