最近实习做智能问答系统,需要收集一些问答对,于是写了爬虫爬数据,将爬下来的存入MySQL数据库,中间碰到一些问题,这里集中总结一下,方便日后回顾。
数据库的简单操作无非就增删改查,本文按这个顺序总结一下工作中遇到的操作。
1、增
1.1 创建数据表
CREATE TABLE IF NOT EXISTS `qa_law66_content`( `id` INT UNSIGNED AUTO_INCREMENT, `title` VARCHAR(100) NOT NULL, `question` VARCHAR(2000) NOT NULL, `answer` VARCHAR(15000) NOT NULL, `cate` VARCHAR(20) NOT NULL, `source` VARCHAR(40) NOT NULL, PRIMARY KEY ( `id` ) )ENGINE=InnoDB DEFAULT CHARSET=utf8;
qa_law66_links为表名,有单引号的都是表中的字段。UNSIGNED AUTO_INCREMENT表示自动增加属性,在往数据表中写数据时可以不写这个字段的内容,它会按数字顺序自动添加。字段名称后面跟着的是字段类型,比如 VARCHAR(15000)表示字符型类型,括号离的长度表示设置该字段能存储内容的长度,如果存储内容长度大于设置的字段长度,将引发错误信息。
所有字段如果都是VARCHAR类型,则它们的所有长度之和不能超过65533个字符。
NOT NULL表示该字段非空。
PRIMARY KEY ( `id` )表示将‘id’这个字段设置为主键,主键不能重复。
ENGINE=InnoDB 表示创建表的存储引擎,详细介绍参考这篇博客。
DEFAULT CHARSET=utf8 表示数据表的默认编码格式,一般设置为utf8格式。
1.2 增加表的字段
alter table qa_law66_content add aid int;
在表qa_law66_content 中增加了‘aid’字段,设置它的类型为int类型。
2、改
2.1 修改表字段的长度
alter table qa_law66_content modify column title varchar(400); alter table qa_law66_content modify column source varchar(100); alter table qa_law66_content modify column question varchar(3500);
2.2 修改字段的类型
ALTER TABLE qa_law66_content CHANGE id id INT;
2.3 修改主键,修改字段的顺序
alter table qa_law66_content drop primary key; alter table qa_law66_content modify aid int(10) unsigned auto_increment first,add primary key (aid);
要修改主键就要先将原来的主键删除主键属性,然后将另一个键设置为主键。
first 表示将该键设置为第一列。
2.4 修改字段的顺序
alter table 表名
change 字段名 新字段名 字段类型 默认值 after 字段名(跳到哪个字段之后)
alter table qa_law66_content change id id int(11) 1 after aid;
3、删
3.1 删除整个表
DROP TABLE lawfact;
3.2 删除表里的所有数据
DELETE FROMlawfact;
3.3 按条件删除表里的数据
DELETE FROM qa_law66_content WHERE title="None";
4、查
4.1 查询表里的数据有多少
select count(*) from lawfact;
4.2 查询表里所有数据
select * from lawfact;
4.3 按条件查询
select * from lawfact where article = 'None';
4.5 查询表里某字段的不重复的值
SELECT DISTINCT(label) FROM lawfact;