vlambda博客
学习文章列表

爬虫(九十八)mysql详解一

这次介绍mysql以及在python中如何用pymysql操作数据库, 以及在mysql中存储过程, 触发器以及事务的实现, 对应到pymysql中应该如何操作.


**首先我们在cmd窗口中展示常见的sql命令: **

  • 连接数据库 mysql -u root -p

显示数据库 show databases;





创建数据库, 设置默认编码为utf-8以及默认的排序方式  


create 

database 

pymysql_db 

default 

charset 

utf8 

collate 

utf8_general_ci;


选择用那个数据库 use pymysql_db;


显示当前数据库所有的表 show tables;


**用户操作以及用户权限部分(不做演示, 不常用, 备查即可): **









常见权限: 除grant外的所有权限 all privileges; 无访问权限 usage; 查询权限 select; 创建表权限 create; 删除表内容权限 delete



**数据表的相关操作: **

*userinfo表创建如下: *

-- 创建一个名为userinfo的表
CREATE TABLE `userinfo` (
-- 创建一个int类型的字段nid, 该字段不能为空, 且自动递增(注意: 一个表中只能允许一个自增的字段)
`nid` INT (11) NOT NULL AUTO_INCREMENT,
-- 创建一个varchar类型的字段name, 默认为空(varchar为变长类型, 这里指的是该字段最多占32位, 但是查询效率不如char定长类型)
`name` VARCHAR (32) DEFAULT NULL,
`color_nid` INT (11) DEFAULT NULL,
-- 指定nid为主键(主键在一个表中是唯一不重复的, 此处可以使用多个字段组合成主键, 只要组合不唯一即可, 主键默认会自动创建索引)
PRIMARY KEY (`nid`),
-- 声明一个名为userinfo_ibfk_1的外键, 该外键由当前表中的color_nid与color表中的nid对应(说白了就是color_nid必须是color表中nid字段具有的值才行)
CONSTRAINT `userinfo_ibfk_1` FOREIGN KEY (`color_nid`) REFERENCES `color` (`nid`)
-- 指定当前数据库的引擎为INNODB, 默认字符集为utf-8(INNODB可支持事务)
) ENGINE = INNODB DEFAULT CHARSET = utf8;

*表color创建如下: *


CREATE TABLE `color` (
`nid` int(11) NOT NULL AUTO_INCREMENT,
`tag` varchar(32) DEFAULT NULL,
PRIMARY KEY (`nid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

删除表(表结构以及表内容) drop table 表名


删除表内容(自增不会影响) delete from 表名


删除表内容(自增也清零) truncate table 表名


修改表结构

增加一列 alter table 表名 add 列名 类型


删除一列 alter table 表名 drop column 列名


修改列类型 alter table 表名 modify column 列名 新类型;


修改列名称和列类型(类型保持不变也可) alter table 表名 change 原列名 新列名 类型;


指定具体列为主键 alter table 表名 add primary key(列名);


删除指定列的主键 alter table 表名 modify 列名 int, drop primary key;


删除当前表中所有列的主键 alter table 表名 drop primary key;


为当前表中列指定外键 alter table 从表(当前表) add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);


删除外键 alter table 表名 drop foreign key 外键名称


修改默认值 alter table 表名 alter 列名 set default 新默认值;


删除默认值 alter table 表名 alter 列名 drop default;